diff options
Diffstat (limited to 'src')
134 files changed, 31583 insertions, 13644 deletions
diff --git a/src/common/Makefile.am b/src/common/Makefile.am index 20e3f5ae16..48218491b5 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -15,9 +15,11 @@ libor_a_SOURCES = \ address.c \ compat.c \ container.c \ + di_ops.c \ log.c \ memarea.c \ mempool.c \ + procmon.c \ util.c \ util_codedigest.c \ $(libor_extra_source) @@ -38,9 +40,11 @@ noinst_HEADERS = \ compat_libevent.h \ container.h \ crypto.h \ + di_ops.h \ ht.h \ memarea.h \ mempool.h \ + procmon.h \ strlcat.c \ strlcpy.c \ torgzip.h \ diff --git a/src/common/address.c b/src/common/address.c index a3f12ac074..d0c2d5e15c 100644 --- a/src/common/address.c +++ b/src/common/address.c @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -43,6 +43,9 @@ #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> /* FreeBSD needs this to know what version it is */ #endif +#ifdef HAVE_SYS_UN_H +#include <sys/un.h> +#endif #include <stdarg.h> #include <stdio.h> #include <stdlib.h> @@ -50,10 +53,14 @@ #include <assert.h> /** Convert the tor_addr_t in <b>a</b>, with port in <b>port</b>, into a - * socklen object in *<b>sa_out</b> of object size <b>len</b>. If not enough - * room is free, or on error, return -1. Else return the length of the - * sockaddr. */ -int + * sockaddr object in *<b>sa_out</b> of object size <b>len</b>. If not enough + * room is available in sa_out, or on error, return 0. On success, return + * the length of the sockaddr. + * + * Interface note: ordinarily, we return -1 for error. We can't do that here, + * since socklen_t is unsigned on some platforms. + **/ +socklen_t tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port, struct sockaddr *sa_out, @@ -63,7 +70,7 @@ tor_addr_to_sockaddr(const tor_addr_t *a, if (family == AF_INET) { struct sockaddr_in *sin; if (len < (int)sizeof(struct sockaddr_in)) - return -1; + return 0; sin = (struct sockaddr_in *)sa_out; memset(sin, 0, sizeof(struct sockaddr_in)); #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN @@ -76,7 +83,7 @@ tor_addr_to_sockaddr(const tor_addr_t *a, } else if (family == AF_INET6) { struct sockaddr_in6 *sin6; if (len < (int)sizeof(struct sockaddr_in6)) - return -1; + return 0; sin6 = (struct sockaddr_in6 *)sa_out; memset(sin6, 0, sizeof(struct sockaddr_in6)); #ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN @@ -87,7 +94,7 @@ tor_addr_to_sockaddr(const tor_addr_t *a, memcpy(&sin6->sin6_addr, tor_addr_to_in6(a), sizeof(struct in6_addr)); return sizeof(struct sockaddr_in6); } else { - return -1; + return 0; } } @@ -116,6 +123,33 @@ tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa, return 0; } +/** Return a newly allocated string holding the address described in + * <b>sa</b>. AF_UNIX, AF_UNSPEC, AF_INET, and AF_INET6 are supported. */ +char * +tor_sockaddr_to_str(const struct sockaddr *sa) +{ + char address[TOR_ADDR_BUF_LEN]; + char *result; + tor_addr_t addr; + uint16_t port; +#ifdef HAVE_SYS_UN_H + if (sa->sa_family == AF_UNIX) { + struct sockaddr_un *s_un = (struct sockaddr_un *)sa; + tor_asprintf(&result, "unix:%s", s_un->sun_path); + return result; + } +#endif + if (sa->sa_family == AF_UNSPEC) + return tor_strdup("unspec"); + + if (tor_addr_from_sockaddr(&addr, sa, &port) < 0) + return NULL; + if (! tor_addr_to_str(address, &addr, sizeof(address), 1)) + return NULL; + tor_asprintf(&result, "%s:%d", address, (int)port); + return result; +} + /** Set address <b>a</b> to the unspecified address. This address belongs to * no family. */ void @@ -506,7 +540,8 @@ tor_addr_parse_mask_ports(const char *s, tor_addr_t *addr_out, tor_assert(s); tor_assert(addr_out); - /* IP, [], /mask, ports */ + /** Longest possible length for an address, mask, and port-range combination. + * Includes IP, [], /mask, :, ports */ #define MAX_ADDRESS_LENGTH (TOR_ADDR_BUF_LEN+2+(1+INET_NTOA_BUF_LEN)+12+1) if (strlen(s) > MAX_ADDRESS_LENGTH) { @@ -599,7 +634,7 @@ tor_addr_parse_mask_ports(const char *s, tor_addr_t *addr_out, if (family == AF_INET6 && v4map) { if (bits > 32 && bits < 96) { /* Crazy */ log_warn(LD_GENERAL, - "Bad mask bits %i for V4-mapped V6 address; rejecting.", + "Bad mask bits %d for V4-mapped V6 address; rejecting.", bits); goto err; } @@ -786,7 +821,7 @@ tor_addr_compare(const tor_addr_t *addr1, const tor_addr_t *addr2, * Reduce over-specific masks (>128 for ipv6, >32 for ipv4) to 128 or 32. * * The mask is interpreted relative to <b>addr1</b>, so that if a is - * ::ffff:1.2.3.4, and b is 3.4.5.6, + * \::ffff:1.2.3.4, and b is 3.4.5.6, * tor_addr_compare_masked(a,b,100,CMP_SEMANTIC) is the same as * -tor_addr_compare_masked(b,a,4,CMP_SEMANTIC). * @@ -798,6 +833,8 @@ int tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2, maskbits_t mbits, tor_addr_comparison_t how) { + /** Helper: Evaluates to -1 if a is less than b, 0 if a equals b, or 1 if a + * is greater than b. May evaluate a and b more than once. */ #define TRISTATE(a,b) (((a)<(b))?-1: (((a)==(b))?0:1)) sa_family_t family1, family2, v_family1, v_family2; @@ -830,7 +867,7 @@ tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2, const uint8_t *a2 = tor_addr_to_in6_addr8(addr2); const int bytes = mbits >> 3; const int leftover_bits = mbits & 7; - if (bytes && (r = memcmp(a1, a2, bytes))) { + if (bytes && (r = tor_memcmp(a1, a2, bytes))) { return r; } else if (leftover_bits) { uint8_t b1 = a1[bytes] >> (8-leftover_bits); @@ -1036,27 +1073,28 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr) { int sock=-1, r=-1; struct sockaddr_storage my_addr, target_addr; - socklen_t my_addr_len; + socklen_t addr_len; tor_assert(addr); memset(addr, 0, sizeof(tor_addr_t)); memset(&target_addr, 0, sizeof(target_addr)); - my_addr_len = (socklen_t)sizeof(my_addr); - /* Use the "discard" service port */ - ((struct sockaddr_in*)&target_addr)->sin_port = 9; /* Don't worry: no packets are sent. We just need to use a real address * on the actual Internet. */ if (family == AF_INET6) { struct sockaddr_in6 *sin6 = (struct sockaddr_in6*)&target_addr; + /* Use the "discard" service port */ + sin6->sin6_port = htons(9); sock = tor_open_socket(PF_INET6,SOCK_DGRAM,IPPROTO_UDP); - my_addr_len = (socklen_t)sizeof(struct sockaddr_in6); + addr_len = (socklen_t)sizeof(struct sockaddr_in6); sin6->sin6_family = AF_INET6; S6_ADDR16(sin6->sin6_addr)[0] = htons(0x2002); /* 2002:: */ } else if (family == AF_INET) { struct sockaddr_in *sin = (struct sockaddr_in*)&target_addr; + /* Use the "discard" service port */ + sin->sin_port = htons(9); sock = tor_open_socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP); - my_addr_len = (socklen_t)sizeof(struct sockaddr_in); + addr_len = (socklen_t)sizeof(struct sockaddr_in); sin->sin_family = AF_INET; sin->sin_addr.s_addr = htonl(0x12000001); /* 18.0.0.1 */ } else { @@ -1069,14 +1107,13 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr) goto err; } - if (connect(sock,(struct sockaddr *)&target_addr, - (socklen_t)sizeof(target_addr))<0) { + if (connect(sock,(struct sockaddr *)&target_addr, addr_len) < 0) { int e = tor_socket_errno(sock); log_fn(severity, LD_NET, "connect() failed: %s", tor_socket_strerror(e)); goto err; } - if (getsockname(sock,(struct sockaddr*)&my_addr, &my_addr_len)) { + if (getsockname(sock,(struct sockaddr*)&my_addr, &addr_len)) { int e = tor_socket_errno(sock); log_fn(severity, LD_NET, "getsockname() to determine interface failed: %s", tor_socket_strerror(e)); @@ -1093,7 +1130,7 @@ get_interface_address6(int severity, sa_family_t family, tor_addr_t *addr) /* ====== * IPv4 helpers - * XXXX022 IPv6 deprecate some of these. + * XXXX023 IPv6 deprecate some of these. */ /** Return true iff <b>ip</b> (in host order) is an IP reserved to localhost, diff --git a/src/common/address.h b/src/common/address.h index e004ffb13f..e41e4c2ba4 100644 --- a/src/common/address.h +++ b/src/common/address.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -39,11 +39,12 @@ static INLINE sa_family_t tor_addr_family(const tor_addr_t *a); static INLINE const struct in_addr *tor_addr_to_in(const tor_addr_t *a); static INLINE int tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u); -int tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port, +socklen_t tor_addr_to_sockaddr(const tor_addr_t *a, uint16_t port, struct sockaddr *sa_out, socklen_t len); int tor_addr_from_sockaddr(tor_addr_t *a, const struct sockaddr *sa, uint16_t *port_out); void tor_addr_make_unspec(tor_addr_t *a); +char *tor_sockaddr_to_str(const struct sockaddr *sa); /** Return an in6_addr* equivalent to <b>a</b>, or NULL if <b>a</b> is not * an IPv6 address. */ @@ -53,8 +54,20 @@ tor_addr_to_in6(const tor_addr_t *a) return a->family == AF_INET6 ? &a->addr.in6_addr : NULL; } +/** Given an IPv6 address <b>x</b>, yield it as an array of uint8_t. + * + * Requires that <b>x</b> is actually an IPv6 address. + */ #define tor_addr_to_in6_addr8(x) tor_addr_to_in6(x)->s6_addr +/** Given an IPv6 address <b>x</b>, yield it as an array of uint16_t. + * + * Requires that <b>x</b> is actually an IPv6 address. + */ #define tor_addr_to_in6_addr16(x) S6_ADDR16(*tor_addr_to_in6(x)) +/** Given an IPv6 address <b>x</b>, yield it as an array of uint32_t. + * + * Requires that <b>x</b> is actually an IPv6 address. + */ #define tor_addr_to_in6_addr32(x) S6_ADDR32(*tor_addr_to_in6(x)) /** Return an IPv4 address in network order for <b>a</b>, or 0 if @@ -71,7 +84,7 @@ tor_addr_to_ipv4h(const tor_addr_t *a) { return ntohl(tor_addr_to_ipv4n(a)); } -/* Given an IPv6 address, return its mapped IPv4 address in host order, or +/** Given an IPv6 address, return its mapped IPv4 address in host order, or * 0 if <b>a</b> is not an IPv6 address. * * (Does not check whether the address is really a mapped address */ @@ -102,8 +115,14 @@ tor_addr_eq_ipv4h(const tor_addr_t *a, uint32_t u) return a->family == AF_INET ? (tor_addr_to_ipv4h(a) == u) : 0; } -#define TOR_ADDR_BUF_LEN 48 /* [ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255] - */ +/** Length of a buffer that you need to allocate to be sure you can encode + * any tor_addr_t. + * + * This allows enough space for + * "[ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255]", + * plus a terminating NUL. + */ +#define TOR_ADDR_BUF_LEN 48 int tor_addr_lookup(const char *name, uint16_t family, tor_addr_t *addr_out); char *tor_dup_addr(const tor_addr_t *addr) ATTR_MALLOC; @@ -155,6 +174,7 @@ void tor_addr_from_ipv4n(tor_addr_t *dest, uint32_t v4addr); #define tor_addr_from_ipv4h(dest, v4addr) \ tor_addr_from_ipv4n((dest), htonl(v4addr)) void tor_addr_from_ipv6_bytes(tor_addr_t *dest, const char *bytes); +/** Set <b>dest</b> to the IPv4 address incoded in <b>in</b>. */ #define tor_addr_from_in(dest, in) \ tor_addr_from_ipv4n((dest), (in)->s_addr); void tor_addr_from_in6(tor_addr_t *dest, const struct in6_addr *in6); diff --git a/src/common/aes.c b/src/common/aes.c index 4998c386a0..81091e9f02 100644 --- a/src/common/aes.c +++ b/src/common/aes.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001, Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -100,6 +100,9 @@ /* Figure out which AES optimizations to use. */ #ifdef USE_BUILTIN_AES +/** If this is defined, we take advantage of the fact that AES treats its + * input as a set of 4 32-bit words, so that there is no need to encode and + * decode the 128-bit counter before every block encryption */ # define USE_RIJNDAEL_COUNTER_OPTIMIZATION # if 0 && (defined(__powerpc__) || defined(__powerpc64__)) /* XXXX do more experimentation before concluding this is actually diff --git a/src/common/aes.h b/src/common/aes.h index 4fb735cfe5..eb633dbcce 100644 --- a/src/common/aes.h +++ b/src/common/aes.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /* Implements a minimal interface to counter-mode AES. */ diff --git a/src/common/compat.c b/src/common/compat.c index d442294e83..330c432284 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -15,6 +15,8 @@ /* This is required on rh7 to make strptime not complain. * We also need it to make memmem get defined (where available) */ +/* XXXX023 We should just use AC_USE_SYSTEM_EXTENSIONS in our autoconf, + * and get this (and other important stuff!) automatically */ #define _GNU_SOURCE #include "compat.h" @@ -155,6 +157,7 @@ tor_mmap_file(const char *filename) return NULL; } + /* XXXX why not just do fstat here? */ size = filesize = (size_t) lseek(fd, 0, SEEK_END); lseek(fd, 0, SEEK_SET); /* ensure page alignment */ @@ -328,7 +331,7 @@ tor_vsnprintf(char *str, size_t size, const char *format, va_list args) int r; if (size == 0) return -1; /* no place for the NUL */ - if (size > SSIZE_T_MAX-16) + if (size > SIZE_T_CEILING) return -1; #ifdef MS_WINDOWS r = _vsnprintf(str, size, format, args); @@ -439,7 +442,9 @@ tor_vasprintf(char **strp, const char *fmt, va_list args) * <b>needle</b>, return a pointer to the first occurrence of the needle * within the haystack, or NULL if there is no such occurrence. * - * Requires that nlen be greater than zero. + * This function is <em>not</em> timing-safe. + * + * Requires that <b>nlen</b> be greater than zero. */ const void * tor_memmem(const void *_haystack, size_t hlen, @@ -463,7 +468,7 @@ tor_memmem(const void *_haystack, size_t hlen, while ((p = memchr(p, first, end-p))) { if (p+nlen > end) return NULL; - if (!memcmp(p, needle, nlen)) + if (fast_memeq(p, needle, nlen)) return p; ++p; } @@ -589,7 +594,7 @@ tor_fix_source_file(const char *fname) * unaligned memory access. */ uint16_t -get_uint16(const char *cp) +get_uint16(const void *cp) { uint16_t v; memcpy(&v,cp,2); @@ -601,7 +606,7 @@ get_uint16(const char *cp) * unaligned memory access. */ uint32_t -get_uint32(const char *cp) +get_uint32(const void *cp) { uint32_t v; memcpy(&v,cp,4); @@ -613,7 +618,7 @@ get_uint32(const char *cp) * unaligned memory access. */ uint64_t -get_uint64(const char *cp) +get_uint64(const void *cp) { uint64_t v; memcpy(&v,cp,8); @@ -625,7 +630,7 @@ get_uint64(const char *cp) * *(uint16_t*)(cp) = v, but will not cause segfaults on platforms that forbid * unaligned memory access. */ void -set_uint16(char *cp, uint16_t v) +set_uint16(void *cp, uint16_t v) { memcpy(cp,&v,2); } @@ -634,7 +639,7 @@ set_uint16(char *cp, uint16_t v) * *(uint32_t*)(cp) = v, but will not cause segfaults on platforms that forbid * unaligned memory access. */ void -set_uint32(char *cp, uint32_t v) +set_uint32(void *cp, uint32_t v) { memcpy(cp,&v,4); } @@ -643,7 +648,7 @@ set_uint32(char *cp, uint32_t v) * *(uint64_t*)(cp) = v, but will not cause segfaults on platforms that forbid * unaligned memory access. */ void -set_uint64(char *cp, uint64_t v) +set_uint64(void *cp, uint64_t v) { memcpy(cp,&v,8); } @@ -688,7 +693,9 @@ touch_file(const char *fname) /** Represents a lockfile on which we hold the lock. */ struct tor_lockfile_t { + /** Name of the file */ char *filename; + /** File descriptor used to hold the file open */ int fd; }; @@ -704,7 +711,10 @@ struct tor_lockfile_t { * * (Implementation note: because we need to fall back to fcntl on some * platforms, these locks are per-process, not per-thread. If you want - * to do in-process locking, use tor_mutex_t like a normal person.) + * to do in-process locking, use tor_mutex_t like a normal person. + * On Windows, when <b>blocking</b> is true, the maximum time that + * is actually waited is 10 seconds, after which NULL is returned + * and <b>locked_out</b> is set to 1.) */ tor_lockfile_t * tor_lockfile_lock(const char *filename, int blocking, int *locked_out) @@ -724,7 +734,7 @@ tor_lockfile_lock(const char *filename, int blocking, int *locked_out) #ifdef WIN32 _lseek(fd, 0, SEEK_SET); if (_locking(fd, blocking ? _LK_LOCK : _LK_NBLCK, 1) < 0) { - if (errno != EDEADLOCK) + if (errno != EACCES && errno != EDEADLOCK) log_warn(LD_FS,"Couldn't lock \"%s\": %s", filename, strerror(errno)); else *locked_out = 1; @@ -791,7 +801,8 @@ tor_lockfile_unlock(tor_lockfile_t *lockfile) tor_free(lockfile); } -/* Some old versions of Unix didn't define constants for these values, +/** @{ */ +/** Some old versions of Unix didn't define constants for these values, * and instead expect you to say 0, 1, or 2. */ #ifndef SEEK_CUR #define SEEK_CUR 1 @@ -799,6 +810,7 @@ tor_lockfile_unlock(tor_lockfile_t *lockfile) #ifndef SEEK_END #define SEEK_END 2 #endif +/** @} */ /** Return the position of <b>fd</b> with respect to the start of the file. */ off_t @@ -838,6 +850,7 @@ static int n_sockets_open = 0; /** Mutex to protect open_sockets, max_socket, and n_sockets_open. */ static tor_mutex_t *socket_accounting_mutex = NULL; +/** Helper: acquire the socket accounting lock. */ static INLINE void socket_accounting_lock(void) { @@ -846,6 +859,7 @@ socket_accounting_lock(void) tor_mutex_acquire(socket_accounting_mutex); } +/** Helper: release the socket accounting lock. */ static INLINE void socket_accounting_unlock(void) { @@ -856,7 +870,7 @@ socket_accounting_unlock(void) * Windows, where close()ing a socket doesn't work. Returns 0 on success, -1 * on failure. */ int -tor_close_socket(int s) +tor_close_socket(tor_socket_t s) { int r = 0; @@ -904,12 +918,15 @@ tor_close_socket(int s) return r; } +/** @{ */ #ifdef DEBUG_SOCKET_COUNTING /** Helper: if DEBUG_SOCKET_COUNTING is enabled, remember that <b>s</b> is * now an open socket. */ static INLINE void -mark_socket_open(int s) +mark_socket_open(tor_socket_t s) { + /* XXXX This bitarray business will NOT work on windows: sockets aren't + small ints there. */ if (s > max_socket) { if (max_socket == -1) { open_sockets = bitarray_init_zero(s+128); @@ -928,18 +945,19 @@ mark_socket_open(int s) #else #define mark_socket_open(s) STMT_NIL #endif +/** @} */ /** As socket(), but counts the number of open sockets. */ -int +tor_socket_t tor_open_socket(int domain, int type, int protocol) { - int s; + tor_socket_t s; #ifdef SOCK_CLOEXEC #define LINUX_CLOEXEC_OPEN_SOCKET type |= SOCK_CLOEXEC; #endif s = socket(domain, type, protocol); - if (s >= 0) { + if (SOCKET_OK(s)) { #if !defined(LINUX_CLOEXEC_OPEN_SOCKET) && defined(FD_CLOEXEC) fcntl(s, F_SETFD, FD_CLOEXEC); #endif @@ -952,17 +970,17 @@ tor_open_socket(int domain, int type, int protocol) } /** As socket(), but counts the number of open sockets. */ -int +tor_socket_t tor_accept_socket(int sockfd, struct sockaddr *addr, socklen_t *len) { - int s; + tor_socket_t s; #if defined(HAVE_ACCEPT4) && defined(SOCK_CLOEXEC) #define LINUX_CLOEXEC_ACCEPT s = accept4(sockfd, addr, len, SOCK_CLOEXEC); #else s = accept(sockfd, addr, len); #endif - if (s >= 0) { + if (SOCKET_OK(s)) { #if !defined(LINUX_CLOEXEC_ACCEPT) && defined(FD_CLOEXEC) fcntl(s, F_SETFD, FD_CLOEXEC); #endif @@ -988,7 +1006,7 @@ get_n_open_sockets(void) /** Turn <b>socket</b> into a nonblocking socket. */ void -set_socket_nonblocking(int socket) +set_socket_nonblocking(tor_socket_t socket) { #if defined(MS_WINDOWS) unsigned long nonblocking = 1; @@ -1016,7 +1034,7 @@ set_socket_nonblocking(int socket) **/ /* It would be nicer just to set errno, but that won't work for windows. */ int -tor_socketpair(int family, int type, int protocol, int fd[2]) +tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) { //don't use win32 socketpairs (they are always bad) #if defined(HAVE_SOCKETPAIR) && !defined(MS_WINDOWS) @@ -1050,9 +1068,9 @@ tor_socketpair(int family, int type, int protocol, int fd[2]) * for now, and really, when localhost is down sometimes, we * have other problems too. */ - int listener = -1; - int connector = -1; - int acceptor = -1; + tor_socket_t listener = -1; + tor_socket_t connector = -1; + tor_socket_t acceptor = -1; struct sockaddr_in listen_addr; struct sockaddr_in connect_addr; int size; @@ -1141,6 +1159,8 @@ tor_socketpair(int family, int type, int protocol, int fd[2]) #endif } +/** Number of extra file descriptors to keep in reserve beyond those that we + * tell Tor it's allowed to use. */ #define ULIMIT_BUFFER 32 /* keep 32 extra fd's beyond _ConnLimit */ /** Learn the maximum allowed number of file descriptors. (Some systems @@ -1253,13 +1273,15 @@ set_max_file_descriptors(rlim_t limit, int *max_out) static int log_credential_status(void) { +/** Log level to use when describing non-error UID/GID status. */ #define CREDENTIAL_LOG_LEVEL LOG_INFO /* Real, effective and saved UIDs */ uid_t ruid, euid, suid; /* Read, effective and saved GIDs */ gid_t rgid, egid, sgid; /* Supplementary groups */ - gid_t sup_gids[NGROUPS_MAX + 1]; + gid_t *sup_gids = NULL; + int sup_gids_size; /* Number of supplementary groups */ int ngids; @@ -1305,9 +1327,19 @@ log_credential_status(void) #endif /* log supplementary groups */ - if ((ngids = getgroups(NGROUPS_MAX + 1, sup_gids)) < 0) { + sup_gids_size = 64; + sup_gids = tor_malloc(sizeof(gid_t) * 64); + while ((ngids = getgroups(sup_gids_size, sup_gids)) < 0 && + errno == EINVAL && + sup_gids_size < NGROUPS_MAX) { + sup_gids_size *= 2; + sup_gids = tor_realloc(sup_gids, sizeof(gid_t) * sup_gids_size); + } + + if (ngids < 0) { log_warn(LD_GENERAL, "Error getting supplementary GIDs: %s", strerror(errno)); + tor_free(sup_gids); return -1; } else { int i, retval = 0; @@ -1337,6 +1369,7 @@ log_credential_status(void) tor_free(cp); }); smartlist_free(elts); + tor_free(sup_gids); return retval; } @@ -1503,6 +1536,45 @@ get_user_homedir(const char *username) } #endif +/** Modify <b>fname</b> to contain the name of the directory */ +int +get_parent_directory(char *fname) +{ + char *cp; + int at_end = 1; + tor_assert(fname); +#ifdef MS_WINDOWS + /* If we start with, say, c:, then don't consider that the start of the path + */ + if (fname[0] && fname[1] == ':') { + fname += 2; + } +#endif + /* Now we want to remove all path-separators at the end of the string, + * and to remove the end of the string starting with the path separator + * before the last non-path-separator. In perl, this would be + * s#[/]*$##; s#/[^/]*$##; + * on a unixy platform. + */ + cp = fname + strlen(fname); + at_end = 1; + while (--cp > fname) { + int is_sep = (*cp == '/' +#ifdef MS_WINDOWS + || *cp == '\\' +#endif + ); + if (is_sep) { + *cp = '\0'; + if (! at_end) + return 0; + } else { + at_end = 0; + } + } + return -1; +} + /** Set *addr to the IP address (in dotted-quad notation) stored in c. * Return 1 on success, 0 if c is badly formatted. (Like inet_aton(c,addr), * but works on Windows and Solaris.) @@ -2080,8 +2152,87 @@ tor_gettimeofday(struct timeval *timeval) #define TIME_FNS_NEED_LOCKS #endif -#ifndef HAVE_LOCALTIME_R -#ifdef TIME_FNS_NEED_LOCKS +static struct tm * +correct_tm(int islocal, const time_t *timep, struct tm *resultbuf, + struct tm *r) +{ + const char *outcome; + + if (PREDICT_LIKELY(r)) { + if (r->tm_year > 8099) { /* We can't strftime dates after 9999 CE. */ + r->tm_year = 8099; + r->tm_mon = 11; + r->tm_mday = 31; + r->tm_yday = 365; + r->tm_hour = 23; + r->tm_min = 59; + r->tm_sec = 59; + } + return r; + } + + /* If we get here, gmtime or localtime returned NULL. It might have done + * this because of overrun or underrun, or it might have done it because of + * some other weird issue. */ + if (timep) { + if (*timep < 0) { + r = resultbuf; + r->tm_year = 70; /* 1970 CE */ + r->tm_mon = 0; + r->tm_mday = 1; + r->tm_yday = 1; + r->tm_hour = 0; + r->tm_min = 0 ; + r->tm_sec = 0; + outcome = "Rounding up to 1970"; + goto done; + } else if (*timep >= INT32_MAX) { + /* Rounding down to INT32_MAX isn't so great, but keep in mind that we + * only do it if gmtime/localtime tells us NULL. */ + r = resultbuf; + r->tm_year = 137; /* 2037 CE */ + r->tm_mon = 11; + r->tm_mday = 31; + r->tm_yday = 365; + r->tm_hour = 23; + r->tm_min = 59; + r->tm_sec = 59; + outcome = "Rounding down to 2037"; + goto done; + } + } + + /* If we get here, then gmtime/localtime failed without getting an extreme + * value for *timep */ + + tor_fragile_assert(); + r = resultbuf; + memset(resultbuf, 0, sizeof(struct tm)); + outcome="can't recover"; + done: + log_warn(LD_BUG, "%s("I64_FORMAT") failed with error %s: %s", + islocal?"localtime":"gmtime", + timep?I64_PRINTF_ARG(*timep):0, + strerror(errno), + outcome); + return r; +} + +/** @{ */ +/** As localtime_r, but defined for platforms that don't have it: + * + * Convert *<b>timep</b> to a struct tm in local time, and store the value in + * *<b>result</b>. Return the result on success, or NULL on failure. + */ +#ifdef HAVE_LOCALTIME_R +struct tm * +tor_localtime_r(const time_t *timep, struct tm *result) +{ + struct tm *r; + r = localtime_r(timep, result); + return correct_tm(1, timep, result, r); +} +#elif defined(TIME_FNS_NEED_LOCKS) struct tm * tor_localtime_r(const time_t *timep, struct tm *result) { @@ -2091,9 +2242,10 @@ tor_localtime_r(const time_t *timep, struct tm *result) tor_assert(result); tor_mutex_acquire(m); r = localtime(timep); - memcpy(result, r, sizeof(struct tm)); + if (r) + memcpy(result, r, sizeof(struct tm)); tor_mutex_release(m); - return result; + return correct_tm(1, timep, result, r); } #else struct tm * @@ -2102,14 +2254,28 @@ tor_localtime_r(const time_t *timep, struct tm *result) struct tm *r; tor_assert(result); r = localtime(timep); - memcpy(result, r, sizeof(struct tm)); - return result; + if (r) + memcpy(result, r, sizeof(struct tm)); + return correct_tm(1, timep, result, r); } #endif -#endif +/** @} */ -#ifndef HAVE_GMTIME_R -#ifdef TIME_FNS_NEED_LOCKS +/** @{ */ +/** As gmtimee_r, but defined for platforms that don't have it: + * + * Convert *<b>timep</b> to a struct tm in UTC, and store the value in + * *<b>result</b>. Return the result on success, or NULL on failure. + */ +#ifdef HAVE_GMTIME_R +struct tm * +tor_gmtime_r(const time_t *timep, struct tm *result) +{ + struct tm *r; + r = gmtime_r(timep, result); + return correct_tm(0, timep, result, r); +} +#elif defined(TIME_FNS_NEED_LOCKS) struct tm * tor_gmtime_r(const time_t *timep, struct tm *result) { @@ -2119,9 +2285,10 @@ tor_gmtime_r(const time_t *timep, struct tm *result) tor_assert(result); tor_mutex_acquire(m); r = gmtime(timep); - memcpy(result, r, sizeof(struct tm)); + if (r) + memcpy(result, r, sizeof(struct tm)); tor_mutex_release(m); - return result; + return correct_tm(0, timep, result, r); } #else struct tm * @@ -2130,11 +2297,11 @@ tor_gmtime_r(const time_t *timep, struct tm *result) struct tm *r; tor_assert(result); r = gmtime(timep); - memcpy(result, r, sizeof(struct tm)); - return result; + if (r) + memcpy(result, r, sizeof(struct tm)); + return correct_tm(0, timep, result, r); } #endif -#endif #if defined(USE_WIN32_THREADS) void @@ -2525,11 +2692,11 @@ in_main_thread(void) */ #if defined(MS_WINDOWS) int -tor_socket_errno(int sock) +tor_socket_errno(tor_socket_t sock) { int optval, optvallen=sizeof(optval); int err = WSAGetLastError(); - if (err == WSAEWOULDBLOCK && sock >= 0) { + if (err == WSAEWOULDBLOCK && SOCKET_OK(sock)) { if (getsockopt(sock, SOL_SOCKET, SO_ERROR, (void*)&optval, &optvallen)) return err; if (optval) diff --git a/src/common/compat.h b/src/common/compat.h index 590da949c0..094036dff2 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #ifndef _TOR_COMPAT_H @@ -31,7 +31,7 @@ #ifdef HAVE_STRING_H #include <string.h> #endif -#ifdef HAVE_PTHREAD_H +#if defined(HAVE_PTHREAD_H) && !defined(MS_WINDOWS) #include <pthread.h> #endif #include <stdarg.h> @@ -314,6 +314,7 @@ const char *tor_fix_source_file(const char *fname); /* ===== Time compatibility */ #if !defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_STRUCT_TIMEVAL_TV_SEC) +/** Implementation of timeval for platforms that don't have it. */ struct timeval { time_t tv_sec; unsigned int tv_usec; @@ -322,24 +323,50 @@ struct timeval { void tor_gettimeofday(struct timeval *timeval); -#ifdef HAVE_LOCALTIME_R -#define tor_localtime_r localtime_r -#else struct tm *tor_localtime_r(const time_t *timep, struct tm *result); -#endif - -#ifdef HAVE_GMTIME_R -#define tor_gmtime_r gmtime_r -#else struct tm *tor_gmtime_r(const time_t *timep, struct tm *result); -#endif -/** Return true iff the tvp is related to uvp according to the relational - * operator cmp. Recognized values for cmp are ==, <=, <, >=, and >. */ -#define tor_timercmp(tvp, uvp, cmp) \ - (((tvp)->tv_sec == (uvp)->tv_sec) ? \ - ((tvp)->tv_usec cmp (uvp)->tv_usec) : \ - ((tvp)->tv_sec cmp (uvp)->tv_sec)) +#ifndef timeradd +/** Replacement for timeradd on platforms that do not have it: sets tvout to + * the sum of tv1 and tv2. */ +#define timeradd(tv1,tv2,tvout) \ + do { \ + (tvout)->tv_sec = (tv1)->tv_sec + (tv2)->tv_sec; \ + (tvout)->tv_usec = (tv2)->tv_usec + (tv2)->tv_usec; \ + if ((tvout)->tv_usec >= 1000000) { \ + (tvout)->tv_usec -= 1000000; \ + (tvout)->tv_sec++; \ + } \ + } while (0) +#endif + +#ifndef timersub +/** Replacement for timersub on platforms that do not have it: sets tvout to + * tv1 minus tv2. */ +#define timersub(tv1,tv2,tvout) \ + do { \ + (tvout)->tv_sec = (tv1)->tv_sec - (tv2)->tv_sec; \ + (tvout)->tv_usec = (tv2)->tv_usec - (tv2)->tv_usec; \ + if ((tvout)->tv_usec < 0) { \ + (tvout)->tv_usec += 1000000; \ + (tvout)->tv_sec--; \ + } \ + } while (0) +#endif + +#ifndef timercmp +/** Replacement for timersub on platforms that do not have it: returns true + * iff the relational operator "op" makes the expression tv1 op tv2 true. + * + * Note that while this definition should work for all boolean opeators, some + * platforms' native timercmp definitions do not support >=, <=, or ==. So + * don't use those. + */ +#define timercmp(tv1,tv2,op) \ + (((tv1)->tv_sec == (tv2)->tv_sec) ? \ + ((tv1)->tv_usec op (tv2)->tv_usec) : \ + ((tv1)->tv_sec op (tv2)->tv_sec)) +#endif /* ===== File compatibility */ int tor_open_cloexec(const char *path, int flags, unsigned mode); @@ -368,17 +395,26 @@ int tor_fd_seekend(int fd); typedef int socklen_t; #endif -int tor_close_socket(int s); -int tor_open_socket(int domain, int type, int protocol); -int tor_accept_socket(int sockfd, struct sockaddr *addr, socklen_t *len); +#ifdef MS_WINDOWS +#define tor_socket_t intptr_t +#define SOCKET_OK(s) ((s) != INVALID_SOCKET) +#else +#define tor_socket_t int +#define SOCKET_OK(s) ((s) >= 0) +#endif + +int tor_close_socket(tor_socket_t s); +tor_socket_t tor_open_socket(int domain, int type, int protocol); +tor_socket_t tor_accept_socket(int sockfd, struct sockaddr *addr, + socklen_t *len); int get_n_open_sockets(void); #define tor_socket_send(s, buf, len, flags) send(s, buf, len, flags) #define tor_socket_recv(s, buf, len, flags) recv(s, buf, len, flags) -/* Define struct in6_addr on platforms that do not have it. Generally, - * these platforms are ones without IPv6 support, but we want to have - * a working in6_addr there anyway, so we can use it to parse IPv6 +/** Implementation of struct in6_addr for platforms that do not have it. + * Generally, these platforms are ones without IPv6 support, but we want to + * have a working in6_addr there anyway, so we can use it to parse IPv6 * addresses. */ #if !defined(HAVE_STRUCT_IN6_ADDR) struct in6_addr @@ -394,9 +430,10 @@ struct in6_addr }; #endif +/** @{ */ +/** Many BSD variants seem not to define these. */ #if defined(__APPLE__) || defined(__darwin__) || defined(__FreeBSD__) \ || defined(__NetBSD__) || defined(__OpenBSD__) -/* Many BSD variants seem not to define these. */ #ifndef s6_addr16 #define s6_addr16 __u6_addr.__u6_addr16 #endif @@ -404,12 +441,15 @@ struct in6_addr #define s6_addr32 __u6_addr.__u6_addr32 #endif #endif +/** @} */ #ifndef HAVE_SA_FAMILY_T typedef uint16_t sa_family_t; #endif -/* Apparently, MS and Solaris don't define s6_addr16 or s6_addr32. */ +/** @{ */ +/** Apparently, MS and Solaris don't define s6_addr16 or s6_addr32; these + * macros get you a pointer to s6_addr32 or local equivalent. */ #ifdef HAVE_STRUCT_IN6_ADDR_S6_ADDR32 #define S6_ADDR32(x) ((uint32_t*)(x).s6_addr32) #else @@ -420,9 +460,10 @@ typedef uint16_t sa_family_t; #else #define S6_ADDR16(x) ((uint16_t*)((char*)&(x).s6_addr)) #endif +/** @} */ -/* Define struct sockaddr_in6 on platforms that do not have it. See notes - * on struct in6_addr. */ +/** Implementation of struct sockaddr_in6 on platforms that do not have + * it. See notes on struct in6_addr. */ #if !defined(HAVE_STRUCT_SOCKADDR_IN6) struct sockaddr_in6 { sa_family_t sin6_family; @@ -437,8 +478,8 @@ int tor_inet_aton(const char *cp, struct in_addr *addr) ATTR_NONNULL((1,2)); const char *tor_inet_ntop(int af, const void *src, char *dst, size_t len); int tor_inet_pton(int af, const char *src, void *dst); int tor_lookup_hostname(const char *name, uint32_t *addr) ATTR_NONNULL((1,2)); -void set_socket_nonblocking(int socket); -int tor_socketpair(int family, int type, int protocol, int fd[2]); +void set_socket_nonblocking(tor_socket_t socket); +int tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2]); int network_init(void); /* For stupid historical reasons, windows sockets have an independent @@ -465,7 +506,7 @@ int network_init(void); ((e) == WSAEMFILE || (e) == WSAENOBUFS) /** Return true if e is EADDRINUSE or the local equivalent. */ #define ERRNO_IS_EADDRINUSE(e) ((e) == WSAEADDRINUSE) -int tor_socket_errno(int sock); +int tor_socket_errno(tor_socket_t sock); const char *tor_socket_strerror(int e); #else #define ERRNO_IS_EAGAIN(e) ((e) == EAGAIN) @@ -500,18 +541,18 @@ long tor_weak_random(void); /* ===== OS compatibility */ const char *get_uname(void); -uint16_t get_uint16(const char *cp) ATTR_PURE ATTR_NONNULL((1)); -uint32_t get_uint32(const char *cp) ATTR_PURE ATTR_NONNULL((1)); -uint64_t get_uint64(const char *cp) ATTR_PURE ATTR_NONNULL((1)); -void set_uint16(char *cp, uint16_t v) ATTR_NONNULL((1)); -void set_uint32(char *cp, uint32_t v) ATTR_NONNULL((1)); -void set_uint64(char *cp, uint64_t v) ATTR_NONNULL((1)); +uint16_t get_uint16(const void *cp) ATTR_PURE ATTR_NONNULL((1)); +uint32_t get_uint32(const void *cp) ATTR_PURE ATTR_NONNULL((1)); +uint64_t get_uint64(const void *cp) ATTR_PURE ATTR_NONNULL((1)); +void set_uint16(void *cp, uint16_t v) ATTR_NONNULL((1)); +void set_uint32(void *cp, uint32_t v) ATTR_NONNULL((1)); +void set_uint64(void *cp, uint64_t v) ATTR_NONNULL((1)); /* These uint8 variants are defined to make the code more uniform. */ #define get_uint8(cp) (*(const uint8_t*)(cp)) -static void set_uint8(char *cp, uint8_t v); +static void set_uint8(void *cp, uint8_t v); static INLINE void -set_uint8(char *cp, uint8_t v) +set_uint8(void *cp, uint8_t v) { *(uint8_t*)cp = v; } @@ -525,6 +566,8 @@ int switch_id(const char *user); char *get_user_homedir(const char *username); #endif +int get_parent_directory(char *fname); + int spawn_func(void (*func)(void *), void *data); void spawn_exit(void) ATTR_NORETURN; @@ -548,10 +591,14 @@ int compute_num_cpus(void); /** A generic lock structure for multithreaded builds. */ typedef struct tor_mutex_t { #if defined(USE_WIN32_THREADS) + /** Windows-only: on windows, we implement locks with CRITICAL_SECTIONS. */ CRITICAL_SECTION mutex; #elif defined(USE_PTHREADS) + /** Pthreads-only: with pthreads, we implement locks with + * pthread_mutex_t. */ pthread_mutex_t mutex; #else + /** No-threads only: Dummy variable so that tor_mutex_t takes up space. */ int _unused; #endif } tor_mutex_t; diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c index d3b9eb3afa..c338dd6c05 100644 --- a/src/common/compat_libevent.c +++ b/src/common/compat_libevent.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2010, The Tor Project, Inc. */ +/* Copyright (c) 2009-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -36,13 +36,19 @@ */ typedef uint32_t le_version_t; -/* Macros: returns the number of a libevent version. */ +/** @{ */ +/** Macros: returns the number of a libevent version as a le_version_t */ #define V(major, minor, patch) \ (((major) << 24) | ((minor) << 16) | ((patch) << 8)) #define V_OLD(major, minor, patch) \ V((major), (minor), (patch)-'a'+1) +/** @} */ +/** Represetns a version of libevent so old we can't figure out what version + * it is. */ #define LE_OLD V(0,0,0) +/** Represents a version of libevent so weird we can't figure out what version + * it is. */ #define LE_OTHER V(0,0,99) static le_version_t tor_get_libevent_version(const char **v_out); @@ -65,19 +71,19 @@ libevent_logging_callback(int severity, const char *msg) } switch (severity) { case _EVENT_LOG_DEBUG: - log(LOG_DEBUG, LD_NET, "Message from libevent: %s", buf); + log(LOG_DEBUG, LD_NOCB|LD_NET, "Message from libevent: %s", buf); break; case _EVENT_LOG_MSG: - log(LOG_INFO, LD_NET, "Message from libevent: %s", buf); + log(LOG_INFO, LD_NOCB|LD_NET, "Message from libevent: %s", buf); break; case _EVENT_LOG_WARN: - log(LOG_WARN, LD_GENERAL, "Warning from libevent: %s", buf); + log(LOG_WARN, LD_NOCB|LD_GENERAL, "Warning from libevent: %s", buf); break; case _EVENT_LOG_ERR: - log(LOG_ERR, LD_GENERAL, "Error from libevent: %s", buf); + log(LOG_ERR, LD_NOCB|LD_GENERAL, "Error from libevent: %s", buf); break; default: - log(LOG_WARN, LD_GENERAL, "Message [%d] from libevent: %s", + log(LOG_WARN, LD_NOCB|LD_GENERAL, "Message [%d] from libevent: %s", severity, buf); break; } @@ -186,6 +192,12 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg) event_config_set_num_cpus_hint(cfg, torcfg->num_cpus); #endif +#if LIBEVENT_VERSION_NUMBER >= V(2,0,9) + /* We can enable changelist support with epoll, since we don't give + * Libevent any dup'd fds. This lets us avoid some syscalls. */ + event_config_set_flag(cfg, EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST); +#endif + the_event_base = event_base_new_with_config(cfg); event_config_free(cfg); @@ -217,8 +229,8 @@ tor_libevent_get_base(void) } #ifndef HAVE_EVENT_BASE_LOOPEXIT -/* Replacement for event_base_loopexit on some very old versions of Libevent - that we are not yet brave enough to deprecate. */ +/** Replacement for event_base_loopexit on some very old versions of Libevent + * that we are not yet brave enough to deprecate. */ int tor_event_base_loopexit(struct event_base *base, struct timeval *tv) { @@ -240,9 +252,9 @@ tor_libevent_get_method(void) #endif } -/** Return the le_version_t for the current version of libevent. If the - * version is very new, return LE_OTHER. If the version is so old that it - * doesn't support event_get_version(), return LE_OLD. DOCDOC */ +/** Return the le_version_t for the version of libevent specified in the + * string <b>v</b>. If the version is very new or uses an unrecognized + * version, format, return LE_OTHER. */ static le_version_t tor_decode_libevent_version(const char *v) { @@ -252,7 +264,7 @@ tor_decode_libevent_version(const char *v) /* Try the new preferred "1.4.11-stable" format. * Also accept "1.4.14b-stable". */ - fields = sscanf(v, "%u.%u.%u%c%c", &major, &minor, &patchlevel, &c, &e); + fields = tor_sscanf(v, "%u.%u.%u%c%c", &major, &minor, &patchlevel, &c, &e); if (fields == 3 || ((fields == 4 || fields == 5 ) && (c == '-' || c == '_')) || (fields == 5 && TOR_ISALPHA(c) && (e == '-' || e == '_'))) { @@ -260,7 +272,7 @@ tor_decode_libevent_version(const char *v) } /* Try the old "1.3e" format. */ - fields = sscanf(v, "%u.%u%c%c", &major, &minor, &c, &extra); + fields = tor_sscanf(v, "%u.%u%c%c", &major, &minor, &c, &extra); if (fields == 3 && TOR_ISALPHA(c)) { return V_OLD(major, minor, c); } else if (fields == 2) { @@ -292,7 +304,7 @@ le_versions_compatibility(le_version_t v) } /** Return the version number of the currently running version of Libevent. - See le_version_t for info on the format. + * See le_version_t for info on the format. */ static le_version_t tor_get_libevent_version(const char **v_out) @@ -342,21 +354,12 @@ tor_check_libevent_version(const char *m, int server, version = tor_get_libevent_version(&v); - /* It would be better to disable known-buggy methods than to simply - warn about them. However, it's not trivial to get libevent to change its - method once it's initialized, and it's not trivial to tell what method it - will use without initializing it. - - If we saw that the version was definitely bad, we could disable all the - methods that were bad for that version. But the issue with that is that - if you've found a libevent before 1.1, you are not at all guaranteed to - have _any_ good method to use. - - As of Libevent 2, we can do better, and have more control over what - methods get used. But the problem here is that there are no versions of - Libevent 2 that have buggy event cores, so there's no point in writing - disable code yet. - */ + /* It would be better to disable known-buggy methods rather than warning + * about them. But the problem is that with older versions of Libevent, + * it's not trivial to get them to change their methods once they're + * initialized... and with newer versions of Libevent, they aren't actually + * broken. But we should revisit this if we ever find a post-1.4 version + * of Libevent where we need to disable a given method. */ if (!strcmp(m, "kqueue")) { if (version < V_OLD(1,1,'b')) buggy = 1; diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h index ecf25806d5..8669fd4e0b 100644 --- a/src/common/compat_libevent.h +++ b/src/common/compat_libevent.h @@ -14,7 +14,8 @@ struct bufferevent; #ifdef HAVE_EVENT2_EVENT_H #include <event2/util.h> -#else +#elif !defined(EVUTIL_SOCKET_DEFINED) +#define EVUTIL_SOCKET_DEFINED #define evutil_socket_t int #endif diff --git a/src/common/container.c b/src/common/container.c index 0a95f33aad..92bfd2ec89 100644 --- a/src/common/container.c +++ b/src/common/container.c @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -210,13 +210,32 @@ smartlist_string_isin_case(const smartlist_t *sl, const char *element) int smartlist_string_num_isin(const smartlist_t *sl, int num) { - char buf[16]; + char buf[32]; /* long enough for 64-bit int, and then some. */ tor_snprintf(buf,sizeof(buf),"%d", num); return smartlist_string_isin(sl, buf); } +/** Return true iff the two lists contain the same strings in the same + * order, or if they are both NULL. */ +int +smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2) +{ + if (sl1 == NULL) + return sl2 == NULL; + if (sl2 == NULL) + return 0; + if (smartlist_len(sl1) != smartlist_len(sl2)) + return 0; + SMARTLIST_FOREACH(sl1, const char *, cp1, { + const char *cp2 = smartlist_get(sl2, cp1_sl_idx); + if (strcmp(cp1, cp2)) + return 0; + }); + return 1; +} + /** Return true iff <b>sl</b> has some element E such that - * !memcmp(E,<b>element</b>,DIGEST_LEN) + * tor_memeq(E,<b>element</b>,DIGEST_LEN) */ int smartlist_digest_isin(const smartlist_t *sl, const char *element) @@ -224,7 +243,7 @@ smartlist_digest_isin(const smartlist_t *sl, const char *element) int i; if (!sl) return 0; for (i=0; i < sl->num_used; i++) - if (memcmp((const char*)sl->list[i],element,DIGEST_LEN)==0) + if (tor_memeq((const char*)sl->list[i],element,DIGEST_LEN)) return 1; return 0; } @@ -318,7 +337,8 @@ smartlist_insert(smartlist_t *sl, int idx, void *val) /** * Split a string <b>str</b> along all occurrences of <b>sep</b>, - * adding the split strings, in order, to <b>sl</b>. + * appending the (newly allocated) split strings, in order, to + * <b>sl</b>. Return the number of strings added to <b>sl</b>. * * If <b>flags</b>&SPLIT_SKIP_SPACE is true, remove initial and * trailing space from each entry. @@ -327,7 +347,7 @@ smartlist_insert(smartlist_t *sl, int idx, void *val) * If <b>flags</b>&SPLIT_STRIP_SPACE is true, strip spaces from each * split string. * - * If max>0, divide the string into no more than <b>max</b> pieces. If + * If <b>max</b>\>0, divide the string into no more than <b>max</b> pieces. If * <b>sep</b> is NULL, split on any sequence of horizontal space. */ int @@ -638,15 +658,27 @@ smartlist_uniq_strings(smartlist_t *sl) * } */ -/* For a 1-indexed array, we would use LEFT_CHILD[x] = 2*x and RIGHT_CHILD[x] - * = 2*x + 1. But this is C, so we have to adjust a little. */ +/** @{ */ +/** Functions to manipulate heap indices to find a node's parent and children. + * + * For a 1-indexed array, we would use LEFT_CHILD[x] = 2*x and RIGHT_CHILD[x] + * = 2*x + 1. But this is C, so we have to adjust a little. */ //#define LEFT_CHILD(i) ( ((i)+1)*2 - 1) //#define RIGHT_CHILD(i) ( ((i)+1)*2 ) //#define PARENT(i) ( ((i)+1)/2 - 1) #define LEFT_CHILD(i) ( 2*(i) + 1 ) #define RIGHT_CHILD(i) ( 2*(i) + 2 ) #define PARENT(i) ( ((i)-1) / 2 ) - +/** }@ */ + +/** @{ */ +/** Helper macros for heaps: Given a local variable <b>idx_field_offset</b> + * set to the offset of an integer index within the heap element structure, + * IDX_OF_ITEM(p) gives you the index of p, and IDXP(p) gives you a pointer to + * where p's index is stored. Given additionally a local smartlist <b>sl</b>, + * UPDATE_IDX(i) sets the index of the element at <b>i</b> to the correct + * value (that is, to <b>i</b>). + */ #define IDXP(p) ((int*)STRUCT_VAR_P(p, idx_field_offset)) #define UPDATE_IDX(i) do { \ @@ -655,6 +687,7 @@ smartlist_uniq_strings(smartlist_t *sl) } while (0) #define IDX_OF_ITEM(p) (*IDXP(p)) +/** @} */ /** Helper. <b>sl</b> may have at most one violation of the heap property: * the item at <b>idx</b> may be greater than one or both of its children. @@ -788,7 +821,7 @@ smartlist_pqueue_assert_ok(smartlist_t *sl, static int _compare_digests(const void **_a, const void **_b) { - return memcmp((const char*)*_a, (const char*)*_b, DIGEST_LEN); + return tor_memcmp((const char*)*_a, (const char*)*_b, DIGEST_LEN); } /** Sort the list of DIGEST_LEN-byte digests into ascending order. */ @@ -810,7 +843,7 @@ smartlist_uniq_digests(smartlist_t *sl) static int _compare_digests256(const void **_a, const void **_b) { - return memcmp((const char*)*_a, (const char*)*_b, DIGEST256_LEN); + return tor_memcmp((const char*)*_a, (const char*)*_b, DIGEST256_LEN); } /** Sort the list of DIGEST256_LEN-byte digests into ascending order. */ @@ -872,7 +905,7 @@ strmap_entry_hash(const strmap_entry_t *a) static INLINE int digestmap_entries_eq(const digestmap_entry_t *a, const digestmap_entry_t *b) { - return !memcmp(a->key, b->key, DIGEST_LEN); + return tor_memeq(a->key, b->key, DIGEST_LEN); } /** Helper: return a hash value for a digest_map_t. */ diff --git a/src/common/container.h b/src/common/container.h index 3568de0159..4a6eba789d 100644 --- a/src/common/container.h +++ b/src/common/container.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #ifndef _TOR_CONTAINER_H @@ -15,6 +15,7 @@ * and macros defined here. **/ typedef struct smartlist_t { + /** @{ */ /** <b>list</b> has enough capacity to store exactly <b>capacity</b> elements * before it needs to be resized. Only the first <b>num_used</b> (\<= * capacity) elements point to valid data. @@ -22,6 +23,7 @@ typedef struct smartlist_t { void **list; int num_used; int capacity; + /** @} */ } smartlist_t; smartlist_t *smartlist_create(void); @@ -40,6 +42,8 @@ int smartlist_string_pos(const smartlist_t *, const char *elt) ATTR_PURE; int smartlist_string_isin_case(const smartlist_t *sl, const char *element) ATTR_PURE; int smartlist_string_num_isin(const smartlist_t *sl, int num) ATTR_PURE; +int smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2) + ATTR_PURE; int smartlist_digest_isin(const smartlist_t *sl, const char *element) ATTR_PURE; int smartlist_overlap(const smartlist_t *sl1, const smartlist_t *sl2) @@ -257,7 +261,7 @@ char *smartlist_join_strings2(smartlist_t *sl, const char *join, * Example use: * SMARTLIST_FOREACH_JOIN(routerstatus_list, routerstatus_t *, rs, * routerinfo_list, routerinfo_t *, ri, - * memcmp(rs->identity_digest, ri->identity_digest, 20), + * tor_memcmp(rs->identity_digest, ri->identity_digest, 20), * log_info(LD_GENERAL,"No match for %s", ri->nickname)) { * log_info(LD_GENERAL, "%s matches routerstatus %p", ri->nickname, rs); * } SMARTLIST_FOREACH_JOIN_END(rs, ri); @@ -272,7 +276,7 @@ char *smartlist_join_strings2(smartlist_t *sl, const char *join, * ri = smartlist_get(routerinfo_list, ri_sl_idx); * while (rs_sl_idx < rs_sl_len) { * rs = smartlist_get(routerstatus_list, rs_sl_idx); - * rs_ri_cmp = memcmp(rs->identity_digest, ri->identity_digest, 20); + * rs_ri_cmp = tor_memcmp(rs->identity_digest, ri->identity_digest, 20); * if (rs_ri_cmp > 0) { * break; * } else if (rs_ri_cmp == 0) { @@ -595,9 +599,9 @@ bitarray_is_set(bitarray_t *b, int bit) /** A set of digests, implemented as a Bloom filter. */ typedef struct { - int mask; /* One less than the number of bits in <b>ba</b>; always one less + int mask; /**< One less than the number of bits in <b>ba</b>; always one less * than a power of two. */ - bitarray_t *ba; /* A bit array to implement the Bloom filter. */ + bitarray_t *ba; /**< A bit array to implement the Bloom filter. */ } digestset_t; #define BIT(n) ((n) & set->mask) diff --git a/src/common/crypto.c b/src/common/crypto.c index 81a432d8d4..05c1ce9ea2 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001, Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -68,13 +68,15 @@ #endif #if OPENSSL_VERSION_NUMBER < 0x00908000l -/* On OpenSSL versions before 0.9.8, there is no working SHA256 +/** @{ */ +/** On OpenSSL versions before 0.9.8, there is no working SHA256 * implementation, so we use Tom St Denis's nice speedy one, slightly adapted - * to our needs */ + * to our needs. These macros make it usable by us. */ #define SHA256_CTX sha256_state #define SHA256_Init sha256_init #define SHA256_Update sha256_process #define LTC_ARGCHK(x) tor_assert(x) +/** @} */ #include "sha256.c" #define SHA256_Final(a,b) sha256_done(b,a) @@ -104,21 +106,22 @@ static int _n_openssl_mutexes = 0; /** A public key, or a public/private key-pair. */ struct crypto_pk_env_t { - int refs; /* reference counting so we don't have to copy keys */ - RSA *key; + int refs; /**< reference count, so we don't have to copy keys */ + RSA *key; /**< The key itself */ }; /** Key and stream information for a stream cipher. */ struct crypto_cipher_env_t { - char key[CIPHER_KEY_LEN]; - aes_cnt_cipher_t *cipher; + char key[CIPHER_KEY_LEN]; /**< The raw key. */ + aes_cnt_cipher_t *cipher; /**< The key in format usable for counter-mode AES + * encryption */ }; /** A structure to hold the first half (x, g^x) of a Diffie-Hellman handshake * while we're waiting for the second.*/ struct crypto_dh_env_t { - DH *dh; + DH *dh; /**< The openssl DH object */ }; static int setup_openssl_threading(void); @@ -326,17 +329,6 @@ _crypto_new_pk_env_rsa(RSA *rsa) return env; } -/** used by tortls.c: wrap the RSA from an evp_pkey in a crypto_pk_env_t. - * returns NULL if this isn't an RSA key. */ -crypto_pk_env_t * -_crypto_new_pk_env_evp_pkey(EVP_PKEY *pkey) -{ - RSA *rsa; - if (!(rsa = EVP_PKEY_get1_RSA(pkey))) - return NULL; - return _crypto_new_pk_env_rsa(rsa); -} - /** Helper, used by tor-checkkey.c and tor-gencert.c. Return the RSA from a * crypto_pk_env_t. */ RSA * @@ -390,7 +382,7 @@ crypto_new_pk_env(void) RSA *rsa; rsa = RSA_new(); - if (!rsa) return NULL; + tor_assert(rsa); return _crypto_new_pk_env_rsa(rsa); } @@ -518,21 +510,25 @@ crypto_pk_generate_key_with_bits(crypto_pk_env_t *env, int bits) return 0; } -/** Read a PEM-encoded private key from the string <b>s</b> into <b>env</b>. - * Return 0 on success, -1 on failure. +/** Read a PEM-encoded private key from the <b>len</b>-byte string <b>s</b> + * into <b>env</b>. Return 0 on success, -1 on failure. If len is -1, + * the string is nul-terminated. */ /* Used here, and used for testing. */ int crypto_pk_read_private_key_from_string(crypto_pk_env_t *env, - const char *s) + const char *s, ssize_t len) { BIO *b; tor_assert(env); tor_assert(s); + tor_assert(len < INT_MAX && len < SSIZE_T_CEILING); - /* Create a read-only memory BIO, backed by the NUL-terminated string 's' */ - b = BIO_new_mem_buf((char*)s, -1); + /* Create a read-only memory BIO, backed by the string 's' */ + b = BIO_new_mem_buf((char*)s, (int)len); + if (!b) + return -1; if (env->key) RSA_free(env->key); @@ -566,7 +562,8 @@ crypto_pk_read_private_key_from_filename(crypto_pk_env_t *env, } /* Try to parse it. */ - r = crypto_pk_read_private_key_from_string(env, contents); + r = crypto_pk_read_private_key_from_string(env, contents, -1); + memset(contents, 0, strlen(contents)); tor_free(contents); if (r) return -1; /* read_private_key_from_string already warned, so we don't.*/ @@ -592,6 +589,8 @@ crypto_pk_write_key_to_string_impl(crypto_pk_env_t *env, char **dest, tor_assert(dest); b = BIO_new(BIO_s_mem()); /* Create a memory BIO */ + if (!b) + return -1; /* Now you can treat b as if it were a file. Just use the * PEM_*_bio_* functions instead of the non-bio variants. @@ -659,6 +658,8 @@ crypto_pk_read_public_key_from_string(crypto_pk_env_t *env, const char *src, tor_assert(len<INT_MAX); b = BIO_new(BIO_s_mem()); /* Create a memory BIO */ + if (!b) + return -1; BIO_write(b, src, (int)len); @@ -704,6 +705,7 @@ crypto_pk_write_private_key_to_filename(crypto_pk_env_t *env, s[len]='\0'; r = write_str_to_file(fname, s, 0); BIO_free(bio); + memset(s, 0, strlen(s)); tor_free(s); return r; } @@ -731,6 +733,18 @@ crypto_pk_key_is_private(const crypto_pk_env_t *key) return PRIVATE_KEY_OK(key); } +/** Return true iff <b>env</b> contains a public key whose public exponent + * equals 65537. + */ +int +crypto_pk_public_exponent_ok(crypto_pk_env_t *env) +{ + tor_assert(env); + tor_assert(env->key); + + return BN_is_word(env->key->e, 65537); +} + /** Compare the public-key components of a and b. Return -1 if a\<b, 0 * if a==b, and 1 if a\>b. */ @@ -763,6 +777,17 @@ crypto_pk_keysize(crypto_pk_env_t *env) return (size_t) RSA_size(env->key); } +/** Return the size of the public key modulus of <b>env</b>, in bits. */ +int +crypto_pk_num_bits(crypto_pk_env_t *env) +{ + tor_assert(env); + tor_assert(env->key); + tor_assert(env->key->n); + + return BN_num_bits(env->key->n); +} + /** Increase the reference count of <b>env</b>, and return it. */ crypto_pk_env_t * @@ -807,9 +832,12 @@ crypto_pk_copy_full(crypto_pk_env_t *env) * in <b>env</b>, using the padding method <b>padding</b>. On success, * write the result to <b>to</b>, and return the number of bytes * written. On failure, return -1. + * + * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be + * at least the length of the modulus of <b>env</b>. */ int -crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, +crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, size_t tolen, const char *from, size_t fromlen, int padding) { int r; @@ -817,6 +845,7 @@ crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, tor_assert(from); tor_assert(to); tor_assert(fromlen<INT_MAX); + tor_assert(tolen >= crypto_pk_keysize(env)); r = RSA_public_encrypt((int)fromlen, (unsigned char*)from, (unsigned char*)to, @@ -832,9 +861,13 @@ crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, * in <b>env</b>, using the padding method <b>padding</b>. On success, * write the result to <b>to</b>, and return the number of bytes * written. On failure, return -1. + * + * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be + * at least the length of the modulus of <b>env</b>. */ int crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to, + size_t tolen, const char *from, size_t fromlen, int padding, int warnOnFailure) { @@ -844,6 +877,7 @@ crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to, tor_assert(to); tor_assert(env->key); tor_assert(fromlen<INT_MAX); + tor_assert(tolen >= crypto_pk_keysize(env)); if (!env->key->p) /* Not a private key */ return -1; @@ -864,9 +898,13 @@ crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to, * public key in <b>env</b>, using PKCS1 padding. On success, write the * signed data to <b>to</b>, and return the number of bytes written. * On failure, return -1. + * + * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be + * at least the length of the modulus of <b>env</b>. */ int crypto_pk_public_checksig(crypto_pk_env_t *env, char *to, + size_t tolen, const char *from, size_t fromlen) { int r; @@ -874,6 +912,7 @@ crypto_pk_public_checksig(crypto_pk_env_t *env, char *to, tor_assert(from); tor_assert(to); tor_assert(fromlen < INT_MAX); + tor_assert(tolen >= crypto_pk_keysize(env)); r = RSA_public_decrypt((int)fromlen, (unsigned char*)from, (unsigned char*)to, env->key, RSA_PKCS1_PADDING); @@ -896,24 +935,28 @@ crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const char *data, { char digest[DIGEST_LEN]; char *buf; + size_t buflen; int r; tor_assert(env); tor_assert(data); tor_assert(sig); + tor_assert(datalen < SIZE_T_CEILING); + tor_assert(siglen < SIZE_T_CEILING); if (crypto_digest(digest,data,datalen)<0) { log_warn(LD_BUG, "couldn't compute digest"); return -1; } - buf = tor_malloc(crypto_pk_keysize(env)+1); - r = crypto_pk_public_checksig(env,buf,sig,siglen); + buflen = crypto_pk_keysize(env); + buf = tor_malloc(buflen); + r = crypto_pk_public_checksig(env,buf,buflen,sig,siglen); if (r != DIGEST_LEN) { log_warn(LD_CRYPTO, "Invalid signature"); tor_free(buf); return -1; } - if (memcmp(buf, digest, DIGEST_LEN)) { + if (tor_memneq(buf, digest, DIGEST_LEN)) { log_warn(LD_CRYPTO, "Signature mismatched with digest."); tor_free(buf); return -1; @@ -927,9 +970,12 @@ crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const char *data, * <b>env</b>, using PKCS1 padding. On success, write the signature to * <b>to</b>, and return the number of bytes written. On failure, return * -1. + * + * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be + * at least the length of the modulus of <b>env</b>. */ int -crypto_pk_private_sign(crypto_pk_env_t *env, char *to, +crypto_pk_private_sign(crypto_pk_env_t *env, char *to, size_t tolen, const char *from, size_t fromlen) { int r; @@ -937,6 +983,7 @@ crypto_pk_private_sign(crypto_pk_env_t *env, char *to, tor_assert(from); tor_assert(to); tor_assert(fromlen < INT_MAX); + tor_assert(tolen >= crypto_pk_keysize(env)); if (!env->key->p) /* Not a private key */ return -1; @@ -955,16 +1002,19 @@ crypto_pk_private_sign(crypto_pk_env_t *env, char *to, * <b>from</b>; sign the data with the private key in <b>env</b>, and * store it in <b>to</b>. Return the number of bytes written on * success, and -1 on failure. + * + * <b>tolen</b> is the number of writable bytes in <b>to</b>, and must be + * at least the length of the modulus of <b>env</b>. */ int -crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to, +crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to, size_t tolen, const char *from, size_t fromlen) { int r; char digest[DIGEST_LEN]; if (crypto_digest(digest,from,fromlen)<0) return -1; - r = crypto_pk_private_sign(env,to,digest,DIGEST_LEN); + r = crypto_pk_private_sign(env,to,tolen,digest,DIGEST_LEN); memset(digest, 0, sizeof(digest)); return r; } @@ -988,7 +1038,7 @@ crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to, */ int crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, - char *to, + char *to, size_t tolen, const char *from, size_t fromlen, int padding, int force) @@ -1001,6 +1051,7 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, tor_assert(env); tor_assert(from); tor_assert(to); + tor_assert(fromlen < SIZE_T_CEILING); overhead = crypto_get_rsa_padding_overhead(crypto_get_rsa_padding(padding)); pkeylen = crypto_pk_keysize(env); @@ -1010,8 +1061,13 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, if (!force && fromlen+overhead <= pkeylen) { /* It all fits in a single encrypt. */ - return crypto_pk_public_encrypt(env,to,from,fromlen,padding); + return crypto_pk_public_encrypt(env,to, + tolen, + from,fromlen,padding); } + tor_assert(tolen >= fromlen + overhead + CIPHER_KEY_LEN); + tor_assert(tolen >= pkeylen); + cipher = crypto_new_cipher_env(); if (!cipher) return -1; if (crypto_cipher_generate_key(cipher)<0) @@ -1033,7 +1089,7 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, /* Length of symmetrically encrypted data. */ symlen = fromlen-(pkeylen-overhead-CIPHER_KEY_LEN); - outlen = crypto_pk_public_encrypt(env,to,buf,pkeylen-overhead,padding); + outlen = crypto_pk_public_encrypt(env,to,tolen,buf,pkeylen-overhead,padding); if (outlen!=(int)pkeylen) { goto err; } @@ -1059,6 +1115,7 @@ crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, int crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env, char *to, + size_t tolen, const char *from, size_t fromlen, int padding, int warnOnFailure) @@ -1068,14 +1125,16 @@ crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env, crypto_cipher_env_t *cipher = NULL; char *buf = NULL; + tor_assert(fromlen < SIZE_T_CEILING); pkeylen = crypto_pk_keysize(env); if (fromlen <= pkeylen) { - return crypto_pk_private_decrypt(env,to,from,fromlen,padding, + return crypto_pk_private_decrypt(env,to,tolen,from,fromlen,padding, warnOnFailure); } - buf = tor_malloc(pkeylen+1); - outlen = crypto_pk_private_decrypt(env,buf,from,pkeylen,padding, + + buf = tor_malloc(pkeylen); + outlen = crypto_pk_private_decrypt(env,buf,pkeylen,from,pkeylen,padding, warnOnFailure); if (outlen<0) { log_fn(warnOnFailure?LOG_WARN:LOG_DEBUG, LD_CRYPTO, @@ -1093,6 +1152,7 @@ crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env, } memcpy(to,buf+CIPHER_KEY_LEN,outlen-CIPHER_KEY_LEN); outlen -= CIPHER_KEY_LEN; + tor_assert(tolen - outlen >= fromlen - pkeylen); r = crypto_cipher_decrypt(cipher, to+outlen, from+pkeylen, fromlen-pkeylen); if (r<0) goto err; @@ -1117,7 +1177,7 @@ crypto_pk_asn1_encode(crypto_pk_env_t *pk, char *dest, size_t dest_len) int len; unsigned char *buf, *cp; len = i2d_RSAPublicKey(pk->key, NULL); - if (len < 0 || (size_t)len > dest_len) + if (len < 0 || (size_t)len > dest_len || dest_len > SIZE_T_CEILING) return -1; cp = buf = tor_malloc(len+1); len = i2d_RSAPublicKey(pk->key, &cp); @@ -1192,6 +1252,8 @@ add_spaces_to_fp(char *out, size_t outlen, const char *in) { int n = 0; char *end = out+outlen; + tor_assert(outlen < SIZE_T_CEILING); + while (*in && out<end) { *out++ = *in++; if (++n == 4 && *in && out<end) { @@ -1337,6 +1399,7 @@ crypto_cipher_encrypt(crypto_cipher_env_t *env, char *to, tor_assert(from); tor_assert(fromlen); tor_assert(to); + tor_assert(fromlen < SIZE_T_CEILING); aes_crypt(env->cipher, from, fromlen, to); return 0; @@ -1353,6 +1416,7 @@ crypto_cipher_decrypt(crypto_cipher_env_t *env, char *to, tor_assert(env); tor_assert(from); tor_assert(to); + tor_assert(fromlen < SIZE_T_CEILING); aes_crypt(env->cipher, from, fromlen, to); return 0; @@ -1364,6 +1428,7 @@ crypto_cipher_decrypt(crypto_cipher_env_t *env, char *to, int crypto_cipher_crypt_inplace(crypto_cipher_env_t *env, char *buf, size_t len) { + tor_assert(len < SIZE_T_CEILING); aes_crypt_inplace(env->cipher, buf, len); return 0; } @@ -1431,7 +1496,7 @@ crypto_cipher_decrypt_with_iv(crypto_cipher_env_t *cipher, /* SHA-1 */ -/** Compute the SHA1 digest of <b>len</b> bytes in data stored in +/** Compute the SHA1 digest of the <b>len</b> bytes on data stored in * <b>m</b>. Write the DIGEST_LEN byte result into <b>digest</b>. * Return 0 on success, -1 on failure. */ @@ -1443,6 +1508,9 @@ crypto_digest(char *digest, const char *m, size_t len) return (SHA1((const unsigned char*)m,len,(unsigned char*)digest) == NULL); } +/** Compute a 256-bit digest of <b>len</b> bytes in data stored in <b>m</b>, + * using the algorithm <b>algorithm</b>. Write the DIGEST_LEN256-byte result + * into <b>digest</b>. Return 0 on success, -1 on failure. */ int crypto_digest256(char *digest, const char *m, size_t len, digest_algorithm_t algorithm) @@ -1502,13 +1570,14 @@ crypto_digest_algorithm_parse_name(const char *name) /** Intermediate information about the digest of a stream of data. */ struct crypto_digest_env_t { union { - SHA_CTX sha1; - SHA256_CTX sha2; - } d; - digest_algorithm_t algorithm : 8; + SHA_CTX sha1; /**< state for SHA1 */ + SHA256_CTX sha2; /**< state for SHA256 */ + } d; /**< State for the digest we're using. Only one member of the + * union is usable, depending on the value of <b>algorithm</b>. */ + digest_algorithm_t algorithm : 8; /**< Which algorithm is in use? */ }; -/** Allocate and return a new digest object. +/** Allocate and return a new digest object to compute SHA1 digests. */ crypto_digest_env_t * crypto_new_digest_env(void) @@ -1520,6 +1589,8 @@ crypto_new_digest_env(void) return r; } +/** Allocate and return a new digest object to compute 256-bit digests + * using <b>algorithm</b>. */ crypto_digest_env_t * crypto_new_digest256_env(digest_algorithm_t algorithm) { @@ -1641,8 +1712,10 @@ crypto_hmac_sha1(char *hmac_out, /* DH */ -/** Shared P parameter for our DH key exchanged. */ +/** Shared P parameter for our circuit-crypto DH key exchanges. */ static BIGNUM *dh_param_p = NULL; +/** Shared P parameter for our TLS DH key exchanges. */ +static BIGNUM *dh_param_p_tls = NULL; /** Shared G parameter for our DH key exchanges. */ static BIGNUM *dh_param_g = NULL; @@ -1651,14 +1724,16 @@ static BIGNUM *dh_param_g = NULL; static void init_dh_param(void) { - BIGNUM *p, *g; + BIGNUM *p, *p2, *g; int r; - if (dh_param_p && dh_param_g) + if (dh_param_p && dh_param_g && dh_param_p_tls) return; p = BN_new(); + p2 = BN_new(); g = BN_new(); tor_assert(p); + tor_assert(p2); tor_assert(g); /* This is from rfc2409, section 6.2. It's a safe prime, and @@ -1672,30 +1747,52 @@ init_dh_param(void) "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE6" "49286651ECE65381FFFFFFFFFFFFFFFF"); tor_assert(r); + /* This is the 1024-bit safe prime that Apache uses for its DH stuff; see + * modules/ssl/ssl_engine_dh.c */ + r = BN_hex2bn(&p2, + "D67DE440CBBBDC1936D693D34AFD0AD50C84D239A45F520BB88174CB98" + "BCE951849F912E639C72FB13B4B4D7177E16D55AC179BA420B2A29FE324A" + "467A635E81FF5901377BEDDCFD33168A461AAD3B72DAE8860078045B07A7" + "DBCA7874087D1510EA9FCC9DDD330507DD62DB88AEAA747DE0F4D6E2BD68" + "B0E7393E0F24218EB3"); + tor_assert(r); r = BN_set_word(g, 2); tor_assert(r); dh_param_p = p; + dh_param_p_tls = p2; dh_param_g = g; } +/** Number of bits to use when choosing the x or y value in a Diffie-Hellman + * handshake. Since we exponentiate by this value, choosing a smaller one + * lets our handhake go faster. + */ #define DH_PRIVATE_KEY_BITS 320 /** Allocate and return a new DH object for a key exchange. */ crypto_dh_env_t * -crypto_dh_new(void) +crypto_dh_new(int dh_type) { crypto_dh_env_t *res = tor_malloc_zero(sizeof(crypto_dh_env_t)); + tor_assert(dh_type == DH_TYPE_CIRCUIT || dh_type == DH_TYPE_TLS || + dh_type == DH_TYPE_REND); + if (!dh_param_p) init_dh_param(); if (!(res->dh = DH_new())) goto err; - if (!(res->dh->p = BN_dup(dh_param_p))) - goto err; + if (dh_type == DH_TYPE_TLS) { + if (!(res->dh->p = BN_dup(dh_param_p_tls))) + goto err; + } else { + if (!(res->dh->p = BN_dup(dh_param_p))) + goto err; + } if (!(res->dh->g = BN_dup(dh_param_g))) goto err; @@ -1826,7 +1923,7 @@ crypto_dh_compute_secret(int severity, crypto_dh_env_t *dh, { char *secret_tmp = NULL; BIGNUM *pubkey_bn = NULL; - size_t secret_len=0; + size_t secret_len=0, secret_tmp_len=0; int result=0; tor_assert(dh); tor_assert(secret_bytes_out/DIGEST_LEN <= 255); @@ -1840,7 +1937,8 @@ crypto_dh_compute_secret(int severity, crypto_dh_env_t *dh, log_fn(severity, LD_CRYPTO,"Rejected invalid g^x"); goto error; } - secret_tmp = tor_malloc(crypto_dh_get_bytes(dh)); + secret_tmp_len = crypto_dh_get_bytes(dh); + secret_tmp = tor_malloc(secret_tmp_len); result = DH_compute_key((unsigned char*)secret_tmp, pubkey_bn, dh->dh); if (result < 0) { log_warn(LD_CRYPTO,"DH_compute_key() failed."); @@ -1859,7 +1957,10 @@ crypto_dh_compute_secret(int severity, crypto_dh_env_t *dh, crypto_log_errors(LOG_WARN, "completing DH handshake"); if (pubkey_bn) BN_free(pubkey_bn); - tor_free(secret_tmp); + if (secret_tmp) { + memset(secret_tmp, 0, secret_tmp_len); + tor_free(secret_tmp); + } if (result < 0) return result; else @@ -1918,15 +2019,22 @@ crypto_dh_free(crypto_dh_env_t *dh) /* random numbers */ -/* This is how much entropy OpenSSL likes to add right now, so maybe it will +/** How many bytes of entropy we add at once. + * + * This is how much entropy OpenSSL likes to add right now, so maybe it will * work for us too. */ #define ADD_ENTROPY 32 -/* Use RAND_poll if OpenSSL is 0.9.6 release or later. (The "f" means - "release".) */ +/** True iff we should use OpenSSL's RAND_poll function to add entropy to its + * pool. + * + * Use RAND_poll if OpenSSL is 0.9.6 release or later. (The "f" means + *"release".) */ #define HAVE_RAND_POLL (OPENSSL_VERSION_NUMBER >= 0x0090600fl) -/* Versions of OpenSSL prior to 0.9.7k and 0.9.8c had a bug where RAND_poll +/** True iff it's safe to use RAND_poll after setup. + * + * Versions of OpenSSL prior to 0.9.7k and 0.9.8c had a bug where RAND_poll * would allocate an fd_set on the stack, open a new file, and try to FD_SET * that fd without checking whether it fit in the fd_set. Thus, if the * system has not just been started up, it is unsafe to call */ @@ -1935,6 +2043,7 @@ crypto_dh_free(crypto_dh_env_t *dh) OPENSSL_VERSION_NUMBER <= 0x00907fffl) || \ (OPENSSL_VERSION_NUMBER >= 0x0090803fl)) +/** Set the seed of the weak RNG to a random value. */ static void seed_weak_rng(void) { @@ -1950,14 +2059,15 @@ seed_weak_rng(void) int crypto_seed_rng(int startup) { - char buf[ADD_ENTROPY]; int rand_poll_status = 0; /* local variables */ #ifdef MS_WINDOWS + unsigned char buf[ADD_ENTROPY]; static int provider_set = 0; static HCRYPTPROV provider; #else + char buf[ADD_ENTROPY]; static const char *filenames[] = { "/dev/srandom", "/dev/urandom", "/dev/random", NULL }; @@ -2035,13 +2145,14 @@ crypto_rand(char *to, size_t n) } /** Return a pseudorandom integer, chosen uniformly from the values - * between 0 and <b>max</b>-1. */ + * between 0 and <b>max</b>-1 inclusive. <b>max</b> must be between 1 and + * INT_MAX+1, inclusive. */ int crypto_rand_int(unsigned int max) { unsigned int val; unsigned int cutoff; - tor_assert(max < UINT_MAX); + tor_assert(max <= ((unsigned int)INT_MAX)+1); tor_assert(max > 0); /* don't div by 0 */ /* We ignore any values that are >= 'cutoff,' to avoid biasing the @@ -2187,9 +2298,12 @@ base64_encode(char *dest, size_t destlen, const char *src, size_t srclen) return ret; } +/** @{ */ +/** Special values used for the base64_decode_table */ #define X 255 #define SP 64 #define PAD 65 +/** @} */ /** Internal table mapping byte values to what they represent in base64. * Numbers 0..63 are 6-bit integers. SPs are spaces, and should be * skipped. Xs are invalid and must not appear in base64. PAD indicates @@ -2402,9 +2516,10 @@ digest256_from_base64(char *digest, const char *d64) void base32_encode(char *dest, size_t destlen, const char *src, size_t srclen) { - unsigned int i, bit, v, u; - size_t nbits = srclen * 8; + unsigned int i, v, u; + size_t nbits = srclen * 8, bit; + tor_assert(srclen < SIZE_T_CEILING/8); tor_assert((nbits%5) == 0); /* We need an even multiple of 5 bits. */ tor_assert((nbits/5)+1 <= destlen); /* We need enough space. */ tor_assert(destlen < SIZE_T_CEILING); @@ -2428,11 +2543,12 @@ base32_decode(char *dest, size_t destlen, const char *src, size_t srclen) { /* XXXX we might want to rewrite this along the lines of base64_decode, if * it ever shows up in the profile. */ - unsigned int i, j, bit; - size_t nbits; + unsigned int i; + size_t nbits, j, bit; char *tmp; nbits = srclen * 5; + tor_assert(srclen < SIZE_T_CEILING / 5); tor_assert((nbits%8) == 0); /* We need an even multiple of 8 bits. */ tor_assert((nbits/8) <= destlen); /* We need enough space. */ tor_assert(destlen < SIZE_T_CEILING); @@ -2591,6 +2707,7 @@ _openssl_dynlock_destroy_cb(struct CRYPTO_dynlock_value *v, tor_free(v); } +/** @{ */ /** Helper: Construct mutexes, and set callbacks to help OpenSSL handle being * multithreaded. */ static int @@ -2616,4 +2733,5 @@ setup_openssl_threading(void) return 0; } #endif +/** @} */ diff --git a/src/common/crypto.h b/src/common/crypto.h index c433938d5b..9b4eee622b 100644 --- a/src/common/crypto.h +++ b/src/common/crypto.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001, Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -112,34 +112,38 @@ int crypto_pk_write_private_key_to_string(crypto_pk_env_t *env, int crypto_pk_read_public_key_from_string(crypto_pk_env_t *env, const char *src, size_t len); int crypto_pk_read_private_key_from_string(crypto_pk_env_t *env, - const char *s); + const char *s, ssize_t len); int crypto_pk_write_private_key_to_filename(crypto_pk_env_t *env, const char *fname); int crypto_pk_check_key(crypto_pk_env_t *env); int crypto_pk_cmp_keys(crypto_pk_env_t *a, crypto_pk_env_t *b); size_t crypto_pk_keysize(crypto_pk_env_t *env); +int crypto_pk_num_bits(crypto_pk_env_t *env); crypto_pk_env_t *crypto_pk_dup_key(crypto_pk_env_t *orig); crypto_pk_env_t *crypto_pk_copy_full(crypto_pk_env_t *orig); int crypto_pk_key_is_private(const crypto_pk_env_t *key); +int crypto_pk_public_exponent_ok(crypto_pk_env_t *env); -int crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, +int crypto_pk_public_encrypt(crypto_pk_env_t *env, char *to, size_t tolen, const char *from, size_t fromlen, int padding); -int crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to, +int crypto_pk_private_decrypt(crypto_pk_env_t *env, char *to, size_t tolen, const char *from, size_t fromlen, int padding, int warnOnFailure); -int crypto_pk_public_checksig(crypto_pk_env_t *env, char *to, +int crypto_pk_public_checksig(crypto_pk_env_t *env, char *to, size_t tolen, const char *from, size_t fromlen); int crypto_pk_public_checksig_digest(crypto_pk_env_t *env, const char *data, size_t datalen, const char *sig, size_t siglen); -int crypto_pk_private_sign(crypto_pk_env_t *env, char *to, +int crypto_pk_private_sign(crypto_pk_env_t *env, char *to, size_t tolen, const char *from, size_t fromlen); -int crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to, +int crypto_pk_private_sign_digest(crypto_pk_env_t *env, char *to, size_t tolen, const char *from, size_t fromlen); int crypto_pk_public_hybrid_encrypt(crypto_pk_env_t *env, char *to, + size_t tolen, const char *from, size_t fromlen, int padding, int force); int crypto_pk_private_hybrid_decrypt(crypto_pk_env_t *env, char *to, + size_t tolen, const char *from, size_t fromlen, int padding, int warnOnFailure); @@ -193,7 +197,10 @@ void crypto_hmac_sha1(char *hmac_out, const char *msg, size_t msg_len); /* Key negotiation */ -crypto_dh_env_t *crypto_dh_new(void); +#define DH_TYPE_CIRCUIT 1 +#define DH_TYPE_REND 2 +#define DH_TYPE_TLS 3 +crypto_dh_env_t *crypto_dh_new(int dh_type); int crypto_dh_get_bytes(crypto_dh_env_t *dh); int crypto_dh_generate_public(crypto_dh_env_t *dh); int crypto_dh_get_public(crypto_dh_env_t *dh, char *pubkey_out, @@ -245,7 +252,6 @@ struct evp_pkey_st; struct dh_st; struct rsa_st *_crypto_pk_env_get_rsa(crypto_pk_env_t *env); crypto_pk_env_t *_crypto_new_pk_env_rsa(struct rsa_st *rsa); -crypto_pk_env_t *_crypto_new_pk_env_evp_pkey(struct evp_pkey_st *pkey); struct evp_pkey_st *_crypto_pk_env_get_evp_pkey(crypto_pk_env_t *env, int private); struct dh_st *_crypto_dh_env_get_dh(crypto_dh_env_t *dh); diff --git a/src/common/di_ops.c b/src/common/di_ops.c new file mode 100644 index 0000000000..b22a58d1b1 --- /dev/null +++ b/src/common/di_ops.c @@ -0,0 +1,133 @@ +/* Copyright (c) 2011, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file di_ops.c + * \brief Functions for data-independent operations. + **/ + +#include "orconfig.h" +#include "di_ops.h" + +/** + * Timing-safe version of memcmp. As memcmp, compare the <b>sz</b> bytes at + * <b>a</b> with the <b>sz</b> bytes at <b>b</b>, and return less than 0 if + * the bytes at <b>a</b> lexically precede those at <b>b</b>, 0 if the byte + * ranges are equal, and greater than zero if the bytes at <b>a</b> lexically + * follow those at <b>b</b>. + * + * This implementation differs from memcmp in that its timing behavior is not + * data-dependent: it should return in the same amount of time regardless of + * the contents of <b>a</b> and <b>b</b>. + */ +int +tor_memcmp(const void *a, const void *b, size_t len) +{ + const uint8_t *x = a; + const uint8_t *y = b; + size_t i = len; + int retval = 0; + + /* This loop goes from the end of the arrays to the start. At the + * start of every iteration, before we decrement i, we have set + * "retval" equal to the result of memcmp(a+i,b+i,len-i). During the + * loop, we update retval by leaving it unchanged if x[i]==y[i] and + * setting it to x[i]-y[i] if x[i]!= y[i]. + * + * The following assumes we are on a system with two's-complement + * arithmetic. We check for this at configure-time with the check + * that sets USING_TWOS_COMPLEMENT. If we aren't two's complement, then + * torint.h will stop compilation with an error. + */ + while (i--) { + int v1 = x[i]; + int v2 = y[i]; + int equal_p = v1 ^ v2; + + /* The following sets bits 8 and above of equal_p to 'equal_p == + * 0', and thus to v1 == v2. (To see this, note that if v1 == + * v2, then v1^v2 == equal_p == 0, so equal_p-1 == -1, which is the + * same as ~0 on a two's-complement machine. Then note that if + * v1 != v2, then 0 < v1 ^ v2 < 256, so 0 <= equal_p - 1 < 255.) + */ + --equal_p; + + equal_p >>= 8; + /* Thanks to (sign-preserving) arithmetic shift, equal_p is now + * equal to -(v1 == v2), which is exactly what we need below. + * (Since we're assuming two's-complement arithmetic, -1 is the + * same as ~0 (all bits set).) + * + * (The result of an arithmetic shift on a negative value is + * actually implementation-defined in standard C. So how do we + * get away with assuming it? Easy. We check.) */ +#if ((-60 >> 8) != -1) +#error "According to cpp, right-shift doesn't perform sign-extension." +#endif +#ifndef RSHIFT_DOES_SIGN_EXTEND +#error "According to configure, right-shift doesn't perform sign-extension." +#endif + + /* If v1 == v2, equal_p is ~0, so this will leave retval + * unchanged; otherwise, equal_p is 0, so this will zero it. */ + retval &= equal_p; + + /* If v1 == v2, then this adds 0, and leaves retval unchanged. + * Otherwise, we just zeroed retval, so this sets it to v1 - v2. */ + retval += (v1 - v2); + + /* There. Now retval is equal to its previous value if v1 == v2, and + * equal to v1 - v2 if v1 != v2. */ + } + + return retval; +} + +/** + * Timing-safe memory comparison. Return true if the <b>sz</b> bytes at + * <b>a</b> are the same as the <b>sz</b> bytes at <b>b</b>, and 0 otherwise. + * + * This implementation differs from !memcmp(a,b,sz) in that its timing + * behavior is not data-dependent: it should return in the same amount of time + * regardless of the contents of <b>a</b> and <b>b</b>. It differs from + * !tor_memcmp(a,b,sz) by being faster. + */ +int +tor_memeq(const void *a, const void *b, size_t sz) +{ + /* Treat a and b as byte ranges. */ + const uint8_t *ba = a, *bb = b; + uint32_t any_difference = 0; + while (sz--) { + /* Set byte_diff to all of those bits that are different in *ba and *bb, + * and advance both ba and bb. */ + const uint8_t byte_diff = *ba++ ^ *bb++; + + /* Set bits in any_difference if they are set in byte_diff. */ + any_difference |= byte_diff; + } + + /* Now any_difference is 0 if there are no bits different between + * a and b, and is nonzero if there are bits different between a + * and b. Now for paranoia's sake, let's convert it to 0 or 1. + * + * (If we say "!any_difference", the compiler might get smart enough + * to optimize-out our data-independence stuff above.) + * + * To unpack: + * + * If any_difference == 0: + * any_difference - 1 == ~0 + * (any_difference - 1) >> 8 == 0x00ffffff + * 1 & ((any_difference - 1) >> 8) == 1 + * + * If any_difference != 0: + * 0 < any_difference < 256, so + * 0 < any_difference - 1 < 255 + * (any_difference - 1) >> 8 == 0 + * 1 & ((any_difference - 1) >> 8) == 0 + */ + + return 1 & ((any_difference - 1) >> 8); +} + diff --git a/src/common/di_ops.h b/src/common/di_ops.h new file mode 100644 index 0000000000..fa7d86806a --- /dev/null +++ b/src/common/di_ops.h @@ -0,0 +1,31 @@ +/* Copyright (c) 2003-2004, Roger Dingledine + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2011, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file di_ops.h + * \brief Headers for di_ops.c + **/ + +#ifndef TOR_DI_OPS_H +#define TOR_DI_OPS_H + +#include "orconfig.h" +#include "torint.h" + +int tor_memcmp(const void *a, const void *b, size_t sz); +int tor_memeq(const void *a, const void *b, size_t sz); +#define tor_memneq(a,b,sz) (!tor_memeq((a),(b),(sz))) + +/** Alias for the platform's memcmp() function. This function is + * <em>not</em> data-independent: we define this alias so that we can + * mark cases where we are deliberately using a data-dependent memcmp() + * implementation. + */ +#define fast_memcmp(a,b,c) (memcmp((a),(b),(c))) +#define fast_memeq(a,b,c) (0==memcmp((a),(b),(c))) +#define fast_memneq(a,b,c) (0!=memcmp((a),(b),(c))) + +#endif + diff --git a/src/common/ht.h b/src/common/ht.h index f598856d8a..0850c07092 100644 --- a/src/common/ht.h +++ b/src/common/ht.h @@ -1,6 +1,6 @@ /* Copyright (c) 2002, Christopher Clark. * Copyright (c) 2005-2006, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See license at end. */ /* Based on ideas by Christopher Clark and interfaces from Niels Provos. */ diff --git a/src/common/log.c b/src/common/log.c index 6f86406c2c..97400623e5 100644 --- a/src/common/log.c +++ b/src/common/log.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001, Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -36,8 +36,12 @@ #include "torlog.h" #include "container.h" +/** @{ */ +/** The string we stick at the end of a log message when it is too long, + * and its length. */ #define TRUNCATED_STR "[...truncated]" #define TRUNCATED_STR_LEN 14 +/** @} */ /** Information for a single logfile; only used in log.c */ typedef struct logfile_t { @@ -97,15 +101,31 @@ static int log_mutex_initialized = 0; /** Linked list of logfile_t. */ static logfile_t *logfiles = NULL; +/** Boolean: do we report logging domains? */ +static int log_domains_are_logged = 0; + #ifdef HAVE_SYSLOG_H /** The number of open syslog log handlers that we have. When this reaches 0, * we can close our connection to the syslog facility. */ static int syslog_count = 0; #endif +/** Represents a log message that we are going to send to callback-driven + * loggers once we can do so in a non-reentrant way. */ +typedef struct pending_cb_message_t { + int severity; /**< The severity of the message */ + log_domain_mask_t domain; /**< The domain of the message */ + char *msg; /**< The content of the message */ +} pending_cb_message_t; + +/** Log messages waiting to be replayed onto callback-based logs */ +static smartlist_t *pending_cb_messages = NULL; + +/** Lock the log_mutex to prevent others from changing the logfile_t list */ #define LOCK_LOGS() STMT_BEGIN \ tor_mutex_acquire(&log_mutex); \ STMT_END +/** Unlock the log_mutex */ #define UNLOCK_LOGS() STMT_BEGIN tor_mutex_release(&log_mutex); STMT_END /** What's the lowest log level anybody cares about? Checking this lets us @@ -115,6 +135,9 @@ int _log_global_min_severity = LOG_NOTICE; static void delete_log(logfile_t *victim); static void close_log(logfile_t *victim); +static char *domain_to_string(log_domain_mask_t domain, + char *buf, size_t buflen); + /** Name of the application: used to generate the message we write at the * start of each new log. */ static char *appname = NULL; @@ -225,13 +248,34 @@ format_msg(char *buf, size_t buf_len, size_t n; int r; char *end_of_prefix; + char *buf_end; - assert(buf_len >= 2); /* prevent integer underflow */ + assert(buf_len >= 16); /* prevent integer underflow and general stupidity */ buf_len -= 2; /* subtract 2 characters so we have room for \n\0 */ + buf_end = buf+buf_len; /* point *after* the last char we can write to */ n = _log_prefix(buf, buf_len, severity); end_of_prefix = buf+n; + if (log_domains_are_logged) { + char *cp = buf+n; + if (cp == buf_end) goto format_msg_no_room_for_domains; + *cp++ = '{'; + if (cp == buf_end) goto format_msg_no_room_for_domains; + cp = domain_to_string(domain, cp, (buf+buf_len-cp)); + if (cp == buf_end) goto format_msg_no_room_for_domains; + *cp++ = '}'; + if (cp == buf_end) goto format_msg_no_room_for_domains; + *cp++ = ' '; + if (cp == buf_end) goto format_msg_no_room_for_domains; + end_of_prefix = cp; + n = cp-buf; + format_msg_no_room_for_domains: + /* This will leave end_of_prefix and n unchanged, and thus cause + * whatever log domain string we had written to be clobbered. */ + ; + } + if (funcname && should_log_function_name(domain, severity)) { r = tor_snprintf(buf+n, buf_len-n, "%s(): ", funcname); if (r<0) @@ -280,6 +324,7 @@ logv(int severity, log_domain_mask_t domain, const char *funcname, int formatted = 0; logfile_t *lf; char *end_of_prefix=NULL; + int callbacks_deferred = 0; /* Call assert, not tor_assert, since tor_assert calls log on failure. */ assert(format); @@ -287,6 +332,10 @@ logv(int severity, log_domain_mask_t domain, const char *funcname, * interesting and hard to diagnose effects */ assert(severity >= LOG_ERR && severity <= LOG_DEBUG); LOCK_LOGS(); + + if ((! (domain & LD_NOCB)) && smartlist_len(pending_cb_messages)) + flush_pending_log_callbacks(); + lf = logfiles; while (lf) { if (! (lf->severities->masks[SEVERITY_MASK_IDX(severity)] & domain)) { @@ -308,6 +357,7 @@ logv(int severity, log_domain_mask_t domain, const char *funcname, &msg_len); formatted = 1; } + if (lf->is_syslog) { #ifdef HAVE_SYSLOG_H char *m = end_of_prefix; @@ -331,7 +381,19 @@ logv(int severity, log_domain_mask_t domain, const char *funcname, lf = lf->next; continue; } else if (lf->callback) { - lf->callback(severity, domain, end_of_prefix); + if (domain & LD_NOCB) { + if (!callbacks_deferred && pending_cb_messages) { + pending_cb_message_t *msg = tor_malloc(sizeof(pending_cb_message_t)); + msg->severity = severity; + msg->domain = domain; + msg->msg = tor_strdup(end_of_prefix); + smartlist_add(pending_cb_messages, msg); + + callbacks_deferred = 1; + } + } else { + lf->callback(severity, domain, end_of_prefix); + } lf = lf->next; continue; } @@ -345,7 +407,10 @@ logv(int severity, log_domain_mask_t domain, const char *funcname, UNLOCK_LOGS(); } -/** Output a message to the log. */ +/** Output a message to the log. It gets logged to all logfiles that + * care about messages with <b>severity</b> in <b>domain</b>. The content + * is formatted printf-style based on <b>format</b> and extra arguments. + * */ void tor_log(int severity, log_domain_mask_t domain, const char *format, ...) { @@ -359,6 +424,9 @@ tor_log(int severity, log_domain_mask_t domain, const char *format, ...) /** Output a message to the log, prefixed with a function name <b>fn</b>. */ #ifdef __GNUC__ +/** GCC-based implementation of the log_fn backend, used when we have + * variadic macros. All arguments are as for log_fn, except for + * <b>fn</b>, which is the name of the calling functions. */ void _log_fn(int severity, log_domain_mask_t domain, const char *fn, const char *format, ...) @@ -371,6 +439,11 @@ _log_fn(int severity, log_domain_mask_t domain, const char *fn, va_end(ap); } #else +/** @{ */ +/** Variant implementation of log_fn, log_debug, log_info,... for C compilers + * without variadic macros. In this case, the calling function sets + * _log_fn_function_name to the name of the function, then invokes the + * appropriate _log_fn, _log_debug, etc. */ const char *_log_fn_function_name=NULL; void _log_fn(int severity, log_domain_mask_t domain, const char *format, ...) @@ -439,6 +512,7 @@ _log_err(log_domain_mask_t domain, const char *format, ...) va_end(ap); _log_fn_function_name = NULL; } +/** @} */ #endif /** Free all storage held by <b>victim</b>. */ @@ -457,9 +531,12 @@ void logs_free_all(void) { logfile_t *victim, *next; + smartlist_t *messages; LOCK_LOGS(); next = logfiles; logfiles = NULL; + messages = pending_cb_messages; + pending_cb_messages = NULL; UNLOCK_LOGS(); while (next) { victim = next; @@ -469,6 +546,12 @@ logs_free_all(void) } tor_free(appname); + SMARTLIST_FOREACH(messages, pending_cb_message_t *, msg, { + tor_free(msg->msg); + tor_free(msg); + }); + smartlist_free(messages); + /* We _could_ destroy the log mutex here, but that would screw up any logs * that happened between here and the end of execution. */ } @@ -554,8 +637,7 @@ add_stream_log_impl(const log_severity_list_t *severity, * to <b>fd</b>. Steals a reference to <b>severity</b>; the caller must * not use it after calling this function. */ void -add_stream_log(const log_severity_list_t *severity, - const char *name, int fd) +add_stream_log(const log_severity_list_t *severity, const char *name, int fd) { LOCK_LOGS(); add_stream_log_impl(severity, name, fd); @@ -570,6 +652,18 @@ init_logging(void) tor_mutex_init(&log_mutex); log_mutex_initialized = 1; } + if (pending_cb_messages == NULL) + pending_cb_messages = smartlist_create(); +} + +/** Set whether we report logging domains as a part of our log messages. + */ +void +logs_set_domain_logging(int enabled) +{ + LOCK_LOGS(); + log_domains_are_logged = enabled; + UNLOCK_LOGS(); } /** Add a log handler to receive messages during startup (before the real @@ -628,6 +722,48 @@ change_callback_log_severity(int loglevelMin, int loglevelMax, UNLOCK_LOGS(); } +/** If there are any log messages that were generated with LD_NOCB waiting to + * be sent to callback-based loggers, send them now. */ +void +flush_pending_log_callbacks(void) +{ + logfile_t *lf; + smartlist_t *messages, *messages_tmp; + + LOCK_LOGS(); + if (0 == smartlist_len(pending_cb_messages)) { + UNLOCK_LOGS(); + return; + } + + messages = pending_cb_messages; + pending_cb_messages = smartlist_create(); + do { + SMARTLIST_FOREACH_BEGIN(messages, pending_cb_message_t *, msg) { + const int severity = msg->severity; + const int domain = msg->domain; + for (lf = logfiles; lf; lf = lf->next) { + if (! lf->callback || lf->seems_dead || + ! (lf->severities->masks[SEVERITY_MASK_IDX(severity)] & domain)) { + continue; + } + lf->callback(severity, domain, msg->msg); + } + tor_free(msg->msg); + tor_free(msg); + } SMARTLIST_FOREACH_END(msg); + smartlist_clear(messages); + + messages_tmp = pending_cb_messages; + pending_cb_messages = messages; + messages = messages_tmp; + } while (smartlist_len(messages)); + + smartlist_free(messages); + + UNLOCK_LOGS(); +} + /** Close any log handlers added by add_temp_log() or marked by * mark_logs_temp(). */ void @@ -722,7 +858,6 @@ add_syslog_log(const log_severity_list_t *severity) lf->fd = -1; lf->severities = tor_memdup(severity, sizeof(log_severity_list_t)); lf->filename = tor_strdup("<syslog>"); - lf->is_syslog = 1; LOCK_LOGS(); @@ -764,7 +899,7 @@ log_level_to_string(int level) static const char *domain_list[] = { "GENERAL", "CRYPTO", "NET", "CONFIG", "FS", "PROTOCOL", "MM", "HTTP", "APP", "CONTROL", "CIRC", "REND", "BUG", "DIR", "DIRSERV", - "OR", "EDGE", "ACCT", "HIST", "HANDSHAKE", NULL + "OR", "EDGE", "ACCT", "HIST", "HANDSHAKE", "HEARTBEAT", NULL }; /** Return a bitmask for the log domain for which <b>domain</b> is the name, @@ -779,18 +914,41 @@ parse_log_domain(const char *domain) } return 0; } -#if 0 -/** Translate a bitmask of log domains to a string, or NULL if the bitmask - * is undecodable. */ -static const char * -domain_to_string(log_domain_mask_t domain) + +/** Translate a bitmask of log domains to a string. */ +static char * +domain_to_string(log_domain_mask_t domain, char *buf, size_t buflen) { - int bit = tor_log2(domain); - if ((bit == 0 && domain == 0) || bit >= N_LOGGING_DOMAINS) - return NULL; - return domain_list[bit]; + char *cp = buf; + char *eos = buf+buflen; + + buf[0] = '\0'; + if (! domain) + return buf; + while (1) { + const char *d; + int bit = tor_log2(domain); + size_t n; + if (bit >= N_LOGGING_DOMAINS) { + tor_snprintf(buf, buflen, "<BUG:Unknown domain %lx>", (long)domain); + return buf+strlen(buf); + } + d = domain_list[bit]; + n = strlcpy(cp, d, eos-cp); + if (n >= buflen) { + tor_snprintf(buf, buflen, "<BUG:Truncating domain %lx>", (long)domain); + return buf+strlen(buf); + } + cp += n; + domain &= ~(1<<bit); + + if (domain == 0 || (eos-cp) < 2) + return cp; + + memcpy(cp, ",", 2); /*Nul-terminated ,"*/ + cp++; + } } -#endif /** Parse a log severity pattern in *<b>cfg_ptr</b>. Advance cfg_ptr after * the end of the severityPattern. Set the value of <b>severity_out</b> to @@ -866,7 +1024,10 @@ parse_log_severity_config(const char **cfg_ptr, smartlist_free(domains_list); if (err) return -1; - domains &= ~neg_domains; + if (domains == 0 && neg_domains) + domains = ~neg_domains; + else + domains &= ~neg_domains; cfg = eat_whitespace(closebracket+1); } else { ++got_an_unqualified_range; diff --git a/src/common/memarea.c b/src/common/memarea.c index b5ac7ad97a..a6b8c4ee9c 100644 --- a/src/common/memarea.c +++ b/src/common/memarea.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2008-2010, The Tor Project, Inc. */ +/* Copyright (c) 2008-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** \file memarea.c @@ -30,12 +30,18 @@ #endif #ifdef USE_SENTINELS +/** Magic value that we stick at the end of a memarea so we can make sure + * there are no run-off-the-end bugs. */ #define SENTINEL_VAL 0x90806622u +/** How many bytes per area do we devote to the sentinel? */ #define SENTINEL_LEN sizeof(uint32_t) +/** Given a mem_area_chunk_t with SENTINEL_LEN extra bytes allocated at the + * end, set those bytes. */ #define SET_SENTINEL(chunk) \ STMT_BEGIN \ set_uint32( &(chunk)->u.mem[chunk->mem_size], SENTINEL_VAL ); \ STMT_END +/** Assert that the sentinel on a memarea is set correctly. */ #define CHECK_SENTINEL(chunk) \ STMT_BEGIN \ uint32_t sent_val = get_uint32(&(chunk)->u.mem[chunk->mem_size]); \ @@ -53,7 +59,9 @@ realign_pointer(void *ptr) { uintptr_t x = (uintptr_t)ptr; x = (x+MEMAREA_ALIGN_MASK) & ~MEMAREA_ALIGN_MASK; + /* Reinstate this if bug 930 ever reappears tor_assert(((void*)x) >= ptr); + */ return (void*)x; } @@ -73,8 +81,11 @@ typedef struct memarea_chunk_t { } u; } memarea_chunk_t; +/** How many bytes are needed for overhead before we get to the memory part + * of a chunk? */ #define CHUNK_HEADER_SIZE STRUCT_OFFSET(memarea_chunk_t, u) +/** What's the smallest that we'll allocate a chunk? */ #define CHUNK_SIZE 4096 /** A memarea_t is an allocation region for a set of small memory requests @@ -95,6 +106,7 @@ static memarea_chunk_t *freelist = NULL; static memarea_chunk_t * alloc_chunk(size_t sz, int freelist_ok) { + tor_assert(sz < SIZE_T_CEILING); if (freelist && freelist_ok) { memarea_chunk_t *res = freelist; freelist = res->next_chunk; @@ -211,6 +223,7 @@ memarea_alloc(memarea_t *area, size_t sz) char *result; tor_assert(chunk); CHECK_SENTINEL(chunk); + tor_assert(sz < SIZE_T_CEILING); if (sz == 0) sz = 1; if (chunk->next_mem+sz > chunk->u.mem+chunk->mem_size) { @@ -230,10 +243,10 @@ memarea_alloc(memarea_t *area, size_t sz) } result = chunk->next_mem; chunk->next_mem = chunk->next_mem + sz; - + /* Reinstate these if bug 930 ever comes back tor_assert(chunk->next_mem >= chunk->u.mem); tor_assert(chunk->next_mem <= chunk->u.mem+chunk->mem_size); - + */ chunk->next_mem = realign_pointer(chunk->next_mem); return result; } @@ -270,6 +283,7 @@ memarea_strndup(memarea_t *area, const char *s, size_t n) size_t ln; char *result; const char *cp, *end = s+n; + tor_assert(n < SIZE_T_CEILING); for (cp = s; cp < end && *cp; ++cp) ; /* cp now points to s+n, or to the 0 in the string. */ diff --git a/src/common/memarea.h b/src/common/memarea.h index 95d855f6d9..4d31dc95a8 100644 --- a/src/common/memarea.h +++ b/src/common/memarea.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2008-2010, The Tor Project, Inc. */ +/* Copyright (c) 2008-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /* Tor dependencies */ diff --git a/src/common/mempool.c b/src/common/mempool.c index c795d83f0c..30d7788043 100644 --- a/src/common/mempool.c +++ b/src/common/mempool.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #if 1 /* Tor dependencies */ @@ -137,7 +137,7 @@ struct mp_chunk_t { int capacity; /**< Number of items that can be fit into this chunk. */ size_t mem_size; /**< Number of usable bytes in mem. */ char *next_mem; /**< Pointer into part of <b>mem</b> not yet carved up. */ - char mem[1]; /**< Storage for this chunk. (Not actual size.) */ + char mem[FLEXIBLE_ARRAY_MEMBER]; /**< Storage for this chunk. */ }; /** Number of extra bytes needed beyond mem_size to allocate a chunk. */ @@ -357,6 +357,10 @@ mp_pool_new(size_t item_size, size_t chunk_capacity) mp_pool_t *pool; size_t alloc_size, new_chunk_cap; + tor_assert(item_size < SIZE_T_CEILING); + tor_assert(chunk_capacity < SIZE_T_CEILING); + tor_assert(SIZE_T_CEILING / item_size > chunk_capacity); + pool = ALLOC(sizeof(mp_pool_t)); CHECK_ALLOC(pool); memset(pool, 0, sizeof(mp_pool_t)); diff --git a/src/common/mempool.h b/src/common/mempool.h index ae1feea843..fb1e9e8b42 100644 --- a/src/common/mempool.h +++ b/src/common/mempool.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/common/procmon.c b/src/common/procmon.c new file mode 100644 index 0000000000..5c10e9a22b --- /dev/null +++ b/src/common/procmon.c @@ -0,0 +1,336 @@ + +/** + * \file procmon.c + * \brief Process-termination monitor functions + **/ + +#include "procmon.h" + +#include "util.h" + +#ifdef HAVE_EVENT2_EVENT_H +#include <event2/event.h> +#else +#include <event.h> +#endif + +#ifdef HAVE_SIGNAL_H +#include <signal.h> +#endif +#ifdef HAVE_ERRNO_H +#include <errno.h> +#endif + +#ifdef MS_WINDOWS +#include <windows.h> + +/* Windows does not define pid_t, but _getpid() returns an int. */ +typedef int pid_t; +#endif + +/* Define to 1 if process-termination monitors on this OS and Libevent + version must poll for process termination themselves. */ +#define PROCMON_POLLS 1 +/* Currently we need to poll in some way on all systems. */ + +#ifdef PROCMON_POLLS +static void tor_process_monitor_poll_cb(evutil_socket_t unused1, short unused2, + void *procmon_); +#endif + +/* This struct may contain pointers into the original process + * specifier string, but it should *never* contain anything which + * needs to be freed. */ +struct parsed_process_specifier_t { + pid_t pid; +}; + +/** Parse the process specifier given in <b>process_spec</b> into + * *<b>ppspec</b>. Return 0 on success; return -1 and store an error + * message into *<b>msg</b> on failure. The caller must not free the + * returned error message. */ +static int +parse_process_specifier(const char *process_spec, + struct parsed_process_specifier_t *ppspec, + const char **msg) +{ + long pid_l; + int pid_ok = 0; + char *pspec_next; + + /* If we're lucky, long will turn out to be large enough to hold a + * PID everywhere that Tor runs. */ + pid_l = tor_parse_long(process_spec, 0, 1, LONG_MAX, &pid_ok, &pspec_next); + + /* Reserve room in the ‘process specifier’ for additional + * (platform-specific) identifying information beyond the PID, to + * make our process-existence checks a bit less racy in a future + * version. */ + if ((*pspec_next != 0) && (*pspec_next != ' ') && (*pspec_next != ':')) { + pid_ok = 0; + } + + ppspec->pid = (pid_t)(pid_l); + if (!pid_ok || (pid_l != (long)(ppspec->pid))) { + *msg = "invalid PID"; + goto err; + } + + return 0; + err: + return -1; +} + +struct tor_process_monitor_t { + /** Log domain for warning messages. */ + log_domain_mask_t log_domain; + + /** All systems: The best we can do in general is poll for the + * process's existence by PID periodically, and hope that the kernel + * doesn't reassign the same PID to another process between our + * polls. */ + pid_t pid; + +#ifdef MS_WINDOWS + /** Windows-only: Should we poll hproc? If false, poll pid + * instead. */ + int poll_hproc; + + /** Windows-only: Get a handle to the process (if possible) and + * periodically check whether the process we have a handle to has + * ended. */ + HANDLE hproc; + /* XXX023 We can and should have Libevent watch hproc for us, + * if/when some version of Libevent 2.x can be told to do so. */ +#endif + + /* XXX023 On Linux, we can and should receive the 22nd + * (space-delimited) field (‘starttime’) of /proc/$PID/stat from the + * owning controller and store it, and poll once in a while to see + * whether it has changed -- if so, the kernel has *definitely* + * reassigned the owning controller's PID and we should exit. On + * FreeBSD, we can do the same trick using either the 8th + * space-delimited field of /proc/$PID/status on the seven FBSD + * systems whose admins have mounted procfs, or the start-time field + * of the process-information structure returned by kvmgetprocs() on + * any system. The latter is ickier. */ + /* XXX023 On FreeBSD (and possibly other kqueue systems), we can and + * should arrange to receive EVFILT_PROC NOTE_EXIT notifications for + * pid, so we don't have to do such a heavyweight poll operation in + * order to avoid the PID-reassignment race condition. (We would + * still need to poll our own kqueue periodically until some version + * of Libevent 2.x learns to receive these events for us.) */ + + /** A Libevent event structure, to either poll for the process's + * existence or receive a notification when the process ends. */ + struct event *e; + + /** A callback to be called when the process ends. */ + tor_procmon_callback_t cb; + void *cb_arg; /**< A user-specified pointer to be passed to cb. */ +}; + +/** Verify that the process specifier given in <b>process_spec</b> is + * syntactically valid. Return 0 on success; return -1 and store an + * error message into *<b>msg</b> on failure. The caller must not + * free the returned error message. */ +int +tor_validate_process_specifier(const char *process_spec, + const char **msg) +{ + struct parsed_process_specifier_t ppspec; + + tor_assert(msg != NULL); + *msg = NULL; + + return parse_process_specifier(process_spec, &ppspec, msg); +} + +#ifdef HAVE_EVENT2_EVENT_H +#define PERIODIC_TIMER_FLAGS EV_PERSIST +#else +#define PERIODIC_TIMER_FLAGS (0) +#endif + +static struct timeval poll_interval_tv = {15, 0}; +/* Note: If you port this file to plain Libevent 2, you can make + * poll_interval_tv const. It has to be non-const here because in + * libevent 1.x, event_add expects a pointer to a non-const struct + * timeval. */ + +/** Create a process-termination monitor for the process specifier + * given in <b>process_spec</b>. Return a newly allocated + * tor_process_monitor_t on success; return NULL and store an error + * message into *<b>msg</b> on failure. The caller must not free + * the returned error message. + * + * When the monitored process terminates, call + * <b>cb</b>(<b>cb_arg</b>). + */ +tor_process_monitor_t * +tor_process_monitor_new(struct event_base *base, + const char *process_spec, + log_domain_mask_t log_domain, + tor_procmon_callback_t cb, void *cb_arg, + const char **msg) +{ + tor_process_monitor_t *procmon = tor_malloc(sizeof(tor_process_monitor_t)); + struct parsed_process_specifier_t ppspec; + + tor_assert(msg != NULL); + *msg = NULL; + + if (procmon == NULL) { + *msg = "out of memory"; + goto err; + } + + procmon->log_domain = log_domain; + + if (parse_process_specifier(process_spec, &ppspec, msg)) + goto err; + + procmon->pid = ppspec.pid; + +#ifdef MS_WINDOWS + procmon->hproc = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE, + FALSE, + procmon->pid); + + if (procmon->hproc != NULL) { + procmon->poll_hproc = 1; + log_info(procmon->log_domain, "Successfully opened handle to process %d; " + "monitoring it.", + (int)(procmon->pid)); + } else { + /* If we couldn't get a handle to the process, we'll try again the + * first time we poll. */ + log_info(procmon->log_domain, "Failed to open handle to process %d; will " + "try again later.", + (int)(procmon->pid)); + } +#endif + + procmon->cb = cb; + procmon->cb_arg = cb_arg; + +#ifdef PROCMON_POLLS + procmon->e = tor_event_new(base, -1 /* no FD */, PERIODIC_TIMER_FLAGS, + tor_process_monitor_poll_cb, procmon); + /* Note: If you port this file to plain Libevent 2, check that + * procmon->e is non-NULL. We don't need to here because + * tor_evtimer_new never returns NULL. */ + + evtimer_add(procmon->e, &poll_interval_tv); +#else +#error OOPS? +#endif + + return procmon; + err: + tor_process_monitor_free(procmon); + return NULL; +} + +#ifdef PROCMON_POLLS +/** Libevent callback to poll for the existence of the process + * monitored by <b>procmon_</b>. */ +static void +tor_process_monitor_poll_cb(evutil_socket_t unused1, short unused2, + void *procmon_) +{ + tor_process_monitor_t *procmon = (tor_process_monitor_t *)(procmon_); + int its_dead_jim; + + (void)unused1; (void)unused2; + + tor_assert(procmon != NULL); + +#ifdef MS_WINDOWS + if (procmon->poll_hproc) { + DWORD exit_code; + if (!GetExitCodeProcess(procmon->hproc, &exit_code)) { + char *errmsg = format_win32_error(GetLastError()); + log_warn(procmon->log_domain, "Error \"%s\" occurred while polling " + "handle for monitored process %d; assuming it's dead.", + errmsg, procmon->pid); + tor_free(errmsg); + its_dead_jim = 1; + } else { + its_dead_jim = (exit_code != STILL_ACTIVE); + } + } else { + /* All we can do is try to open the process, and look at the error + * code if it fails again. */ + procmon->hproc = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE, + FALSE, + procmon->pid); + + if (procmon->hproc != NULL) { + log_info(procmon->log_domain, "Successfully opened handle to monitored " + "process %d.", + procmon->pid); + its_dead_jim = 0; + procmon->poll_hproc = 1; + } else { + DWORD err_code = GetLastError(); + char *errmsg = format_win32_error(err_code); + + /* When I tested OpenProcess's error codes on Windows 7, I + * received error code 5 (ERROR_ACCESS_DENIED) for PIDs of + * existing processes that I could not open and error code 87 + * (ERROR_INVALID_PARAMETER) for PIDs that were not in use. + * Since the nonexistent-process error code is sane, I'm going + * to assume that all errors other than ERROR_INVALID_PARAMETER + * mean that the process we are monitoring is still alive. */ + its_dead_jim = (err_code == ERROR_INVALID_PARAMETER); + + if (!its_dead_jim) + log_info(procmon->log_domain, "Failed to open handle to monitored " + "process %d, and error code %lu (%s) is not 'invalid " + "parameter' -- assuming the process is still alive.", + procmon->pid, + err_code, errmsg); + + tor_free(errmsg); + } + } +#else + /* Unix makes this part easy, if a bit racy. */ + its_dead_jim = kill(procmon->pid, 0); + its_dead_jim = its_dead_jim && (errno == ESRCH); +#endif + + log(its_dead_jim ? LOG_NOTICE : LOG_INFO, + procmon->log_domain, "Monitored process %d is %s.", + (int)procmon->pid, + its_dead_jim ? "dead" : "still alive"); + + if (its_dead_jim) { + procmon->cb(procmon->cb_arg); +#ifndef HAVE_EVENT2_EVENT_H + } else { + evtimer_add(procmon->e, &poll_interval_tv); +#endif + } +} +#endif + +/** Free the process-termination monitor <b>procmon</b>. */ +void +tor_process_monitor_free(tor_process_monitor_t *procmon) +{ + if (procmon == NULL) + return; + +#ifdef MS_WINDOWS + if (procmon->hproc != NULL) + CloseHandle(procmon->hproc); +#endif + + if (procmon->e != NULL) + tor_event_free(procmon->e); + + tor_free(procmon); +} + diff --git a/src/common/procmon.h b/src/common/procmon.h new file mode 100644 index 0000000000..02eb2da61c --- /dev/null +++ b/src/common/procmon.h @@ -0,0 +1,30 @@ + +/** + * \file procmon.h + * \brief Headers for procmon.c + **/ + +#ifndef TOR_PROCMON_H +#define TOR_PROCMON_H + +#include "compat.h" +#include "compat_libevent.h" + +#include "torlog.h" + +typedef struct tor_process_monitor_t tor_process_monitor_t; + +typedef void (*tor_procmon_callback_t)(void *); + +int tor_validate_process_specifier(const char *process_spec, + const char **msg); +tor_process_monitor_t *tor_process_monitor_new(struct event_base *base, + const char *process_spec, + log_domain_mask_t log_domain, + tor_procmon_callback_t cb, + void *cb_arg, + const char **msg); +void tor_process_monitor_free(tor_process_monitor_t *procmon); + +#endif + diff --git a/src/common/sha256.c b/src/common/sha256.c index 4236d48f5f..258b7e062a 100644 --- a/src/common/sha256.c +++ b/src/common/sha256.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2010, The Tor Project, Inc. */ +/* Copyright (c) 2009-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /* This SHA256 implementation is adapted from the public domain one in LibTomCrypt, version 1.6. Tor uses it on platforms where OpenSSL doesn't diff --git a/src/common/torgzip.c b/src/common/torgzip.c index a247d6c177..2937c67de2 100644 --- a/src/common/torgzip.c +++ b/src/common/torgzip.c @@ -1,6 +1,6 @@ /* Copyright (c) 2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -79,6 +79,35 @@ method_bits(compress_method_t method) return method == GZIP_METHOD ? 15+16 : 15; } +/** @{ */ +/* These macros define the maximum allowable compression factor. Anything of + * size greater than CHECK_FOR_COMPRESSION_BOMB_AFTER is not allowed to + * have an uncompression factor (uncompressed size:compressed size ratio) of + * any greater than MAX_UNCOMPRESSION_FACTOR. + * + * Picking a value for MAX_UNCOMPRESSION_FACTOR is a trade-off: we want it to + * be small to limit the attack multiplier, but we also want it to be large + * enough so that no legitimate document --even ones we might invent in the + * future -- ever compresses by a factor of greater than + * MAX_UNCOMPRESSION_FACTOR. Within those parameters, there's a reasonably + * large range of possible values. IMO, anything over 8 is probably safe; IMO + * anything under 50 is probably sufficient. + */ +#define MAX_UNCOMPRESSION_FACTOR 25 +#define CHECK_FOR_COMPRESSION_BOMB_AFTER (1024*64) +/** @} */ + +/** Return true if uncompressing an input of size <b>in_size</b> to an input + * of size at least <b>size_out</b> looks like a compression bomb. */ +static int +is_compression_bomb(size_t size_in, size_t size_out) +{ + if (size_in == 0 || size_out < CHECK_FOR_COMPRESSION_BOMB_AFTER) + return 0; + + return (size_out / size_in > MAX_UNCOMPRESSION_FACTOR); +} + /** Given <b>in_len</b> bytes at <b>in</b>, compress them into a newly * allocated buffer, using the method described in <b>method</b>. Store the * compressed string in *<b>out</b>, and its length in *<b>out_len</b>. @@ -181,6 +210,12 @@ tor_gzip_compress(char **out, size_t *out_len, } tor_free(stream); + if (is_compression_bomb(*out_len, in_len)) { + log_warn(LD_BUG, "We compressed something and got an insanely high " + "compression factor; other Tors would think this was a zlib bomb."); + goto err; + } + return 0; err: if (stream) { @@ -243,7 +278,7 @@ tor_gzip_uncompress(char **out, size_t *out_len, out_size = in_len * 2; /* guess 50% compression. */ if (out_size < 1024) out_size = 1024; - if (out_size > UINT_MAX) + if (out_size >= SIZE_T_CEILING || out_size > UINT_MAX) goto err; *out = tor_malloc(out_size); @@ -283,7 +318,16 @@ tor_gzip_uncompress(char **out, size_t *out_len, old_size = out_size; out_size *= 2; if (out_size < old_size) { - log_warn(LD_GENERAL, "Size overflow in compression."); + log_warn(LD_GENERAL, "Size overflow in uncompression."); + goto err; + } + if (is_compression_bomb(in_len, out_size)) { + log_warn(LD_GENERAL, "Input looks like a possible zlib bomb; " + "not proceeding."); + goto err; + } + if (out_size >= SIZE_T_CEILING) { + log_warn(LD_BUG, "Hit SIZE_T_CEILING limit while uncompressing."); goto err; } *out = tor_realloc(*out, out_size); @@ -334,7 +378,7 @@ tor_gzip_uncompress(char **out, size_t *out_len, compress_method_t detect_compression_method(const char *in, size_t in_len) { - if (in_len > 2 && !memcmp(in, "\x1f\x8b", 2)) { + if (in_len > 2 && fast_memeq(in, "\x1f\x8b", 2)) { return GZIP_METHOD; } else if (in_len > 2 && (in[0] & 0x0f) == 8 && (ntohs(get_uint16(in)) % 31) == 0) { @@ -347,8 +391,13 @@ detect_compression_method(const char *in, size_t in_len) /** Internal state for an incremental zlib compression/decompression. The * body of this struct is not exposed. */ struct tor_zlib_state_t { - struct z_stream_s stream; - int compress; + struct z_stream_s stream; /**< The zlib stream */ + int compress; /**< True if we are compressing; false if we are inflating */ + + /** Number of bytes read so far. Used to detect zlib bombs. */ + size_t input_so_far; + /** Number of bytes written so far. Used to detect zlib bombs. */ + size_t output_so_far; }; /** Construct and return a tor_zlib_state_t object using <b>method</b>. If @@ -415,11 +464,20 @@ tor_zlib_process(tor_zlib_state_t *state, err = inflate(&state->stream, finish ? Z_FINISH : Z_SYNC_FLUSH); } + state->input_so_far += state->stream.next_in - ((unsigned char*)*in); + state->output_so_far += state->stream.next_out - ((unsigned char*)*out); + *out = (char*) state->stream.next_out; *out_len = state->stream.avail_out; *in = (const char *) state->stream.next_in; *in_len = state->stream.avail_in; + if (! state->compress && + is_compression_bomb(state->input_so_far, state->output_so_far)) { + log_warn(LD_DIR, "Possible zlib bomb; abandoning stream."); + return TOR_ZLIB_ERR; + } + switch (err) { case Z_STREAM_END: diff --git a/src/common/torgzip.h b/src/common/torgzip.h index 5139f4bcad..15e09eb700 100644 --- a/src/common/torgzip.h +++ b/src/common/torgzip.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/common/torint.h b/src/common/torint.h index 57f18212ad..0b5c29adc0 100644 --- a/src/common/torint.h +++ b/src/common/torint.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -115,7 +115,7 @@ typedef unsigned int uint32_t; #define UINT32_MAX 0xffffffffu #endif #ifndef INT32_MAX -#define INT32_MAX 0x7fffffffu +#define INT32_MAX 0x7fffffff #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) @@ -329,8 +329,10 @@ typedef uint32_t uintptr_t; #endif #endif -/* Any size_t larger than this amount is likely to be an underflow. */ -#define SIZE_T_CEILING (sizeof(char)<<(sizeof(size_t)*8 - 1)) +/** Any ssize_t larger than this amount is likely to be an underflow. */ +#define SSIZE_T_CEILING ((ssize_t)(SSIZE_T_MAX-16)) +/** Any size_t larger than this amount is likely to be an underflow. */ +#define SIZE_T_CEILING ((size_t)(SSIZE_T_MAX-16)) #endif /* __TORINT_H */ diff --git a/src/common/torlog.h b/src/common/torlog.h index d119993e87..4c5729ef53 100644 --- a/src/common/torlog.h +++ b/src/common/torlog.h @@ -1,11 +1,11 @@ /* Copyright (c) 2001, Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** - * \file log.h + * \file torlog.h * * \brief Headers for log.c **/ @@ -92,9 +92,16 @@ #define LD_HIST (1u<<18) /** OR handshaking */ #define LD_HANDSHAKE (1u<<19) +/** Heartbeat messages */ +#define LD_HEARTBEAT (1u<<20) /** Number of logging domains in the code. */ -#define N_LOGGING_DOMAINS 20 +#define N_LOGGING_DOMAINS 21 +/** This log message is not safe to send to a callback-based logger + * immediately. Used as a flag, not a log domain. */ +#define LD_NOCB (1u<<31) + +/** Mask of zero or more log domains, OR'd together. */ typedef uint32_t log_domain_mask_t; /** Configures which severities are logged for each logging domain for a given @@ -128,6 +135,7 @@ int add_file_log(const log_severity_list_t *severity, const char *filename); int add_syslog_log(const log_severity_list_t *severity); #endif int add_callback_log(const log_severity_list_t *severity, log_callback cb); +void logs_set_domain_logging(int enabled); int get_min_log_level(void); void switch_logs_debug(void); void logs_free_all(void); @@ -137,10 +145,10 @@ void rollback_log_changes(void); void mark_logs_temp(void); void change_callback_log_severity(int loglevelMin, int loglevelMax, log_callback cb); +void flush_pending_log_callbacks(void); void log_set_application_name(const char *name); void set_log_time_granularity(int granularity_msec); -/* Outputs a message to stdout */ void tor_log(int severity, log_domain_mask_t domain, const char *format, ...) CHECK_PRINTF(3,4); #define log tor_log /* hack it so we don't conflict with log() as much */ diff --git a/src/common/tortls.c b/src/common/tortls.c index f85c157bb8..a208bc7614 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -1,6 +1,6 @@ /* Copyright (c) 2003, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -58,7 +58,6 @@ #include "util.h" #include "torlog.h" #include "container.h" -#include "ht.h" #include <string.h> /* Enable the "v2" TLS handshake. @@ -104,11 +103,13 @@ typedef struct tor_tls_context_t { crypto_pk_env_t *key; } tor_tls_context_t; +#define TOR_TLS_MAGIC 0x71571571 + /** Holds a SSL object and its associated data. Members are only * accessed from within tortls.c. */ struct tor_tls_t { - HT_ENTRY(tor_tls_t) node; + uint32_t magic; tor_tls_context_t *context; /** A link to the context object for this tls. */ SSL *ssl; /**< An OpenSSL SSL object. */ int socket; /**< The underlying file descriptor for this TLS connection. */ @@ -153,42 +154,29 @@ static SSL_CIPHER *CLIENT_CIPHER_DUMMIES = NULL; static STACK_OF(SSL_CIPHER) *CLIENT_CIPHER_STACK = NULL; #endif -/** Helper: compare tor_tls_t objects by its SSL. */ -static INLINE int -tor_tls_entries_eq(const tor_tls_t *a, const tor_tls_t *b) -{ - return a->ssl == b->ssl; -} +/** The ex_data index in which we store a pointer to an SSL object's + * corresponding tor_tls_t object. */ +static int tor_tls_object_ex_data_index = -1; -/** Helper: return a hash value for a tor_tls_t by its SSL. */ -static INLINE unsigned int -tor_tls_entry_hash(const tor_tls_t *a) +/** Helper: Allocate tor_tls_object_ex_data_index. */ +static void +tor_tls_allocate_tor_tls_object_ex_data_index(void) { -#if SIZEOF_INT == SIZEOF_VOID_P - return ((unsigned int)(uintptr_t)a->ssl); -#else - return (unsigned int) ((((uint64_t)a->ssl)>>2) & UINT_MAX); -#endif + if (tor_tls_object_ex_data_index == -1) { + tor_tls_object_ex_data_index = + SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL); + tor_assert(tor_tls_object_ex_data_index != -1); + } } -/** Map from SSL* pointers to tor_tls_t objects using those pointers. - */ -static HT_HEAD(tlsmap, tor_tls_t) tlsmap_root = HT_INITIALIZER(); - -HT_PROTOTYPE(tlsmap, tor_tls_t, node, tor_tls_entry_hash, - tor_tls_entries_eq) -HT_GENERATE(tlsmap, tor_tls_t, node, tor_tls_entry_hash, - tor_tls_entries_eq, 0.6, malloc, realloc, free) - /** Helper: given a SSL* pointer, return the tor_tls_t object using that * pointer. */ static INLINE tor_tls_t * tor_tls_get_by_ssl(const SSL *ssl) { - tor_tls_t search, *result; - memset(&search, 0, sizeof(search)); - search.ssl = (SSL*)ssl; - result = HT_FIND(tlsmap, &tlsmap_root, &search); + tor_tls_t *result = SSL_get_ex_data(ssl, tor_tls_object_ex_data_index); + if (result) + tor_assert(result->magic == TOR_TLS_MAGIC); return result; } @@ -234,6 +222,40 @@ ssl_state_to_string(int ssl_state) return buf; } +/** Write a description of the current state of <b>tls</b> into the + * <b>sz</b>-byte buffer at <b>buf</b>. */ +void +tor_tls_get_state_description(tor_tls_t *tls, char *buf, size_t sz) +{ + const char *ssl_state; + const char *tortls_state; + + if (PREDICT_UNLIKELY(!tls || !tls->ssl)) { + strlcpy(buf, "(No SSL object)", sz); + return; + } + + ssl_state = ssl_state_to_string(tls->ssl->state); + switch (tls->state) { +#define CASE(st) case TOR_TLS_ST_##st: tortls_state = " in "#st ; break + CASE(HANDSHAKE); + CASE(OPEN); + CASE(GOTCLOSE); + CASE(SENTCLOSE); + CASE(CLOSED); + CASE(RENEGOTIATE); +#undef CASE + case TOR_TLS_ST_BUFFEREVENT: + tortls_state = ""; + break; + default: + tortls_state = " in unknown TLS state"; + break; + } + + tor_snprintf(buf, sz, "%s%s", ssl_state, tortls_state); +} + void tor_tls_log_one_error(tor_tls_t *tls, unsigned long err, int severity, int domain, const char *doing) @@ -448,6 +470,8 @@ tor_tls_init(void) SSLeay_version(SSLEAY_VERSION), version); } + tor_tls_allocate_tor_tls_object_ex_data_index(); + tls_library_is_initialized = 1; } } @@ -466,10 +490,6 @@ tor_tls_free_all(void) client_tls_context = NULL; tor_tls_context_decref(ctx); } - if (!HT_EMPTY(&tlsmap_root)) { - log_warn(LD_MM, "Still have entries in the tlsmap at shutdown."); - } - HT_CLEAR(tlsmap, &tlsmap_root); #ifdef V2_HANDSHAKE_CLIENT if (CLIENT_CIPHER_DUMMIES) tor_free(CLIENT_CIPHER_DUMMIES); @@ -828,7 +848,8 @@ tor_tls_context_new(crypto_pk_env_t *identity, unsigned int key_lifetime) if (!SSL_CTX_check_private_key(result->ctx)) goto error; { - crypto_dh_env_t *dh = crypto_dh_new(); + crypto_dh_env_t *dh = crypto_dh_new(DH_TYPE_TLS); + tor_assert(dh); SSL_CTX_set_tmp_dh(result->ctx, _crypto_dh_env_get_dh(dh)); crypto_dh_free(dh); } @@ -912,6 +933,13 @@ tor_tls_client_is_using_v2_ciphers(const SSL *ssl, const char *address) return 1; } +static void +tor_tls_debug_state_callback(const SSL *ssl, int type, int val) +{ + log_debug(LD_HANDSHAKE, "SSL %p is now in state %s [type=%d,val=%d].", + ssl, ssl_state_to_string(ssl->state), type, val); +} + /** Invoked when we're accepting a connection on <b>ssl</b>, and the connection * changes state. We use this: * <ul><li>To alter the state of the handshake partway through, so we @@ -923,6 +951,9 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val) { tor_tls_t *tls; (void) val; + + tor_tls_debug_state_callback(ssl, type, val); + if (type != SSL_CB_ACCEPT_LOOP) return; if (ssl->state != SSL3_ST_SW_SRVR_HELLO_A) @@ -937,6 +968,7 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val) ++tls->server_handshake_count; } else { log_warn(LD_BUG, "Couldn't look up the tls for an SSL*. How odd!"); + return; } /* Now check the cipher list. */ @@ -1044,6 +1076,7 @@ tor_tls_new(int sock, int isServer) tor_tls_t *result = tor_malloc_zero(sizeof(tor_tls_t)); tor_tls_context_t *context = isServer ? server_tls_context : client_tls_context; + result->magic = TOR_TLS_MAGIC; tor_assert(context); /* make sure somebody made it first */ if (!(result->ssl = SSL_new(context->ctx))) { @@ -1084,7 +1117,14 @@ tor_tls_new(int sock, int isServer) tor_free(result); return NULL; } - HT_INSERT(tlsmap, &tlsmap_root, result); + { + int set_worked = + SSL_set_ex_data(result->ssl, tor_tls_object_ex_data_index, result); + if (!set_worked) { + log_warn(LD_BUG, + "Couldn't set the tls for an SSL*; connection will fail"); + } + } SSL_set_bio(result->ssl, bio, bio); tor_tls_context_incref(context); result->context = context; @@ -1100,8 +1140,11 @@ tor_tls_new(int sock, int isServer) #ifdef V2_HANDSHAKE_SERVER if (isServer) { SSL_set_info_callback(result->ssl, tor_tls_server_info_callback); - } + } else #endif + { + SSL_set_info_callback(result->ssl, tor_tls_debug_state_callback); + } /* Not expected to get called. */ tls_log_errors(NULL, LOG_WARN, LD_NET, "creating tor_tls_t object"); @@ -1135,7 +1178,7 @@ tor_tls_set_renegotiate_callback(tor_tls_t *tls, if (cb) { SSL_set_info_callback(tls->ssl, tor_tls_server_info_callback); } else { - SSL_set_info_callback(tls->ssl, NULL); + SSL_set_info_callback(tls->ssl, tor_tls_debug_state_callback); } #endif } @@ -1195,14 +1238,9 @@ tor_tls_is_server(tor_tls_t *tls) void tor_tls_free(tor_tls_t *tls) { - tor_tls_t *removed; if (!tls) return; tor_assert(tls->ssl); - removed = HT_REMOVE(tlsmap, &tlsmap_root, tls); - if (!removed) { - log_warn(LD_BUG, "Freeing a TLS that was not in the ssl->tls map."); - } #ifdef SSL_set_tlsext_host_name SSL_set_tlsext_host_name(tls->ssl, NULL); #endif @@ -1212,6 +1250,7 @@ tor_tls_free(tor_tls_t *tls) if (tls->context) tor_tls_context_decref(tls->context); tor_free(tls->address); + tls->magic = 0x99999999; tor_free(tls); } diff --git a/src/common/tortls.h b/src/common/tortls.h index fe7cd6cecf..9b8108b42b 100644 --- a/src/common/tortls.h +++ b/src/common/tortls.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #ifndef _TOR_TORTLS_H @@ -48,6 +48,7 @@ typedef struct tor_tls_t tor_tls_t; #define TOR_TLS_IS_ERROR(rv) ((rv) < TOR_TLS_CLOSE) const char *tor_tls_err_to_string(int err); +void tor_tls_get_state_description(tor_tls_t *tls, char *buf, size_t sz); void tor_tls_free_all(void); int tor_tls_context_init(int is_public_server, diff --git a/src/common/tortls_states.h b/src/common/tortls_states.h index 00f476dd66..dcff2479f6 100644 --- a/src/common/tortls_states.h +++ b/src/common/tortls_states.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /* Helper file: included only in tortls.c */ diff --git a/src/common/util.c b/src/common/util.c index 95d2b87c5d..b95ee3a612 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -1,6 +1,6 @@ /* Copyright (c) 2003, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -31,6 +31,7 @@ #else #include <dirent.h> #include <pwd.h> +#include <grp.h> #endif /* math.h needs this on Linux */ @@ -123,6 +124,8 @@ _tor_malloc(size_t size DMALLOC_PARAMS) { void *result; + tor_assert(size < SIZE_T_CEILING); + #ifndef MALLOC_ZERO_WORKS /* Some libc mallocs don't work when size==0. Override them. */ if (size==0) { @@ -173,6 +176,8 @@ _tor_realloc(void *ptr, size_t size DMALLOC_PARAMS) { void *result; + tor_assert(size < SIZE_T_CEILING); + #ifdef USE_DMALLOC result = dmalloc_realloc(file, line, ptr, size, DMALLOC_FUNC_REALLOC, 0); #else @@ -219,6 +224,7 @@ _tor_strndup(const char *s, size_t n DMALLOC_PARAMS) { char *dup; tor_assert(s); + tor_assert(n < SIZE_T_CEILING); dup = _tor_malloc((n+1) DMALLOC_FN_ARGS); /* Performance note: Ordinarily we prefer strlcpy to strncpy. But * this function gets called a whole lot, and platform strncpy is @@ -235,6 +241,7 @@ void * _tor_memdup(const void *mem, size_t len DMALLOC_PARAMS) { char *dup; + tor_assert(len < SIZE_T_CEILING); tor_assert(mem); dup = _tor_malloc(len DMALLOC_FN_ARGS); memcpy(dup, mem, len); @@ -264,12 +271,15 @@ void * _tor_malloc_roundup(size_t *sizep DMALLOC_PARAMS) { #ifdef HAVE_MALLOC_GOOD_SIZE + tor_assert(*sizep < SIZE_T_CEILING); *sizep = malloc_good_size(*sizep); return _tor_malloc(*sizep DMALLOC_FN_ARGS); #elif 0 && defined(HAVE_MALLOC_USABLE_SIZE) && !defined(USE_DMALLOC) /* Never use malloc_usable_size(); it makes valgrind really unhappy, * and doesn't win much in terms of usable space where it exists. */ - void *result = _tor_malloc(*sizep DMALLOC_FN_ARGS); + void *result; + tor_assert(*sizep < SIZE_T_CEILING); + result = _tor_malloc(*sizep DMALLOC_FN_ARGS); *sizep = malloc_usable_size(result); return result; #else @@ -507,7 +517,7 @@ strcmp_len(const char *s1, const char *s2, size_t s1_len) return -1; if (s1_len > s2_len) return 1; - return memcmp(s1, s2, s2_len); + return fast_memcmp(s1, s2, s2_len); } /** Compares the first strlen(s2) characters of s1 with s2. Returns as for @@ -549,17 +559,17 @@ strcasecmpend(const char *s1, const char *s2) /** Compare the value of the string <b>prefix</b> with the start of the * <b>memlen</b>-byte memory chunk at <b>mem</b>. Return as for strcmp. * - * [As memcmp(mem, prefix, strlen(prefix)) but returns -1 if memlen is less - * than strlen(prefix).] + * [As fast_memcmp(mem, prefix, strlen(prefix)) but returns -1 if memlen is + * less than strlen(prefix).] */ int -memcmpstart(const void *mem, size_t memlen, +fast_memcmpstart(const void *mem, size_t memlen, const char *prefix) { size_t plen = strlen(prefix); if (memlen < plen) return -1; - return memcmp(mem, prefix, plen); + return fast_memcmp(mem, prefix, plen); } /** Return a pointer to the first char of s that is not whitespace and @@ -715,14 +725,16 @@ tor_mem_is_zero(const char *mem, size_t len) 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, }; while (len >= sizeof(ZERO)) { - if (memcmp(mem, ZERO, sizeof(ZERO))) + /* It's safe to use fast_memcmp here, since the very worst thing an + * attacker could learn is how many initial bytes of a secret were zero */ + if (fast_memcmp(mem, ZERO, sizeof(ZERO))) return 0; len -= sizeof(ZERO); mem += sizeof(ZERO); } /* Deal with leftover bytes. */ if (len) - return ! memcmp(mem, ZERO, len); + return fast_memeq(mem, ZERO, len); return 1; } @@ -731,7 +743,10 @@ tor_mem_is_zero(const char *mem, size_t len) int tor_digest_is_zero(const char *digest) { - return tor_mem_is_zero(digest, DIGEST_LEN); + static const uint8_t ZERO_DIGEST[] = { + 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 + }; + return tor_memeq(digest, ZERO_DIGEST, DIGEST_LEN); } /** Return true iff the DIGEST256_LEN bytes in digest are all zero. */ @@ -761,13 +776,17 @@ tor_digest256_is_zero(const char *digest) if (next) *next = endptr; \ return 0 -/** Extract a long from the start of s, in the given numeric base. If - * there is unconverted data and next is provided, set *next to the - * first unconverted character. An error has occurred if no characters - * are converted; or if there are unconverted characters and next is NULL; or - * if the parsed value is not between min and max. When no error occurs, - * return the parsed value and set *ok (if provided) to 1. When an error - * occurs, return 0 and set *ok (if provided) to 0. +/** Extract a long from the start of <b>s</b>, in the given numeric + * <b>base</b>. If <b>base</b> is 0, <b>s</b> is parsed as a decimal, + * octal, or hex number in the syntax of a C integer literal. If + * there is unconverted data and <b>next</b> is provided, set + * *<b>next</b> to the first unconverted character. An error has + * occurred if no characters are converted; or if there are + * unconverted characters and <b>next</b> is NULL; or if the parsed + * value is not between <b>min</b> and <b>max</b>. When no error + * occurs, return the parsed value and set *<b>ok</b> (if provided) to + * 1. When an error occurs, return 0 and set *<b>ok</b> (if provided) + * to 0. */ long tor_parse_long(const char *s, int base, long min, long max, @@ -1554,7 +1573,7 @@ rate_limit_log(ratelim_t *lim, time_t now) * was returned by open(). Return the number of bytes written, or -1 * on error. Only use if fd is a blocking fd. */ ssize_t -write_all(int fd, const char *buf, size_t count, int isSocket) +write_all(tor_socket_t fd, const char *buf, size_t count, int isSocket) { size_t written = 0; ssize_t result; @@ -1564,7 +1583,7 @@ write_all(int fd, const char *buf, size_t count, int isSocket) if (isSocket) result = tor_socket_send(fd, buf+written, count-written, 0); else - result = write(fd, buf+written, count-written); + result = write((int)fd, buf+written, count-written); if (result<0) return -1; written += result; @@ -1578,7 +1597,7 @@ write_all(int fd, const char *buf, size_t count, int isSocket) * open(). Return the number of bytes read, or -1 on error. Only use * if fd is a blocking fd. */ ssize_t -read_all(int fd, char *buf, size_t count, int isSocket) +read_all(tor_socket_t fd, char *buf, size_t count, int isSocket) { size_t numread = 0; ssize_t result; @@ -1590,7 +1609,7 @@ read_all(int fd, char *buf, size_t count, int isSocket) if (isSocket) result = tor_socket_recv(fd, buf+numread, count-numread, 0); else - result = read(fd, buf+numread, count-numread); + result = read((int)fd, buf+numread, count-numread); if (result<0) return -1; else if (result == 0) @@ -1651,17 +1670,31 @@ file_status(const char *fname) return FN_ERROR; } -/** Check whether dirname exists and is private. If yes return 0. If - * it does not exist, and check==CPD_CREATE is set, try to create it +/** Check whether <b>dirname</b> exists and is private. If yes return 0. If + * it does not exist, and <b>check</b>&CPD_CREATE is set, try to create it * and return 0 on success. If it does not exist, and - * check==CPD_CHECK, and we think we can create it, return 0. Else - * return -1. */ + * <b>check</b>&CPD_CHECK, and we think we can create it, return 0. Else + * return -1. If CPD_GROUP_OK is set, then it's okay if the directory + * is group-readable, but in all cases we create the directory mode 0700. + * If CPD_CHECK_MODE_ONLY is set, then we don't alter the directory permissions + * if they are too permissive: we just return -1. + * When effective_user is not NULL, check permissions against the given user + * and its primary group. + */ int -check_private_dir(const char *dirname, cpd_check_t check) +check_private_dir(const char *dirname, cpd_check_t check, + const char *effective_user) { int r; struct stat st; char *f; +#ifndef MS_WINDOWS + int mask; + struct passwd *pw = NULL; + uid_t running_uid; + gid_t running_gid; +#endif + tor_assert(dirname); f = tor_strdup(dirname); clean_name_for_stat(f); @@ -1673,10 +1706,7 @@ check_private_dir(const char *dirname, cpd_check_t check) strerror(errno)); return -1; } - if (check == CPD_NONE) { - log_warn(LD_FS, "Directory %s does not exist.", dirname); - return -1; - } else if (check == CPD_CREATE) { + if (check & CPD_CREATE) { log_info(LD_GENERAL, "Creating directory %s", dirname); #if defined (MS_WINDOWS) && !defined (WINCE) r = mkdir(dirname); @@ -1688,6 +1718,9 @@ check_private_dir(const char *dirname, cpd_check_t check) strerror(errno)); return -1; } + } else if (!(check & CPD_CHECK)) { + log_warn(LD_FS, "Directory %s does not exist.", dirname); + return -1; } /* XXXX In the case where check==CPD_CHECK, we should look at the * parent directory a little harder. */ @@ -1698,26 +1731,71 @@ check_private_dir(const char *dirname, cpd_check_t check) return -1; } #ifndef MS_WINDOWS - if (st.st_uid != getuid()) { + if (effective_user) { + /* Look up the user and group information. + * If we have a problem, bail out. */ + pw = getpwnam(effective_user); + if (pw == NULL) { + log_warn(LD_CONFIG, "Error setting configured user: %s not found", + effective_user); + return -1; + } + running_uid = pw->pw_uid; + running_gid = pw->pw_gid; + } else { + running_uid = getuid(); + running_gid = getgid(); + } + + if (st.st_uid != running_uid) { struct passwd *pw = NULL; char *process_ownername = NULL; - pw = getpwuid(getuid()); + pw = getpwuid(running_uid); process_ownername = pw ? tor_strdup(pw->pw_name) : tor_strdup("<unknown>"); pw = getpwuid(st.st_uid); log_warn(LD_FS, "%s is not owned by this user (%s, %d) but by " "%s (%d). Perhaps you are running Tor as the wrong user?", - dirname, process_ownername, (int)getuid(), + dirname, process_ownername, (int)running_uid, pw ? pw->pw_name : "<unknown>", (int)st.st_uid); tor_free(process_ownername); return -1; } - if (st.st_mode & 0077) { + if ((check & CPD_GROUP_OK) && st.st_gid != running_gid) { + struct group *gr; + char *process_groupname = NULL; + gr = getgrgid(running_gid); + process_groupname = gr ? tor_strdup(gr->gr_name) : tor_strdup("<unknown>"); + gr = getgrgid(st.st_gid); + + log_warn(LD_FS, "%s is not owned by this group (%s, %d) but by group " + "%s (%d). Are you running Tor as the wrong user?", + dirname, process_groupname, (int)running_gid, + gr ? gr->gr_name : "<unknown>", (int)st.st_gid); + + tor_free(process_groupname); + return -1; + } + if (check & CPD_GROUP_OK) { + mask = 0027; + } else { + mask = 0077; + } + if (st.st_mode & mask) { + unsigned new_mode; + if (check & CPD_CHECK_MODE_ONLY) { + log_warn(LD_FS, "Permissions on directory %s are too permissive.", + dirname); + return -1; + } log_warn(LD_FS, "Fixing permissions on directory %s", dirname); - if (chmod(dirname, 0700)) { + new_mode = st.st_mode; + new_mode |= 0700; /* Owner should have rwx */ + new_mode &= ~mask; /* Clear the other bits that we didn't want set...*/ + if (chmod(dirname, new_mode)) { log_warn(LD_FS, "Could not chmod directory %s: %s", dirname, strerror(errno)); return -1; @@ -2041,7 +2119,7 @@ read_file_to_str(const char *filename, int flags, struct stat *stat_out) int save_errno = errno; if (errno == ENOENT && (flags & RFTS_IGNORE_MISSING)) severity = LOG_INFO; - log_fn(severity, LD_FS,"Could not open \"%s\": %s ",filename, + log_fn(severity, LD_FS,"Could not open \"%s\": %s",filename, strerror(errno)); errno = save_errno; return NULL; @@ -2055,7 +2133,7 @@ read_file_to_str(const char *filename, int flags, struct stat *stat_out) return NULL; } - if ((uint64_t)(statbuf.st_size)+1 > SIZE_T_MAX) + if ((uint64_t)(statbuf.st_size)+1 >= SIZE_T_CEILING) return NULL; string = tor_malloc((size_t)(statbuf.st_size+1)); @@ -3028,6 +3106,8 @@ tor_spawn_background(const char *const filename, int *stdout_read, nbytes = write(STDOUT_FILENO, error_message, error_message_length); nbytes = write(STDOUT_FILENO, hex_errno, sizeof(hex_errno)); + (void) nbytes; + _exit(255); return -1; /* Never reached, but avoids compiler warning */ } diff --git a/src/common/util.h b/src/common/util.h index 633c613d43..6496c42db8 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -14,6 +14,7 @@ #include "orconfig.h" #include "torint.h" #include "compat.h" +#include "di_ops.h" #include <stdio.h> #include <stdlib.h> @@ -181,8 +182,8 @@ int strcasecmpstart(const char *s1, const char *s2) int strcmpend(const char *s1, const char *s2) ATTR_PURE ATTR_NONNULL((1,2)); int strcasecmpend(const char *s1, const char *s2) ATTR_PURE ATTR_NONNULL((1,2)); -int memcmpstart(const void *mem, size_t memlen, - const char *prefix) ATTR_PURE; +int fast_memcmpstart(const void *mem, size_t memlen, + const char *prefix) ATTR_PURE; void tor_strstrip(char *s, const char *strip) ATTR_NONNULL((1,2)); long tor_parse_long(const char *s, int base, long min, @@ -247,24 +248,6 @@ time_t approx_time(void); void update_approx_time(time_t now); #endif -/* Fuzzy time. */ - -/** Return true iff <a>a</b> is definitely after <b>b</b>, even if there - * could be up to <b>allow_seconds</b> of skew in one of them. */ -static INLINE int -time_definitely_after(time_t a, time_t b, int allow_skew) -{ - return a-allow_skew > b; -} - -/** Return true iff <a>a</b> is definitely before <b>b</b>, even if there - * could be up to <b>allow_seconds</b> of skew in one of them. */ -static INLINE int -time_definitely_before(time_t a, time_t b, int allow_skew) -{ - return a+allow_skew < b; -} - /* Rate-limiter */ /** A ratelim_t remembers how often an event is occurring, and how often @@ -293,8 +276,8 @@ typedef struct ratelim_t { char *rate_limit_log(ratelim_t *lim, time_t now); /* File helpers */ -ssize_t write_all(int fd, const char *buf, size_t count, int isSocket); -ssize_t read_all(int fd, char *buf, size_t count, int isSocket); +ssize_t write_all(tor_socket_t fd, const char *buf, size_t count,int isSocket); +ssize_t read_all(tor_socket_t fd, char *buf, size_t count, int isSocket); /** Return values from file_status(); see that function's documentation * for details. */ @@ -303,8 +286,14 @@ file_status_t file_status(const char *filename); /** Possible behaviors for check_private_dir() on encountering a nonexistent * directory; see that function's documentation for details. */ -typedef enum { CPD_NONE, CPD_CREATE, CPD_CHECK } cpd_check_t; -int check_private_dir(const char *dirname, cpd_check_t check); +typedef unsigned int cpd_check_t; +#define CPD_NONE 0 +#define CPD_CREATE 1 +#define CPD_CHECK 2 +#define CPD_GROUP_OK 4 +#define CPD_CHECK_MODE_ONLY 8 +int check_private_dir(const char *dirname, cpd_check_t check, + const char *effective_user); #define OPEN_FLAGS_REPLACE (O_WRONLY|O_CREAT|O_TRUNC) #define OPEN_FLAGS_APPEND (O_WRONLY|O_CREAT|O_APPEND) typedef struct open_file_t open_file_t; diff --git a/src/config/geoip b/src/config/geoip index e28e7b0a53..834a0c928c 100644 --- a/src/config/geoip +++ b/src/config/geoip @@ -1,18 +1,47 @@ -# Last updated based on December 1 2010 Maxmind GeoLite Country +# Last updated based on July 1 2011 Maxmind GeoLite Country # wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip # cut -d, -f3-5 < GeoIPCountryWhois.csv|sed 's/"//g' > geoip -16777216,17301503,AU +16777216,16777471,AU +16777472,16778239,CN +16778240,16779263,AU +16779264,16781311,CN +16781312,16785407,JP +16785408,16793599,CN +16793600,16809983,JP +16809984,16842751,TH +16842752,16843007,CN +16843008,16843263,AU +16843264,16859135,CN +16859136,16875519,JP +16875520,16908287,TH +16908288,16909055,CN +16909056,16909311,AU +16909312,16941055,CN +16941056,16973823,TH +16973824,17039359,CN +17039360,17039615,AU +17039616,17072127,CN +17072128,17104895,TH +17104896,17170431,JP +17170432,17301503,IN +17301504,17367039,CN 17367040,17432575,MY +17432576,17435135,CN 17435136,17435391,AU +17435392,17465343,CN +17465344,17498111,TH 17498112,17563647,KR 17563648,17825791,CN 17825792,18087935,KR +18087936,18153471,TH 18153472,18219007,JP 18219008,18350079,IN 18350080,18874367,CN +18874368,18939903,HK 18939904,19005439,JP 19005440,19136511,TW 19136512,19202047,HK +19202048,19267583,PH 19267584,19398655,IN 19398656,19726335,AU 19726336,19791871,CN @@ -31,16 +60,75 @@ 24641536,27262975,AU 27262976,28311551,TW 28311552,28442623,KR -28442624,28573695,AU +28442624,28540927,AU +28540928,28573695,TH 28573696,28966911,CN -28966912,29032447,IN +28966912,29097983,IN 29097984,29884415,CN -29884416,29885439,AU +29884416,29949951,TW 29949952,30015487,KR 30015488,30408703,CN 30408704,33554431,KR 33554432,34603007,FR -34603008,35127295,EU +34603008,34604543,EU +34604544,34605055,DE +34605056,34620415,EU +34620416,34620927,SE +34620928,34621439,IT +34621440,34636799,EU +34636800,34637311,DE +34637312,34646527,EU +34646528,34647551,DE +34647552,34664447,EU +34664448,34668543,DE +34668544,34673663,EU +34673664,34674687,DE +34674688,34733055,EU +34733056,34734079,DE +34734080,34803711,EU +34803712,34807807,IT +34807808,34861055,EU +34861056,34865151,DE +34865152,34866175,EU +34866176,34867199,IT +34867200,34880511,EU +34880512,34881535,DE +34881536,34910975,EU +34910976,34911231,ES +34911232,34911743,DE +34911744,34911999,AT +34912000,34912255,GB +34912256,34912511,DE +34912512,34912767,ES +34912768,34913279,DE +34913280,34928383,EU +34928384,34928639,DE +34928640,34930687,EU +34930688,34938879,DE +34938880,34947071,FR +34947072,34952703,EU +34952704,34953215,SE +34953216,34954751,AT +34954752,34955263,NL +34955264,34959359,AT +34959360,34963455,NL +34963456,34992127,EU +34992128,34993151,NL +34993152,34993663,FR +34993664,34993919,AT +34993920,34994175,DE +34994176,34995711,FR +34995712,34995967,EU +34995968,34996223,NL +34996224,35000319,EU +35000320,35002367,SE +35002368,35054079,EU +35054080,35054591,SE +35054592,35055615,EU +35055616,35055871,GB +35055872,35069951,EU +35069952,35074047,SE +35074048,35127295,EU 35127296,35651583,GB 35651584,36700159,IT 36700160,36962303,AE @@ -63,6 +151,8 @@ 40370176,40894463,DK 40894464,41418751,IT 41418752,41943039,GB +41943040,42205183,DK +42205184,42467327,KZ 42467328,42991615,ES 42991616,43253759,IR 43253760,43515903,NO @@ -72,6 +162,10 @@ 45088768,46137343,IR 46137344,46661631,IT 46661632,47710207,DE +47710208,48234495,GB +48234496,49283071,IT +49283072,49807359,DE +49807360,50331647,SE 50331648,68257567,US 68257568,68257599,CA 68257600,68259583,US @@ -103,6 +197,7 @@ 72348928,72349055,US 72349056,72349119,BM 72349120,83886079,US +83886080,88080383,EU 100663296,121195295,US 121195296,121195327,IT 121195328,134693119,US @@ -278,8 +373,8 @@ 209845144,209845151,DE 209845152,209867103,US 209867104,209867111,CA -209867112,209868799,US -209868800,209869055,IR +209867112,209868927,US +209868928,209869055,IR 209869056,209965359,US 209965360,209965367,PR 209965368,209988527,US @@ -290,8 +385,12 @@ 210439560,210439567,PR 210439568,210784255,US 210784256,210784383,BO -210784384,210784767,US -210784768,210786303,BO +210784384,210785023,US +210785024,210785575,BO +210785576,210785583,US +210785584,210785599,BO +210785600,210785663,US +210785664,210786303,BO 210786304,210970847,US 210970848,210970855,PR 210970856,211051199,US @@ -561,7 +660,9 @@ 214699472,214699487,VI 214699488,214699519,US 214699520,214699647,PR -214699648,214858655,US +214699648,214700007,US +214700008,214700015,PR +214700016,214858655,US 214858656,214858671,NL 214858672,216417663,US 216417664,216417727,PR @@ -584,11 +685,14 @@ 217028008,217046775,US 217046776,217046783,PR 217046784,234881023,US +234881024,234883071,CN 234883072,234884095,JP +234884096,234885119,CN 234885120,234889215,VN 234889216,234913791,KR 234913792,234946559,HK -234946560,234950655,JP +234946560,234947583,CN +234947584,234950655,JP 234950656,234951679,AU 234951680,234952703,HK 234952704,234954751,JP @@ -596,6 +700,7 @@ 234971136,234979327,IN 234979328,235012095,MY 235012096,235077631,AU +235077632,235143167,JP 235143168,235405311,KR 235405312,235929599,JP 235929600,236978175,CN @@ -604,6 +709,7 @@ 241434624,241500159,SG 241500160,241565695,JP 241565696,241598463,IN +241598464,241599487,CN 241599488,241600511,JP 241600512,241602559,AU 241602560,241604607,MY @@ -614,7 +720,7 @@ 241623040,241627135,IN 241627136,241631231,HK 241631232,243269631,CN -243269632,243269887,AP +243269632,243270655,JP 243270656,243271679,NZ 243271680,243272703,TH 243272704,243273727,NP @@ -626,7 +732,8 @@ 243531776,243662847,JP 243662848,243793919,CN 243793920,243859455,HK -243859456,243924991,AU +243859456,243916799,AU +243916800,243924991,JP 243924992,243990527,KR 243990528,244318207,IN 244318208,245366783,CN @@ -636,6 +743,7 @@ 247479296,247480319,CN 247480320,247482367,MY 247482368,247483391,PG +247483392,247484415,CN 247484416,247488511,KR 247488512,247496703,JP 247496704,247504895,PK @@ -661,19 +769,19 @@ 355993888,355993895,IT 355993896,368674047,US 368674048,368674303,ES -368674304,385875967,US -402653184,405012479,US +368674304,405012479,US 405012480,405143551,CA 405143552,405180415,US 405180416,405184511,CA 405184512,405192703,US -405209088,405405695,US -405405696,405422079,PR +405209088,405372927,US +405372928,405422079,PR 405422080,405798911,US +405798912,405831679,CA 405831680,405843967,US 405843968,405848063,CA 405848064,405864447,PR -405864448,405917695,US +405864448,405921791,US 405921792,405929983,CA 405929984,405938175,US 405946368,405962751,CA @@ -681,7 +789,8 @@ 405979136,405995519,PR 406003712,406011903,US 406011904,406028287,BS -406028288,406126591,US +406028288,406110207,US +406110208,406126591,CA 406142976,406147071,US 406147072,406151167,CA 406159360,406175743,US @@ -708,21 +817,37 @@ 409862144,410124287,US 410124288,410177751,CA 410177752,410177755,US -410177756,410180643,CA +410177756,410178463,CA +410178464,410178467,US +410178468,410180643,CA 410180644,410180647,US -410180648,410185355,CA +410180648,410180695,CA +410180696,410180703,US +410180704,410180711,CA +410180712,410180715,US +410180716,410180771,CA +410180772,410180775,US +410180776,410185355,CA 410185356,410185359,US 410185360,410185407,CA 410185408,410185411,US -410185412,410185555,CA -410185556,410185559,US +410185412,410185519,CA +410185520,410185523,US +410185524,410185539,CA +410185540,410185543,US +410185544,410185551,CA +410185552,410185559,US 410185560,410186719,CA 410186720,410186723,US 410186724,410186971,CA 410186972,410186979,US 410186980,410186983,CA 410186984,410186999,US -410187000,410187047,CA +410187000,410187003,CA +410187004,410187007,US +410187008,410187015,CA +410187016,410187019,US +410187020,410187047,CA 410187048,410187055,US 410187056,410187175,CA 410187176,410187183,US @@ -749,10 +874,9 @@ 411779072,411828223,PR 411828224,411893759,US 411893760,411975679,CA -411975680,411992063,US -412024832,412221439,US +411975680,412221439,US 412221440,412229631,CA -412286976,412483583,US +412254208,412483583,US 412483584,412549119,CA 412549120,412614655,US 412614656,412647423,CL @@ -761,7 +885,7 @@ 412688384,412704767,US 412704768,412708863,CA 412708864,412909567,US -412909568,412917759,CA +412909568,412942335,CA 412942336,412946431,US 413007872,413908991,US 413908992,413925375,PR @@ -791,16 +915,16 @@ 417775616,417796095,CA 417796096,417800191,US 417800192,417808383,BS -417808384,417824767,CA -417824768,417857535,US +417808384,417820671,CA +417820672,417857535,US 417857536,417923071,AR 417923072,418062335,US 418062336,418070527,CA -418070528,418074623,US +418070528,418078719,US 418078720,418119679,CA 418119680,418316287,US 418316288,418320383,CA -418324480,418643967,US +418320384,418643967,US 418643968,418668543,CA 418668544,418672639,US 418672640,418676735,CA @@ -811,8 +935,8 @@ 418709504,418766847,US 418766848,418770943,CA 418770944,418775039,US -418775040,418807807,CA -418807808,419430399,US +418775040,418799615,CA +418799616,419430399,US 419430400,436207615,GB 436207616,452984831,US 452984832,452985855,JP @@ -822,7 +946,7 @@ 452988928,452997119,JP 452997120,453001215,IN 453001216,453009407,AU -453017600,453050367,JP +453009408,453017599,BD 453050368,453115903,KR 453115904,453246975,VN 453246976,453509119,IN @@ -833,6 +957,7 @@ 455258112,455262207,SG 455262208,455270399,JP 455270400,455272447,AU +455272448,455274495,CN 455274496,455278591,IN 455278592,455344127,KR 455344128,456130559,CN @@ -843,17 +968,22 @@ 456264704,456265727,JP 456265728,456269823,ID 456269824,456271871,HK +456271872,456273919,CN 456273920,456286207,AU +456286208,456294399,JP 456294400,456327167,CN 456327168,456523775,TW 456523776,456540159,SG -456540160,456548351,AU +456540160,456542207,AU +456542208,456544255,CN +456544256,456548351,AU 456548352,456553471,JP 456553472,456554495,MY 456554496,456555519,PK 456555520,456556543,JP 456556544,456560639,AU 456560640,456562687,IN +456562688,456564735,CN 456564736,456572927,IN 456572928,456589311,CN 456589312,456654847,TH @@ -863,24 +993,26 @@ 459282432,459284479,TK 459284480,459292671,JP 459292672,459293695,NZ -459294720,459297791,JP +459293696,459297791,JP 459297792,459298815,IN 459298816,459299839,PK 459300864,459309055,SG 459309056,459325439,KR 459325440,459333631,AU +459333632,459341823,TW 459341824,459407359,IN 459407360,459456511,JP 459456512,459460607,HK 459460608,459472895,CN 459472896,459505663,AU +459505664,459538431,CN 459538432,459539455,AU +459539456,459540479,TH 459540480,459541503,JP 459541504,459542527,IN 459542528,459544575,HK 459544576,459545599,AU -459546624,459547647,JP -459547648,459548671,CN +459545600,459547647,JP 459548672,459550719,TH 459550720,459554815,JP 459554816,459571199,TW @@ -890,13 +1022,15 @@ 459866112,459931647,TW 459931648,459964415,IN 459964416,459980799,CN -459980800,459984895,AU +459980800,459983871,AU +459983872,459984895,CN 459984896,459986943,JP 459986944,459988991,PH 459988992,459997183,JP 459997184,460062719,IN 460062720,460128255,PH 460128256,460136447,IN +460136448,460144639,CN 460144640,460152831,PH 460152832,460154879,JP 460154880,460155903,SG @@ -961,14 +1095,19 @@ 460734464,460865535,KR 460865536,460931071,JP 460931072,460933119,AU +460933120,460935167,CN 460935168,460937215,ID -460937216,460938239,AU +460937216,460938239,NZ +460938240,460939263,JP 460939264,460940287,NZ +460940288,460941311,IN 460941312,460942335,AU +460942336,460943359,MY 460943360,460945407,AU +460945408,460947455,CN 460947456,460980223,JP 460980224,460981247,NC -460982272,460983295,JP +460981248,460983295,JP 460983296,460984319,HK 460984320,460988415,PG 460988416,460994559,JP @@ -982,10 +1121,10 @@ 461049856,461050879,TH 461050880,461051903,NZ 461051904,461053951,AU -461053952,461062143,AP +461053952,461062143,HK 461062144,461078527,IN 461078528,461094911,FJ -461094912,461099007,AP +461094912,461099007,HK 461099008,461100031,JP 461100032,461101055,MN 461101056,461102079,IN @@ -994,7 +1133,7 @@ 461111296,461127679,IN 461127680,461131775,PH 461131776,461135871,ID -461135872,461139967,AU +461135872,461144063,AU 461144064,461209599,KR 461209600,461225983,SG 461225984,461227007,WF @@ -1043,12 +1182,962 @@ 468713472,469237759,TW 469237760,469499903,IN 469499904,469565439,NZ +469565440,469598207,AU +469598208,469630975,JP 469630976,469696511,TH 469696512,469712895,PK 469712896,469729279,KR 469729280,469762047,IN 469762048,520093695,US +520093696,520257535,PL +520257536,520290303,RO +520290304,520292351,TR +520292352,520294399,NL +520294400,520296447,RU +520296448,520298495,UA +520298496,520306687,SK +520306688,520308735,GB +520308736,520310783,DK +520310784,520312831,DE +520312832,520314879,MK +520314880,520318975,NL +520318976,520323071,ES +520323072,520325119,CH +520325120,520327167,FR +520329216,520331263,SE +520331264,520339455,IT +520339456,520343551,UA +520343552,520355839,GB +520355840,520421375,ES +520421376,520486911,AT +520486912,520488959,NL +520488960,520491007,IT +520491008,520493567,GB +520493568,520494079,FR +520494080,520495871,IT +520495872,520496383,DE +520496384,520497663,IT +520497664,520497919,FR +520497920,520500479,IT +520500480,520500735,DE +520500736,520501759,IT +520501760,520503295,GB +520505344,520507391,GB +520507392,520511487,TR +520511488,520519679,UA +520519680,520552447,PL +520552448,520554495,NL +520554496,520556543,GB +520556544,520560639,FI +520562688,520564735,PL +520564736,520566783,IE +520566784,520568831,CH +520568832,520589311,IR +520589312,520593407,IT +520593408,520595455,AM +520595456,520597503,MK +520597504,520601599,DE +520601600,520609791,SI +520609792,520613887,RU +520613888,520615935,CZ +520615936,520617983,FR +520617984,520683519,RU +520683520,520749055,SY +520749056,520753151,RU +520753152,520757247,LI +520757248,520761343,GB +520761344,520763391,IT +520763392,520765439,CZ +520765440,520781823,RU +520781824,520822783,CH +520822784,520824831,IT +520824832,520826879,RO +520826880,520828927,QA +520828928,520830975,NL +520830976,520847359,MK +520847360,520880127,PL +520880128,520882175,AT +520882176,520884223,IT +520884224,520888319,MK +520888320,520896511,DE +520896512,520898559,BE +520898560,520912895,GB +520912896,520945663,UA +520945664,520947711,GB +520947712,520949759,SE +520949760,520951807,RU +520951808,520953855,IE +520953856,520962047,RU +520962048,520978431,IE +520978432,520980479,RU +520980480,520982527,IT +520982528,520984575,RU +520984576,520984831,NG +520984832,520986623,GB +520986624,520988671,PS +520988672,520990719,DE +520990720,520992767,RU +520992768,520994815,ES +520994816,521011199,BG +521011200,521076735,RO +521076736,521078783,ES +521078784,521080831,CZ +521080832,521082879,RU +521082880,521084927,FR +521084928,521093119,SE +521093120,521095167,DE +521095168,521097215,IT +521097216,521101311,RU +521101312,521103359,IT +521103360,521105407,GB +521105408,521107455,IS +521109504,521142271,SI +521142272,521404415,DE +521404416,521535487,NL +521535488,521537535,GB +521537536,521539583,RU +521539584,521541631,BE +521541632,521543679,DE +521543680,521545727,RU +521545728,521547775,GB +521547776,521551871,AL +521551872,521553919,DE +521555968,521558015,NL +521558016,521560063,CY +521560064,521562111,PL +521564160,521566207,GR +521566208,521568255,LU +521568256,521601023,PT +521601024,521666559,RU +521666560,521668607,GB +521668608,521670655,CH +521670656,521672703,HU +521672704,521674751,RU +521674752,521676799,GB +521676800,521678847,ES +521678848,521680895,NL +521680896,521682943,EE +521682944,521687039,SE +521687040,521689087,GB +521689088,521691135,BY +521691136,521693183,DE +521693184,521695231,GB +521695232,521697279,BE +521697280,521699327,ES +521699328,521701375,NO +521701376,521703423,IT +521703424,521705471,DE +521705472,521707519,ES +521707520,521709567,NL +521709568,521711615,DE +521711616,521713663,SK +521713664,521715711,HU +521715712,521717759,LV +521717760,521719807,IR +521719808,521721855,UA +521721856,521723903,GB +521723904,521725951,SA +521725952,521727999,IR +521728000,521732095,FR +521732096,521736191,GB +521736192,521738239,DK +521738240,521740287,RU +521740288,521742335,IT +521742336,521746431,DE +521746432,521748479,NL +521748480,521750527,SE +521750528,521752575,PS +521752576,521754623,FR +521754624,521756671,IR +521756672,521758719,NL +521758720,521760767,IR +521760768,521762815,IL +521762816,521764863,CH +521764864,521766911,IR +521766912,521768959,IQ +521768960,521771007,FI +521771008,521773055,DE +521773056,521775103,GB +521775104,521777151,TR +521777152,521779199,ES +521779200,521783295,GB +521783296,521785343,RU +521785344,521787391,GB +521787392,521789439,NO +521789440,521791487,RU +521791488,521793535,IR +521793536,521795583,RU +521795584,521797631,PL +521797632,521928703,IT +521928704,521945087,RU +521945088,521953279,GB +521953280,521961471,RU +521961472,521969663,CZ +521969664,521977855,UA +521977856,521986047,RU +521986048,521994239,UA +521994240,522002431,KG +522002432,522010623,IR +522010624,522018815,AE +522018816,522027007,FR +522027008,522059775,RU +522059776,522125311,CZ +522125312,522133503,MD +522133504,522135551,NL +522137600,522141695,CH +522141696,522143743,RU +522143744,522145791,CZ +522145792,522147839,DK +522147840,522149887,ES +522149888,522158079,UA +522158080,522166271,BE +522166272,522168319,SE +522168320,522170367,RU +522170368,522174463,YE +522174464,522178559,RU +522178560,522180607,DE +522180608,522182655,KZ +522182656,522190847,CZ +522190848,522715135,FR +522715136,522717183,IR +522717184,522719231,RU +522719232,522721279,UA +522721280,522741759,RU +522741760,522743807,UA +522743808,522747903,RU +522747904,522780671,UA +522780672,522782719,RU +522782720,522784767,UA +522784768,522786815,BG +522786816,522788863,PL +522788864,522792959,RU +522792960,522795007,UA +522795008,522797055,RU +522797056,522801151,UA +522801152,522803199,PL +522803200,522805247,UA +522805248,522807295,RU +522807296,522811391,UA +522811392,522813439,RU +522813440,522815487,UA +522815488,522819583,PL +522819584,522821631,KG +522821632,522823679,RU +522823680,522827775,PL +522827776,522831871,RU +522831872,522833919,CZ +522833920,522835967,PL +522835968,522838015,UA +522838016,522840063,RU +522840064,522842111,PL +522842112,522846207,RU +522846208,522854399,PL +522854400,522858495,RU +522858496,522866687,UA +522866688,522870783,LV +522870784,522874879,RU +522874880,522878975,UA +522878976,522887167,RO +522887168,522895359,UA +522895360,522911743,RU +522911744,522960895,UA +522960896,522969087,RU +522969088,522977279,UA +522977280,522981375,RU +522981376,522985471,IT +522985472,522989567,CH +522989568,522993663,RU +522993664,522997759,AL +522997760,523001855,RU +523001856,523005951,LT +523005952,523010047,IT +523010048,523014143,IL +523014144,523018239,ES +523018240,523022335,IT +523022336,523024639,RU +523024640,523024895,GB +523024896,523026431,RU +523026432,523030527,TR +523030528,523034623,FR +523034624,523038719,SE +523038720,523042815,RU +523042816,523075583,NO +523075584,523108351,HR +523108352,523173887,HU +523173888,523182079,BA +523182080,523190271,IR +523190272,523192319,FI +523192320,523194367,ES +523194368,523196415,DE +523196416,523198463,AE +523198464,523202559,CZ +523202560,523223039,RU +523223040,523225087,AM +523225088,523227135,SE +523227136,523229183,RO +523229184,523231231,GB +523231232,523239423,DE +523239424,523763711,GB +523763712,524025855,IR +524025856,524287999,PL 524288000,528482303,GB +528482304,528490495,PL +528490496,528498687,RU +528498688,528515071,UA +528515072,528523263,RU +528523264,528531455,UA +528531456,528539647,RU +528539648,528547839,UA +528547840,528564223,RU +528564224,528580607,UA +528580608,528588799,RU +528588800,528596991,UA +528596992,528605183,RU +528605184,528613375,UA +528613376,528637951,RU +528637952,528642047,PL +528642048,528654335,RU +528654336,528656383,SK +528656384,528658431,CZ +528658432,528662527,IR +528662528,528664575,RU +528664576,528666623,BY +528666624,528668671,RU +528668672,528670719,PL +528670720,528674815,CH +528674816,528676863,RO +528676864,528678911,RU +528678912,528680959,MD +528680960,528683007,RO +528683008,528689151,UA +528689152,528691199,RO +528691200,528695295,PL +528695296,528699391,UA +528699392,528703487,RU +528703488,528715775,UA +528715776,528719871,RU +528719872,528721919,RO +528721920,528723967,PL +528723968,528726015,ES +528726016,528736255,RU +528736256,528740351,SK +528740352,528742399,IT +528742400,528744447,RU +528744448,528746495,GB +528746496,528748543,RO +528748544,528752639,CZ +528752640,528760831,RO +528760832,528762879,PL +528762880,528764927,RU +528764928,528769023,RO +528769024,528793599,RU +528793600,528795647,RO +528795648,528797695,NL +528797696,528805887,RU +528805888,528809983,RO +528809984,528812031,PL +528812032,528814079,CZ +528814080,528816127,PL +528816128,528818175,RO +528818176,528834559,UA +528834560,528836607,RO +528836608,528838655,RU +528838656,528840703,UA +528840704,528842751,RU +528842752,528859135,CH +528863232,528867327,KZ +528867328,528887807,RU +528887808,528891903,PL +528891904,528900095,UA +528900096,528902143,SK +528902144,528908287,UA +528908288,528926719,RU +528926720,528928767,NL +528928768,528930815,UA +528930816,528932863,CZ +528932864,528941055,RU +528941056,528943103,RO +528943104,528945151,RU +528945152,528949247,PL +528949248,528965631,RU +528965632,528982015,UA +528982016,528984063,PL +528984064,528986111,RO +528986112,528988159,UA +528988160,528990207,RO +528990208,528994303,PL +528994304,528996351,UZ +528996352,528998399,LT +529002496,529006591,RU +529006592,529268735,NL +529268736,529530879,TR +529530880,529596415,UA +529596416,529661951,TR +529661952,529727487,GE +529727488,529793023,HR +529793024,529826815,RU +529826816,529827839,GB +529827840,529828863,RO +529828864,529829887,RU +529829888,529830399,UA +529830400,529830911,RU +529830912,529831935,DE +529831936,529832959,UA +529832960,529835007,RU +529835008,529836031,KG +529836032,529836543,UA +529836544,529837055,IL +529837056,529839103,RU +529839104,529839615,UA +529839616,529840127,CY +529840128,529842175,UA +529842176,529843199,IN +529843200,529844735,RU +529844736,529845247,UA +529845248,529846271,UZ +529846272,529846783,UA +529846784,529848319,RU +529848320,529855487,CZ +529855488,529857535,RU +529857536,529858559,UA +529858560,529924095,NL +529924096,529989631,DE +529989632,530055167,NL +530055168,530120703,GR +530120704,530186239,CY +530186240,530251775,IL +530251776,530317311,TR +530317312,530579455,IT +530579456,530710527,NL +530710528,530841599,RU +530841600,530972671,CH +530972672,531103743,SA +531103744,531169279,IL +531169280,531177471,KZ +531177472,531179519,GB +531181568,531183615,GB +531183616,531185663,NL +531185664,531193855,TR +531193856,531194303,IE +531194304,531194335,IR +531194336,531195903,IE +531195904,531197951,IT +531197952,531199999,GB +531200000,531202047,RU +531202048,531234815,CZ +531234816,531236863,IE +531236864,531238911,FR +531238912,531240959,LV +531240960,531243007,SE +531243008,531245055,RU +531245056,531247103,IT +531247104,531251199,IR +531251200,531259391,SK +531259392,531261439,ES +531261440,531263487,DE +531263488,531265535,RU +531265536,531267583,GB +531267584,531275775,UA +531275776,531277823,US +531277824,531279871,RU +531281920,531283967,RU +531283968,531292159,DE +531292160,531333119,AZ +531333120,531333599,NL +531333600,531333631,RU +531333632,531334143,NL +531334144,531334207,US +531334208,531334399,NL +531334400,531334463,US +531334464,531334655,NL +531334656,531335167,US +531335168,531337215,IT +531337216,531339263,CH +531339264,531341311,AL +531341312,531349503,KZ +531349504,531351551,RU +531351552,531355647,NL +531357696,531361791,HU +531361792,531365887,CH +531365888,531366399,DE +531366400,531367935,CH +531367936,531369983,DE +531369984,531371007,CH +531371008,531371519,US +531371520,531372031,JP +531372032,531380223,CH +531380224,531398655,DE +531398656,531400703,RU +531400704,531402751,UA +531402752,531404799,LU +531404800,531406847,FI +531406848,531415039,IM +531415040,531423231,RU +531423232,531425279,NO +531425280,531431423,GB +531431424,531496959,RO +531496960,531628031,PL +531628032,531660799,TR +531660800,531693567,BA +531693568,531695615,RU +531695616,531697663,LT +531697664,531699711,GB +531699712,531701759,CZ +531703808,531705855,IT +531705856,531707903,ES +531707904,531709951,GR +531709952,531718143,RU +531718144,531720191,ES +531720192,531722239,RU +531722240,531724287,IT +531724288,531726335,DE +531726336,531759103,TR +531759104,531890175,PL +531890176,532021247,RU +532021248,532152319,PL +532152320,532168703,DE +532168704,532185087,NL +532185088,532201471,IR +532201472,532211711,RU +532211712,532212223,LU +532212224,532212479,RU +532212480,532212991,UA +532212992,532221951,RU +532221952,532223999,IT +532224000,532226047,NO +532226048,532234239,GB +532234240,532242431,DK +532242432,532244479,IT +532244480,532246527,DE +532246528,532250623,BA +532250624,532283391,GB +532283392,532291583,TR +532291584,532293631,IE +532293632,532295679,IT +532295680,532297727,KG +532297728,532303871,RU +532303872,532305919,PL +532305920,532307967,NO +532307968,532310015,RU +532310016,532312063,GR +532312064,532314111,JE +532314112,532316159,DE +532316160,532324351,RU +532324352,532328447,NL +532328448,532330495,PS +532330496,532332543,CZ +532332544,532340735,PL +532340736,532348927,GB +532348928,532365311,PL +532365312,532373503,DE +532373504,532375551,RU +532375552,532377599,IT +532377600,532381695,DE +532381696,532414463,NL +532414464,532676607,IT +532676608,532692991,GE +532692992,532701183,CZ +532703232,532704511,RU +532704512,532704767,IN +532704768,532705279,RU +532705280,532709375,NL +532709376,532725759,RU +532725760,532729855,SE +532729856,532731903,TR +532731904,532733951,PL +532733952,532735999,SE +532736000,532738047,RU +532738048,532740095,GB +532740096,532742143,KG +532742144,532742655,GB +532742656,532742783,CN +532742784,532742911,GB +532742912,532743679,CN +532743680,532743807,DE +532743808,532743935,CN +532743936,532744095,GB +532744096,532744127,CN +532744128,532744191,GB +532744192,532744319,IN +532744320,532744383,US +532744384,532744479,CN +532744480,532744511,IN +532744512,532744575,BE +532744576,532744639,GB +532744640,532745215,CN +532745216,532745727,GB +532745728,532745791,CN +532745792,532745855,GB +532745856,532745983,CN +532745984,532746015,BE +532746016,532746047,CN +532746048,532746111,AU +532746112,532746143,BE +532746144,532746207,GB +532746208,532746215,CN +532746216,532746223,ES +532746224,532746239,GB +532746240,532750335,IT +532750336,532752383,SM +532752384,532754431,BE +532754432,532756479,FR +532756480,532758527,IT +532758528,532762623,SY +532762624,532766719,UA +532766720,532768767,PL +532768768,532770815,NL +532770816,532772863,IR +532772864,532774911,RU +532774912,532779007,GB +532779008,532783103,IR +532783104,532785151,AT +532785152,532787199,GB +532787200,532789247,BE +532789248,532791295,DK +532791296,532793343,LT +532793344,532795391,SE +532795392,532797439,CH +532797440,532799487,IE +532799488,532801535,ES +532801536,532803583,DK +532803584,532805631,FR +532805632,532807679,SE +532807680,533200895,IT +533200896,533233663,TR +533233664,533250047,IE +533250048,533262335,RU +533262336,533264383,ES +533264384,533266431,RU +533266432,533266687,NL +533266688,533266943,DE +533266944,533267199,NL +533267200,533267455,AX +533267456,533267711,AL +533267712,533267967,AD +533267968,533268223,AM +533268224,533268479,AT +533268480,533268735,AZ +533268736,533268991,BH +533268992,533269247,BY +533269248,533269503,BE +533269504,533269759,BA +533269760,533270015,BG +533270016,533270271,HR +533270272,533270527,CY +533270528,533270783,CZ +533270784,533271039,DK +533271040,533271295,EE +533271296,533271551,FO +533271552,533271807,GE +533271808,533272063,FR +533272064,533272319,DE +533272320,533272575,GI +533272576,533272831,GR +533272832,533273087,GL +533273088,533273343,GG +533273344,533273599,VA +533273600,533273855,HU +533273856,533274111,IS +533274112,533274367,IR +533274368,533274623,IQ +533274624,533274879,IE +533274880,533275135,IM +533275136,533275391,IL +533275392,533275647,IT +533275648,533275903,JE +533275904,533276159,JO +533276160,533276415,KZ +533276416,533276671,KW +533276672,533276927,KG +533276928,533277183,LV +533277184,533277439,LB +533277440,533277695,LI +533277696,533277951,LT +533277952,533278207,LU +533278208,533278463,MT +533278464,533278719,MC +533278720,533278975,ME +533278976,533279231,NL +533279232,533279487,NO +533279488,533279743,OM +533279744,533279999,PS +533280000,533280255,PL +533280256,533280511,PT +533280512,533280767,RO +533280768,533281023,RU +533281024,533281279,SM +533281280,533281535,SA +533281536,533281791,RS +533281792,533282047,SK +533282048,533282303,SI +533282304,533282559,ES +533282560,533282815,SE +533282816,533283071,CH +533283072,533283327,SY +533283328,533283583,TJ +533283584,533283839,TR +533283840,533284095,TM +533284096,533284351,UA +533284352,533284607,AE +533284608,533284863,GB +533284864,533285119,UZ +533285120,533285375,YE +533285376,533285631,AX +533285632,533285887,AL +533285888,533286143,AD +533286144,533286399,AM +533286400,533286655,AT +533286656,533286911,AZ +533286912,533287167,BH +533287168,533287423,BY +533287424,533287679,BE +533287680,533287935,BA +533287936,533288191,BG +533288192,533288447,HR +533288448,533288703,CY +533288704,533288959,CZ +533288960,533289215,DK +533289216,533289471,EE +533289472,533289727,FO +533289728,533289983,GE +533289984,533290239,FR +533290240,533290495,DE +533290496,533290751,GI +533290752,533291007,GR +533291008,533291263,GL +533291264,533291519,GG +533291520,533291775,VA +533291776,533292031,HU +533292032,533292287,IS +533292288,533292543,IR +533292544,533292799,IQ +533292800,533293055,IE +533293056,533293311,IM +533293312,533293567,IL +533293568,533293823,IT +533293824,533294079,JE +533294080,533294335,JO +533294336,533294591,KZ +533294592,533294847,KW +533294848,533295103,KG +533295104,533295359,LV +533295360,533295615,LB +533295616,533295871,LI +533295872,533296127,LT +533296128,533296383,LU +533296384,533296639,MT +533296640,533296895,MC +533296896,533297151,ME +533297152,533297407,NL +533297408,533297663,NO +533297664,533297919,OM +533297920,533298175,PT +533298176,533298431,RO +533298432,533298687,RU +533298688,533298943,SM +533298944,533299199,SA +533299200,533299455,RS +533299456,533299711,SK +533299712,533299967,SI +533299968,533300223,ES +533300224,533300479,SE +533300480,533300735,CH +533300736,533300991,SY +533300992,533301247,TJ +533301248,533301503,TM +533301504,533301759,UA +533301760,533302015,AE +533302016,533302271,GB +533302272,533302527,UZ +533302528,533302783,AX +533302784,533303039,AL +533303040,533303295,AD +533303296,533303551,AM +533303552,533303807,AT +533303808,533304063,AZ +533304064,533304319,BH +533304320,533304575,BY +533304576,533304831,BE +533304832,533305087,BA +533305088,533305343,BG +533305344,533305599,HR +533305600,533305855,FR +533305856,533306111,CZ +533306112,533306367,FR +533306368,533306623,EE +533306624,533306879,FO +533306880,533307135,GE +533307136,533307391,FR +533307392,533307647,DE +533307648,533307903,GI +533307904,533308159,GR +533308160,533308415,GL +533308416,533308671,GG +533308672,533308927,VA +533308928,533309183,HU +533309184,533309439,IS +533309440,533309695,IR +533309696,533309951,IQ +533309952,533310207,IE +533310208,533310463,IM +533310464,533310719,IL +533310720,533310975,IT +533310976,533311231,JE +533311232,533311487,JO +533311488,533311743,KZ +533311744,533311999,KW +533312000,533312255,KG +533312256,533312511,LV +533312512,533312767,LB +533312768,533313023,LI +533313024,533313279,LT +533313280,533313535,LU +533313536,533313791,MT +533313792,533314047,MC +533314048,533314303,ME +533314304,533314559,NL +533314560,533314815,NO +533314816,533315071,OM +533315072,533315327,PT +533315328,533315583,RO +533315584,533315839,RU +533315840,533316095,SM +533316096,533316351,SA +533316352,533316607,RS +533316608,533316863,SK +533316864,533317119,SI +533317120,533317375,ES +533317376,533317631,SE +533317632,533317887,CH +533317888,533318143,SY +533318144,533318399,TJ +533318400,533318655,TR +533318656,533318911,TM +533318912,533319167,UA +533319168,533319423,AE +533319424,533319679,GB +533319680,533319935,UZ +533319936,533320191,YE +533320192,533320447,AX +533320448,533320703,AL +533320704,533320959,AD +533320960,533321215,AM +533321216,533321471,AT +533321472,533321727,AZ +533321728,533321983,BH +533321984,533322495,BE +533322496,533331967,FR +533331968,533397503,UA +533397504,533463039,KW +533463040,533479423,RU +533481472,533483519,NO +533483520,533485567,FR +533485568,533487615,LU +533487616,533491711,RU +533491712,533495807,DE +533495808,533503999,NL +533504000,533512191,RU +533512192,533528575,ME +533528576,533594111,GB +533594112,533659647,TR +533659648,533676031,CZ +533676032,533680127,RU +533680128,533682175,TR +533682176,533684223,ES +533684224,533692415,IT +533692416,533725183,RU +533725184,533807103,SE +533807104,533811199,LT +533811200,533815295,DE +533815296,533815296,TR +533815297,533816319,CY +533816320,533816320,TR +533816321,533817343,CY +533817344,533817344,TR +533817345,533819391,CY +533819392,533823487,DE +533823488,533825535,BE +533827584,533831679,IS +533831680,533835775,DE +533835776,533837823,SE +533837824,533839871,DE +533839872,533856255,IS +533856256,533858303,FR +533858304,533860351,HU +533860352,533860863,DE +533860864,533862399,NL +533862400,533864447,GB +533864448,533889023,TR +533889024,533891071,GB +533891072,533893119,RU +533893120,533895167,ES +533895168,533897215,TR +533897216,533899263,DE +533899264,533901311,RU +533901312,533905407,IL +533905408,533913599,RU +533913600,533915647,ES +533915648,533919743,GB +533919744,533921791,SE +533921792,533954559,RU +533954560,533962751,BG +533962752,533964799,GB +533964800,533966847,NO +533966848,533968895,DE +533968896,533970943,ES +533970944,533987327,SE +533987328,534118399,DE +534118400,534151167,KW +534151168,534183935,DE +534183936,534249471,RO +534249472,534253567,GB +534253568,534257407,FR +534257408,534257663,PL +534257664,534259711,SE +534259712,534261759,CH +534261760,534263807,GB +534263808,534265855,PL +534265856,534282239,CY +534282240,534284287,IT +534284288,534286335,SE +534286336,534288383,LU +534288384,534290431,IT +534290432,534296575,RU +534296576,534298623,BA +534298624,534306815,HR +534306816,534308863,SE +534308864,534310911,IE +534310912,534315007,IT +534315008,534347775,HR +534380544,534511615,AE +534511616,534544383,DE +534544384,534546431,RO +534546432,534548479,DE +534548480,534550527,PL +534550528,534560767,RU +534560768,534609919,GB +534609920,534642687,ES +534642688,534646783,CZ +534646784,534648831,PL +534648832,534650879,CH +534650880,534652927,RU +534652928,534654975,AL +534654976,534663167,GB +534663168,534675455,ES +534675456,534691839,GB +534691840,534693887,FR +534693888,534695935,GB +534700032,534708223,JO +534708224,534740991,TR +534740992,534749183,BA +534749184,534753279,NL +534753280,534757375,PS +534757376,534761471,KZ +534761472,534765567,BA +534765568,534767615,UA +534767616,534769663,HU +534769664,534773759,IT +534773760,536870911,DE 536870912,539624567,US 539624568,539624575,IE 539624576,539624703,US @@ -1149,7 +2238,9 @@ 540814016,540814079,US 540814080,540814271,TW 540814272,540814279,DE -540814280,540814511,US +540814280,540814327,US +540814328,540814335,IN +540814336,540814511,US 540814512,540814519,SG 540814520,540814719,US 540814720,540814735,SG @@ -1188,7 +2279,29 @@ 543691008,543844351,US 543844352,543844607,CH 543844608,603979775,US -603979776,620756991,AU +603979776,603980799,CN +603980800,603981823,NP +603981824,604110847,CN +604110848,604241919,JP +604241920,604504063,CN +604504064,605028351,JP +605028352,606412799,CN +606412800,606413823,HK +606413824,606420991,CN +606420992,606437375,ID +606437376,606470143,KH +606470144,606601215,KR +606601216,607387647,CN +607387648,607649791,JP +607649792,608174079,CN +608174080,610271231,ID +610271232,618659839,CN +618659840,619708415,TW +619708416,620232703,JP +620232704,620494847,CN +620494848,620625919,NP +620625920,620691455,CN +620756992,624951295,EU 637534208,644067391,US 644067392,644067455,CA 644067456,644835071,US @@ -1198,6 +2311,19 @@ 644840448,645225471,US 645225472,645225503,CA 645225504,654311423,US +654311424,654311679,CN +654311680,654311935,AU +654311936,654376959,CN +654376960,654442495,TW +654442496,654573567,JP +654573568,654835711,KR +654835712,655359999,TW +655360000,656408575,KR +656408576,658505727,PK +658505728,661651455,CN +661651456,662700031,KR +662700032,666894335,CN +666894336,671088639,ID 671088640,687865855,US 687865856,689963007,ZA 689963008,691011583,EG @@ -1210,6 +2336,7 @@ 691994624,692011007,ZM 692011008,692027391,ZA 692027392,692035583,MG +692035584,692043775,AO 692043776,692060159,NA 692060160,692191231,EG 692191232,692207615,CI @@ -1258,6 +2385,12 @@ 692793344,692797439,GH 692797440,692801535,CG 692801536,692805631,NG +692805632,692809727,ZA +692809728,692813823,MW +692813824,692817919,ZA +692817920,692822015,KE +692822016,692826111,UG +692826112,692830207,KE 692830208,692834303,NG 692834304,692838399,TZ 692838400,692842495,ZA @@ -1272,8 +2405,7 @@ 692860928,692862975,ZA 692862976,692869119,NG 692869120,692871167,TZ -692871168,692873215,ZA -692875264,692877311,ZA +692871168,692877311,ZA 692877312,692879359,GA 692879360,692881407,ZA 692881408,692883455,CG @@ -1286,6 +2418,20 @@ 692895744,692897791,NG 692897792,692905983,ZA 692905984,692908031,ZW +692908032,692910079,BW +692910080,692912127,NG +692912128,692914175,ZM +692914176,692916223,MW +692916224,692918271,MG +692918272,692920319,ZA +692920320,692922367,MZ +692922368,692924415,NG +692924416,692928511,ZA +692928512,692930559,GH +692930560,692932607,UG +692932608,692934655,CM +692934656,692936703,BW +692936704,692938751,ZA 692969472,692971519,TZ 692973568,692975615,MZ 692975616,692977663,EG @@ -1331,9 +2477,37 @@ 693021696,693022719,NG 693022720,693023743,KE 693023744,693026815,ZA -693026816,693027839,MU 693027840,693028863,CD 693028864,693029887,ZA +693029888,693030911,CM +693030912,693031935,NG +693031936,693032959,ZA +693032960,693033983,MW +693033984,693035007,ZA +693035008,693036031,NG +693036032,693038079,ZA +693038080,693039103,ZW +693039104,693040127,GA +693040128,693041151,ZA +693041152,693042175,MW +693042176,693043199,NG +693043200,693044223,ZW +693044224,693045247,NG +693045248,693046271,KE +693046272,693047295,ZW +693047296,693049343,ZA +693049344,693050367,SD +693050368,693051391,ZW +693051392,693052415,BW +693052416,693054463,ZA +693054464,693055487,BI +693055488,693056511,GQ +693056512,693057535,NA +693057536,693058559,ZW +693058560,693059583,SC +693059584,693060607,NG +693060608,693061631,TZ +693061632,693062655,ZA 693101568,693102591,KE 693102592,693103615,CD 693103616,693104639,GN @@ -1347,6 +2521,10 @@ 693411840,693420031,NG 693420032,693428223,UG 693428224,693436415,SZ +693436416,693477375,ZA +693477376,693485567,BJ +693485568,693493759,ZW +693493760,693501951,ZA 693501952,693510143,LR 693510144,693518335,SC 693518336,693534719,ZA @@ -1731,25 +2909,91 @@ 702537728,702538751,RW 702538752,702539775,TZ 702539776,702540799,BF -702540800,702541823,MU 702541824,702542847,EG 702542848,702543871,ZA 702543872,702544895,BJ -702544896,702545919,MU 702545920,703070207,TN 703070208,703594495,EG 703594496,704118783,ZA 704118784,704380927,MA 704380928,704643071,LY -704643072,721420287,AU +704643072,704644095,CN +704644096,704645119,BD +704645120,704650239,CN +704650240,704651263,MY +704651264,704659455,CN +704659456,704675839,TW +704675840,704723967,CN +704723968,704724991,MY +704724992,704741375,VN +704741376,704774143,CN +704774144,704905215,HK +704905216,705167359,CN +705167360,707788799,KR +707788800,708575231,CN +708575232,708706303,SG +708706304,708751359,CN +708751360,708752383,ID +708752384,708755455,CN +708755456,708771839,AU +708771840,708837375,CN +708837376,709885951,TW +709885952,710017023,CN +710017024,710082559,KR +710082560,710098943,JP +710098944,710104063,CN +710104064,710105087,PK +710105088,710934527,CN +710934528,710950911,VN +710950912,710961151,CN +710961152,710962175,TH +710962176,711065599,CN +711065600,711131135,HK +711131136,711160831,CN +711160832,711161855,BD +711161856,711163903,CN +711163904,711196671,JP +711196672,711458815,CN +711458816,711983103,IN +711983104,712507391,VN +712507392,712712191,CN +712712192,712713215,JP +712713216,712769535,CN +712769536,713031679,JP +713031680,714080255,CN +714080256,714604543,JP +714604544,714866687,MY +714866688,714874879,CN +714874880,714875903,MY +714875904,716930047,CN +716930048,716931071,JP +716931072,716963839,CN +716963840,717225983,MY +717225984,717750271,CN +717750272,717815807,HK +717815808,717848575,CN +717848576,717881343,PK +717881344,720437247,CN +720437248,720502783,AU +720502784,721420287,CN 721420288,738197503,JP 738197504,771751935,US 771751936,771817471,RU 771817472,771948543,TR 771948544,772014079,RU -772014080,772057727,DE +772014080,772050575,DE +772050576,772050583,TR +772050584,772051223,DE +772051224,772051231,CH +772051232,772054815,DE +772054816,772054847,ES +772054848,772057727,DE 772057728,772057735,IT -772057736,772145151,DE +772057736,772076095,DE +772076096,772076103,IT +772076104,772076127,DE +772076128,772076159,EG +772076160,772145151,DE 772145152,772210687,ES 772210688,772276223,IE 772276224,772341759,RU @@ -1762,7 +3006,11 @@ 772734976,772800511,NO 772800512,772802559,GB 772802560,772804607,RU -772804608,772806655,BZ +772804608,772806207,BZ +772806208,772806271,NI +772806272,772806463,BZ +772806464,772806527,NI +772806528,772806655,BZ 772806656,772808703,RU 772808704,772810751,GB 772810752,772812799,FR @@ -1781,7 +3029,9 @@ 772837376,772839423,KZ 772839424,772841471,CH 772841472,772843519,GB -772843520,772845567,IT +772843520,772844287,IT +772844288,772844543,US +772844544,772845567,IT 772845568,772847615,RU 772847616,772849663,GB 772849664,772851711,BG @@ -1809,7 +3059,11 @@ 772886528,772888575,FR 772888576,772890623,GB 772890624,772892671,RU -772892672,772894719,DE +772892672,772892799,DE +772892800,772892893,GB +772892894,772892927,DE +772892928,772892959,GB +772892960,772894719,DE 772894720,772896767,PL 772896768,772898815,RS 772898816,772900863,TR @@ -1854,7 +3108,10 @@ 772986880,772988927,GB 772988928,772990975,FR 772990976,772993023,IT -772993024,772995071,DE +772993024,772994559,DE +772994560,772994815,NL +772994816,772994943,US +772994944,772995071,DE 772995072,772997119,IR 772997120,772999167,BE 772999168,773001215,SI @@ -1883,7 +3140,11 @@ 773048320,773050367,LV 773050368,773052415,IE 773052416,773054463,NL -773054464,773056511,AL +773054464,773054655,AL +773054656,773054719,RS +773054720,773055487,AL +773055488,773056127,RS +773056128,773056511,AL 773056512,773058559,IT 773058560,773060607,BE 773060608,773062655,DK @@ -1891,8 +3152,10 @@ 773062912,773063167,US 773063168,773063424,TR 773063425,773063436,US -773063437,773063935,TR -773063936,773065215,US +773063437,773064447,TR +773064448,773064703,US +773064704,773065088,TR +773065089,773065215,US 773065216,773066751,TR 773066752,773070847,AT 773070848,773074943,DE @@ -1912,18 +3175,29 @@ 773128192,773132287,DE 773132288,773134335,IT 773134336,773134847,CH -773134848,773135359,IT -773135360,773135871,CH -773135872,773136383,IT +773134848,773136383,IT 773136384,773140479,DK 773140480,773144575,CY 773144576,773148671,RU 773148672,773152767,IR -773152768,773156863,SE -773156864,773165055,FR -773165056,773168127,NL -773168128,773168383,US -773168384,773173247,NL +773152768,773153791,SE +773153792,773154815,US +773154816,773156863,SE +773156864,773157887,FR +773157888,773158911,DE +773158912,773160447,FR +773160448,773160959,ES +773160960,773165055,FR +773165056,773166591,NL +773166592,773167103,US +773167104,773167615,NL +773167616,773169151,US +773169152,773171343,NL +773171344,773171359,BE +773171360,773172223,NL +773172224,773172287,BE +773172288,773172351,GB +773172352,773173247,NL 773173248,773177343,IT 773177344,773181439,FR 773181440,773185535,PL @@ -1940,6 +3214,28 @@ 773230592,773234687,RS 773234688,773238783,PL 773238784,773242879,NL +773242880,773246975,FR +773246976,773247871,EE +773247872,773247999,US +773248000,773251071,EE +773251072,773255167,AZ +773255168,773259263,RU +773259264,773263359,SI +773263360,773267455,GB +773267456,773271551,LV +773271552,773275647,CZ +773275648,773277695,GB +773277696,773283839,NL +773283840,773287935,AZ +773287936,773292031,JO +773292032,773296127,CZ +773296128,773300223,RU +773300224,773304319,FI +773304320,773308415,RU +773308416,773312511,IT +773312512,773316607,DE +773316608,773320703,RU +773320704,773324799,FR 773324800,773586943,ES 773586944,773588991,IT 773588992,773591039,PL @@ -1949,7 +3245,9 @@ 773597184,773599231,BE 773599232,773601279,GB 773601280,773603327,LV -773603328,773605375,UA +773603328,773603839,UA +773603840,773603855,HK +773603856,773605375,UA 773605376,773607423,IR 773607424,773609471,DE 773609472,773611519,RU @@ -1961,19 +3259,19 @@ 773621760,773623807,PS 773623808,773625855,SE 773625856,773627903,IS -773627904,773629951,TR 773629952,773631999,FR 773632000,773634047,CY 773634048,773636095,DE 773636096,773638143,UA -773638144,773640191,GB 773640192,773642239,ES 773642240,773644287,HU 773644288,773646335,RU 773646336,773648383,TR 773648384,773650431,PL 773650432,773652479,GB -773652480,773654527,SK +773652480,773653759,SK +773653760,773653791,CZ +773653792,773654527,SK 773654528,773656575,RU 773656576,773658623,PL 773658624,773660671,DE @@ -1996,7 +3294,11 @@ 773679616,773680191,IT 773680192,773681151,A2 773681152,773683199,RU -773683200,773685247,FR +773683200,773684223,FR +773684224,773684239,GB +773684240,773684255,BE +773684256,773684271,NL +773684272,773685247,FR 773685248,773687295,UA 773687296,773689343,HU 773689344,773691391,PL @@ -2011,8 +3313,9 @@ 773709824,773711871,CZ 773711872,773713919,RU 773713920,773715967,NL -773715968,773716479,EE -773716480,773716991,SE +773715968,773715999,SE +773716000,773716063,US +773716064,773716991,SE 773716992,773718015,US 773718016,773720063,DE 773720064,773722111,GB @@ -2037,12 +3340,10 @@ 773763072,773765119,TR 773765120,773767167,NL 773767168,773769215,GB -773769216,773771263,SE 773771264,773773311,DK 773773312,773775359,IT 773775360,773777407,IQ 773777408,773779455,CZ -773779456,773781503,ME 773781504,773783551,IT 773783552,773785599,RU 773785600,773787647,NL @@ -2052,7 +3353,11 @@ 773793792,773795839,FR 773795840,773797887,NL 773797888,773799935,ES -773799936,773801983,CY +773799936,773800447,GB +773800448,773800703,CY +773800704,773800959,GB +773800960,773801727,CY +773801728,773801983,GB 773801984,773804031,IQ 773804032,773806079,GB 773806080,773808127,BE @@ -2065,6 +3370,7 @@ 773820416,773822463,TR 773822464,773824511,RU 773824512,773826559,FR +773826560,773828607,GB 773828608,773830655,HU 773830656,773832703,NO 773832704,773834751,FR @@ -2082,7 +3388,8 @@ 773898240,773906431,PS 773906432,773922815,GB 773922816,773931007,UA -773931008,773939199,FR +773931008,773934591,DE +773934592,773939199,FR 773939200,773947391,CZ 773947392,773955583,GB 773955584,773963775,FR @@ -2102,11 +3409,24 @@ 774029312,774037503,RO 774037504,774045695,SK 774045696,774053887,FR -774053888,774061567,DE -774061568,774061695,BZ -774061696,774061823,DE -774061824,774061951,BZ -774061952,774062079,DE +774053888,774054015,HR +774054016,774055935,DE +774055936,774057983,US +774057984,774058359,DE +774058360,774058367,HR +774058368,774058599,DE +774058600,774058603,HR +774058604,774059207,DE +774059208,774059211,HR +774059212,774059215,DE +774059216,774059223,ZA +774059224,774060031,DE +774060032,774060047,ES +774060048,774061007,DE +774061008,774061023,CZ +774061024,774061103,DE +774061104,774061111,GI +774061112,774062079,DE 774062080,774070271,YE 774070272,774078463,ES 774078464,774086655,BA @@ -2160,7 +3480,8 @@ 774161117,774161126,SA 774161127,774161136,SC 774161137,774161146,SG -774161147,774161151,VA +774161147,774161149,BY +774161150,774161151,VA 774161152,774161162,AQ 774161163,774161172,KR 774161173,774161182,TH @@ -2230,36 +3551,362 @@ 774161735,774161744,UA 774161745,774161754,NP 774161755,774161764,PG -774161765,774168575,VA +774161765,774161774,ZA +774161775,774161784,SN +774161785,774161794,MA +774161795,774161804,BH +774161805,774161814,JE +774161815,774161824,TV +774161825,774161834,PF +774161835,774161844,SB +774161845,774161854,VU +774161855,774161864,AN +774161865,774161869,AR +774161870,774161874,ES +774161875,774161879,GE +774161880,774161884,RS +774161885,774161889,DE +774161890,774161894,IT +774161895,774161899,BE +774161900,774161904,FR +774161905,774161909,CZ +774161910,774161914,LT +774161915,774161917,PL +774161918,774161920,VA +774161921,774161940,GB +774161941,774161950,AU +774161951,774161955,IT +774161956,774161960,NZ +774161961,774161965,PL +774161966,774161970,NL +774161971,774161975,CA +774161976,774161980,US +774161981,774161985,GB +774161986,774161990,IQ +774161991,774161995,AF +774161996,774162000,ER +774162001,774162005,KE +774162006,774162010,MG +774162011,774162015,TN +774162016,774162020,TT +774162021,774162025,BO +774162026,774162030,CH +774162031,774162035,AU +774162036,774162040,AL +774162041,774162045,AD +774162046,774162050,HR +774162051,774162055,ME +774162056,774162060,SY +774162061,774162065,YE +774162066,774162070,HT +774162071,774162075,EC +774162076,774162080,SH +774162081,774162085,ZM +774162086,774162090,KH +774162091,774162095,VN +774162096,774162100,FM +774162101,774162105,US +774162106,774162110,LY +774162111,774162115,SO +774162116,774162120,FI +774162121,774162125,DZ +774162126,774162130,CD +774162131,774162135,MR +774162136,774162140,CM +774162141,774162145,SV +774162146,774162150,HN +774162151,774162155,US +774162156,774162160,UY +774162161,774162165,LV +774162166,774162170,MD +774162171,774162173,LB +774162174,774162176,VA +774162177,774162181,LK +774162182,774162186,IE +774162187,774162196,EH +774162197,774162206,NA +774162207,774162216,CX +774162217,774162226,LA +774162227,774162236,GB +774162237,774162246,CH +774162247,774162266,US +774162267,774162276,PT +774162277,774162286,AE +774162287,774162296,IO +774162297,774162306,GU +774162307,774162316,RE +774162317,774162326,TK +774162327,774162336,CV +774162337,774162432,VA +774162433,774162442,GB +774162443,774162452,BA +774162453,774162462,WS +774162463,774162472,SR +774162473,774162483,PT +774162484,774162492,CK +774162493,774162502,KI +774162503,774162512,NU +774162513,774162522,TO +774162523,774162532,CL +774162533,774162542,TF +774162543,774162552,GG +774162553,774162562,LR +774162563,774162572,MQ +774162573,774162582,YT +774162583,774162592,NC +774162593,774162602,NG +774162603,774162617,US +774162618,774162622,PR +774162623,774162627,US +774162628,774162637,GB +774162638,774162642,NF +774162643,774162687,US +774162688,774162688,VA +774162689,774162718,US +774162719,774168575,VA 774168576,774176767,PL 774176768,774184959,IT 774184960,774193151,GB 774193152,774209535,ES 774209536,774217727,RU -774217728,774224127,GB -774224128,774224159,CN -774224160,774225279,GB -774225280,774225343,CN -774225344,774225359,GB +774217728,774217823,GB +774217824,774217855,AE +774217856,774217887,US +774217888,774217927,GB +774217928,774217935,LK +774217936,774217983,CN +774217984,774218047,CA +774218048,774218111,GB +774218112,774218495,US +774218496,774218503,SG +774218504,774218519,CN +774218520,774218527,PK +774218528,774218535,CN +774218536,774218543,IN +774218544,774218551,HR +774218552,774218559,CN +774218560,774218567,GB +774218568,774218575,TW +774218576,774218591,GB +774218592,774218599,CN +774218600,774218607,PT +774218608,774218615,TR +774218616,774218631,PT +774218632,774218639,IN +774218640,774218647,TW +774218648,774218655,PT +774218656,774218663,RU +774218664,774218671,PT +774218672,774218679,CL +774218680,774218687,CN +774218688,774218695,GB +774218696,774218703,SG +774218704,774218711,CN +774218712,774218719,GB +774218720,774218727,CN +774218728,774218735,RU +774218736,774218743,TW +774218744,774219007,GB +774219008,774219263,US +774219264,774219271,CN +774219272,774219279,TR +774219280,774219287,GB +774219288,774219295,CY +774219296,774219327,GB +774219328,774219335,TW +774219336,774219343,EG +774219344,774219359,CN +774219360,774219367,PT +774219368,774219375,IN +774219376,774219383,GB +774219384,774219391,IN +774219392,774219399,US +774219400,774219407,IN +774219408,774219423,CN +774219424,774219431,IN +774219432,774219439,HU +774219440,774219447,CN +774219448,774219455,ES +774219456,774219479,CN +774219480,774219487,HU +774219488,774219495,CN +774219496,774219503,EG +774219504,774219511,CN +774219512,774219519,SG +774219520,774219551,CN +774219552,774219559,PS +774219560,774219575,CN +774219576,774219583,GR +774219584,774219591,TR +774219592,774219599,US +774219600,774219607,CN +774219608,774219679,GB +774219680,774219687,GR +774219688,774219711,GB +774219712,774219727,BE +774219728,774219743,RU +774219744,774219751,GB +774219752,774219759,PK +774219760,774219775,RU +774219776,774219839,CN +774219840,774219847,UA +774219848,774219855,CN +774219856,774219863,GB +774219864,774219871,IT +774219872,774219879,RU +774219880,774219887,CN +774219888,774219895,RU +774219896,774219903,LK +774219904,774219967,US +774219968,774219975,GB +774219976,774219991,LK +774219992,774219999,RU +774220000,774220007,GB +774220008,774220015,LK +774220016,774220159,GB +774220160,774220191,US +774220192,774220207,GB +774220208,774220223,CN +774220224,774220287,GB +774220288,774220543,CN +774220544,774221055,GB +774221056,774221311,US +774221312,774221567,CN +774221568,774221823,US +774221824,774222079,GB +774222080,774222335,US +774222336,774222495,GB +774222496,774222511,FI +774222512,774222527,CN +774222528,774222591,GB +774222592,774222655,CN +774222656,774222687,BE +774222688,774222719,GB +774222720,774222783,CN +774222784,774222799,GB +774222800,774222815,UA +774222816,774222847,GB +774222848,774222863,UA +774222864,774222879,IT +774222880,774222895,US +774222896,774222911,GB +774222912,774222943,MA +774222944,774222951,GB +774222952,774222967,CN +774222968,774222975,GR +774222976,774223039,CN +774223040,774223071,IT +774223072,774223103,CN +774223104,774223119,UA +774223120,774223151,CN +774223152,774223167,PK +774223168,774223183,GB +774223184,774223199,PK +774223200,774223231,GB +774223232,774223239,CN +774223240,774223247,ME +774223248,774223255,TR +774223256,774223263,ID +774223264,774223271,DE +774223272,774223279,CN +774223280,774223287,GB +774223288,774223295,CN +774223296,774223303,TR +774223304,774223311,CN +774223312,774223319,IN +774223320,774223327,ID +774223328,774223335,PK +774223336,774223351,PT +774223352,774223359,GB +774223360,774223375,UA +774223376,774223391,RU +774223392,774223407,PK +774223408,774223743,GB +774223744,774223807,US +774223808,774223839,CN +774223840,774223871,US +774223872,774223951,GB +774223952,774223959,RU +774223960,774223967,CN +774223968,774223975,RU +774223976,774223983,US +774223984,774223991,RU +774223992,774223999,PK +774224000,774224007,IT +774224008,774224023,CN +774224024,774224031,AE +774224032,774224039,TW +774224040,774224047,CA +774224048,774224055,CN +774224056,774224079,IN +774224080,774224087,DE +774224088,774224095,CN +774224096,774224103,BY +774224104,774224111,RU +774224112,774224119,CN +774224120,774224127,IN +774224128,774224159,BE +774224160,774224191,GB +774224192,774224223,US +774224224,774224255,LT +774224256,774224383,GB +774224384,774224399,UA +774224400,774224407,LT +774224408,774224415,GB +774224416,774224423,TW +774224424,774224431,GB +774224432,774224439,CN +774224440,774224447,GB +774224448,774224511,CN +774224512,774224767,GB +774224768,774224831,CN +774224832,774224847,UA +774224848,774224967,GB +774224968,774224975,UA +774224976,774224983,RU +774224984,774224991,CN +774224992,774224999,LK +774225000,774225007,CN +774225008,774225015,PK +774225016,774225023,CN +774225024,774225055,US +774225056,774225151,RU +774225152,774225343,GB +774225344,774225351,CN +774225352,774225359,LT 774225360,774225375,UA -774225376,774225391,GB -774225392,774225407,UA -774225408,774225599,GB +774225376,774225391,JO +774225392,774225415,UA +774225416,774225423,CN +774225424,774225431,TR +774225432,774225439,DE +774225440,774225447,CN +774225448,774225455,BY +774225456,774225463,GB +774225464,774225471,CN +774225472,774225479,IT +774225480,774225487,IN +774225488,774225495,CN +774225496,774225503,UA +774225504,774225511,CN +774225512,774225519,TR +774225520,774225527,RU +774225528,774225535,CA +774225536,774225567,GB +774225568,774225599,RU 774225600,774225615,PK -774225616,774225631,GB -774225632,774225647,CN +774225616,774225631,TR +774225632,774225647,GB 774225648,774225663,UA 774225664,774225671,LK -774225672,774225679,US -774225680,774225687,CN -774225688,774225695,CA -774225696,774225703,RU -774225704,774225711,LK -774225712,774225719,PK -774225720,774225791,GB -774225792,774225807,UA -774225808,774225823,GB -774225824,774225919,US +774225672,774225687,RU +774225688,774225695,PK +774225696,774225703,CN +774225704,774225727,GB +774225728,774225743,LT +774225744,774225823,GB +774225824,774225855,US +774225856,774225919,IN 774225920,774234111,UA 774234112,774242303,IT 774242304,774258687,RU @@ -2267,6 +3914,15 @@ 774266880,774275071,RU 774275072,774283263,IR 774283264,774291455,GB +774291456,774299647,NL +774299648,774307839,DE +774307840,774324223,RU +774324224,774332415,UA +774332416,774340607,SE +774340608,774348799,EE +774348800,774356991,CZ +774356992,774365183,ES +774365184,774373375,RU 774373376,774389759,RS 774389760,774406143,BG 774406144,774422527,IT @@ -2279,7 +3935,9 @@ 774520832,774537215,BH 774537216,774553599,RU 774553600,774569983,RO -774569984,774586367,GB +774569984,774579199,GB +774579200,774580223,IT +774580224,774586367,GB 774586368,774602751,PS 774602752,774619135,GB 774619136,774651903,RU @@ -2292,7 +3950,8 @@ 774750208,774782975,RU 774782976,774799359,UA 774799360,774815743,RU -774815744,774832127,SE +774815744,774830079,NO +774830080,774832127,SE 774832128,774848511,RU 774848512,774864895,BG 774864896,774881279,CZ @@ -2316,7 +3975,40 @@ 775520256,775553023,SY 775553024,775585791,EU 775585792,775618559,SY -775618560,775651327,SE +775618560,775641087,SE +775641088,775641119,FI +775641120,775641215,SE +775641216,775641279,GB +775641280,775641343,DE +775641344,775641375,FI +775641376,775641471,SE +775641472,775641535,GB +775641536,775641599,DE +775641600,775641631,FI +775641632,775641727,SE +775641728,775641791,GB +775641792,775641855,DE +775641856,775641887,FI +775641888,775641983,SE +775641984,775642047,GB +775642048,775642111,DE +775642112,775642143,FI +775642144,775642239,SE +775642240,775642303,GB +775642304,775642367,DE +775642368,775642399,FI +775642400,775642495,SE +775642496,775642559,GB +775642560,775642623,DE +775642624,775642655,FI +775642656,775642751,SE +775642752,775642815,GB +775642816,775642879,DE +775642880,775642911,FI +775642912,775643007,SE +775643008,775643071,GB +775643072,775643135,DE +775643136,775651327,SE 775651328,775684095,DE 775684096,775716863,PS 775716864,775749631,GB @@ -2338,11 +4030,556 @@ 778240000,778305535,AL 778305536,778371071,IR 778371072,778436607,RU -778436608,778502143,RO -778502144,778534911,GR -778534912,778567679,CY +778436608,778498047,RO +778498048,778500095,NL +778500096,778502143,RO +778502144,778567679,GR 778567680,778633215,TR -778633216,778698751,FR +778633216,778638975,FR +778638976,778639103,CZ +778639104,778639231,LT +778639232,778639359,FI +778639360,778639615,ES +778639616,778639871,PL +778639872,778640127,DE +778640128,778640383,GB +778640384,778640639,IT +778640640,778640895,PT +778640896,778641151,NL +778641152,778641407,IE +778641408,778665983,FR +778665984,778666015,BE +778666016,778666031,FR +778666032,778666047,PL +778666048,778666063,FR +778666064,778666095,PL +778666096,778666099,DE +778666100,778666103,ES +778666104,778666107,GB +778666108,778666111,IE +778666112,778666119,FR +778666120,778666123,GB +778666124,778666127,FR +778666128,778666143,PL +778666144,778666151,FR +778666152,778666155,GB +778666156,778666159,ES +778666160,778666175,PL +778666176,778666207,FR +778666208,778666239,PL +778666240,778666367,FR +778666368,778666371,PL +778666372,778666375,GB +778666376,778666383,FR +778666384,778666391,DE +778666392,778666399,PL +778666400,778666479,FR +778666480,778666495,DE +778666496,778666751,BE +778666752,778666783,CZ +778666784,778666815,FR +778666816,778666847,GB +778666848,778666863,FR +778666864,778666871,GB +778666872,778666879,IE +778666880,778666967,FR +778666968,778666975,PL +778666976,778667279,FR +778667280,778667287,IE +778667288,778667291,NL +778667292,778667295,CH +778667296,778667327,BE +778667328,778667331,GB +778667332,778667335,FR +778667336,778667343,ES +778667344,778667347,FR +778667348,778667351,GB +778667352,778667391,PL +778667392,778667407,FR +778667408,778667415,PL +778667416,778667423,FR +778667424,778667455,LT +778667456,778667471,DE +778667472,778667479,FR +778667480,778667483,GB +778667484,778667487,NL +778667488,778667491,PL +778667492,778667499,FR +778667500,778667503,GB +778667504,778667839,FR +778667840,778667855,PL +778667856,778667871,FR +778667872,778667875,ES +778667876,778667879,LT +778667880,778667887,FI +778667888,778667895,IT +778667896,778667903,IE +778667904,778667911,GB +778667912,778667915,PL +778667916,778667919,PT +778667920,778667927,NL +778667928,778667931,GB +778667932,778667935,CZ +778667936,778667943,FR +778667944,778667947,DE +778667948,778667951,LT +778667952,778667967,GB +778667968,778667999,FR +778668000,778668019,DE +778668020,778668023,ES +778668024,778668027,PT +778668028,778668319,FR +778668320,778668351,GB +778668352,778668359,FR +778668360,778668367,PL +778668368,778668371,DE +778668372,778668375,ES +778668376,778668379,GB +778668380,778668415,FR +778668416,778668495,ES +778668496,778668499,PL +778668500,778668503,FR +778668504,778668507,ES +778668508,778668511,PT +778668512,778668527,PL +778668528,778668535,IT +778668536,778668539,DE +778668540,778668559,FR +778668560,778668567,IT +778668568,778668575,PL +778668576,778668607,FR +778668608,778668615,IE +778668616,778668619,PL +778668620,778668623,GB +778668624,778668639,FR +778668640,778668671,PL +778668672,778668703,NL +778668704,778668707,PL +778668708,778668711,ES +778668712,778668715,FR +778668716,778668719,PL +778668720,778668723,PT +778668724,778668735,PL +778668736,778668799,IT +778668800,778669103,FR +778669104,778669107,PL +778669108,778669111,GB +778669112,778669119,NL +778669120,778669151,FI +778669152,778669183,PT +778669184,778669199,FR +778669200,778669207,PL +778669208,778669211,CH +778669212,778669215,ES +778669216,778669219,CH +778669220,778669223,FI +778669224,778669231,NL +778669232,778669247,PL +778669248,778669295,FR +778669296,778669303,PL +778669304,778669439,FR +778669440,778669447,GB +778669448,778669451,PL +778669452,778669455,FI +778669456,778669471,FR +778669472,778669503,CZ +778669504,778669535,ES +778669536,778669539,PL +778669540,778669543,GB +778669544,778669547,FR +778669548,778669551,IT +778669552,778669567,PL +778669568,778669615,FR +778669616,778669623,GB +778669624,778669631,PL +778669632,778669695,FR +778669696,778669727,PT +778669728,778669759,NL +778669760,778669767,DE +778669768,778669771,GB +778669772,778669775,PL +778669776,778669791,FR +778669792,778669807,DE +778669808,778669823,FR +778669824,778669855,ES +778669856,778669887,FR +778669888,778669903,PL +778669904,778669919,FR +778669920,778669935,BE +778669936,778669943,DE +778669944,778669951,CH +778669952,778669959,NL +778669960,778669967,GB +778669968,778669983,IE +778669984,778669999,IT +778670000,778670007,PL +778670008,778670011,CZ +778670012,778670015,LT +778670016,778670143,FR +778670144,778670151,CZ +778670152,778670159,CH +778670160,778670163,FR +778670164,778670167,GB +778670168,778670175,FR +778670176,778670207,GB +778670208,778670211,DE +778670212,778670215,IT +778670216,778670223,FR +778670224,778670239,PL +778670240,778670243,PT +778670244,778670247,PL +778670248,778670255,CZ +778670256,778670291,FR +778670292,778670295,NL +778670296,778670303,DE +778670304,778670335,FR +778670336,778670343,DE +778670344,778670347,CZ +778670348,778670351,PL +778670352,778670355,DE +778670356,778670359,FR +778670360,778670383,DE +778670384,778670387,PL +778670388,778670399,GB +778670400,778670407,PL +778670408,778670411,DE +778670412,778670415,NL +778670416,778670431,FR +778670432,778670435,NL +778670436,778670439,ES +778670440,778670447,PL +778670448,778670455,CH +778670456,778670495,CZ +778670496,778670503,FR +778670504,778670511,ES +778670512,778670519,NL +778670520,778670523,FR +778670524,778670527,PT +778670528,778670559,FR +778670560,778670563,PL +778670564,778670567,FI +778670568,778670571,CH +778670572,778670575,FR +778670576,778670591,IT +778670592,778671103,ES +778671104,778671119,FR +778671120,778671127,DE +778671128,778671135,PT +778671136,778671167,BE +778671168,778671203,FR +778671204,778671211,PL +778671212,778671231,FR +778671232,778671239,GB +778671240,778671243,PL +778671244,778671247,FR +778671248,778671263,PL +778671264,778671279,GB +778671280,778671311,FR +778671312,778671327,PT +778671328,778671331,FR +778671332,778671335,DE +778671336,778671631,FR +778671632,778671647,PL +778671648,778671807,FR +778671808,778671839,ES +778671840,778671867,FR +778671868,778671871,GB +778671872,778671875,PL +778671876,778671879,ES +778671880,778671883,NL +778671884,778671887,ES +778671888,778671903,GB +778671904,778671907,NL +778671908,778671915,FR +778671916,778671919,GB +778671920,778671935,PT +778671936,778671967,FR +778671968,778672015,ES +778672016,778672055,FR +778672056,778672063,PL +778672064,778672067,GB +778672068,778672071,FR +778672072,778672079,GB +778672080,778672095,BE +778672096,778672103,CH +778672104,778672111,NL +778672112,778672115,GB +778672116,778672119,IT +778672120,778672123,ES +778672124,778672127,CH +778672128,778672255,FR +778672256,778672319,BE +778672320,778672383,FR +778672384,778672447,PL +778672448,778672479,DE +778672480,778672511,ES +778672512,778672543,FR +778672544,778672551,ES +778672552,778672559,CH +778672560,778672563,GB +778672564,778672567,IT +778672568,778672639,FR +778672640,778672703,DE +778672704,778672767,CH +778672768,778672803,FR +778672804,778672807,DE +778672808,778672811,PL +778672812,778672815,ES +778672816,778672819,LT +778672820,778672823,PL +778672824,778672831,DE +778672832,778672851,FR +778672852,778672891,PL +778672892,778672911,FR +778672912,778672919,PL +778672920,778672923,FR +778672924,778672927,ES +778672928,778672959,DE +778672960,778673071,FR +778673072,778673079,DE +778673080,778673083,ES +778673084,778673087,PT +778673088,778673119,FR +778673120,778673151,ES +778673152,778673215,FR +778673216,778673247,FI +778673248,778673263,FR +778673264,778673279,IT +778673280,778673343,FR +778673344,778673359,PL +778673360,778673391,GB +778673392,778673407,FR +778673408,778673663,PL +778673664,778673711,FR +778673712,778673715,CH +778673716,778673719,NL +778673720,778673723,PT +778673724,778673727,PL +778673728,778673823,FR +778673824,778673839,ES +778673840,778673843,FR +778673844,778673855,DE +778673856,778673919,FR +778673920,778674175,NL +778674176,778674367,FR +778674368,778674387,DE +778674388,778674391,BE +778674392,778674395,CH +778674396,778674399,PT +778674400,778674431,FR +778674432,778674435,PL +778674436,778674439,ES +778674440,778674447,PL +778674448,778674451,IT +778674452,778674455,PL +778674456,778674459,IT +778674460,778674463,FI +778674464,778674471,CH +778674472,778674475,BE +778674476,778674479,CH +778674480,778674495,FR +778674496,778674499,CZ +778674500,778674503,DE +778674504,778674527,FR +778674528,778674531,DE +778674532,778674535,ES +778674536,778674539,PT +778674540,778674543,PL +778674544,778674623,DE +778674624,778674631,PL +778674632,778674639,ES +778674640,778674975,FR +778674976,778674979,BE +778674980,778674983,DE +778674984,778674999,FR +778675000,778675003,FI +778675004,778675007,GB +778675008,778675039,ES +778675040,778675071,FR +778675072,778675079,IT +778675080,778675087,ES +778675088,778675135,FR +778675136,778675199,ES +778675200,778675215,DE +778675216,778675219,PT +778675220,778675227,FR +778675228,778675231,NL +778675232,778675235,GB +778675236,778675243,PL +778675244,778675247,DE +778675248,778675359,FR +778675360,778675363,DE +778675364,778675367,BE +778675368,778675371,CH +778675372,778675375,CZ +778675376,778675439,FR +778675440,778675443,DE +778675444,778675447,FR +778675448,778675451,PL +778675452,778675455,DE +778675456,778675471,NL +778675472,778675475,BE +778675476,778675479,ES +778675480,778675483,CH +778675484,778675487,PT +778675488,778675495,PL +778675496,778675499,DE +778675500,778675503,PL +778675504,778675507,DE +778675508,778675511,GB +778675512,778675519,PL +778675520,778675551,ES +778675552,778675599,FR +778675600,778675615,GB +778675616,778675619,PL +778675620,778675623,ES +778675624,778675631,PL +778675632,778675639,ES +778675640,778675647,DE +778675648,778675663,GB +778675664,778675679,FR +778675680,778675695,DE +778675696,778675711,NL +778675712,778675839,GB +778675840,778675843,FI +778675844,778675847,FR +778675848,778675855,PL +778675856,778675859,GB +778675860,778675863,IE +778675864,778675867,DE +778675868,778675871,FI +778675872,778675887,FR +778675888,778675891,ES +778675892,778675895,FR +778675896,778675903,PL +778675904,778675907,CH +778675908,778675911,CZ +778675912,778675915,NL +778675916,778675935,DE +778675936,778675943,ES +778675944,778676095,FR +778676096,778676099,DE +778676100,778676103,CZ +778676104,778676111,GB +778676112,778676127,DE +778676128,778676131,ES +778676132,778676135,CZ +778676136,778676139,DE +778676140,778676143,PL +778676144,778676159,DE +778676160,778676187,FR +778676188,778676191,BE +778676192,778676207,IT +778676208,778676211,GB +778676212,778676215,ES +778676216,778676219,FR +778676220,778676223,GB +778676224,778676351,FR +778676352,778676415,GB +778676416,778676423,ES +778676424,778676427,PL +778676428,778676439,FR +778676440,778676443,PL +778676444,778676447,CH +778676448,778676463,FR +778676464,778676479,PL +778676480,778676543,NL +778676544,778676575,PT +778676576,778676579,FR +778676580,778676583,DE +778676584,778676587,BE +778676588,778676591,DE +778676592,778676607,FR +778676608,778676611,PL +778676612,778676615,PT +778676616,778676619,BE +778676620,778676623,FR +778676624,778676631,PL +778676632,778676635,FR +778676636,778676639,DE +778676640,778676671,GB +778676672,778676687,FR +778676688,778676691,ES +778676692,778676703,PL +778676704,778676735,FR +778676736,778676743,PL +778676744,778676747,CH +778676748,778676751,CZ +778676752,778676767,ES +778676768,778676771,PL +778676772,778676775,ES +778676776,778676779,PL +778676780,778676783,CH +778676784,778676799,FR +778676800,778676815,IE +778676816,778676823,LT +778676824,778676827,GB +778676828,778676831,FR +778676832,778676847,ES +778676848,778676851,NL +778676852,778676855,LT +778676856,778676859,FR +778676860,778676863,DE +778676864,778676991,PL +778676992,778676999,FR +778677000,778677003,PL +778677004,778677075,FR +778677076,778677079,DE +778677080,778677083,IT +778677084,778677119,DE +778677120,778677151,FR +778677152,778677167,DE +778677168,778677175,CZ +778677176,778677183,NL +778677184,778677247,GB +778677248,778677503,FR +778677504,778677511,DE +778677512,778677515,IT +778677516,778677519,GB +778677520,778677523,FR +778677524,778677527,DE +778677528,778677531,BE +778677532,778677535,PT +778677536,778677543,FI +778677544,778677547,ES +778677548,778677551,FR +778677552,778677559,PL +778677560,778677567,ES +778677568,778677695,FR +778677696,778677727,PT +778677728,778677823,FR +778677824,778677839,NL +778677840,778677855,PL +778677856,778677859,ES +778677860,778677863,LT +778677864,778677871,IT +778677872,778677875,PL +778677876,778677879,GB +778677880,778677883,LT +778677884,778677887,BE +778677888,778677903,ES +778677904,778677919,FR +778677920,778677923,CH +778677924,778677927,PT +778677928,778677935,PL +778677936,778677939,FR +778677940,778677947,BE +778677948,778677951,DE +778677952,778677967,FR +778677968,778677983,GB +778677984,778677999,FR +778678000,778678003,BE +778678004,778678007,PL +778678008,778678011,GB +778678012,778678015,FR +778678016,778678019,PL +778678020,778678023,DE +778678024,778678027,ES +778678028,778678031,FR +778678032,778678043,PL +778678044,778678271,FR +778678272,778678783,DE +778678784,778698751,FR 778698752,778764287,TR 778764288,778829823,HU 778829824,778895359,RO @@ -2365,9 +4602,266 @@ 780468224,780533759,UA 780533760,780599295,PL 780599296,780664831,CZ -780664832,780664960,NL -780664961,780730367,FR -780730368,780795903,IE +780664832,780665087,NL +780665088,780665343,DE +780665344,780665599,FR +780665600,780665855,GB +780665856,780666111,SA +780666112,780666367,IT +780666368,780666623,AX +780666624,780666879,AF +780666880,780667135,AL +780667136,780667391,DZ +780667392,780667647,AS +780667648,780667903,AD +780667904,780668159,AM +780668160,780668415,AT +780668416,780668671,AZ +780668672,780668927,BH +780668928,780669183,BY +780669184,780669439,BE +780669440,780669695,BA +780669696,780669951,BG +780669952,780670207,HR +780670208,780670463,CY +780670464,780670719,CZ +780670720,780670975,DK +780670976,780671231,EE +780671232,780671487,FO +780671488,780671743,FI +780671744,780671999,FR +780672000,780672255,GE +780672256,780672511,DE +780672512,780672767,GI +780672768,780673023,GR +780673024,780673279,GL +780673280,780673535,GG +780673536,780673791,VA +780673792,780674047,HU +780674048,780674303,IS +780674304,780674559,IR +780674560,780674815,IQ +780674816,780675071,IE +780675072,780675327,IM +780675328,780675583,IL +780675584,780675839,IT +780675840,780676095,JE +780676096,780676351,JO +780676352,780676607,KZ +780676608,780676863,KW +780676864,780677119,KG +780677120,780677375,LV +780677376,780677631,LB +780677632,780677887,LI +780677888,780678143,LT +780678144,780678399,LU +780678400,780678655,MK +780678656,780678911,MT +780678912,780679167,MD +780679168,780679423,MC +780679424,780679679,ME +780679680,780679935,NL +780679936,780680447,NO +780680448,780680703,PS +780680704,780680959,PL +780680960,780681215,PT +780681216,780681471,QA +780681472,780681727,RO +780681728,780681983,RU +780681984,780682239,SM +780682240,780682495,SA +780682496,780682751,RS +780682752,780683007,SK +780683008,780683263,SI +780683264,780683519,ES +780683520,780683775,SJ +780683776,780684031,SE +780684032,780684287,CH +780684288,780684543,SY +780684544,780684799,TJ +780684800,780685055,TR +780685056,780685311,TM +780685312,780685567,UA +780685568,780685823,AE +780685824,780686079,GB +780686080,780686335,UZ +780686336,780686591,YE +780686592,780686847,AX +780686848,780687103,AL +780687104,780687359,AD +780687360,780687615,AM +780687616,780687871,AT +780687872,780688127,AZ +780688128,780688383,BH +780688384,780688639,BY +780688640,780688895,BE +780688896,780689151,BA +780689152,780689407,BG +780689408,780689663,HR +780689664,780689919,CY +780689920,780690175,CZ +780690176,780690431,DK +780690432,780690687,EE +780690688,780690943,FO +780690944,780691199,FI +780691200,780691455,FR +780691456,780691711,GE +780691712,780691967,DE +780691968,780692223,GI +780692224,780692479,GR +780692480,780692735,GL +780692736,780692991,GG +780692992,780693247,VA +780693248,780693503,HU +780693504,780693759,IS +780693760,780694015,IR +780694016,780694271,IQ +780694272,780694527,IE +780694528,780694783,IL +780694784,780695039,IT +780695040,780695295,JE +780695296,780695551,JO +780695552,780695807,KZ +780695808,780696063,KW +780696064,780696319,LB +780696320,780696575,LI +780696576,780696831,LT +780696832,780697087,LU +780697088,780697343,MK +780697344,780697599,MT +780697600,780697855,NL +780697856,780698111,IT +780698112,780698367,ES +780698368,780698623,DE +780698624,780698879,FR +780698880,780699135,RU +780699136,780699391,RO +780699392,780699647,BG +780699648,780699903,DK +780699904,780700159,AT +780700160,780700415,FI +780700416,780700671,GR +780700672,780700927,PL +780700928,780701183,PT +780701184,780701439,SE +780701440,780701695,CH +780701696,780701951,SA +780701952,780702207,AD +780702208,780702463,AE +780702464,780702719,AF +780702720,780702975,AG +780702976,780703231,AI +780703232,780703487,AL +780703488,780703743,AM +780703744,780703999,AO +780704000,780704255,AQ +780704256,780704511,AR +780704512,780704767,AS +780704768,780705023,AT +780705024,780705279,AU +780705280,780705535,AW +780705536,780705791,AX +780705792,780706047,AZ +780706048,780706303,BA +780706304,780706559,BB +780706560,780706815,BD +780706816,780707071,BE +780707072,780707327,BF +780707328,780707583,BG +780707584,780707839,BH +780707840,780708095,BI +780708096,780708351,BJ +780708352,780708607,BM +780708608,780708863,BN +780708864,780709119,BO +780709120,780709375,BR +780709376,780709631,BS +780709632,780709887,BT +780709888,780710143,BV +780710144,780710399,BW +780710400,780710655,BY +780710656,780710911,BZ +780710912,780711167,CA +780711168,780711423,CC +780711424,780711679,CD +780711680,780711935,CF +780711936,780712191,CG +780712192,780712447,CH +780712448,780712703,CI +780712704,780712959,CK +780712960,780713215,CL +780713216,780713471,CM +780713472,780713727,CN +780713728,780713983,CO +780713984,780714239,CR +780714240,780714495,CU +780714496,780714751,CV +780714752,780715263,CY +780715264,780715519,CZ +780715520,780715775,DE +780715776,780716031,DJ +780716032,780716287,DK +780716288,780716543,DM +780716544,780716799,DO +780716800,780717055,DZ +780717056,780717311,EC +780717312,780717567,EE +780717568,780717823,EG +780717824,780718079,EH +780718080,780718335,ER +780718336,780718591,ES +780718592,780718847,ET +780718848,780719103,FI +780719104,780719359,FJ +780719360,780719615,FK +780719616,780719871,FM +780719872,780720127,FO +780720128,780720383,FR +780720384,780720639,GA +780720640,780720895,GB +780720896,780721151,GD +780721152,780721407,GE +780721408,780721663,GF +780721664,780721919,GG +780721920,780722175,GH +780722176,780722431,GI +780722432,780722687,GL +780722688,780722943,GM +780722944,780723199,GN +780723200,780723455,GP +780723456,780723711,GQ +780723712,780723967,GR +780723968,780724223,GS +780724224,780724479,GT +780724480,780724735,GU +780724736,780724991,GW +780724992,780725247,GY +780725248,780725759,HK +780725760,780726015,HN +780726016,780726271,HR +780726272,780726527,HT +780726528,780726783,HU +780726784,780727039,ID +780727040,780727295,IE +780727296,780727551,IL +780727552,780727807,IM +780727808,780728063,IN +780728064,780728319,IO +780728320,780728575,IQ +780728576,780728831,IR +780728832,780729087,IS +780729088,780729343,IT +780729344,780729599,JE +780729600,780729855,JM +780729856,780730111,JO +780730112,780730367,JP +780730368,780779519,IE +780779520,780783615,NL +780783616,780785663,GB +780785664,780787711,DE +780787712,780791807,FR +780791808,780793855,SE +780793856,780795903,DE 780795904,780861439,RU 780861440,780926975,HU 780926976,780992511,CH @@ -2385,7 +4879,21 @@ 781479936,781484031,UA 781484032,781488127,RU 781488128,781496319,PL -781496320,781504511,RU +781496320,781516799,RU +781516800,781520895,RO +781520896,781524991,IS +781524992,781529087,RU +781529088,781533183,UA +781533184,781537279,RU +781537280,781545471,UA +781545472,781549567,CZ +781549568,781553663,RU +781553664,781557759,PL +781557760,781565951,UA +781565952,781570047,CH +781570048,781574143,PL +781574144,781578239,RU +781578240,781582335,PL 781582336,781590527,UA 781590528,781598719,SI 781598720,781615103,UA @@ -2405,14 +4913,29 @@ 781674496,781676543,RU 781676544,781678591,PL 781678592,781682687,RS +781682688,781684735,PL +781684736,781686783,UA +781686784,781688831,RU +781688832,781690879,RO +781690880,781692927,RU +781692928,781694975,UA +781694976,781697023,PL +781697024,781699071,UA +781699072,781701119,RO +781701120,781703167,SA +781703168,781705215,PL +781705216,781707263,RO +781707264,781709311,SI +781709312,781711359,RU +781711360,781713407,UA 781713408,781844479,SA 781844480,781975551,TR 781975552,782106623,GB 782106624,782254079,RU 782254080,782270463,UA -782270464,782305791,RU -782305792,782306303,RO -782306304,782319615,RU +782270464,782310399,RU +782310400,782310911,RO +782310912,782319615,RU 782319616,782335999,ME 782336000,782352383,RU 782352384,782368767,SY @@ -2420,15 +4943,116 @@ 782385152,782401535,SE 782401536,782417919,FR 782417920,782434303,AM -782761984,782893055,PL +782434304,782449151,SI +782449152,782449407,HR +782449408,782450175,SI +782450176,782450687,BA +782450688,782467071,DE +782467072,782483455,RU +782483456,782499839,FI +782499840,782516223,SI +782516224,782532607,IR +782532608,782548991,UA +782548992,782581759,RU +782581760,782598143,FR +782598144,782630911,DE +782630912,782647295,MD +782647296,782663679,RU +782663680,782664447,GB +782664448,782664703,LU +782664704,782664704,GB +782664705,782665471,NL +782665472,782666495,US +782666496,782667007,GB +782667008,782667519,RU +782667520,782667775,LU +782667776,782668287,FR +782668288,782668799,RU +782668800,782669567,NL +782669568,782671615,DE +782671616,782680063,GB +782680064,782696447,RU +782696448,782712831,DE +782712832,782729215,RU +782729216,782735359,DE +782735360,782735871,CH +782735872,782745599,DE +782745600,782761983,CZ +782761984,783024127,PL +783024128,783040511,RU +783040512,783048703,UA +783048704,783056895,RU +783056896,783065087,UA +783065088,783073279,RU +783073280,783089663,UA +783089664,783106047,RU +783106048,783134719,UA +783134720,783138815,RU +783138816,783142911,CZ +783142912,783147007,RU +783147008,783151103,FI +783151104,783155199,RO +783155200,783157247,PL +783157248,783159295,RU +783159296,783161343,CZ +783161344,783163391,PL +783163392,783165439,CZ +783165440,783167487,UA +783167488,783169535,RU +783169536,783171583,CZ +783171584,783173631,UA +783173632,783175679,PL +783175680,783179775,RU +783179776,783181823,RS +783181824,783185919,RU +783185920,783187967,UA +783187968,783190015,NL +783190016,783194111,RO +783194112,783196159,CZ +783196160,783198207,UA +783198208,783202303,PL +783202304,783204351,VG +783204352,783206399,RU +783206400,783208447,RO +783208448,783210495,PL +783210496,783212543,UA +783212544,783216639,PL +783216640,783218687,UA +783218688,783220735,RU +783220736,783222783,SK +783222784,783226879,UA +783226880,783230975,RU +783230976,783233023,PL +783233024,783235071,GB +783235072,783237119,DE +783237120,783243263,UA +783243264,783245311,CZ +783245312,783247359,RU +783247360,783251455,PL +783251456,783255551,RU +783255552,783259647,UA +783259648,783261695,RU +783261696,783263743,UA +783263744,783265791,BY +783265792,783267839,CZ +783267840,783269887,UA +783269888,783278079,RU +783278080,783282175,PL +783282176,783286271,UA +783286272,783417343,GR +783417344,783548415,BE +783548416,783679487,RU 783679488,783681535,FR 783681536,783683583,IE -783683584,783685631,DE +783683584,783685375,DE +783685376,783685631,US 783685632,783687679,RU 783687680,783689727,PT 783689728,783691775,FR 783691776,783693823,BY -783693824,783695871,GB +783693824,783694623,GB +783694624,783694687,FR +783694688,783695871,GB 783695872,783697919,TR 783697920,783699967,FR 783699968,783702015,UA @@ -2444,11 +5068,44 @@ 783722496,783724543,AM 783724544,783726591,NL 783726592,783728639,IS -783728640,783730687,BE +783728640,783730655,BE +783730656,783730687,NL 783730688,783732735,SE 783732736,783734783,FR 783734784,783736831,NL 783736832,783738879,SI +783738880,783740927,IT +783740928,783745023,DE +783745024,783747071,RU +783747072,783749119,GB +783749120,783751167,GR +783751168,783753215,SE +783753216,783755263,FR +783755264,783757311,DE +783757312,783759359,FR +783759360,783763455,CZ +783763456,783765503,FI +783765504,783767551,RU +783767552,783769599,IL +783769600,783771647,DE +783771648,783773695,GB +783773696,783775743,ES +783775744,783777791,AL +783777792,783779839,RU +783779840,783781887,DK +783781888,783783935,FR +783783936,783785983,DE +783785984,783788031,RU +783788032,783790079,NO +783790080,783792127,RU +783792128,783794175,IR +783794176,783798271,GB +783798272,783800319,PL +783800320,783802367,LV +783802368,783804415,FR +783804416,783806463,IT +783806464,783810303,NL +783810304,783810559,BE 783810560,783843327,SA 783843328,783876095,BH 783876096,783908863,UA @@ -2459,11 +5116,435 @@ 784039936,784072703,PL 784072704,784105471,RU 784105472,784138239,HR +784138240,784171007,DE +784171008,784203775,PT +784203776,784236543,GR +784236544,784269311,RO +784269312,784302079,BY +784302080,784334847,RU +784334848,784465919,FR +784465920,784596991,SE +784596992,784728063,TR +784728064,784763903,GR +784763904,784859135,CY +784859136,785121279,UA +785121280,785252351,PL +785252352,785383423,AT +785383424,785448959,GB +785448960,785514495,IR +785514496,785580031,IL +785580032,785645567,UA +785645568,785711103,NO +785711104,785776639,SY +785776640,785842175,RO +785842176,785907711,DE +785907712,785973247,BY +785973248,786038783,MK +786038784,786104319,FR +786104320,786169855,UA +786169856,786235391,AT +786235392,786300927,TR +786300928,786366463,ES +786366464,786431999,DE +786432000,786563071,IR +786563072,786565119,GB +786565120,786567167,NO +786567168,786569215,CZ +786569216,786571263,NO +786571264,786575359,ES +786575360,786577407,GB +786577408,786579455,NL +786579456,786581503,RU +786581504,786583551,GB +786583552,786585599,DE +786585600,786587647,NL +786587648,786589695,RU +786589696,786591743,FR +786591744,786593791,DE +786593792,786595839,GB +786595840,786597887,FR +786597888,786599935,EE +786599936,786601983,ES +786601984,786604031,SE +786604032,786606079,RU +786606080,786608127,GB +786608128,786610175,IT +786610176,786612223,IM +786612224,786614271,GR +786614272,786616319,IT +786616320,786618367,KG +786618368,786620415,GB +786620416,786622463,RU +786622464,786624511,NL +786624512,786626559,RU +786626560,786628607,GB +786628608,786630655,IT +786630656,786632703,CZ +786632704,786634751,FR +786634752,786636799,RU +786636800,786638847,PL +786638848,786640895,ES +786640896,786642943,GB +786642944,786644991,GR +786644992,786649087,SE +786649088,786651135,FR +786651136,786655231,DE +786655232,786657279,PL +786657280,786659327,FO +786659328,786661375,UZ +786661376,786663423,DE +786663424,786665471,UA +786665472,786667519,GB +786667520,786669567,IT +786669568,786671615,RU +786671616,786673663,CZ +786673664,786675711,SK +786675712,786677759,KZ +786677760,786679807,NO +786679808,786681855,GB +786681856,786683903,RU +786683904,786685951,DE +786685952,786687999,CH +786688000,786690047,NL +786690048,786692095,PL +786692096,786694143,LB +786694144,786698239,RU +786698240,786702335,CZ +786702336,786706431,GB +786706432,786710527,NO +786710528,786714623,RU +786714624,786718719,PL +786718720,786726911,RU +786726912,786731007,FI +786731008,786735103,IL +786735104,786739199,GB +786739200,786743295,AZ +786743296,786747391,DE +786747392,786751487,SK +786751488,786755583,PL +786755584,786759679,IT +786759680,786771711,DE +786771712,786771775,AT +786771776,786771967,DE +786771968,786776063,UA +786776064,786780159,RU +786780160,786784255,IT +786784256,786788351,RU +786788352,786792447,CZ +786792448,786796543,RU +786796544,786800639,PL +786800640,786800895,US +786800896,786804735,UA +786804736,786808831,RU +786808832,786812927,BG +786812928,786817023,RU +786817024,786821119,SK +786821120,786825215,HR +786825216,786857983,SA +786857984,786890751,SE +786890752,786892799,ES +786892800,786894847,GB +786894848,786896895,NL +786896896,786900991,IT +786900992,786905087,NL +786905088,786907135,PL +786907136,786909183,GB +786909184,786911231,CZ +786911232,786913279,NL +786913280,786915327,DE +786915328,786917375,SK +786917376,786919423,RO +786919424,786921471,GB +786921472,786923519,ES +786923520,786925567,FR +786925568,786927615,DE +786927616,786929663,FR +786929664,786931711,PL +786931712,786933759,GB +786933760,786935807,RU +786935808,786937855,DE +786937856,786939903,GB +786939904,786941951,FI +786941952,786943999,CH +786944000,786946047,RU +786948096,786950143,UA +786950144,786952191,DE +786952192,786952703,NE +786952704,786952959,US +786952960,786953215,NE +786953216,786954239,US +786954240,786956287,NL +786956288,786989055,RU +786989056,786991103,PL +786991104,786995199,IT +786995200,786997247,BG +786997248,786999295,RU +786999296,787001343,ES +787001344,787003391,CH +787003392,787005439,DE +787005440,787007487,GB +787007488,787009535,RU +787009536,787011583,NL +787011584,787013631,RU +787013632,787015679,DE +787015680,787017727,UA +787017728,787019775,RU +787019776,787021823,NL +787021824,787038207,BG +787038208,787054591,GB +787054592,787070975,IT +787070976,787087359,RU +787087360,787095551,TR +787095552,787103743,EU +787103744,787111935,HR +787111936,787120127,CZ +787120128,787128319,ES +787128320,787136511,CZ +787136512,787152895,IT +787152896,787154943,BG +787154944,787156991,TR +787156992,787159039,FR +787159040,787161087,DE +787161088,787163135,SE +787163136,787165183,NL +787165184,787167231,RS +787167232,787169279,CH +787169280,787171327,RU +787171328,787173375,KG +787173376,787175423,KZ +787175424,787177471,SA +787177472,787179519,RS +787179520,787179775,CH +787179776,787183615,DE +787183616,787185663,PL +787185664,787187711,GG +787187712,787189759,IT +787189760,787191807,CH +787191808,787192319,GB +787192320,787192831,DE +787192832,787193855,EU +787193856,787195903,RU +787195904,787197951,GB +787197952,787199999,FR +787200000,787202047,RU +787202048,787206143,DE +787206144,787208191,BH +787208192,787210239,RU +787210240,787212287,GB +787212288,787214335,SE +787214336,787216383,DE +787216384,787218431,RU +787218432,787234815,GB +787234816,787251199,SE +787251200,787267583,RU +787267584,787283967,DE +787283968,787300351,RU +787300352,787316735,BG +787316736,787333119,GB +787333120,787349503,DE +787349504,787365887,BG +787365888,787382271,PL +787382272,787398655,FR +787398656,787415039,PL +787415040,787431423,BA +787431424,787447807,SE +787447808,787464191,PL +787464192,787480575,IS +787480576,787513343,SA +787513344,787546111,RS +787546112,787578879,RU +787578880,787611647,AM +787611648,787644415,RU +787644416,787677183,PL +787677184,787679231,GB +787679232,787681279,CY +787681280,787683327,IQ +787683328,787685375,NL +787685376,787687423,IT +787687424,787689471,NL +787689472,787691519,CZ +787691520,787693567,IT +787693568,787695615,SK +787695616,787697663,RU +787697664,787701759,DE +787701760,787703807,NL +787703808,787705855,AT +787705856,787707903,RO +787707904,787709951,DE +787709952,787724287,RU +787724288,787726335,UA +787726336,787742719,RU +787742720,787758847,NL +787758848,787759871,GB +787759872,787760895,NL +787760896,787761919,DE +787761920,787762943,NL +787762944,787763967,ES +787763968,787775487,NL +787775488,787808255,DE +787808256,787841023,IR +787841024,787843071,RU +787843072,787845119,GR +787845120,787847167,CH +787847168,787849215,SE +787849216,787851263,TR +787851264,787853311,RU +787853312,787855359,DE +787855360,787857407,CH +787857408,787859455,PL +787859456,787861503,AT +787861504,787863551,IE +787863552,787865599,DE +787865600,787869695,FR +787869696,787873791,GB +787873792,787906559,SE +787906560,787939327,GR +787939328,787972095,GB +787972096,788004863,UA +788004864,788005375,GB +788005376,788006399,BE +788006400,788006911,IT +788006912,788007423,FR +788007424,788007935,DE +788007936,788008447,US +788008448,788008959,SG +788008960,788009471,IN +788009472,788009983,ES +788009984,788010495,HK +788010496,788011007,AU +788011008,788011519,CN +788011520,788012031,AR +788012032,788012543,CA +788012544,788013055,RU +788013056,788021247,IR +788021248,788029439,SI +788029440,788045823,GB +788045824,788054015,PL +788054016,788062207,JO +788062208,788070399,GB +788070400,788078591,RU +788078592,788086783,NL +788086784,788094975,BG +788094976,788103167,IR +788103168,788111359,HU +788111360,788119551,LT +788119552,788127743,GB +788127744,788135935,NO +788135936,788144127,UA +788144128,788160511,RU +788160512,788168703,UA +788168704,788176895,RU +788176896,788185087,PL +788185088,788193279,NO +788193280,788201471,GB +788201472,788209663,HU +788209664,788217855,LT +788217856,788226047,RU +788226048,788234239,CY +788234240,788242431,SA +788242432,788250623,IR +788250624,788258815,KG +788258816,788259583,DE +788259584,788260863,NL +788260864,788266495,DE +788266496,788267007,IN +788267008,788271103,SE +788271104,788275199,DE +788275200,788279295,AL +788279296,788283391,BG +788283392,788291583,GB +788291584,788295679,TR +788295680,788299775,RU +788299776,788301823,LV +788301824,788302079,LT +788302080,788303871,LV +788303872,788307967,IT +788307968,788312063,RU +788312064,788316159,FR +788316160,788320255,NL +788320256,788324351,UA +788324352,788328447,CZ +788328448,788332543,RU +788332544,788336639,BG +788336640,788337151,DE +788337152,788337663,GB +788337664,788340735,DE +788340736,788344831,ES +788344832,788353023,DE +788353024,788357119,PS +788357120,788361215,CZ +788361216,788365311,DE +788365312,788369407,IQ +788369408,788373503,DE +788373504,788377599,BE +788377600,788381695,CH +788381696,788385791,SE +788385792,788389887,PL +788389888,788393983,ES +788393984,788398079,DE +788398080,788400127,SI +788400128,788402175,SE +788402176,788406271,RU +788406272,788410367,IT +788410368,788412415,TR +788412416,788414463,SI +788414464,788416511,CZ +788416512,788418559,PL +788418560,788422655,RU +788422656,788424703,FI +788424704,788426751,IT +788426752,788428799,GB +788428800,788430847,DE +788430848,788432895,BG +788432896,788434943,DE +788434944,788436991,SI +788436992,788439039,IT +788439040,788441087,RU +788441088,788443135,NL +788443136,788445183,IT +788445184,788451327,GB +788451328,788453375,FI +788453376,788455423,RU +788455424,788457471,FR +788457472,788459519,IT +788459520,788461567,RU +788461568,788463615,JE +788463616,788465663,GB +788465664,788467711,CZ +788467712,788469759,NO +788469760,788471807,NL +788471808,788473855,UA +788473856,788475903,GB +788475904,788477951,FR +788477952,788479999,OM +788480000,788482047,UZ +788482048,788484095,GB +788484096,788486143,IT +788486144,788488191,NL +788488192,788490239,RU +788490240,788492287,NL +788492288,788494335,GB +788494336,788496383,SE +788496384,788498431,FR +788498432,788500479,RU +788500480,788502527,AL +788502528,788504575,IE +788504576,788506623,FR +788506624,788508671,CH +788508672,788509199,FR +788509200,788510719,AT +788510720,788512767,ES +788512768,788514815,FI +788514816,788516863,FR +788516864,788518911,LT +788518912,788520959,IR +788520960,788523007,CZ +788523008,788525055,KZ +788525056,788527103,IT +788527104,788529151,GB 788529152,805306367,CA 805306368,822083583,US -822083584,822083839,AP -822083840,822084095,AU -822084608,822085631,ID +822083584,822085631,ID 822085632,822087679,AU 822087680,822089727,JP 822089728,822090751,ID @@ -2479,7 +5560,7 @@ 823132160,824180735,KR 824180736,825229311,IN 825229312,825360383,TH -825360384,825361407,AP +825360384,825361407,KR 825361408,825363455,ID 825363456,825364479,MY 825364480,825376767,KR @@ -2489,15 +5570,18 @@ 825419776,825420799,TH 825420800,825421823,MY 825421824,825425919,NZ -825425920,825491455,AU -825491456,825753599,CN +825425920,825753599,CN 825753600,826277887,KR 826277888,828375039,CN 828375040,829423615,JP 829423616,830210047,CN 830210048,830341119,MY 830341120,830406655,NP -830406656,830474239,AU +830406656,830472191,AU +830472192,830472447,CN +830472448,830472703,AU +830472704,830473215,CN +830473216,830474239,AU 830474240,830475263,SG 830475264,830476287,AU 830476288,830480383,JP @@ -2541,6 +5625,16 @@ 832372736,832438271,PH 832438272,832569343,TW 832569344,833617919,KR +833617920,835190783,AU +835190784,835715071,IN +835715072,835977215,CN +835977216,836042751,JP +836042752,836046847,HK +836046848,836050943,AU +836050944,836059135,IN +836059136,836075519,VN +836075520,836501503,TW +836501504,836763647,CN 836763648,837025791,NZ 837025792,837287935,TH 837287936,837550079,CN @@ -2548,6 +5642,18 @@ 837566464,837599231,KR 837599232,837603327,MY 837603328,837604351,VN +837604352,837605375,NP +837605376,837607423,ID +837607424,837611519,JP +837611520,837615615,AU +837615616,837681151,TH +837681152,837689343,JP +837689344,837697535,IN +837697536,837746687,KR +837746688,837763071,CN +837763072,837779455,JP +837779456,837795839,KR +837795840,837812223,CN 837812224,838074367,JP 838074368,838139903,NP 838139904,838205439,SG @@ -2558,19 +5664,65 @@ 838336512,838467583,IN 838467584,838729727,JP 838729728,838795263,KR -838795264,838860799,AP -838860800,838926335,US -838991872,838999039,US +838795264,838860799,AU +838860800,838999039,US 838999040,838999295,CA -838999296,839010559,US +838999296,839010175,US +839010176,839010207,CA +839010208,839010559,US 839010560,839010815,CA 839010816,839017983,US 839017984,839018239,CA 839018240,839023359,US 839023360,839023615,CA -839023616,843055103,US -843055104,844103679,CA -844103680,844627967,US +839023616,839025663,US +839025664,839026175,CA +839026176,839061503,US +839061504,839061759,CA +839061760,839062271,US +839062272,839064063,CA +839064064,839069183,US +839069184,839074303,CA +839074304,839095807,US +839095808,839096063,CA +839096064,839101695,US +839101696,839102207,CA +839102208,839112447,US +839112448,839112703,CA +839112704,839113215,US +839113216,839113471,CA +839113472,840269823,US +840269824,840273919,CA +840273920,840278015,US +840278016,840282111,CA +840282112,840294399,US +840294400,840298495,CA +840298496,842531443,US +842531444,842531447,GB +842531448,842531519,US +842531520,842531523,MX +842531524,842531659,US +842531660,842531661,IN +842531662,842535159,US +842535160,842535167,IS +842535168,842535839,US +842535840,842535847,MX +842535848,842541693,US +842541694,842541695,ZA +842541696,842541723,US +842541724,842541725,CA +842541726,842542399,US +842542400,842542407,NZ +842542408,842542415,US +842542416,842542423,NZ +842542424,842542431,JO +842542432,843055103,US +843055104,843644927,CA +843644928,844890111,US +844890112,844988415,CA +844988416,845283327,US +845283328,845545471,CA +845545472,846462975,US 847249408,855638015,US 855638016,872415231,GB 872415232,889192447,US @@ -2609,18 +5761,20 @@ 977797120,978321407,KR 978321408,978452479,JP 978452480,978583551,CN -978583552,978599935,JP 978599936,978640895,AU 978640896,978644991,NZ -978649088,978714623,JP +978644992,978714623,JP 978714624,978780159,TW 978780160,978784255,AU 978784256,978788351,JP 978788352,978796543,KR 978796544,978812927,CN 978812928,979369983,JP -979369984,979435519,AU +979369984,979410943,AU +979410944,979419135,HK +979419136,979435519,AU 979435520,979468287,TH +979468288,979501055,BD 979501056,979566591,JP 979566592,979599359,TW 979599360,979763199,CN @@ -2641,6 +5795,7 @@ 982614016,982622207,AU 982622208,982624255,JP 982624256,982626303,ID +982626304,982628351,JP 982628352,982630399,BD 982630400,982646783,SG 982646784,982671359,JP @@ -2651,6 +5806,7 @@ 982745088,982753279,AF 982753280,982755327,JP 982755328,982757375,BD +982757376,982759423,KR 982759424,982761471,ID 982761472,982777855,JP 982777856,983039999,KR @@ -2681,6 +5837,7 @@ 995557376,995622911,JP 995622912,996409343,IN 996409344,996573183,AU +996573184,996605951,TW 996605952,996671487,PK 996671488,996802559,TW 996802560,996868095,JP @@ -2697,7 +5854,6 @@ 999817216,999849983,BD 999849984,999866367,KR 999866368,999882751,HK -999882752,999948287,JP 999948288,1000013823,AU 1000013824,1000079359,CN 1000079360,1000341503,JP @@ -2713,7 +5869,7 @@ 1002307584,1002373119,JP 1002373120,1002405887,CN 1002405888,1002422271,JP -1002422272,1002432511,AU +1002422272,1002434559,AU 1002434560,1008730111,CN 1008730112,1009778687,JP 1009778688,1010237439,MY @@ -2744,9 +5900,11 @@ 1022558208,1022623743,IN 1022623744,1022722047,TW 1022722048,1022754815,CN +1022754816,1022820351,MO 1022820352,1022885887,CN 1022885888,1023148031,TW 1023148032,1023213567,CN +1023213568,1023238143,KR 1023238144,1023246335,ID 1023246336,1023279103,CN 1023279104,1023311871,IN @@ -2755,6 +5913,7 @@ 1023344640,1023410175,CN 1023410176,1023672319,IN 1023672320,1023688703,HK +1023688704,1023692799,MM 1023692800,1023696895,CN 1023696896,1023705087,MY 1023705088,1023717375,JP @@ -2763,6 +5922,7 @@ 1023737856,1023770623,ID 1023770624,1023778815,PK 1023778816,1023787007,KR +1023787008,1023791103,AF 1023791104,1023795199,NC 1023795200,1023803391,JP 1023803392,1023852543,MY @@ -2987,8 +6147,7 @@ 1026408448,1026416639,JP 1026416640,1026420735,ID 1026420736,1026422783,JP -1026422784,1026423295,AU -1026423296,1026424831,AP +1026422784,1026424831,AU 1026424832,1026490367,JP 1026490368,1026523135,TH 1026523136,1026539519,CN @@ -3022,12 +6181,14 @@ 1039466496,1039499263,JP 1039499264,1039507455,AP 1039507456,1039511551,LK +1039511552,1039515647,KR 1039515648,1039523839,JP 1039523840,1039532031,KR 1039532032,1039597567,IN 1039597568,1039613951,ID 1039613952,1039638527,KR 1039638528,1039642623,TW +1039642624,1039646719,BD 1039646720,1039654911,KR 1039654912,1039663103,IN 1039663104,1040187391,KR @@ -3057,53 +6218,50 @@ 1040467088,1040467103,DE 1040467104,1040467135,FR 1040467136,1040467151,DE -1040467152,1040467583,EU -1040467584,1040467647,FR -1040467648,1040467759,EU -1040467760,1040467823,FR +1040467152,1040467759,EU +1040467760,1040467767,FR +1040467768,1040467775,EU +1040467776,1040467823,FR 1040467824,1040467935,EU 1040467936,1040467951,FR 1040467952,1040467967,EU -1040467968,1040468223,FR -1040468224,1040468231,EU +1040467968,1040468095,FR +1040468096,1040468231,EU 1040468232,1040468255,FR -1040468256,1040468263,EU -1040468264,1040468287,FR -1040468288,1040468415,EU +1040468256,1040468415,EU 1040468416,1040468479,FR 1040468480,1040468607,EU 1040468608,1040468735,DE 1040468736,1040468767,NL -1040468768,1040468799,EU -1040468800,1040468831,NL -1040468832,1040468863,EU -1040468864,1040468991,NL -1040468992,1040469055,EU +1040468768,1040469055,EU 1040469056,1040469071,FR -1040469072,1040469087,EU -1040469088,1040469183,FR +1040469072,1040469119,EU +1040469120,1040469183,FR 1040469184,1040469247,EU 1040469248,1040469279,FR 1040469280,1040469311,EU 1040469312,1040469343,FR -1040469344,1040469375,EU -1040469376,1040469567,FR +1040469344,1040469439,EU +1040469440,1040469471,FR +1040469472,1040469503,EU +1040469504,1040469567,FR 1040469568,1040469631,EU -1040469632,1040469887,FR -1040469888,1040469903,EU +1040469632,1040469695,FR +1040469696,1040469727,EU +1040469728,1040469759,FR +1040469760,1040469903,EU 1040469904,1040469919,FR -1040469920,1040469967,EU -1040469968,1040469999,FR +1040469920,1040469983,EU +1040469984,1040469999,FR 1040470000,1040470271,EU 1040470272,1040470335,DE 1040470336,1040470399,EU 1040470400,1040470431,DE 1040470432,1040471487,EU -1040471488,1040471551,NL -1040471552,1040472991,EU -1040472992,1040473087,NL -1040473088,1040473855,EU -1040473856,1040474111,NL +1040471488,1040471519,NL +1040471520,1040472575,EU +1040472576,1040472831,DE +1040472832,1040474111,EU 1040474112,1040482303,CZ 1040482304,1040515071,BE 1040515072,1040547839,GB @@ -3127,11 +6285,11 @@ 1040982632,1040982639,DE 1040982640,1040982943,A2 1040982944,1040982951,DK -1040982952,1040983807,A2 -1040983808,1040983815,NG -1040983816,1040984143,A2 -1040984144,1040984151,NG -1040984152,1040990207,A2 +1040982952,1040984199,A2 +1040984200,1040984203,TZ +1040984204,1040984215,A2 +1040984216,1040984219,TZ +1040984220,1040990207,A2 1040990208,1040994303,CY 1040994304,1040994815,RU 1040994816,1040998399,CY @@ -3152,7 +6310,6 @@ 1041253376,1041268735,RU 1041268736,1041301503,NO 1041301504,1041367039,IE -1041367040,1041498111,GB 1041498112,1041563647,SE 1041563648,1041596415,PL 1041596416,1041629183,NL @@ -3161,7 +6318,9 @@ 1041633120,1041694719,ES 1041694720,1041695151,FR 1041695152,1041695167,GB -1041695168,1041695647,FR +1041695168,1041695359,FR +1041695360,1041695391,GB +1041695392,1041695647,FR 1041695648,1041695679,GB 1041695680,1041695695,CH 1041695696,1041695711,FR @@ -3186,9 +6345,7 @@ 1041698264,1041698271,GB 1041698272,1041698711,FR 1041698712,1041698719,GB -1041698720,1041698807,FR -1041698808,1041698815,GB -1041698816,1041699287,FR +1041698720,1041699287,FR 1041699288,1041699295,GB 1041699296,1041699583,FR 1041699584,1041699591,IT @@ -3200,8 +6357,10 @@ 1041699680,1041699695,GB 1041699696,1041699767,FR 1041699768,1041699807,GB -1041699808,1041700539,FR -1041700540,1041700607,GB +1041699808,1041700423,FR +1041700424,1041700535,GB +1041700536,1041700559,FR +1041700560,1041700607,GB 1041700608,1041700983,FR 1041700984,1041700991,GB 1041700992,1041701175,FR @@ -3214,21 +6373,37 @@ 1041701568,1041701631,GB 1041701632,1041701647,FR 1041701648,1041701663,GB -1041701664,1041702167,FR +1041701664,1041701719,FR +1041701720,1041701727,GB +1041701728,1041701863,FR +1041701864,1041701871,GB +1041701872,1041701887,FR +1041701888,1041701919,GB +1041701920,1041701967,FR +1041701968,1041701975,GB +1041701976,1041702167,FR 1041702168,1041702175,GB 1041702176,1041702306,FR 1041702307,1041702311,GB -1041702312,1041702327,FR -1041702328,1041702335,GB +1041702312,1041702319,FR +1041702320,1041702335,GB 1041702336,1041702351,FR 1041702352,1041702399,GB -1041702400,1041703575,FR +1041702400,1041702751,FR +1041702752,1041702759,GB +1041702760,1041703575,FR 1041703576,1041703583,GB -1041703584,1041704119,FR +1041703584,1041703639,FR +1041703640,1041703647,GB +1041703648,1041704119,FR 1041704120,1041704127,GB 1041704128,1041704159,FR 1041704160,1041704175,GB -1041704176,1041704407,FR +1041704176,1041704207,FR +1041704208,1041704215,GB +1041704216,1041704255,FR +1041704256,1041704263,GB +1041704264,1041704407,FR 1041704408,1041704431,GB 1041704432,1041704439,FR 1041704440,1041704455,GB @@ -3236,9 +6411,7 @@ 1041704480,1041704487,GB 1041704488,1041704551,FR 1041704552,1041704575,GB -1041704576,1041704671,FR -1041704672,1041704687,GB -1041704688,1041704751,FR +1041704576,1041704751,FR 1041704752,1041704759,GB 1041704760,1041704775,FR 1041704776,1041704783,GB @@ -3248,8 +6421,8 @@ 1041704848,1041704863,GB 1041704864,1041704879,FR 1041704880,1041704887,GB -1041704888,1041704943,FR -1041704944,1041704959,GB +1041704888,1041704927,FR +1041704928,1041704959,GB 1041704960,1041705231,FR 1041705232,1041705239,GB 1041705240,1041705255,FR @@ -3262,8 +6435,8 @@ 1041705392,1041705439,GB 1041705440,1041705447,FR 1041705448,1041705455,GB -1041705456,1041705471,FR -1041705472,1041705479,GB +1041705456,1041705463,FR +1041705464,1041705479,GB 1041705480,1041705487,FR 1041705488,1041705519,GB 1041705520,1041705631,FR @@ -3290,17 +6463,17 @@ 1041706112,1041706143,GB 1041706144,1041706191,FR 1041706192,1041706239,GB -1041706240,1041706271,FR -1041706272,1041706287,GB -1041706288,1041706359,FR -1041706360,1041706367,GB -1041706368,1041706447,FR +1041706240,1041706375,FR +1041706376,1041706383,GB +1041706384,1041706447,FR 1041706448,1041706463,GB 1041706464,1041706479,FR 1041706480,1041706487,GB 1041706488,1041706791,FR 1041706792,1041706799,GB -1041706800,1041706951,FR +1041706800,1041706863,FR +1041706864,1041706871,GB +1041706872,1041706951,FR 1041706952,1041706975,GB 1041706976,1041706999,FR 1041707000,1041707007,GB @@ -3317,22 +6490,20 @@ 1041707520,1041707559,FR 1041707560,1041707583,GB 1041707584,1041707631,FR -1041707632,1041707639,GB -1041707640,1041707679,FR +1041707632,1041707647,GB +1041707648,1041707679,FR 1041707680,1041707687,GB 1041707688,1041707807,FR 1041707808,1041707815,GB -1041707816,1041707895,FR +1041707816,1041707871,FR +1041707872,1041707887,GB +1041707888,1041707895,FR 1041707896,1041707903,GB 1041707904,1041707999,FR 1041708000,1041708007,GB 1041708008,1041708023,FR 1041708024,1041708031,GB -1041708032,1041708327,FR -1041708328,1041708335,GB -1041708336,1041708375,FR -1041708376,1041708383,GB -1041708384,1041708415,FR +1041708032,1041708415,FR 1041708416,1041708431,GB 1041708432,1041708447,FR 1041708448,1041708487,GB @@ -3340,7 +6511,9 @@ 1041708496,1041708511,GB 1041708512,1041708687,FR 1041708688,1041708695,GB -1041708696,1041708807,FR +1041708696,1041708703,FR +1041708704,1041708735,GB +1041708736,1041708807,FR 1041708808,1041708815,GB 1041708816,1041708847,FR 1041708848,1041708855,GB @@ -3376,20 +6549,20 @@ 1041710008,1041710015,GB 1041710016,1041710047,FR 1041710048,1041710055,GB -1041710056,1041710351,FR -1041710352,1041710359,GB -1041710360,1041710391,FR +1041710056,1041710343,FR +1041710344,1041710351,GB +1041710352,1041710391,FR 1041710392,1041710407,GB -1041710408,1041710439,FR -1041710440,1041710455,GB +1041710408,1041710431,FR +1041710432,1041710455,GB 1041710456,1041710471,FR 1041710472,1041710487,GB 1041710488,1041710495,FR 1041710496,1041710511,GB 1041710512,1041710535,FR 1041710536,1041710543,GB -1041710544,1041710559,FR -1041710560,1041710583,GB +1041710544,1041710551,FR +1041710552,1041710583,GB 1041710584,1041710719,FR 1041710720,1041710727,GB 1041710728,1041710735,FR @@ -3406,15 +6579,17 @@ 1041711584,1041711599,GB 1041711600,1041711943,FR 1041711944,1041711951,GB -1041711952,1041712407,FR -1041712408,1041712415,GB -1041712416,1041712423,FR -1041712424,1041712431,GB -1041712432,1041713095,FR +1041711952,1041712415,FR +1041712416,1041712439,GB +1041712440,1041712975,FR +1041712976,1041712983,GB +1041712984,1041713095,FR 1041713096,1041713103,GB 1041713104,1041713127,FR 1041713128,1041713135,GB -1041713136,1041713975,FR +1041713136,1041713943,FR +1041713944,1041713951,GB +1041713952,1041713975,FR 1041713976,1041713983,GB 1041713984,1041713991,FR 1041713992,1041714007,GB @@ -3424,21 +6599,23 @@ 1041714072,1041714079,GB 1041714080,1041714095,FR 1041714096,1041714103,GB -1041714104,1041714523,FR -1041714524,1041714527,GB -1041714528,1041714775,FR +1041714104,1041714111,FR +1041714112,1041714175,GB +1041714176,1041714511,FR +1041714512,1041714519,GB +1041714520,1041714655,FR +1041714656,1041714687,GB +1041714688,1041714775,FR 1041714776,1041714783,GB -1041714784,1041714831,FR -1041714832,1041714847,GB +1041714784,1041714815,FR +1041714816,1041714847,GB 1041714848,1041714855,FR 1041714856,1041714879,GB 1041714880,1041714911,FR 1041714912,1041714919,GB -1041714920,1041714997,FR -1041714998,1041715007,GB -1041715008,1041715055,FR -1041715056,1041715071,GB -1041715072,1041715079,FR +1041714920,1041715007,FR +1041715008,1041715015,GB +1041715016,1041715079,FR 1041715080,1041715087,GB 1041715088,1041715095,FR 1041715096,1041715103,GB @@ -3470,11 +6647,7 @@ 1041716048,1041716095,GB 1041716096,1041716111,FR 1041716112,1041716223,GB -1041716224,1041716231,FR -1041716232,1041716239,GB -1041716240,1041716311,FR -1041716312,1041716319,GB -1041716320,1041716439,FR +1041716224,1041716439,FR 1041716440,1041716447,GB 1041716448,1041716503,FR 1041716504,1041716511,GB @@ -3496,7 +6669,9 @@ 1041717200,1041717247,GB 1041717248,1041717503,FR 1041717504,1041717511,IT -1041717512,1041717687,FR +1041717512,1041717631,FR +1041717632,1041717639,GB +1041717640,1041717687,FR 1041717688,1041717695,GB 1041717696,1041718112,FR 1041718113,1041718119,GB @@ -3505,8 +6680,8 @@ 1041718136,1041718151,FR 1041718152,1041718159,GB 1041718160,1041718191,FR -1041718192,1041718215,GB -1041718216,1041718231,FR +1041718192,1041718223,GB +1041718224,1041718231,FR 1041718232,1041718255,GB 1041718256,1041718343,FR 1041718344,1041718351,GB @@ -3522,7 +6697,9 @@ 1041718624,1041718639,GB 1041718640,1041718663,FR 1041718664,1041718671,GB -1041718672,1041718935,FR +1041718672,1041718895,FR +1041718896,1041718911,GB +1041718912,1041718935,FR 1041718936,1041718943,GB 1041718944,1041718975,FR 1041718976,1041718991,GB @@ -3540,13 +6717,7 @@ 1041719229,1041719231,GB 1041719232,1041719247,FR 1041719248,1041719263,GB -1041719264,1041719383,FR -1041719384,1041719391,GB -1041719392,1041719683,FR -1041719684,1041719687,GB -1041719688,1041719703,FR -1041719704,1041719711,GB -1041719712,1041719743,FR +1041719264,1041719743,FR 1041719744,1041719759,GB 1041719760,1041719887,FR 1041719888,1041719903,GB @@ -3554,7 +6725,11 @@ 1041719920,1041719935,GB 1041719936,1041720015,FR 1041720016,1041720031,GB -1041720032,1041720551,FR +1041720032,1041720487,FR +1041720488,1041720511,GB +1041720512,1041720527,FR +1041720528,1041720535,GB +1041720536,1041720551,FR 1041720552,1041720559,GB 1041720560,1041720567,FR 1041720568,1041720607,GB @@ -3562,7 +6737,11 @@ 1041720632,1041720639,GB 1041720640,1041720687,FR 1041720688,1041720703,GB -1041720704,1041721039,FR +1041720704,1041720831,FR +1041720832,1041720839,GB +1041720840,1041720903,FR +1041720904,1041720927,GB +1041720928,1041721039,FR 1041721040,1041721055,GB 1041721056,1041721391,FR 1041721392,1041721407,GB @@ -3572,31 +6751,39 @@ 1041721776,1041721791,GB 1041721792,1041721815,FR 1041721816,1041721823,GB -1041721824,1041722175,FR -1041722176,1041722191,GB -1041722192,1041722223,FR +1041721824,1041722167,FR +1041722168,1041722191,GB +1041722192,1041722207,FR +1041722208,1041722215,GB +1041722216,1041722223,FR 1041722224,1041722239,GB 1041722240,1041722279,FR 1041722280,1041722383,GB 1041722384,1041722391,FR 1041722392,1041722399,GB 1041722400,1041722423,FR -1041722424,1041722431,GB -1041722432,1041722479,FR +1041722424,1041722463,GB +1041722464,1041722479,FR 1041722480,1041722503,GB 1041722504,1041722535,FR 1041722536,1041722551,GB 1041722552,1041722567,FR 1041722568,1041722623,GB -1041722624,1041722703,FR +1041722624,1041722639,FR +1041722640,1041722655,GB +1041722656,1041722703,FR 1041722704,1041722711,GB 1041722712,1041722743,FR 1041722744,1041722751,GB -1041722752,1041722983,FR +1041722752,1041722951,FR +1041722952,1041722959,GB +1041722960,1041722983,FR 1041722984,1041723007,GB 1041723008,1041723047,FR 1041723048,1041723135,GB -1041723136,1041723359,FR +1041723136,1041723167,FR +1041723168,1041723175,GB +1041723176,1041723359,FR 1041723360,1041723391,GB 1041723392,1041723655,FR 1041723656,1041723775,GB @@ -3606,19 +6793,22 @@ 1041723888,1041723903,GB 1041723904,1041724455,FR 1041724456,1041724463,GB -1041724464,1041724471,FR -1041724472,1041724479,GB -1041724480,1041724535,FR +1041724464,1041724511,FR +1041724512,1041724519,GB +1041724520,1041724535,FR 1041724536,1041724543,GB 1041724544,1041724671,FR 1041724672,1041724927,GB -1041724928,1041725119,FR +1041724928,1041725015,FR +1041725016,1041725023,GB +1041725024,1041725119,FR 1041725120,1041725167,GB 1041725168,1041725175,FR 1041725176,1041725183,GB 1041725184,1041725191,FR -1041725192,1041725199,IT -1041725200,1041725231,GB +1041725192,1041725199,GB +1041725200,1041725207,FR +1041725208,1041725231,GB 1041725232,1041725255,FR 1041725256,1041725279,GB 1041725280,1041725375,FR @@ -3673,9 +6863,7 @@ 1041727091,1041727091,GB 1041727092,1041727167,FR 1041727168,1041727231,GB -1041727232,1041727239,FR -1041727240,1041727247,GB -1041727248,1041727303,FR +1041727232,1041727303,FR 1041727304,1041727311,GB 1041727312,1041727999,FR 1041728000,1041728047,GB @@ -3707,9 +6895,7 @@ 1041730240,1041730247,GB 1041730248,1041730639,FR 1041730640,1041730655,GB -1041730656,1041731927,FR -1041731928,1041731935,GB -1041731936,1041731975,FR +1041730656,1041731975,FR 1041731976,1041732031,GB 1041732032,1041732055,FR 1041732056,1041732063,GB @@ -3745,12 +6931,14 @@ 1041735000,1041735039,GB 1041735040,1041735055,FR 1041735056,1041735087,GB -1041735088,1041735119,FR +1041735088,1041735095,FR +1041735096,1041735103,GB +1041735104,1041735119,FR 1041735120,1041735167,GB 1041735168,1041735431,FR 1041735432,1041735495,GB -1041735496,1041735519,FR -1041735520,1041735551,GB +1041735496,1041735511,FR +1041735512,1041735551,GB 1041735552,1041735567,FR 1041735568,1041735583,GB 1041735584,1041735615,FR @@ -3758,8 +6946,8 @@ 1041735664,1041736375,FR 1041736376,1041736383,GB 1041736384,1041736423,FR -1041736424,1041736463,GB -1041736464,1041736527,FR +1041736424,1041736455,GB +1041736456,1041736527,FR 1041736528,1041736535,GB 1041736536,1041736543,FR 1041736544,1041736551,GB @@ -3777,7 +6965,9 @@ 1041737072,1041737119,GB 1041737120,1041737127,FR 1041737128,1041737151,GB -1041737152,1041737247,FR +1041737152,1041737167,FR +1041737168,1041737183,GB +1041737184,1041737247,FR 1041737248,1041737279,GB 1041737280,1041737295,FR 1041737296,1041737303,GB @@ -3788,8 +6978,10 @@ 1041737424,1041737455,FR 1041737456,1041737463,GB 1041737464,1041737487,FR -1041737488,1041737503,GB -1041737504,1041737583,FR +1041737488,1041737495,GB +1041737496,1041737503,FR +1041737504,1041737511,GB +1041737512,1041737583,FR 1041737584,1041737599,GB 1041737600,1041737607,FR 1041737608,1041737615,GB @@ -3813,9 +7005,7 @@ 1041738160,1041738167,GB 1041738168,1041738215,FR 1041738216,1041738223,GB -1041738224,1041738503,FR -1041738504,1041738511,GB -1041738512,1041738519,FR +1041738224,1041738519,FR 1041738520,1041738543,GB 1041738544,1041738551,FR 1041738552,1041738559,GB @@ -3824,19 +7014,17 @@ 1041738576,1041738583,FR 1041738584,1041738591,GB 1041738592,1041738599,FR -1041738600,1041738607,GB -1041738608,1041738703,FR -1041738704,1041738711,GB -1041738712,1041738735,FR +1041738600,1041738615,GB +1041738616,1041738663,FR +1041738664,1041738671,GB +1041738672,1041738703,FR +1041738704,1041738719,GB +1041738720,1041738735,FR 1041738736,1041738751,GB 1041738752,1041739079,FR 1041739080,1041739087,GB 1041739088,1041739167,FR -1041739168,1041739175,GB -1041739176,1041739183,FR -1041739184,1041739207,GB -1041739208,1041739215,FR -1041739216,1041739231,GB +1041739168,1041739231,GB 1041739232,1041739295,FR 1041739296,1041739299,BE 1041739300,1041739303,GB @@ -3854,7 +7042,9 @@ 1041739744,1041739751,GB 1041739752,1041740031,FR 1041740032,1041740039,GB -1041740040,1041740135,FR +1041740040,1041740103,FR +1041740104,1041740119,GB +1041740120,1041740135,FR 1041740136,1041740143,GB 1041740144,1041740263,FR 1041740264,1041740271,GB @@ -3868,8 +7058,10 @@ 1041740672,1041740687,GB 1041740688,1041740703,FR 1041740704,1041740719,GB -1041740720,1041741071,FR -1041741072,1041741087,GB +1041740720,1041740807,FR +1041740808,1041740831,GB +1041740832,1041741063,FR +1041741064,1041741087,GB 1041741088,1041741135,FR 1041741136,1041741151,GB 1041741152,1041741239,FR @@ -3886,7 +7078,11 @@ 1041741664,1041741679,GB 1041741680,1041741687,FR 1041741688,1041741823,GB -1041741824,1041742223,FR +1041741824,1041742087,FR +1041742088,1041742095,GB +1041742096,1041742183,FR +1041742184,1041742191,GB +1041742192,1041742223,FR 1041742224,1041742239,GB 1041742240,1041742263,FR 1041742264,1041742271,GB @@ -3922,8 +7118,8 @@ 1041743744,1041743759,GB 1041743760,1041743767,FR 1041743768,1041743775,GB -1041743776,1041743791,FR -1041743792,1041743799,GB +1041743776,1041743783,FR +1041743784,1041743799,GB 1041743800,1041743807,FR 1041743808,1041743823,GB 1041743824,1041743831,FR @@ -3957,8 +7153,8 @@ 1041745032,1041745063,FR 1041745064,1041745071,GB 1041745072,1041745127,FR -1041745128,1041745143,GB -1041745144,1041745167,FR +1041745128,1041745151,GB +1041745152,1041745167,FR 1041745168,1041745191,GB 1041745192,1041745247,FR 1041745248,1041745279,GB @@ -3966,7 +7162,9 @@ 1041745328,1041745343,GB 1041745344,1041745359,FR 1041745360,1041745375,GB -1041745376,1041745415,FR +1041745376,1041745399,FR +1041745400,1041745407,GB +1041745408,1041745415,FR 1041745416,1041745423,GB 1041745424,1041745447,FR 1041745448,1041745471,GB @@ -3986,7 +7184,9 @@ 1041745656,1041745663,GB 1041745664,1041745751,FR 1041745752,1041745767,GB -1041745768,1041745855,FR +1041745768,1041745791,FR +1041745792,1041745799,GB +1041745800,1041745855,FR 1041745856,1041745871,GB 1041745872,1041745887,FR 1041745888,1041745959,GB @@ -4000,8 +7200,8 @@ 1041746064,1041746079,GB 1041746080,1041746111,FR 1041746112,1041746135,GB -1041746136,1041746703,FR -1041746704,1041746735,GB +1041746136,1041746711,FR +1041746712,1041746735,GB 1041746736,1041746743,FR 1041746744,1041746751,GB 1041746752,1041746799,FR @@ -4016,8 +7216,8 @@ 1041749776,1041749783,GB 1041749784,1041749807,FR 1041749808,1041749815,GB -1041749816,1041749847,FR -1041749848,1041749855,GB +1041749816,1041749839,FR +1041749840,1041749855,GB 1041749856,1041749967,FR 1041749968,1041749983,GB 1041749984,1041749999,FR @@ -4030,7 +7230,13 @@ 1041750744,1041750751,GB 1041750752,1041750775,FR 1041750776,1041750783,GB -1041750784,1041751695,FR +1041750784,1041751303,FR +1041751304,1041751311,GB +1041751312,1041751351,FR +1041751352,1041751359,GB +1041751360,1041751567,FR +1041751568,1041751575,GB +1041751576,1041751695,FR 1041751696,1041751719,GB 1041751720,1041751775,FR 1041751776,1041751807,GB @@ -4066,10 +7272,10 @@ 1041755632,1041755647,GB 1041755648,1041756463,FR 1041756464,1041756471,GB -1041756472,1041756559,FR -1041756560,1041756567,GB -1041756568,1041756599,FR -1041756600,1041756607,GB +1041756472,1041756543,FR +1041756544,1041756567,GB +1041756568,1041756591,FR +1041756592,1041756607,GB 1041756608,1041756655,FR 1041756656,1041756663,GB 1041756664,1041756695,FR @@ -4100,7 +7306,9 @@ 1041758032,1041758039,GB 1041758040,1041758095,FR 1041758096,1041758111,GB -1041758112,1041758255,FR +1041758112,1041758159,FR +1041758160,1041758167,GB +1041758168,1041758255,FR 1041758256,1041758271,GB 1041758272,1041758319,FR 1041758320,1041758343,GB @@ -4136,7 +7344,9 @@ 1041959680,1042022399,DE 1042022400,1042045891,PT 1042045892,1042045895,A2 -1042045896,1042087935,PT +1042045896,1042086739,PT +1042086740,1042086743,A2 +1042086744,1042087935,PT 1042087936,1042120703,TR 1042120704,1042153471,PL 1042153472,1042284543,GB @@ -4208,31 +7418,41 @@ 1042825216,1042833407,CZ 1042833408,1042841599,GB 1042841600,1042874367,AT -1042874368,1042875399,NL +1042874368,1042875391,NL +1042875392,1042875399,GB 1042875400,1042875407,DE -1042875408,1042875903,NL -1042875904,1042876159,GB -1042876160,1042876415,NL +1042875408,1042875423,NL +1042875424,1042875455,GB +1042875456,1042875903,NL +1042875904,1042876287,GB +1042876288,1042876415,NL 1042876416,1042876479,GB -1042876480,1042876671,NL +1042876480,1042876647,NL +1042876648,1042876663,GB +1042876664,1042876671,NL 1042876672,1042876927,DE -1042876928,1042877183,NL +1042876928,1042877183,GB 1042877184,1042877951,DE -1042877952,1042880639,NL +1042877952,1042878207,NL +1042878208,1042878463,GB +1042878464,1042880639,NL 1042880640,1042880767,GB 1042880768,1042882559,NL 1042882560,1042882815,DE 1042882816,1042888703,NL 1042888704,1042888959,GB 1042888960,1042889215,NL -1042889216,1042889471,US +1042889216,1042889471,DE 1042889472,1042889983,NL -1042889984,1042890111,GB -1042890112,1042890815,NL +1042889984,1042890119,GB +1042890120,1042890127,NL +1042890128,1042890143,GB +1042890144,1042890239,NL +1042890240,1042890495,GB +1042890496,1042890751,FR +1042890752,1042890815,GB 1042890816,1042890819,FR -1042890820,1042890847,NL -1042890848,1042890879,GB -1042890880,1042890944,NL +1042890820,1042890944,NL 1042890945,1042890950,GB 1042890951,1042890959,NL 1042890960,1042890991,GB @@ -4241,8 +7461,8 @@ 1042891840,1042891871,BE 1042891872,1042892015,NL 1042892016,1042892031,DE -1042892032,1042892479,NL -1042892480,1042892543,PL +1042892032,1042892287,NL +1042892288,1042892543,FR 1042892544,1042892879,NL 1042892880,1042892887,DE 1042892888,1042892959,NL @@ -4262,16 +7482,26 @@ 1042893312,1042894079,NL 1042894080,1042894143,DE 1042894144,1042894175,SE -1042894176,1042894559,NL +1042894176,1042894335,NL +1042894336,1042894355,FR +1042894356,1042894359,NL +1042894360,1042894367,GB +1042894368,1042894399,NL +1042894400,1042894415,GB +1042894416,1042894431,NL +1042894432,1042894463,PT +1042894464,1042894559,NL 1042894560,1042894591,DE -1042894592,1042894655,FR -1042894656,1042894783,NL +1042894592,1042894783,NL 1042894784,1042894847,DE -1042894848,1042895231,NL +1042894848,1042895103,NL +1042895104,1042895231,GB 1042895232,1042895359,DE 1042895360,1042895615,NL 1042895616,1042895871,GB -1042895872,1042900479,NL +1042895872,1042896127,NL +1042896128,1042896255,GB +1042896256,1042900479,NL 1042900480,1042900735,GB 1042900736,1042939903,NL 1042939904,1043070975,ES @@ -4328,11 +7558,11 @@ 1043466576,1043466583,NL 1043466584,1043466607,GB 1043466608,1043466887,NL -1043466888,1043466895,GB -1043466896,1043466911,NL -1043466912,1043466927,GB +1043466888,1043466927,GB 1043466928,1043466943,NL -1043466944,1043467039,GB +1043466944,1043466991,GB +1043466992,1043467007,NL +1043467008,1043467039,GB 1043467040,1043467071,NL 1043467072,1043467087,GB 1043467088,1043467103,NL @@ -4380,8 +7610,8 @@ 1043468968,1043469023,NL 1043469024,1043469055,GB 1043469056,1043469087,NL -1043469088,1043469143,GB -1043469144,1043469159,NL +1043469088,1043469151,GB +1043469152,1043469159,NL 1043469160,1043469183,GB 1043469184,1043469199,NL 1043469200,1043469207,GB @@ -4389,21 +7619,13 @@ 1043469224,1043469231,GB 1043469232,1043469239,NL 1043469240,1043469247,GB -1043469248,1043469335,NL -1043469336,1043469343,GB -1043469344,1043469359,NL +1043469248,1043469359,NL 1043469360,1043469375,GB 1043469376,1043469399,NL -1043469400,1043469415,GB -1043469416,1043469423,NL -1043469424,1043469439,GB +1043469400,1043469439,GB 1043469440,1043469559,NL -1043469560,1043469663,GB -1043469664,1043469679,NL -1043469680,1043469695,GB -1043469696,1043469727,NL -1043469728,1043469823,GB -1043469824,1043469843,NL +1043469560,1043469567,GB +1043469568,1043469843,NL 1043469844,1043469847,GB 1043469848,1043469919,NL 1043469920,1043469939,GB @@ -4414,11 +7636,15 @@ 1043470272,1043470303,NL 1043470304,1043470335,GB 1043470336,1043470847,NL -1043470848,1043472415,GB -1043472416,1043472423,DE +1043470848,1043472383,GB +1043472384,1043472395,DE +1043472396,1043472399,GB +1043472400,1043472423,DE 1043472424,1043472431,GB -1043472432,1043472439,DE -1043472440,1043472487,GB +1043472432,1043472443,DE +1043472444,1043472467,GB +1043472468,1043472475,DE +1043472476,1043472487,GB 1043472488,1043472495,DE 1043472496,1043472503,GB 1043472504,1043472895,DE @@ -4463,7 +7689,104 @@ 1043480352,1043480359,GB 1043480360,1043480363,DE 1043480364,1043480575,GB -1043480576,1043488767,CH +1043480576,1043480687,CH +1043480688,1043480695,GB +1043480696,1043480831,CH +1043480832,1043481855,GB +1043481856,1043482007,CH +1043482008,1043482015,GB +1043482016,1043482079,CH +1043482080,1043482623,GB +1043482624,1043482647,CH +1043482648,1043482667,GB +1043482668,1043482671,CH +1043482672,1043482687,GB +1043482688,1043482719,CH +1043482720,1043482735,GB +1043482736,1043482759,CH +1043482760,1043482783,GB +1043482784,1043482791,CH +1043482792,1043482807,GB +1043482808,1043482895,CH +1043482896,1043482911,GB +1043482912,1043482951,CH +1043482952,1043482959,GB +1043482960,1043482975,CH +1043482976,1043482995,GB +1043482996,1043483039,CH +1043483040,1043483047,GB +1043483048,1043483059,CH +1043483060,1043483063,GB +1043483064,1043483103,CH +1043483104,1043483111,GB +1043483112,1043483231,CH +1043483232,1043483235,GB +1043483236,1043483279,CH +1043483280,1043483295,GB +1043483296,1043483311,CH +1043483312,1043483319,GB +1043483320,1043483327,CH +1043483328,1043483335,GB +1043483336,1043483391,CH +1043483392,1043483655,GB +1043483656,1043483679,CH +1043483680,1043483687,GB +1043483688,1043483759,CH +1043483760,1043483775,GB +1043483776,1043483839,CH +1043483840,1043483871,GB +1043483872,1043483911,CH +1043483912,1043484159,GB +1043484160,1043484191,CH +1043484192,1043484199,GB +1043484200,1043484215,CH +1043484216,1043484223,GB +1043484224,1043484351,CH +1043484352,1043484383,GB +1043484384,1043484431,CH +1043484432,1043484463,GB +1043484464,1043484551,CH +1043484552,1043484559,GB +1043484560,1043484575,CH +1043484576,1043484583,GB +1043484584,1043484623,CH +1043484624,1043484631,GB +1043484632,1043484671,CH +1043484672,1043484679,GB +1043484680,1043484751,CH +1043484752,1043484767,GB +1043484768,1043484799,CH +1043484800,1043484927,GB +1043484928,1043484935,CH +1043484936,1043484943,GB +1043484944,1043484959,CH +1043484960,1043484991,GB +1043484992,1043485055,CH +1043485056,1043485191,GB +1043485192,1043485195,CH +1043485196,1043485439,GB +1043485440,1043485567,CH +1043485568,1043485695,GB +1043485696,1043486239,CH +1043486240,1043486463,GB +1043486464,1043486487,CH +1043486488,1043486719,GB +1043486720,1043486723,CH +1043486724,1043486975,GB +1043486976,1043487039,CH +1043487040,1043487055,GB +1043487056,1043487103,CH +1043487104,1043487231,GB +1043487232,1043487443,CH +1043487444,1043487447,GB +1043487448,1043487455,CH +1043487456,1043487487,GB +1043487488,1043487623,CH +1043487624,1043487631,GB +1043487632,1043487679,CH +1043487680,1043487743,GB +1043487744,1043487751,CH +1043487752,1043488767,GB 1043488768,1043496959,DE 1043496960,1043497055,FR 1043497056,1043497079,GB @@ -4807,7 +8130,9 @@ 1044053504,1044106239,NL 1044106240,1044106367,BE 1044106368,1044106495,NL -1044106496,1044106763,BE +1044106496,1044106751,BE +1044106752,1044106755,NL +1044106756,1044106763,BE 1044106764,1044106767,NL 1044106768,1044106771,BE 1044106772,1044106775,NL @@ -4901,7 +8226,11 @@ 1044496384,1044512767,EE 1044512768,1044578303,DK 1044578304,1044580607,DE -1044580608,1044586495,GB +1044580608,1044580735,GB +1044580736,1044580767,DE +1044580768,1044580863,GB +1044580864,1044581119,DE +1044581120,1044586495,GB 1044586496,1044587007,DE 1044587008,1044587519,GB 1044587520,1044587775,DE @@ -4927,7 +8256,9 @@ 1044592192,1044592255,DE 1044592256,1044592639,GB 1044592640,1044592655,DE -1044592656,1044592831,GB +1044592656,1044592671,GB +1044592672,1044592703,DE +1044592704,1044592831,GB 1044592832,1044594431,DE 1044594432,1044625407,GB 1044625408,1044625463,DE @@ -4940,8 +8271,8 @@ 1044628480,1044629503,GB 1044629504,1044629759,DE 1044629760,1044631551,GB -1044631552,1044631871,DE -1044631872,1044631951,GB +1044631552,1044631903,DE +1044631904,1044631951,GB 1044631952,1044631967,DE 1044631968,1044632063,GB 1044632064,1044633855,DE @@ -4958,7 +8289,9 @@ 1044638224,1044638239,DE 1044638240,1044638463,GB 1044638464,1044638719,DE -1044638720,1044639743,GB +1044638720,1044638975,GB +1044638976,1044639231,DE +1044639232,1044639743,GB 1044639744,1044642303,DE 1044642304,1044642815,GB 1044642816,1044643327,DE @@ -4981,7 +8314,9 @@ 1044697856,1044698110,DE 1044698111,1044698111,AT 1044698112,1044698367,DE -1044698368,1044701183,AT +1044698368,1044698623,AT +1044698624,1044699134,DE +1044699135,1044701183,AT 1044701184,1044709375,EG 1044709376,1044717567,RU 1044717568,1044742143,GB @@ -5057,7 +8392,9 @@ 1044931552,1044931567,GB 1044931568,1044931583,BE 1044931584,1044931623,GB -1044931624,1044931663,BE +1044931624,1044931631,BE +1044931632,1044931639,GB +1044931640,1044931663,BE 1044931664,1044931671,GB 1044931672,1044931759,BE 1044931760,1044931775,GB @@ -5097,8 +8434,8 @@ 1044932832,1044932839,GB 1044932840,1044932847,BE 1044932848,1044932863,GB -1044932864,1044932939,BE -1044932940,1044932947,GB +1044932864,1044932935,BE +1044932936,1044932947,GB 1044932948,1044932951,BE 1044932952,1044932959,GB 1044932960,1044933007,BE @@ -5141,7 +8478,9 @@ 1044933864,1044933871,GB 1044933872,1044933919,BE 1044933920,1044933935,GB -1044933936,1044934191,BE +1044933936,1044934095,BE +1044934096,1044934103,GB +1044934104,1044934191,BE 1044934192,1044934199,GB 1044934200,1044934239,BE 1044934240,1044934247,GB @@ -5177,9 +8516,7 @@ 1044935408,1044935423,GB 1044935424,1044935431,BE 1044935432,1044935439,LU -1044935440,1044935551,BE -1044935552,1044935559,GB -1044935560,1044935595,BE +1044935440,1044935595,BE 1044935596,1044935599,GB 1044935600,1044935623,BE 1044935624,1044935631,GB @@ -5187,11 +8524,13 @@ 1044935744,1044935751,GB 1044935752,1044935839,BE 1044935840,1044935847,GB -1044935848,1044935879,BE +1044935848,1044935851,BE +1044935852,1044935863,GB +1044935864,1044935879,BE 1044935880,1044935887,GB 1044935888,1044935903,BE -1044935904,1044936063,GB -1044936064,1044936103,BE +1044935904,1044936095,GB +1044936096,1044936103,BE 1044936104,1044936111,GB 1044936112,1044936123,BE 1044936124,1044936151,GB @@ -5219,8 +8558,8 @@ 1044937392,1044937399,GB 1044937400,1044937487,BE 1044937488,1044937503,GB -1044937504,1044937527,BE -1044937528,1044937531,GB +1044937504,1044937515,BE +1044937516,1044937531,GB 1044937532,1044937535,BE 1044937536,1044937551,GB 1044937552,1044937567,BE @@ -5234,8 +8573,8 @@ 1044937696,1044937703,BE 1044937704,1044937711,GB 1044937712,1044937747,BE -1044937748,1044937759,GB -1044937760,1044937847,BE +1044937748,1044937767,GB +1044937768,1044937847,BE 1044937848,1044937887,GB 1044937888,1044937903,BE 1044937904,1044937915,GB @@ -5279,17 +8618,16 @@ 1045013232,1045013247,IE 1045013248,1045013455,GB 1045013456,1045013471,IE -1045013472,1045018207,GB +1045013472,1045018143,GB +1045018144,1045018151,AE +1045018152,1045018207,GB 1045018208,1045018231,FI 1045018232,1045018367,GB 1045018368,1045018559,ES 1045018560,1045018623,GB 1045018624,1045018751,ES 1045018752,1045020159,GB -1045020160,1045020255,ES -1045020256,1045020287,GB -1045020288,1045020655,ES -1045020656,1045020671,GB +1045020160,1045020671,ES 1045020672,1045037055,NO 1045037056,1045119231,GR 1045119232,1045119743,AL @@ -5301,8 +8639,8 @@ 1045154592,1045154623,DE 1045154624,1045154655,GB 1045154656,1045154687,DE -1045154688,1045154719,NL -1045154720,1045154751,DE +1045154688,1045154719,US +1045154720,1045154751,RU 1045154752,1045154783,SE 1045154784,1045155071,DE 1045155072,1045155327,CH @@ -5310,9 +8648,10 @@ 1045160960,1045160991,TR 1045160992,1045161023,DE 1045161024,1045161055,AT -1045161056,1045161151,DE -1045161152,1045161183,PT -1045161184,1045168127,DE +1045161056,1045161087,US +1045161088,1045161119,DE +1045161120,1045161151,TH +1045161152,1045168127,DE 1045168128,1045233663,RU 1045233664,1045241855,GB 1045241856,1045250047,IT @@ -5335,26 +8674,12 @@ 1045446656,1045446911,HU 1045446912,1045447167,SK 1045447168,1045447231,HU -1045447232,1045447239,SK -1045447240,1045447263,HU -1045447264,1045447279,SK -1045447280,1045447287,HU -1045447288,1045447295,SK +1045447232,1045447295,SK 1045447296,1045447311,HU -1045447312,1045447423,SK -1045447424,1045447431,HU -1045447432,1045447439,SK -1045447440,1045447447,HU -1045447448,1045447471,SK -1045447472,1045447551,HU -1045447552,1045448031,SK -1045448032,1045448039,HU -1045448040,1045448055,SK -1045448056,1045448063,HU -1045448064,1045448159,SK -1045448160,1045448191,HU -1045448192,1045448239,SK -1045448240,1045448263,HU +1045447312,1045447519,SK +1045447520,1045447551,HU +1045447552,1045448255,SK +1045448256,1045448263,HU 1045448264,1045448703,SK 1045448704,1045448767,HU 1045448768,1045450751,SK @@ -5390,109 +8715,88 @@ 1045716992,1045725183,RU 1045725184,1045733375,CZ 1045733376,1045741567,GB -1045741568,1045741887,SE -1045741888,1045741951,GB -1045741952,1045742015,SE -1045742016,1045742023,GB -1045742024,1045742031,SE -1045742032,1045742039,GB -1045742040,1045742063,SE -1045742064,1045742111,GB -1045742112,1045742135,SE -1045742136,1045742143,NL -1045742144,1045742151,SE -1045742152,1045742159,DK -1045742160,1045742167,SE -1045742168,1045742175,DK -1045742176,1045742239,SE -1045742240,1045742247,GB -1045742248,1045742383,SE -1045742384,1045742391,GB -1045742392,1045742495,SE -1045742496,1045742535,GB -1045742536,1045742551,SE -1045742552,1045742559,GB -1045742560,1045742763,SE -1045742764,1045742767,GB -1045742768,1045742783,SE -1045742784,1045742831,GB +1045741568,1045741823,SE +1045741824,1045741831,GB +1045741832,1045741839,BE +1045741840,1045741887,SE +1045741888,1045742039,GB +1045742040,1045742047,SE +1045742048,1045742111,GB +1045742112,1045742115,SE +1045742116,1045742175,GB +1045742176,1045742191,SE +1045742192,1045742335,GB +1045742336,1045742351,SE +1045742352,1045742367,GB +1045742368,1045742383,SE +1045742384,1045742395,GB +1045742396,1045742471,SE +1045742472,1045742479,GB +1045742480,1045742487,SE +1045742488,1045742575,GB +1045742576,1045742623,SE +1045742624,1045742751,GB +1045742752,1045742759,SE +1045742760,1045742831,GB 1045742832,1045742839,SE 1045742840,1045742847,GB -1045742848,1045743023,SE -1045743024,1045743031,GB +1045742848,1045742983,SE +1045742984,1045743031,GB 1045743032,1045743039,SE -1045743040,1045743047,GB -1045743048,1045743063,NL -1045743064,1045743095,SE -1045743096,1045743099,GB -1045743100,1045743247,SE -1045743248,1045743251,GB -1045743252,1045743295,SE -1045743296,1045743299,GB -1045743300,1045743679,SE -1045743680,1045743743,GB -1045743744,1045743803,SE -1045743804,1045743807,GB -1045743808,1045744007,SE +1045743040,1045743063,GB +1045743064,1045743071,SE +1045743072,1045743087,GB +1045743088,1045743095,SE +1045743096,1045743103,GB +1045743104,1045743231,SE +1045743232,1045743251,GB +1045743252,1045743263,SE +1045743264,1045743299,GB +1045743300,1045743647,SE +1045743648,1045743871,GB +1045743872,1045744007,SE 1045744008,1045744015,GB 1045744016,1045744031,SE -1045744032,1045744063,GB -1045744064,1045744639,SE +1045744032,1045744127,GB +1045744128,1045744639,SE 1045744640,1045744671,BE -1045744672,1045744703,SE -1045744704,1045745407,GB +1045744672,1045745407,GB 1045745408,1045745607,SE 1045745608,1045745615,FI 1045745616,1045745623,GB -1045745624,1045745655,SE -1045745656,1045745663,GB +1045745624,1045745627,SE +1045745628,1045745631,GB +1045745632,1045745647,SE +1045745648,1045745663,GB 1045745664,1045745695,SE 1045745696,1045745759,GB 1045745760,1045745768,SE 1045745769,1045745791,GB 1045745792,1045745855,SE -1045745856,1045745879,GB -1045745880,1045745951,SE -1045745952,1045745999,GB -1045746000,1045746079,SE -1045746080,1045746095,GB -1045746096,1045746163,SE -1045746164,1045746175,GB +1045745856,1045745919,GB +1045745920,1045745951,SE +1045745952,1045746175,GB 1045746176,1045746431,SE 1045746432,1045746495,GB 1045746496,1045746527,SE -1045746528,1045746543,GB -1045746544,1045746559,SE -1045746560,1045746671,GB +1045746528,1045746671,GB 1045746672,1045747071,SE 1045747072,1045747199,GB 1045747200,1045747455,SE -1045747456,1045747583,GB -1045747584,1045747615,SE -1045747616,1045747679,GB -1045747680,1045747711,SE -1045747712,1045747751,GB -1045747752,1045747775,SE -1045747776,1045747815,GB -1045747816,1045747823,SE -1045747824,1045747839,GB +1045747456,1045747759,GB +1045747760,1045747775,SE +1045747776,1045747839,GB 1045747840,1045747871,SE 1045747872,1045747919,GB 1045747920,1045747935,SE 1045747936,1045747967,GB 1045747968,1045748223,SE -1045748224,1045748239,GB -1045748240,1045748287,SE -1045748288,1045748295,GB -1045748296,1045748303,SE -1045748304,1045748319,GB +1045748224,1045748319,GB 1045748320,1045748351,SE -1045748352,1045748391,GB -1045748392,1045748395,SE -1045748396,1045748399,GB -1045748400,1045748407,SE -1045748408,1045748463,GB -1045748464,1045748735,SE +1045748352,1045748463,GB +1045748464,1045748471,SE +1045748472,1045748479,GB +1045748480,1045748735,SE 1045748736,1045749503,GB 1045749504,1045749759,SE 1045749760,1045757951,GB @@ -5519,19 +8823,19 @@ 1046229112,1046229119,SE 1046229120,1046282239,NO 1046282240,1046283007,DE -1046283008,1046283263,BZ +1046283008,1046283135,BZ +1046283136,1046283263,DE 1046283264,1046283327,LU -1046283328,1046284287,DE -1046284288,1046285055,BZ +1046283328,1046285055,DE 1046285056,1046285119,HR 1046285120,1046285183,MT 1046285184,1046285247,BZ 1046285248,1046285311,BA 1046285312,1046286663,DE 1046286664,1046286671,BZ -1046286672,1046286927,DE -1046286928,1046286935,ES -1046286936,1046288383,DE +1046286672,1046286935,DE +1046286936,1046286943,ES +1046286944,1046288383,DE 1046288384,1046288663,CZ 1046288664,1046288767,DE 1046288768,1046288775,AG @@ -5579,8 +8883,7 @@ 1046331744,1046331775,DE 1046331776,1046331839,EU 1046331840,1046331871,DE -1046331872,1046331903,EU -1046331904,1046332159,NL +1046331872,1046332159,EU 1046332160,1046332415,FR 1046332416,1046333439,EU 1046333440,1046333695,DE @@ -5594,11 +8897,7 @@ 1046337536,1046338047,DE 1046338048,1046339839,EU 1046339840,1046340095,FR -1046340096,1046340607,EU -1046340608,1046340863,NL -1046340864,1046342143,EU -1046342144,1046342719,NL -1046342720,1046343423,EU +1046340096,1046343423,EU 1046343424,1046343935,NL 1046343936,1046344959,EU 1046344960,1046345215,DE @@ -5888,8 +9187,8 @@ 1046535488,1046535551,DE 1046535552,1046535619,GB 1046535620,1046535623,DE -1046535624,1046535631,GB -1046535632,1046535935,DE +1046535624,1046535679,GB +1046535680,1046535935,DE 1046535936,1046536023,GB 1046536024,1046536039,DE 1046536040,1046536063,GB @@ -5910,9 +9209,7 @@ 1046536320,1046536351,DE 1046536352,1046536355,GB 1046536356,1046536359,DE -1046536360,1046536423,GB -1046536424,1046536431,DE -1046536432,1046536607,GB +1046536360,1046536607,GB 1046536608,1046536667,DE 1046536668,1046536703,GB 1046536704,1046537023,DE @@ -5939,8 +9236,8 @@ 1046541696,1046541727,GB 1046541728,1046541759,DE 1046541760,1046541767,GB -1046541768,1046541783,DE -1046541784,1046541807,GB +1046541768,1046541775,DE +1046541776,1046541807,GB 1046541808,1046543103,DE 1046543104,1046543263,GB 1046543264,1046543295,DE @@ -5951,11 +9248,11 @@ 1046543616,1046544127,GB 1046544128,1046544383,DE 1046544384,1046560767,IT -1046560768,1046569831,ES -1046569832,1046569839,GB -1046569840,1046570591,ES +1046560768,1046570591,ES 1046570592,1046570607,CH -1046570608,1046585343,ES +1046570608,1046572007,ES +1046572008,1046572015,DK +1046572016,1046585343,ES 1046585344,1046609919,NO 1046609920,1046675455,IT 1046675456,1046708223,ES @@ -5964,7 +9261,9 @@ 1046757376,1046765567,IT 1046765568,1046773759,ES 1046773760,1046781951,FR -1046781952,1046798335,GB +1046781952,1046790143,GB +1046790144,1046791167,US +1046791168,1046798335,GB 1046798336,1046806527,HU 1046806528,1046814719,IT 1046814720,1046822911,SE @@ -6057,7 +9356,12 @@ 1046898688,1046898975,BE 1046898976,1046899167,EU 1046899168,1046904831,BE -1046904832,1046937599,RU +1046904832,1046908927,SK +1046908928,1046910975,SE +1046910976,1046913023,IT +1046913024,1046921215,NO +1046921216,1046929407,DE +1046929408,1046937599,FR 1046937600,1047003135,GR 1047003136,1047068671,DE 1047068672,1047085055,RU @@ -6073,7 +9377,9 @@ 1047265280,1047273471,NL 1047273472,1047281663,DE 1047281664,1047289855,TR -1047289856,1047298047,RS +1047289856,1047295351,RS +1047295352,1047295359,HU +1047295360,1047298047,RS 1047298048,1047300095,CH 1047300096,1047300415,GB 1047300416,1047300479,CH @@ -6110,15 +9416,11 @@ 1047527424,1047535615,BE 1047535616,1047551999,DE 1047552000,1047560191,RU -1047560192,1047561367,DE -1047561368,1047561371,CN -1047561372,1047561747,DE +1047560192,1047561747,DE 1047561748,1047561751,ES 1047561752,1047561887,DE 1047561888,1047561891,US -1047561892,1047563227,DE -1047563228,1047563231,CH -1047563232,1047563287,DE +1047561892,1047563287,DE 1047563288,1047563295,CH 1047563296,1047563303,DE 1047563304,1047563311,CH @@ -6143,14 +9445,20 @@ 1047563468,1047563471,CH 1047563472,1047565131,DE 1047565132,1047565135,GB -1047565136,1047566363,DE +1047565136,1047565343,DE +1047565344,1047565359,CH +1047565360,1047565855,DE +1047565856,1047565887,CH +1047565888,1047566363,DE 1047566364,1047566367,CH 1047566368,1047566403,DE 1047566404,1047566415,CH -1047566416,1047566443,DE +1047566416,1047566435,DE +1047566436,1047566439,CH +1047566440,1047566443,DE 1047566444,1047566447,AT -1047566448,1047566455,DE -1047566456,1047566459,CH +1047566448,1047566451,DE +1047566452,1047566459,CH 1047566460,1047566475,DE 1047566476,1047566479,CH 1047566480,1047566491,DE @@ -6158,9 +9466,7 @@ 1047566500,1047566507,DE 1047566508,1047566511,CH 1047566512,1047566519,DE -1047566520,1047566527,CH -1047566528,1047566535,DE -1047566536,1047566539,CH +1047566520,1047566539,CH 1047566540,1047566543,DE 1047566544,1047566547,CH 1047566548,1047566559,DE @@ -6176,24 +9482,34 @@ 1047566948,1047566951,AT 1047566952,1047566963,DE 1047566964,1047566967,AT -1047566968,1047566995,DE +1047566968,1047566971,CH +1047566972,1047566995,DE 1047566996,1047566999,CH -1047567000,1047567031,DE -1047567032,1047567035,CH +1047567000,1047567015,DE +1047567016,1047567019,CH +1047567020,1047567027,DE +1047567028,1047567035,CH 1047567036,1047567039,DE 1047567040,1047567043,AT 1047567044,1047567047,CH 1047567048,1047567063,DE 1047567064,1047567067,CH 1047567068,1047567071,BE -1047567072,1047567119,DE +1047567072,1047567075,NL +1047567076,1047567079,DE +1047567080,1047567083,NL +1047567084,1047567119,DE 1047567120,1047567127,CH 1047567128,1047567143,DE 1047567144,1047567147,CH 1047567148,1047567151,BE -1047567152,1047567163,DE +1047567152,1047567159,CH +1047567160,1047567163,DE 1047567164,1047567167,AT -1047567168,1047567211,DE +1047567168,1047567175,CH +1047567176,1047567183,DE +1047567184,1047567191,CH +1047567192,1047567211,DE 1047567212,1047567227,CH 1047567228,1047567239,DE 1047567240,1047567243,CH @@ -6201,11 +9517,12 @@ 1047567248,1047567255,CH 1047567256,1047567279,DE 1047567280,1047567287,CH -1047567288,1047567315,DE +1047567288,1047567307,DE +1047567308,1047567311,CH +1047567312,1047567315,DE 1047567316,1047567319,AT -1047567320,1047567359,DE -1047567360,1047567375,ES -1047567376,1047567447,DE +1047567320,1047567327,CH +1047567328,1047567447,DE 1047567448,1047567451,CH 1047567452,1047567455,AT 1047567456,1047567459,CH @@ -6217,9 +9534,7 @@ 1047567536,1047567539,CH 1047567540,1047567551,DE 1047567552,1047567555,CH -1047567556,1047567567,DE -1047567568,1047567571,AT -1047567572,1047567647,DE +1047567556,1047567647,DE 1047567648,1047567651,CH 1047567652,1047567655,DE 1047567656,1047567659,CH @@ -6231,9 +9546,7 @@ 1047567748,1047567751,CH 1047567752,1047567755,LU 1047567756,1047567759,CH -1047567760,1047567799,DE -1047567800,1047567803,CH -1047567804,1047567823,DE +1047567760,1047567823,DE 1047567824,1047567839,CH 1047567840,1047567847,DE 1047567848,1047567851,CH @@ -6245,18 +9558,16 @@ 1047567884,1047567935,DE 1047567936,1047567939,CH 1047567940,1047568047,DE -1047568048,1047568059,CH -1047568060,1047568087,DE -1047568088,1047568095,CH -1047568096,1047568159,DE +1047568048,1047568051,CH +1047568052,1047568055,DE +1047568056,1047568059,CH +1047568060,1047568159,DE 1047568160,1047568163,CH 1047568164,1047568187,DE 1047568188,1047568191,CH 1047568192,1047568215,DE 1047568216,1047568219,CH -1047568220,1047568235,DE -1047568236,1047568239,CH -1047568240,1047568247,DE +1047568220,1047568247,DE 1047568248,1047568251,CH 1047568252,1047568363,DE 1047568364,1047568367,CH @@ -6277,7 +9588,9 @@ 1047732224,1047740415,EU 1047740416,1047740431,US 1047740432,1047740447,DE -1047740448,1047740543,EU +1047740448,1047740463,IT +1047740464,1047740479,SE +1047740480,1047740543,EU 1047740544,1047740671,DE 1047740672,1047740927,A2 1047740928,1047781663,EU @@ -6299,9 +9612,7 @@ 1047789568,1047806031,AT 1047806032,1047806047,IT 1047806048,1047822335,AT -1047822336,1047834895,DE -1047834896,1047834903,CY -1047834904,1047838719,DE +1047822336,1047838719,DE 1047838720,1047846911,DK 1047846912,1047855103,SE 1047855104,1047863295,DE @@ -6359,12 +9670,12 @@ 1048604688,1048604743,UA 1048604744,1048604759,EE 1048604760,1048604927,UA -1048604928,1048604965,LT -1048604966,1048604967,UA -1048604968,1048604971,LT -1048604972,1048604975,UA -1048604976,1048605079,LT -1048605080,1048607231,UA +1048604928,1048605079,LT +1048605080,1048605087,UA +1048605088,1048605095,LT +1048605096,1048605103,UA +1048605104,1048605119,LT +1048605120,1048607231,UA 1048607232,1048607247,EE 1048607248,1048607487,UA 1048607488,1048607519,EE @@ -7060,8 +10371,8 @@ 1048983168,1048983423,DE 1048983424,1048983487,EU 1048983488,1048983679,DE -1048983680,1048984831,EU -1048984832,1048985167,DE +1048983680,1048985087,EU +1048985088,1048985167,DE 1048985168,1048985183,EU 1048985184,1048985199,DE 1048985200,1048985215,EU @@ -7075,8 +10386,8 @@ 1049002240,1049002623,EU 1049002624,1049002751,DE 1049002752,1049003263,EU -1049003264,1049004291,DE -1049004292,1049004351,EU +1049003264,1049004287,DE +1049004288,1049004351,EU 1049004352,1049004415,DE 1049004416,1049004543,EU 1049004544,1049006079,DE @@ -7090,14 +10401,10 @@ 1049009560,1049009567,DE 1049009568,1049009583,EU 1049009584,1049009615,DE -1049009616,1049009623,EU -1049009624,1049009631,DE -1049009632,1049009647,EU +1049009616,1049009647,EU 1049009648,1049009662,DE 1049009663,1049009663,EU -1049009664,1049011711,DE -1049011712,1049011967,EU -1049011968,1049012223,DE +1049009664,1049012223,DE 1049012224,1049012224,EU 1049012225,1049012226,DE 1049012227,1049012735,EU @@ -7116,17 +10423,17 @@ 1049017984,1049018047,GE 1049018048,1049020127,DE 1049020128,1049020135,FR -1049020136,1049020479,DE -1049020480,1049020543,GE -1049020544,1049026559,DE +1049020136,1049021343,DE +1049021344,1049021375,US +1049021376,1049026559,DE 1049026560,1049026815,EU 1049026816,1049031871,DE 1049031872,1049031903,EU 1049031904,1049032143,DE 1049032144,1049032167,EU 1049032168,1049032171,DE -1049032172,1049032175,EU -1049032176,1049032287,DE +1049032172,1049032191,EU +1049032192,1049032287,DE 1049032288,1049032295,EU 1049032296,1049032383,DE 1049032384,1049032399,EU @@ -7142,8 +10449,8 @@ 1049100288,1049231359,GB 1049231360,1049296895,DE 1049296896,1049362431,EG -1049362432,1049362591,DE -1049362592,1049362943,GB +1049362432,1049362623,DE +1049362624,1049362943,GB 1049362944,1049362959,DE 1049362960,1049363071,GB 1049363072,1049363135,DE @@ -7219,9 +10526,10 @@ 1049709312,1049709567,GB 1049709568,1049709823,A2 1049709824,1049710079,US -1049710080,1049710591,NL -1049710592,1049712639,GB -1049712640,1049713055,IR +1049710080,1049710335,GB +1049710336,1049710591,NL +1049710592,1049712895,GB +1049712896,1049713055,IR 1049713056,1049713087,MA 1049713088,1049713151,IR 1049713152,1049713663,NL @@ -7238,12 +10546,11 @@ 1049722880,1049731071,IS 1049731072,1049739263,FI 1049739264,1049755647,NL -1049755648,1049757599,DE -1049757600,1049757631,LU -1049757632,1049757647,DE +1049755648,1049757383,DE +1049757384,1049757391,IT +1049757392,1049757647,DE 1049757648,1049757663,CA -1049757664,1049757671,BA -1049757672,1049758063,DE +1049757664,1049758063,DE 1049758064,1049758071,PL 1049758072,1049758095,DE 1049758096,1049758103,ES @@ -7322,9 +10629,7 @@ 1049785000,1049785007,AT 1049785008,1049787135,DE 1049787136,1049787391,PL -1049787392,1049790207,DE -1049790208,1049790463,LU -1049790464,1049794559,DE +1049787392,1049794559,DE 1049794560,1049795583,CH 1049795584,1049817151,DE 1049817152,1049817159,PL @@ -7350,9 +10655,7 @@ 1050083328,1050148863,ES 1050148864,1050157055,CY 1050157056,1050173439,RU -1050173440,1050174063,IT -1050174064,1050174079,FR -1050174080,1050181631,IT +1050173440,1050181631,IT 1050181632,1050189823,PL 1050189824,1050198015,DE 1050198016,1050206207,RU @@ -7373,17 +10676,13 @@ 1050505248,1050505279,CA 1050505280,1050507503,DE 1050507504,1050507519,A2 -1050507520,1050515647,DE -1050515648,1050515663,DK -1050515664,1050522407,DE +1050507520,1050522407,DE 1050522408,1050522415,CH 1050522416,1050619503,DE 1050619504,1050619511,CH 1050619512,1050621407,DE 1050621408,1050621439,BE -1050621440,1050625959,DE -1050625960,1050625967,AT -1050625968,1050626559,DE +1050621440,1050626559,DE 1050626560,1050626815,GB 1050626816,1050647431,DE 1050647432,1050647439,NL @@ -7531,39 +10830,21 @@ 1051566080,1051574271,IT 1051574272,1051574623,GB 1051574624,1051574655,GM -1051574656,1051575999,GB -1051576000,1051576015,IT -1051576016,1051577503,GB -1051577504,1051577519,NL -1051577520,1051577535,GB +1051574656,1051577535,GB 1051577536,1051577567,NL -1051577568,1051577575,BE -1051577576,1051577583,GB -1051577584,1051577587,FI -1051577588,1051577591,GB -1051577592,1051577599,NL -1051577600,1051577855,GB +1051577568,1051577855,GB 1051577856,1051578111,NL 1051578112,1051578143,GB 1051578144,1051578175,NL -1051578176,1051578239,GB -1051578240,1051578263,FR -1051578264,1051578271,GB -1051578272,1051578279,ES -1051578280,1051578287,GR -1051578288,1051578295,GB -1051578296,1051578303,PL +1051578176,1051578247,GB +1051578248,1051578255,FR +1051578256,1051578303,GB 1051578304,1051578335,NL -1051578336,1051578343,DE -1051578344,1051578351,NL -1051578352,1051578363,GB -1051578364,1051578367,DE -1051578368,1051580415,SZ -1051580416,1051584767,GB -1051584768,1051585535,MG -1051585536,1051585599,GB -1051585600,1051585663,MG -1051585664,1051590655,GB +1051578336,1051580535,GB +1051580536,1051580543,SZ +1051580544,1051584207,GB +1051584208,1051584223,BE +1051584224,1051590655,GB 1051590656,1051702527,ES 1051702528,1051702783,US 1051702784,1051721727,ES @@ -7581,11 +10862,15 @@ 1051852800,1051918335,AT 1051918336,1051919359,PL 1051919360,1051920383,AT -1051920384,1051922431,PL -1051922432,1051983871,AT +1051920384,1051920895,PL +1051920896,1051949823,AT +1051949824,1051949951,NL +1051949952,1051983871,AT 1051983872,1051986687,EU -1051986688,1051987199,DE -1051987200,1051991807,EU +1051986688,1051986943,DE +1051986944,1051990015,EU +1051990016,1051991039,DE +1051991040,1051991807,EU 1051991808,1051991935,DE 1051991936,1051992063,EU 1051992064,1051994639,DE @@ -7666,7 +10951,9 @@ 1052004000,1052004671,EU 1052004672,1052004687,DE 1052004688,1052004703,EU -1052004704,1052004759,DE +1052004704,1052004735,DE +1052004736,1052004751,EU +1052004752,1052004759,DE 1052004760,1052004767,EU 1052004768,1052004783,DE 1052004784,1052004815,EU @@ -7681,9 +10968,7 @@ 1052005888,1052005911,DE 1052005912,1052006543,EU 1052006544,1052006559,DE -1052006560,1052006575,EU -1052006576,1052006607,DE -1052006608,1052007039,EU +1052006560,1052007039,EU 1052007040,1052007103,DE 1052007104,1052007431,EU 1052007432,1052007435,DE @@ -7709,9 +10994,7 @@ 1052009472,1052009487,DE 1052009488,1052009503,EU 1052009504,1052009535,DE -1052009536,1052009599,EU -1052009600,1052009607,DE -1052009608,1052010463,EU +1052009536,1052010463,EU 1052010464,1052010519,DE 1052010520,1052010527,EU 1052010528,1052010559,DE @@ -7748,10 +11031,10 @@ 1052013964,1052014015,EU 1052014016,1052014079,DE 1052014080,1052014111,EU -1052014112,1052014303,DE -1052014304,1052014591,EU -1052014592,1052014623,DE -1052014624,1052015367,EU +1052014112,1052014239,DE +1052014240,1052014271,EU +1052014272,1052014303,DE +1052014304,1052015367,EU 1052015368,1052015375,DE 1052015376,1052015423,EU 1052015424,1052015519,DE @@ -7875,15 +11158,21 @@ 1052065792,1052082175,SE 1052082176,1052090367,DE 1052090368,1052098559,PL -1052098560,1052116991,SE +1052098560,1052099471,SE +1052099472,1052099479,NO +1052099480,1052104095,SE +1052104096,1052104127,DK +1052104128,1052116991,SE 1052116992,1052119039,RU 1052119040,1052121087,RO 1052121088,1052129279,RU 1052129280,1052131327,BE +1052131328,1052133375,UA 1052133376,1052135423,RU 1052135424,1052137471,UA 1052137472,1052139519,RU 1052139520,1052141567,DE +1052141568,1052143615,PL 1052143616,1052145663,BG 1052145664,1052147711,UA 1052147712,1052151807,RU @@ -8511,7 +11800,8 @@ 1052426328,1052426495,PT 1052426496,1052426511,EU 1052426512,1052426527,FR -1052426528,1052427263,EU +1052426528,1052426751,EU +1052426752,1052427263,NL 1052427264,1052427839,CH 1052427840,1052427855,GB 1052427856,1052427871,IT @@ -8724,9 +12014,7 @@ 1052684608,1052770303,GB 1052770304,1052775711,CH 1052775712,1052775727,DE -1052775728,1052775759,CH -1052775760,1052775767,GB -1052775768,1052777503,CH +1052775728,1052777503,CH 1052777504,1052777535,IT 1052777536,1052778495,CH 1052778496,1052786687,RU @@ -8762,31 +12050,31 @@ 1053295616,1053296639,AT 1053296640,1053296927,IT 1053296928,1053296991,EU -1053296992,1053297023,IT -1053297024,1053297039,EU +1053296992,1053297027,IT +1053297028,1053297039,EU 1053297040,1053297055,IT 1053297056,1053297071,EU -1053297072,1053297087,IT -1053297088,1053297111,EU -1053297112,1053297135,IT -1053297136,1053297143,EU -1053297144,1053297151,IT -1053297152,1053298175,EU +1053297072,1053297135,IT +1053297136,1053298175,EU 1053298176,1053299199,CH 1053299200,1053299711,EU -1053299712,1053300159,GB +1053299712,1053300031,GB +1053300032,1053300095,EU +1053300096,1053300103,GB +1053300104,1053300111,EU +1053300112,1053300159,GB 1053300160,1053300223,EU 1053300224,1053300735,GB 1053300736,1053300991,CH 1053300992,1053301023,FR 1053301024,1053301039,EU -1053301040,1053301063,FR -1053301064,1053301071,EU +1053301040,1053301055,FR +1053301056,1053301071,EU 1053301072,1053301135,FR 1053301136,1053301167,EU -1053301168,1053301183,FR -1053301184,1053301199,EU -1053301200,1053301295,FR +1053301168,1053301279,FR +1053301280,1053301287,EU +1053301288,1053301295,FR 1053301296,1053301303,EU 1053301304,1053301359,FR 1053301360,1053301367,EU @@ -8813,15 +12101,15 @@ 1053305952,1053306111,EU 1053306112,1053306879,GR 1053306880,1053307903,EU -1053307904,1053307951,GB -1053307952,1053307959,EU -1053307960,1053308095,GB -1053308096,1053308159,EU -1053308160,1053308543,GB +1053307904,1053307943,GB +1053307944,1053307959,EU +1053307960,1053308543,GB 1053308544,1053308671,EU -1053308672,1053308767,GB -1053308768,1053308799,EU -1053308800,1053308863,GB +1053308672,1053308703,GB +1053308704,1053308767,EU +1053308768,1053308831,GB +1053308832,1053308839,EU +1053308840,1053308863,GB 1053308864,1053308927,EU 1053308928,1053308991,ZA 1053308992,1053309183,EU @@ -8840,10 +12128,10 @@ 1053312928,1053312959,DK 1053312960,1053313023,EU 1053313024,1053313343,GB -1053313344,1053313439,EU -1053313440,1053313599,GB -1053313600,1053313663,EU -1053313664,1053313671,GB +1053313344,1053313407,EU +1053313408,1053313471,GB +1053313472,1053313479,EU +1053313480,1053313671,GB 1053313672,1053313679,EU 1053313680,1053313791,GB 1053313792,1053313919,EU @@ -8851,7 +12139,9 @@ 1053314048,1053314063,EU 1053314064,1053314079,CZ 1053314080,1053315071,EU -1053315072,1053317119,GB +1053315072,1053316719,GB +1053316720,1053316727,EU +1053316728,1053317119,GB 1053317120,1053317295,ZA 1053317296,1053317375,EU 1053317376,1053317631,GB @@ -8859,9 +12149,10 @@ 1053318144,1053318655,GB 1053318656,1053318911,FI 1053318912,1053318927,EU -1053318928,1053318951,FI -1053318952,1053318959,EE -1053318960,1053318975,EU +1053318928,1053318935,FI +1053318936,1053318943,EU +1053318944,1053318951,FI +1053318952,1053318975,EU 1053318976,1053319007,FI 1053319008,1053319167,EU 1053319168,1053320191,DE @@ -8871,7 +12162,8 @@ 1053326336,1053326399,BE 1053326400,1053326431,EU 1053326432,1053326447,GB -1053326448,1053326463,BE +1053326448,1053326455,EU +1053326456,1053326463,BE 1053326464,1053326527,EU 1053326528,1053326543,BE 1053326544,1053326559,EU @@ -8883,8 +12175,8 @@ 1053327360,1053327871,EU 1053327872,1053328383,ZA 1053328384,1053328639,EU -1053328640,1053328799,ZA -1053328800,1053328895,EU +1053328640,1053328863,ZA +1053328864,1053328895,EU 1053328896,1053329087,ZA 1053329088,1053329119,EU 1053329120,1053329135,ZA @@ -8893,8 +12185,8 @@ 1053329152,1053329183,EU 1053329184,1053329279,ZA 1053329280,1053329407,EU -1053329408,1053329439,ES -1053329440,1053329503,EU +1053329408,1053329471,ES +1053329472,1053329503,EU 1053329504,1053329527,ES 1053329528,1053329631,EU 1053329632,1053329663,ES @@ -8910,11 +12202,11 @@ 1053331712,1053331887,NL 1053331888,1053331903,EU 1053331904,1053331927,NL -1053331928,1053332223,EU -1053332224,1053332271,NL +1053331928,1053331967,EU +1053331968,1053332271,NL 1053332272,1053332319,EU -1053332320,1053332415,NL -1053332416,1053332447,EU +1053332320,1053332351,NL +1053332352,1053332447,EU 1053332448,1053332479,NL 1053332480,1053332991,EU 1053332992,1053334015,BE @@ -8931,9 +12223,10 @@ 1053337088,1053337119,ZA 1053337120,1053337127,EU 1053337128,1053337183,ZA -1053337184,1053337599,EU -1053337600,1053337631,CH -1053337632,1053338111,EU +1053337184,1053337607,EU +1053337608,1053337631,CH +1053337632,1053337855,EU +1053337856,1053338111,ZA 1053338112,1053338623,FI 1053338624,1053338943,NO 1053338944,1053338975,EU @@ -8958,13 +12251,13 @@ 1053341576,1053341695,GB 1053341696,1053343743,EU 1053343744,1053344255,FI -1053344256,1053344511,EU -1053344512,1053344767,BG -1053344768,1053345279,EU +1053344256,1053345279,EU 1053345280,1053345375,PK 1053345376,1053345407,EU 1053345408,1053345471,PK -1053345472,1053348639,EU +1053345472,1053347839,EU +1053347840,1053348351,NL +1053348352,1053348639,EU 1053348640,1053348655,PT 1053348656,1053349119,EU 1053349120,1053349631,NL @@ -8974,23 +12267,21 @@ 1053350144,1053350335,IE 1053350336,1053350351,EU 1053350352,1053350359,IE -1053350360,1053350367,EU -1053350368,1053350391,IE +1053350360,1053350375,EU +1053350376,1053350391,IE 1053350392,1053350399,EU 1053350400,1053350479,BE 1053350480,1053350655,EU 1053350656,1053350911,BE 1053350912,1053351935,EU 1053351936,1053352191,IL -1053352192,1053353023,EU -1053353024,1053353031,IE -1053353032,1053353103,EU +1053352192,1053353103,EU 1053353104,1053353119,IE 1053353120,1053353135,EU 1053353136,1053353215,IE 1053353216,1053353223,GB -1053353224,1053353255,IE -1053353256,1053353263,EU +1053353224,1053353247,IE +1053353248,1053353263,EU 1053353264,1053353279,IE 1053353280,1053353983,EU 1053353984,1053354239,IL @@ -9002,7 +12293,9 @@ 1053354752,1053354831,IL 1053354832,1053354855,EU 1053354856,1053354863,IL -1053354864,1053354911,EU +1053354864,1053354871,EU +1053354872,1053354879,IL +1053354880,1053354911,EU 1053354912,1053355007,IL 1053355008,1053360127,EU 1053360128,1053364223,ES @@ -9030,7 +12323,6 @@ 1053687808,1053702635,DE 1053702636,1053702639,GB 1053702640,1053753343,DE -1053753344,1053818879,RU 1053818880,1053819391,DE 1053819392,1053819423,EU 1053819424,1053819439,DE @@ -9049,7 +12341,9 @@ 1053824024,1053824127,EU 1053824128,1053824255,NL 1053824256,1053825023,EU -1053825024,1053826047,ES +1053825024,1053825791,ES +1053825792,1053825919,GB +1053825920,1053826047,ES 1053826048,1053826815,EU 1053826816,1053827327,DE 1053827328,1053827583,BE @@ -9074,7 +12368,8 @@ 1053840448,1053840511,DE 1053840512,1053843199,EU 1053843200,1053843231,DK -1053843232,1053843711,EU +1053843232,1053843247,GB +1053843248,1053843711,EU 1053843712,1053843967,DE 1053843968,1053844223,GB 1053844224,1053844479,DE @@ -9171,12 +12466,11 @@ 1053894744,1053894751,GE 1053894752,1053894783,DE 1053894784,1053894815,IL -1053894816,1053894831,NL +1053894816,1053894831,DE 1053894832,1053894847,US 1053894848,1053895423,DE 1053895424,1053895679,GB -1053895680,1053895935,US -1053895936,1053896087,DE +1053895680,1053896087,DE 1053896088,1053896095,US 1053896096,1053896127,GB 1053896128,1053896159,DE @@ -9202,7 +12496,11 @@ 1054130176,1054138367,LT 1054138368,1054146559,AZ 1054146560,1054179327,RU -1054179328,1054187519,GB +1054179328,1054180095,GB +1054180096,1054180351,DE +1054180352,1054181375,GB +1054181376,1054186495,DE +1054186496,1054187519,GB 1054187520,1054195711,BG 1054195712,1054212095,BE 1054212096,1054212519,DE @@ -9303,8 +12601,8 @@ 1054969040,1054978815,DE 1054978816,1054979071,FR 1054979072,1055129599,DE -1055129600,1055186943,CY -1055186944,1055194623,GR +1055129600,1055187027,CY +1055187028,1055194623,GR 1055194624,1055195135,CY 1055195136,1055196159,EU 1055196160,1055197823,CH @@ -9427,8 +12725,7 @@ 1055253056,1055253087,ES 1055253088,1055256447,EU 1055256448,1055256463,ES -1055256464,1055260671,EU -1055260672,1055326207,SE +1055256464,1055326207,EU 1055326208,1055334399,RU 1055334400,1055342591,IE 1055342592,1055358975,RO @@ -9472,9 +12769,7 @@ 1055981568,1055989759,IT 1055989760,1055992310,DE 1055992311,1055992318,CH -1055992319,1055995135,DE -1055995136,1055995391,NL -1055995392,1055997951,DE +1055992319,1055997951,DE 1055997952,1056014335,FR 1056014336,1056022527,EG 1056022528,1056030719,GB @@ -9494,7 +12789,11 @@ 1056244480,1056251903,CH 1056251904,1056260095,RU 1056260096,1056276479,CZ -1056276480,1056374783,DE +1056276480,1056286511,DE +1056286512,1056286519,A2 +1056286520,1056286591,DE +1056286592,1056286655,A2 +1056286656,1056374783,DE 1056374784,1056440319,SE 1056440320,1056473087,TR 1056473088,1056505087,FI @@ -9507,6 +12806,7 @@ 1056505856,1056514047,PT 1056514048,1056522239,IT 1056522240,1056538623,AT +1056538624,1056546815,RU 1056546816,1056555007,NO 1056555008,1056571391,GB 1056571392,1056669695,NL @@ -9705,7 +13005,9 @@ 1064445184,1064445439,PK 1064445440,1064650751,US 1064650752,1064651775,EC -1064651776,1064973055,US +1064651776,1064769023,US +1064769024,1064769535,A2 +1064769536,1064973055,US 1064973056,1064973183,AU 1064973184,1065049471,US 1065049472,1065049535,CA @@ -9721,55 +13023,27 @@ 1065611264,1065615359,PR 1065615360,1065811967,US 1065811968,1065820159,CA -1065824256,1065873407,US +1065820160,1065873407,US 1065873408,1065877503,PR 1065877504,1065906175,US 1065906176,1065908223,KY 1065908224,1065926815,US 1065926816,1065926831,CA -1065926832,1066139647,US -1066203904,1066204031,US -1066401792,1066404607,US -1066404608,1066404863,A2 -1066404864,1066475263,US -1066475264,1066475519,CA -1066475520,1066584063,US +1065926832,1066311679,US +1066311680,1066315775,CA +1066315776,1066332159,US +1066332160,1066336255,CA +1066336256,1066344447,US +1066352640,1066369023,JM +1066369024,1066584063,US 1066584064,1066586111,PE 1066586112,1066604927,US 1066604928,1066604959,CA -1066604960,1066627335,US -1066627336,1066627343,CA -1066627344,1066718559,US -1066718560,1066718591,PR -1066718592,1066736447,US -1066736448,1066736479,NO -1066736480,1066828095,US -1066828096,1066828127,HK -1066828128,1066828151,US -1066828152,1066828159,CN -1066828160,1066828255,US -1066828256,1066828287,HK -1066828288,1066829311,US -1066829312,1066829567,HK -1066829568,1066830079,US -1066830080,1066830111,SI -1066830112,1066830207,US -1066830208,1066830239,SG -1066830240,1066830271,US -1066830272,1066830591,SG -1066830592,1066830799,US -1066830800,1066830807,SG -1066830808,1066830815,US -1066830816,1066830847,SG -1066830848,1066831039,US -1066831040,1066831071,JP -1066831072,1066832527,US -1066832528,1066832543,CA -1066832544,1066834607,US -1066834608,1066834623,IS -1066834624,1066898783,US -1066898784,1066898815,CO -1066898816,1067473471,US +1066604960,1066606295,US +1066606296,1066606303,GB +1066606304,1066831071,US +1066831072,1066831087,JP +1066831088,1067473471,US 1067473472,1067473535,CA 1067473536,1067474751,US 1067474752,1067474767,NL @@ -9934,7 +13208,9 @@ 1071309696,1071309727,HK 1071309728,1071318783,US 1071318784,1071319039,IN -1071319040,1071362079,US +1071319040,1071321487,US +1071321488,1071321503,HK +1071321504,1071362079,US 1071362080,1071362111,HK 1071362112,1071362207,US 1071362208,1071362239,HK @@ -10012,7 +13288,8 @@ 1072928128,1072928255,US 1072928256,1072928263,CA 1072928264,1072928287,US -1072928288,1072928383,CA +1072928288,1072928319,CA +1072928320,1072928383,GA 1072928384,1072928447,US 1072928448,1072929535,CA 1072929536,1072929791,US @@ -10024,7 +13301,8 @@ 1072931584,1072931839,SY 1072931840,1072932607,CA 1072932608,1072932863,NG -1072932864,1072934399,CA +1072932864,1072933887,US +1072933888,1072934399,CA 1072934400,1072934655,US 1072934656,1072934783,CA 1072934784,1072934847,AU @@ -10054,15 +13332,13 @@ 1073022976,1073025791,HN 1073025792,1073026047,NI 1073026048,1073026303,US -1073026304,1073026431,DO -1073026432,1073027071,US +1073026304,1073026559,DO +1073026560,1073027071,PR 1073027072,1073028351,NI 1073028352,1073028607,US 1073028608,1073029119,GD 1073029120,1073031167,PR -1073031168,1073031231,US -1073031232,1073031263,AN -1073031264,1073031423,US +1073031168,1073031423,US 1073031424,1073031935,AN 1073031936,1073033215,US 1073033216,1073035263,AN @@ -10075,7 +13351,11 @@ 1073038336,1073039359,US 1073039360,1073041407,GT 1073041408,1073043455,CO -1073043456,1073045503,US +1073043456,1073043967,PR +1073043968,1073044735,US +1073044736,1073044991,PR +1073044992,1073045247,US +1073045248,1073045503,PR 1073045504,1073047551,CO 1073047552,1073049599,PR 1073049600,1073053695,BS @@ -10237,7 +13517,11 @@ 1074229248,1074241535,CA 1074241536,1074249791,US 1074249792,1074249807,BB -1074249808,1074397439,US +1074249808,1074371583,US +1074371584,1074372095,A1 +1074372096,1074375935,US +1074375936,1074376191,A1 +1074376192,1074397439,US 1074397440,1074399039,CA 1074399040,1074399231,US 1074399232,1074408319,CA @@ -10259,9 +13543,7 @@ 1074675312,1074675327,NO 1074675328,1074675679,US 1074675680,1074675687,GB -1074675688,1074677759,US -1074677760,1074678271,BG -1074678272,1074680623,US +1074675688,1074680623,US 1074680624,1074680639,CA 1074680640,1074680703,US 1074680704,1074680719,IL @@ -10339,7 +13621,9 @@ 1074962432,1074970623,CA 1074970624,1075117287,US 1075117288,1075117311,IN -1075117312,1075421183,US +1075117312,1075265535,US +1075265536,1075269631,KR +1075269632,1075421183,US 1075421184,1075429375,CA 1075429376,1075478527,US 1075478528,1075479103,CA @@ -10350,9 +13634,7 @@ 1075479568,1075479583,US 1075479584,1075479607,CA 1075479608,1075479615,US -1075479616,1075484047,CA -1075484048,1075484063,US -1075484064,1075484263,CA +1075479616,1075484263,CA 1075484264,1075484271,US 1075484272,1075494911,CA 1075494912,1075513151,US @@ -10378,7 +13660,9 @@ 1075577272,1075577279,GB 1075577280,1075577311,NO 1075577312,1075577599,GB -1075577600,1075577775,NO +1075577600,1075577615,NO +1075577616,1075577623,GB +1075577624,1075577775,NO 1075577776,1075577791,GB 1075577792,1075577855,NO 1075577856,1075578111,GB @@ -10486,8 +13770,8 @@ 1075972352,1075973887,US 1075973888,1075974143,CA 1075974144,1075975167,US -1075975168,1075975423,CA -1075975424,1075976191,US +1075975168,1075976175,CA +1075976176,1075976191,US 1075976192,1075976511,CA 1075976512,1075976543,US 1075976544,1075976647,CA @@ -10514,7 +13798,7 @@ 1075982592,1075982599,US 1075982600,1075982607,NZ 1075982608,1075982655,CA -1075982656,1075982671,US +1075982656,1075982671,MX 1075982672,1075982687,CA 1075982688,1075982703,US 1075982704,1075982751,CA @@ -10529,27 +13813,14 @@ 1075983232,1075984383,CA 1075984384,1075984823,US 1075984824,1075984831,CA -1075984832,1075985415,US -1075985416,1075985423,CR -1075985424,1075985919,US -1075985920,1075986431,CA -1075986432,1075986687,US -1075986688,1075986943,CA -1075986944,1075987199,US -1075987200,1075987455,CA -1075987456,1075987711,US -1075987712,1075987951,CA -1075987952,1075988223,US -1075988224,1075988287,CA -1075988288,1075988319,US -1075988320,1075988479,CA -1075988480,1075988735,US -1075988736,1075988991,CA -1075988992,1075989119,US -1075989120,1075989231,CA -1075989232,1075989247,US +1075984832,1075985919,US +1075985920,1075989055,CA +1075989056,1075989119,US +1075989120,1075989247,CA 1075989248,1075989311,FI -1075989312,1075989359,CA +1075989312,1075989327,CA +1075989328,1075989335,US +1075989336,1075989359,CA 1075989360,1075989375,US 1075989376,1075989455,CA 1075989456,1075989471,US @@ -10564,11 +13835,16 @@ 1075992320,1075992447,GB 1075992448,1075993087,US 1075993088,1075993103,CA -1075993104,1075995007,US +1075993104,1075994607,US +1075994608,1075994623,BE +1075994624,1075995007,CA 1075995008,1075995023,VG -1075995024,1075995047,US -1075995048,1075995055,CA -1075995056,1075995103,US +1075995024,1075995039,US +1075995040,1075995055,CA +1075995056,1075995071,US +1075995072,1075995079,MX +1075995080,1075995087,CA +1075995088,1075995103,US 1075995104,1075995263,CA 1075995264,1075995295,US 1075995296,1075995326,CA @@ -10579,9 +13855,7 @@ 1075995504,1075995519,MX 1075995520,1075995567,CA 1075995568,1075995583,CN -1075995584,1075995647,CA -1075995648,1075995903,US -1075995904,1075996671,CA +1075995584,1075996671,CA 1075996672,1075996751,US 1075996752,1075996767,CA 1075996768,1075996799,BV @@ -10613,7 +13887,9 @@ 1076003072,1076003327,CA 1076003328,1076003359,US 1076003360,1076003375,CA -1076003376,1076003519,US +1076003376,1076003391,US +1076003392,1076003407,CA +1076003408,1076003519,US 1076003520,1076004383,CA 1076004384,1076004423,US 1076004424,1076004431,CA @@ -10640,9 +13916,7 @@ 1076005280,1076005311,US 1076005312,1076005319,CA 1076005320,1076005375,US -1076005376,1076005727,CA -1076005728,1076005759,US -1076005760,1076005887,CA +1076005376,1076005887,CA 1076005888,1076006015,US 1076006016,1076006047,CA 1076006048,1076006079,US @@ -10658,11 +13932,9 @@ 1076007168,1076007183,US 1076007184,1076007247,CA 1076007248,1076007263,US -1076007264,1076007679,CA -1076007680,1076007935,US -1076007936,1076007967,CA -1076007968,1076007983,US -1076007984,1076008063,CA +1076007264,1076007947,CA +1076007948,1076007951,US +1076007952,1076008063,CA 1076008064,1076008191,US 1076008192,1076009631,CA 1076009632,1076009639,US @@ -10672,10 +13944,12 @@ 1076009696,1076009711,US 1076009712,1076009887,CA 1076009888,1076009919,US -1076009920,1076010687,CA -1076010688,1076010695,US -1076010696,1076011007,CA -1076011008,1076024307,US +1076009920,1076011007,CA +1076011008,1076012236,US +1076012237,1076012237,IN +1076012238,1076013094,US +1076013095,1076013095,IN +1076013096,1076024307,US 1076024308,1076024315,CA 1076024316,1076026023,US 1076026024,1076026031,CA @@ -10688,9 +13962,7 @@ 1076026976,1076027031,US 1076027032,1076027263,CA 1076027264,1076027295,US -1076027296,1076027391,CA -1076027392,1076027399,US -1076027400,1076027407,CA +1076027296,1076027407,CA 1076027408,1076027423,US 1076027424,1076027711,CA 1076027712,1076027727,US @@ -10710,7 +13982,9 @@ 1076029224,1076029231,DM 1076029232,1076029239,CA 1076029240,1076029247,US -1076029248,1076029415,CA +1076029248,1076029311,CA +1076029312,1076029319,GB +1076029320,1076029415,CA 1076029416,1076029422,US 1076029423,1076029430,CA 1076029431,1076029439,US @@ -10789,39 +14063,34 @@ 1076049472,1076049503,PR 1076049504,1076049919,US 1076049920,1076050175,IL -1076050176,1076166655,US +1076050176,1076174847,US +1076174848,1076178943,BM +1076178944,1076183039,US 1076183040,1076183071,IN 1076183072,1076183231,US 1076183232,1076183295,CA -1076183296,1076183807,US +1076183296,1076183423,US +1076183424,1076183487,IN +1076183488,1076183807,US 1076183808,1076184063,CA 1076184064,1076184095,VE -1076184096,1076184127,US -1076184128,1076184159,VE +1076184096,1076184159,US 1076184160,1076184191,PK 1076184192,1076184223,IN 1076184224,1076184255,US 1076184256,1076184287,BE 1076184288,1076184319,CA 1076184320,1076184575,US -1076184576,1076184639,CA -1076184640,1076184703,SG -1076184704,1076184831,CA +1076184576,1076184831,CA 1076184832,1076184895,US 1076184896,1076184927,FR -1076184928,1076184959,US -1076184960,1076184991,VE -1076184992,1076185023,US -1076185024,1076185055,GB -1076185056,1076185215,US +1076184928,1076185215,US 1076185216,1076185343,CA 1076185344,1076185439,US 1076185440,1076185471,IT 1076185472,1076185503,US 1076185504,1076185535,DO -1076185536,1076185599,US -1076185600,1076185855,MY -1076185856,1076185919,US +1076185536,1076185919,US 1076185920,1076185951,CA 1076185952,1076185983,US 1076185984,1076186015,PK @@ -10854,15 +14123,16 @@ 1076189344,1076189407,US 1076189408,1076189439,IN 1076189440,1076189695,US -1076189696,1076189951,CA +1076189696,1076189759,IN +1076189760,1076189823,CA +1076189824,1076189887,US +1076189888,1076189951,CA 1076189952,1076190079,US 1076190080,1076190143,IN 1076190144,1076190175,BE 1076190176,1076190207,IN 1076190208,1076190463,CA -1076190464,1076190655,US -1076190656,1076190719,CA -1076190720,1076190783,US +1076190464,1076190783,US 1076190784,1076190815,CA 1076190816,1076190847,IN 1076190848,1076190913,US @@ -10870,13 +14140,12 @@ 1076190946,1076191231,US 1076191232,1076191487,CA 1076191488,1076192063,US -1076192064,1076192191,CA +1076192064,1076192127,IN +1076192128,1076192191,CA 1076192192,1076192255,US 1076192256,1076192383,BE -1076192384,1076192639,US -1076192640,1076192767,CA -1076192768,1076192831,IN -1076192832,1076192895,KR +1076192384,1076192767,US +1076192768,1076192895,IN 1076192896,1076193055,US 1076193056,1076193087,AU 1076193088,1076193151,US @@ -10906,8 +14175,7 @@ 1076196416,1076196479,US 1076196480,1076196511,FR 1076196512,1076196575,AT -1076196576,1076196607,CA -1076196608,1076196641,US +1076196576,1076196641,US 1076196642,1076196671,BE 1076196672,1076196703,US 1076196704,1076196735,FR @@ -11317,9 +14585,7 @@ 1076764672,1076765183,A1 1076765184,1076765439,CA 1076765440,1076765695,A1 -1076765696,1076766783,CA -1076766784,1076766847,A1 -1076766848,1076767231,CA +1076765696,1076767231,CA 1076767232,1076767743,A1 1076767744,1076768511,CA 1076768512,1076768767,A1 @@ -11648,9 +14914,7 @@ 1077452800,1077460991,JP 1077460992,1077469183,US 1077469184,1077477375,CA -1077477376,1077489855,US -1077489856,1077489919,GB -1077489920,1077506047,US +1077477376,1077506047,US 1077506048,1077510143,LS 1077510144,1077561327,US 1077561328,1077561343,AR @@ -11689,13 +14953,17 @@ 1077839104,1077839119,ES 1077839120,1077839543,US 1077839544,1077839551,ES -1077839552,1077841151,US +1077839552,1077840383,US +1077840384,1077840511,A1 +1077840512,1077841151,US 1077841152,1077841407,GB 1077841408,1077841671,US 1077841672,1077841679,ES 1077841680,1077843719,US 1077843720,1077843727,CN -1077843728,1077846271,US +1077843728,1077844383,US +1077844384,1077844391,A1 +1077844392,1077846271,US 1077846272,1077846527,JP 1077846528,1077848575,US 1077848576,1077848831,GR @@ -11705,9 +14973,7 @@ 1077851472,1077851487,HK 1077851488,1077852671,US 1077852672,1077852927,CA -1077852928,1077853183,US -1077853184,1077853439,IT -1077853440,1077856015,US +1077852928,1077856015,US 1077856016,1077856031,IT 1077856032,1077856127,US 1077856128,1077856191,AU @@ -11726,10 +14992,8 @@ 1077859952,1077859967,US 1077859968,1077860095,IT 1077860096,1077861119,US -1077861120,1077861631,IT -1077861632,1077862911,US -1077862912,1077863167,IT -1077863168,1077863207,US +1077861120,1077861375,IT +1077861376,1077863207,US 1077863208,1077863215,NG 1077863216,1077864703,US 1077864704,1077864719,IT @@ -11749,7 +15013,10 @@ 1077870336,1077870591,CN 1077870592,1077936137,US 1077936138,1077936141,CN -1077936142,1077936169,US +1077936142,1077936149,US +1077936150,1077936150,NL +1077936151,1077936151,GB +1077936152,1077936169,US 1077936170,1077936173,CA 1077936174,1077936177,GB 1077936178,1077936189,US @@ -11766,7 +15033,7 @@ 1077936258,1077936261,AU 1077936262,1077936265,IN 1077936266,1077936273,US -1077936274,1077936277,BR +1077936274,1077936277,ES 1077936278,1077936295,US 1077936296,1077936296,CA 1077936297,1077936297,US @@ -11779,7 +15046,7 @@ 1077936322,1077936325,GB 1077936326,1077936329,MX 1077936330,1077936345,US -1077936346,1077936349,PE +1077936346,1077936349,DO 1077936350,1077936351,IN 1077936352,1077936365,US 1077936366,1077936369,NO @@ -11789,13 +15056,15 @@ 1077936382,1077936401,US 1077936402,1077936409,GB 1077936410,1077936413,CO -1077936414,1077936421,US +1077936414,1077936417,AU +1077936418,1077936421,US 1077936422,1077936422,CA 1077936423,1077936426,US 1077936427,1077936429,TH -1077936430,1077936437,US +1077936430,1077936433,US +1077936434,1077936437,CZ 1077936438,1077936441,NO -1077936442,1077936445,TH +1077936442,1077936445,US 1077936446,1077936449,TW 1077936450,1077936453,US 1077936454,1077936457,PT @@ -11810,8 +15079,7 @@ 1077936478,1077936485,US 1077936486,1077936489,TR 1077936490,1077936493,FR -1077936494,1077936497,CN -1077936498,1077936501,US +1077936494,1077936501,US 1077936502,1077936505,AR 1077936506,1077936513,US 1077936514,1077936517,BR @@ -11830,109 +15098,593 @@ 1077936598,1077936601,CA 1077936602,1077936605,TH 1077936606,1077936609,JO -1077936610,1077936621,US +1077936610,1077936613,US +1077936614,1077936617,UY +1077936618,1077936621,US 1077936622,1077936622,AU -1077936623,1077936626,US -1077936627,1077936630,CH +1077936623,1077936630,US 1077936631,1077936634,PE 1077936635,1077936638,CA 1077936639,1077936645,US 1077936646,1077936649,HK -1077936650,1077936653,CA -1077936654,1077936667,US -1077936668,1077936671,CA -1077936672,1077936679,US -1077936680,1077936683,TH -1077936684,1077936684,RO -1077936685,1077936691,US -1077936692,1077936695,IT -1077936696,1077936699,US -1077936700,1077936703,TH -1077936704,1077936742,US -1077936743,1077936743,BE -1077936744,1077936747,IN -1077936748,1077936759,US -1077936760,1077936763,AU -1077936764,1077936767,US -1077936768,1077936777,AU -1077936778,1077936789,US -1077936790,1077936793,NG -1077936794,1077936797,AU -1077936798,1077936801,SI -1077936802,1077936805,AU -1077936806,1077936814,US -1077936815,1077936818,BR +1077936650,1077936695,US +1077936696,1077936699,OM +1077936700,1077936759,US +1077936760,1077936763,GB +1077936764,1077936771,US +1077936772,1077936775,IT +1077936776,1077936818,US 1077936819,1077936822,RS -1077936823,1077936826,LV -1077936827,1077936834,US -1077936835,1077936838,CL -1077936839,1077936842,TH -1077936843,1077936846,US +1077936823,1077936834,US +1077936835,1077936838,VE +1077936839,1077936846,US 1077936847,1077936850,PK -1077936851,1077936854,GB +1077936851,1077936854,US 1077936855,1077936859,IN 1077936860,1077936879,US 1077936880,1077936883,IT -1077936884,1077936887,CO -1077936888,1077938949,US +1077936884,1077936891,US +1077936892,1077936892,OM +1077936893,1077936913,US +1077936914,1077936917,ES +1077936918,1077936921,ID +1077936922,1077936945,US +1077936946,1077936949,GB +1077936950,1077936957,US +1077936958,1077936961,MA +1077936962,1077936965,TR +1077936966,1077936969,SE +1077936970,1077936981,US +1077936982,1077936985,AR +1077936986,1077936989,ES +1077936990,1077937005,US +1077937006,1077937007,CA +1077937008,1077937015,US +1077937016,1077937019,CA +1077937020,1077937023,GB +1077937024,1077937027,DE +1077937028,1077937047,US +1077937048,1077937051,BZ +1077937052,1077937067,US +1077937068,1077937071,GB +1077937072,1077937079,US +1077937080,1077937083,SE +1077937084,1077937087,US +1077937088,1077937088,BE +1077937089,1077937089,CA +1077937090,1077937093,IT +1077937094,1077937105,US +1077937106,1077937109,CA +1077937110,1077937129,US +1077937130,1077937133,CA +1077937134,1077937137,NG +1077937138,1077937145,US +1077937146,1077937149,CA +1077937150,1077937157,US +1077937158,1077937161,TR +1077937162,1077937165,NI +1077937166,1077937180,US +1077937181,1077937184,SA +1077937185,1077937196,US +1077937197,1077937200,LK +1077937201,1077937204,GB +1077937205,1077937208,AT +1077937209,1077937212,US +1077937213,1077937214,CA +1077937215,1077937222,US +1077937223,1077937226,CA +1077937227,1077937230,JM +1077937231,1077937235,US +1077937236,1077937239,JO +1077937240,1077937260,US +1077937261,1077937269,EE +1077937270,1077937273,LV +1077937274,1077937289,US +1077937290,1077937293,GF +1077937294,1077937297,US +1077937298,1077937301,GB +1077937302,1077937305,US +1077937306,1077937309,ES +1077937310,1077937335,US +1077937336,1077937349,GB +1077937350,1077937353,CA +1077937354,1077937357,US +1077937358,1077937361,CA +1077937362,1077937365,US +1077937366,1077937369,AR +1077937370,1077937394,CA +1077937395,1077937398,CN +1077937399,1077937402,MX +1077937403,1077937417,US +1077937418,1077937421,IN +1077937422,1077937429,US +1077937430,1077937433,TH +1077937434,1077937437,GB +1077937438,1077937441,CA +1077937442,1077937445,US +1077937446,1077937447,ES +1077937448,1077937449,US +1077937450,1077937453,GR +1077937454,1077937457,SA +1077937458,1077937461,GB +1077937462,1077937474,US +1077937475,1077937478,DK +1077937479,1077937482,MX +1077937483,1077937484,GB +1077937485,1077937485,LK +1077937486,1077937502,US +1077937503,1077937506,GB +1077937507,1077937510,CH +1077937511,1077937514,CR +1077937515,1077937531,US +1077937532,1077937535,IN +1077937536,1077937539,ES +1077937540,1077937547,AT +1077937548,1077937571,US +1077937572,1077937575,CY +1077937576,1077937577,GB +1077937578,1077937597,US +1077937598,1077937601,IN +1077937602,1077937609,US +1077937610,1077937613,NZ +1077937614,1077937617,US +1077937618,1077937621,IN +1077937622,1077937625,GB +1077937626,1077937629,IT +1077937630,1077937678,US +1077937679,1077937682,ZA +1077937683,1077937686,US +1077937687,1077937690,IN +1077937691,1077937702,US +1077937703,1077937706,PK +1077937707,1077937710,RS +1077937711,1077937714,AN +1077937715,1077937718,US +1077937719,1077937722,IN +1077937723,1077937726,AU +1077937727,1077937730,SG +1077937731,1077937734,US +1077937735,1077937738,BA +1077937739,1077937742,IL +1077937743,1077937750,US +1077937751,1077937754,AU +1077937755,1077937758,US +1077937759,1077937762,NL +1077937763,1077937766,US +1077937767,1077937770,RU +1077937771,1077937782,US +1077937783,1077937786,GR +1077937787,1077937790,GB +1077937791,1077937802,US +1077937803,1077937806,BE +1077937807,1077937822,US +1077937823,1077937826,GB +1077937827,1077937846,US +1077937847,1077937850,TH +1077937851,1077937854,US +1077937855,1077937866,TH +1077937867,1077937870,GB +1077937871,1077937878,US +1077937879,1077937882,GB +1077937883,1077937886,US +1077937887,1077937890,GR +1077937891,1077937902,US +1077937903,1077937906,IN +1077937907,1077937933,US +1077937934,1077937937,IT +1077937938,1077937941,US +1077937942,1077937945,NO +1077937946,1077937949,MY +1077937950,1077937953,CL +1077937954,1077937963,US +1077937964,1077937967,NO +1077937968,1077937975,US +1077937976,1077937979,TH +1077937980,1077937983,CN +1077937984,1077938003,US +1077938004,1077938007,TH +1077938008,1077938011,US +1077938012,1077938021,GB +1077938022,1077938025,US +1077938026,1077938029,FR +1077938030,1077938033,US +1077938034,1077938037,SA +1077938038,1077938041,AU +1077938042,1077938045,US +1077938046,1077938049,RU +1077938050,1077938053,US +1077938054,1077938057,AU +1077938058,1077938073,US +1077938074,1077938077,CN +1077938078,1077938081,US +1077938082,1077938085,IN +1077938086,1077938089,US +1077938090,1077938093,CA +1077938094,1077938121,US +1077938122,1077938125,DZ +1077938126,1077938129,IN +1077938130,1077938133,ID +1077938134,1077938137,CA +1077938138,1077938141,GB +1077938142,1077938145,CA +1077938146,1077938149,US +1077938150,1077938153,IN +1077938154,1077938157,AR +1077938158,1077938185,US +1077938186,1077938189,PH +1077938190,1077938201,US +1077938202,1077938205,CA +1077938206,1077938209,AR +1077938210,1077938221,US +1077938222,1077938225,IN +1077938226,1077938233,US +1077938234,1077938237,AR +1077938238,1077938258,US +1077938259,1077938262,PE +1077938263,1077938266,CA +1077938267,1077938269,GB +1077938270,1077938277,US +1077938278,1077938281,GB +1077938282,1077938283,DE +1077938284,1077938284,CH +1077938285,1077938288,CA +1077938289,1077938296,GB +1077938297,1077938301,US +1077938302,1077938305,GB +1077938306,1077938309,US +1077938310,1077938313,TH +1077938314,1077938321,US +1077938322,1077938325,GB +1077938326,1077938329,PK +1077938330,1077938333,US +1077938334,1077938337,MX +1077938338,1077938345,US +1077938346,1077938349,SA +1077938350,1077938357,US +1077938358,1077938361,ID +1077938362,1077938365,US +1077938366,1077938372,IN +1077938373,1077938376,DK +1077938377,1077938380,IL +1077938381,1077938384,LT +1077938385,1077938396,US +1077938397,1077938400,CA +1077938401,1077938404,US +1077938405,1077938408,IT +1077938409,1077938412,US +1077938413,1077938416,PT +1077938417,1077938426,US +1077938427,1077938430,SE +1077938431,1077938437,US +1077938438,1077938441,PE +1077938442,1077938445,US +1077938446,1077938446,BE +1077938447,1077938490,US +1077938491,1077938494,MT +1077938495,1077938502,US +1077938503,1077938506,ES +1077938507,1077938510,DK +1077938511,1077938529,US +1077938530,1077938533,NZ +1077938534,1077938537,CA +1077938538,1077938541,ES +1077938542,1077938545,CY +1077938546,1077938551,US +1077938552,1077938552,ES +1077938553,1077938570,US +1077938571,1077938571,NL +1077938572,1077938572,US +1077938573,1077938576,CO +1077938577,1077938580,US +1077938581,1077938584,CA +1077938585,1077938588,US +1077938589,1077938592,MX +1077938593,1077938596,US +1077938597,1077938600,DO +1077938601,1077938630,US +1077938631,1077938644,IN +1077938645,1077938648,US +1077938649,1077938652,CA +1077938653,1077938656,CN +1077938657,1077938660,RO +1077938661,1077938664,TR +1077938665,1077938668,CA +1077938669,1077938672,US +1077938673,1077938676,GB +1077938677,1077938680,IN +1077938681,1077938702,US +1077938703,1077938706,ID +1077938707,1077938734,GB +1077938735,1077938735,PK +1077938736,1077938739,EG +1077938740,1077938749,NO +1077938750,1077938750,NL +1077938751,1077938765,US +1077938766,1077938769,CN +1077938770,1077938777,US +1077938778,1077938781,RO +1077938782,1077938785,US +1077938786,1077938789,GR +1077938790,1077938793,CA +1077938794,1077938797,IE +1077938798,1077938801,SG +1077938802,1077938805,US +1077938806,1077938809,DK +1077938810,1077938813,HK +1077938814,1077938829,US +1077938830,1077938831,ES +1077938832,1077938835,CA +1077938836,1077938848,US +1077938849,1077938852,IT +1077938853,1077938856,ES +1077938857,1077938860,EE +1077938861,1077938867,IN +1077938868,1077938871,CA +1077938872,1077938887,US +1077938888,1077938891,VI +1077938892,1077938895,SA +1077938896,1077938927,CA +1077938928,1077938931,US +1077938932,1077938935,MY +1077938936,1077938949,US 1077938950,1077938969,CA -1077938970,1077939209,US +1077938970,1077938981,US +1077938982,1077938982,NL +1077938983,1077938983,US +1077938984,1077938988,CA +1077938989,1077938992,ZA +1077938993,1077939005,US +1077939006,1077939009,BE +1077939010,1077939013,ID +1077939014,1077939017,GB +1077939018,1077939021,TH +1077939022,1077939025,GB +1077939026,1077939028,TH +1077939029,1077939032,US +1077939033,1077939036,IE +1077939037,1077939044,US +1077939045,1077939048,IN +1077939049,1077939060,US +1077939061,1077939064,IE +1077939065,1077939065,TH +1077939066,1077939069,CA +1077939070,1077939078,US +1077939079,1077939082,IN +1077939083,1077939086,CA +1077939087,1077939090,ES +1077939091,1077939099,US +1077939100,1077939103,ID +1077939104,1077939107,PS +1077939108,1077939111,GB +1077939112,1077939127,US +1077939128,1077939131,CA +1077939132,1077939135,US +1077939136,1077939139,IN +1077939140,1077939189,US +1077939190,1077939193,CA +1077939194,1077939209,US 1077939210,1077939210,BE -1077939211,1077939461,US -1077939462,1077939465,CA -1077939466,1077939725,US +1077939211,1077939218,US +1077939219,1077939219,NL +1077939220,1077939223,CA +1077939224,1077939228,BR +1077939229,1077939240,US +1077939241,1077939244,NL +1077939245,1077939251,US +1077939252,1077939255,BR +1077939256,1077939259,FR +1077939260,1077939263,US +1077939264,1077939267,MY +1077939268,1077939284,US +1077939285,1077939288,ES +1077939289,1077939304,US +1077939305,1077939308,GB +1077939309,1077939321,US +1077939322,1077939329,CA +1077939330,1077939342,US +1077939343,1077939346,ID +1077939347,1077939350,US +1077939351,1077939354,IN +1077939355,1077939358,GB +1077939359,1077939362,IN +1077939363,1077939375,US +1077939376,1077939379,AE +1077939380,1077939383,US +1077939384,1077939387,AU +1077939388,1077939391,PK +1077939392,1077939395,US +1077939396,1077939399,SE +1077939400,1077939410,US +1077939411,1077939414,CN +1077939415,1077939415,US +1077939416,1077939423,BE +1077939424,1077939439,US +1077939440,1077939443,IS +1077939444,1077939447,US +1077939448,1077939451,IN +1077939452,1077939491,US +1077939492,1077939495,GB +1077939496,1077939523,US +1077939524,1077939533,CA +1077939534,1077939569,US +1077939570,1077939574,OM +1077939575,1077939625,US +1077939626,1077939630,UY +1077939631,1077939634,GB +1077939635,1077939644,US +1077939645,1077939648,GR +1077939649,1077939652,IE +1077939653,1077939725,US 1077939726,1077939727,DE -1077939728,1077939735,US -1077939736,1077939739,IN -1077939740,1077939743,MY -1077939744,1077939747,CA -1077939748,1077939751,US -1077939752,1077939755,BZ -1077939756,1077939776,US -1077939777,1077939780,CA -1077939781,1077939784,GB -1077939785,1077939973,US +1077939728,1077939790,US +1077939791,1077939794,PE +1077939795,1077939823,US +1077939824,1077939827,BR +1077939828,1077939837,PT +1077939838,1077939895,US +1077939896,1077939899,GB +1077939900,1077939959,US +1077939960,1077939963,CA +1077939964,1077939973,US 1077939974,1077939977,CL 1077939978,1077939981,US 1077939982,1077939985,MU -1077939986,1077939993,US -1077939994,1077939997,CN +1077939986,1077939997,US 1077939998,1077940001,GB 1077940002,1077940005,EG -1077940006,1077940009,US -1077940010,1077940013,IN -1077940014,1077940060,US -1077940061,1077940068,GB -1077940069,1077940072,US -1077940073,1077940076,TH -1077940077,1077940089,US -1077940090,1077940097,GB -1077940098,1077940099,DE -1077940100,1077940101,US -1077940102,1077940105,IN -1077940106,1077940109,TR -1077940110,1077940113,CA -1077940114,1077940125,US -1077940126,1077940129,LV -1077940130,1077940133,US -1077940134,1077940137,GB -1077940138,1077940146,US -1077940147,1077940150,EG -1077940151,1077940174,US -1077940175,1077940178,GB -1077940179,1077940182,US -1077940183,1077940190,CA -1077940191,1077940196,US -1077940197,1077940200,MX -1077940201,1077940205,GB -1077940206,1077940209,IT -1077940210,1077940213,US -1077940214,1077940217,MX -1077940218,1077960839,US -1077960840,1077960847,CA -1077960848,1077960943,US -1077960944,1077960951,CO -1077960952,1077977087,US +1077940006,1077940072,US +1077940073,1077940076,BE +1077940077,1077940133,US +1077940134,1077940137,IN +1077940138,1077940285,US +1077940286,1077940289,AU +1077940290,1077940378,US +1077940379,1077940382,PK +1077940383,1077942394,US +1077942395,1077942398,CA +1077942399,1077942493,US +1077942494,1077942497,MX +1077942498,1077942501,VN +1077942502,1077942505,IN +1077942506,1077942509,GB +1077942510,1077942513,AE +1077942514,1077942572,US +1077942573,1077942576,CA +1077942577,1077942600,US +1077942601,1077942604,PE +1077942605,1077942620,US +1077942621,1077942624,BD +1077942625,1077942746,US +1077942747,1077942750,GB +1077942751,1077943045,US +1077943046,1077943053,FI +1077943054,1077943109,US +1077943110,1077943110,CN +1077943111,1077943179,US +1077943180,1077943183,AU +1077943184,1077943191,CA +1077943192,1077943313,US +1077943314,1077943314,BE +1077943315,1077943318,CN +1077943319,1077943378,US +1077943379,1077943379,CZ +1077943380,1077943406,US +1077943407,1077943410,AU +1077943411,1077943420,US +1077943421,1077943421,CN +1077943422,1077943425,US +1077943426,1077943426,CN +1077943427,1077943430,MY +1077943431,1077943503,US +1077943504,1077943507,CA +1077943508,1077943523,US +1077943524,1077943527,AU +1077943528,1077943531,US +1077943532,1077943535,AU +1077943536,1077943539,ID +1077943540,1077943540,US +1077943541,1077943544,CA +1077943545,1077943574,US +1077943575,1077943575,BE +1077943576,1077943576,CZ +1077943577,1077943634,US +1077943635,1077943638,ZA +1077943639,1077943674,US +1077943675,1077943675,CN +1077943676,1077943789,US +1077943790,1077943790,AU +1077943791,1077943794,US +1077943795,1077943796,SG +1077943797,1077943825,US +1077943826,1077943829,HK +1077943830,1077943845,US +1077943846,1077943849,AU +1077943850,1077943853,UA +1077943854,1077943867,US +1077943868,1077943868,CN +1077943869,1077943876,US +1077943877,1077943880,CA +1077943881,1077943896,US +1077943897,1077943897,CN +1077943898,1077943901,US +1077943902,1077943905,AU +1077943906,1077943921,US +1077943922,1077943925,AU +1077943926,1077943939,US +1077943940,1077943940,BE +1077943941,1077943944,US +1077943945,1077943948,KH +1077943949,1077943964,US +1077943965,1077943968,IN +1077943969,1077943970,US +1077943971,1077943972,CN +1077943973,1077943976,PK +1077943977,1077943984,AU +1077943985,1077943992,US +1077943993,1077943996,CA +1077943997,1077944000,AR +1077944001,1077944013,US +1077944014,1077944017,IN +1077944018,1077944025,US +1077944026,1077944028,CN +1077944029,1077944058,US +1077944059,1077944062,CA +1077944063,1077944081,US +1077944082,1077944085,CA +1077944086,1077944097,US +1077944098,1077944101,AU +1077944102,1077944127,US +1077944128,1077944128,BE +1077944129,1077944136,US +1077944137,1077944137,BE +1077944138,1077944141,PL +1077944142,1077944173,US +1077944174,1077944177,CA +1077944178,1077944181,US +1077944182,1077944182,CN +1077944183,1077944186,US +1077944187,1077944190,PH +1077944191,1077944198,US +1077944199,1077944202,CA +1077944203,1077944210,CN +1077944211,1077944218,US +1077944219,1077944219,BE +1077944220,1077944223,US +1077944224,1077944227,CA +1077944228,1077944231,US +1077944232,1077944235,JP +1077944236,1077944243,US +1077944244,1077944247,AU +1077944248,1077944255,US +1077944256,1077944259,TH +1077944260,1077944263,PY +1077944264,1077944271,US +1077944272,1077944275,CA +1077944276,1077944279,US +1077944280,1077944283,TH +1077944284,1077944284,US +1077944285,1077944286,RO +1077944287,1077944295,US +1077944296,1077944299,CZ +1077944300,1077944308,US +1077944309,1077944312,CN +1077944313,1077944316,US +1077944317,1077944317,CZ +1077944318,1077960703,US +1077960704,1077960711,CA +1077960712,1077960727,US +1077960728,1077960735,SE +1077960736,1077960751,US +1077960752,1077960759,CA +1077960760,1077960775,US +1077960776,1077960783,FR +1077960784,1077965855,US +1077965856,1077965887,BA +1077965888,1077965911,US +1077965912,1077965919,CA +1077965920,1077968831,US +1077968832,1077968839,CA +1077968840,1077977087,US 1077977088,1077985279,CA 1077985280,1077993471,US 1077993472,1078001663,CA @@ -11962,9 +15714,7 @@ 1078280896,1078281087,US 1078281088,1078281279,CA 1078281280,1078281295,US -1078281296,1078281663,CA -1078281664,1078281679,US -1078281680,1078281711,CA +1078281296,1078281711,CA 1078281712,1078281719,US 1078281720,1078281735,CA 1078281736,1078281743,US @@ -11984,7 +15734,9 @@ 1078283264,1078283264,US 1078283265,1078283375,CA 1078283376,1078283391,MX -1078283392,1078283423,US +1078283392,1078283399,US +1078283400,1078283407,MX +1078283408,1078283423,US 1078283424,1078283487,CA 1078283488,1078283503,US 1078283504,1078283551,CA @@ -11993,9 +15745,14 @@ 1078283648,1078283679,US 1078283680,1078283687,CA 1078283688,1078283695,US -1078283696,1078283751,CA +1078283696,1078283735,CA +1078283736,1078283743,US +1078283744,1078283751,CA 1078283752,1078283775,US -1078283776,1078284031,CA +1078283776,1078283999,CA +1078284000,1078284007,US +1078284008,1078284015,CA +1078284016,1078284031,US 1078284032,1078284159,BS 1078284160,1078284255,CA 1078284256,1078284351,US @@ -12136,11 +15893,15 @@ 1078435424,1078435455,HK 1078435456,1078435471,US 1078435472,1078435479,BM -1078435480,1078436719,US +1078435480,1078435871,US +1078435872,1078435879,A1 +1078435880,1078436719,US 1078436720,1078436727,JP 1078436728,1078436767,US 1078436768,1078436799,GB -1078436800,1078437471,US +1078436800,1078437263,US +1078437264,1078437271,CA +1078437272,1078437471,US 1078437472,1078437479,JP 1078437480,1078437503,US 1078437504,1078437567,IT @@ -12153,10 +15914,11 @@ 1078439680,1078439935,NL 1078439936,1078440127,US 1078440128,1078440159,MX -1078440160,1078452991,US +1078440160,1078443799,US +1078443800,1078443807,A1 +1078443808,1078452991,US 1078452992,1078453247,AZ -1078453248,1078453759,IN -1078453760,1078453887,US +1078453248,1078453887,US 1078453888,1078453903,AF 1078453904,1078453935,US 1078453936,1078453951,AT @@ -12172,9 +15934,33 @@ 1078456320,1078460415,CA 1078460416,1078517759,US 1078517760,1078525951,CA -1078525952,1078581311,US +1078525952,1078575679,US +1078575680,1078575743,AU +1078575744,1078575807,US +1078575808,1078575871,IN +1078575872,1078576639,US +1078576640,1078576895,CA +1078576896,1078576911,US +1078576912,1078576943,IN +1078576944,1078577711,US +1078577712,1078577727,IN +1078577728,1078578751,US +1078578752,1078578815,CA +1078578816,1078578879,US +1078578880,1078578943,IN +1078578944,1078580511,US +1078580512,1078580543,CA +1078580544,1078580703,US +1078580704,1078580735,CA +1078580736,1078581263,US +1078581264,1078581279,IN +1078581280,1078581311,US 1078581312,1078581327,CR -1078581328,1078600639,US +1078581328,1078581359,US +1078581360,1078581391,IN +1078581392,1078581503,US +1078581504,1078581759,CA +1078581760,1078600639,US 1078600640,1078600647,GB 1078600648,1078615679,US 1078615680,1078615711,GB @@ -12184,7 +15970,9 @@ 1078651056,1078651071,CA 1078651072,1078653695,US 1078653696,1078653727,CZ -1078653728,1078660799,US +1078653728,1078654431,US +1078654432,1078654439,AU +1078654440,1078660799,US 1078660800,1078660831,CN 1078660832,1078661807,US 1078661808,1078661823,IN @@ -12304,9 +16092,7 @@ 1078798688,1078798703,AU 1078798704,1078798911,US 1078798912,1078798927,IT -1078798928,1078799039,US -1078799040,1078799055,IT -1078799056,1078799071,US +1078798928,1078799071,US 1078799072,1078799087,CA 1078799088,1078799263,US 1078799264,1078799295,MX @@ -12361,7 +16147,9 @@ 1079323312,1079323327,US 1079323328,1079323415,CA 1079323416,1079323423,US -1079323424,1079323583,CA +1079323424,1079323447,CA +1079323448,1079323455,US +1079323456,1079323583,CA 1079323584,1079323599,US 1079323600,1079323615,CA 1079323616,1079323647,US @@ -12398,9 +16186,7 @@ 1079355360,1079355367,CA 1079355368,1079355967,US 1079355968,1079355991,CA -1079355992,1079356663,US -1079356664,1079356671,CA -1079356672,1079377919,US +1079355992,1079377919,US 1079377920,1079378943,CA 1079378944,1079379711,US 1079379712,1079380927,CA @@ -12455,7 +16241,9 @@ 1079396096,1079396351,CA 1079396352,1079397375,MP 1079397376,1079397631,MH -1079397632,1079399583,CA +1079397632,1079397887,CA +1079397888,1079398399,US +1079398400,1079399583,CA 1079399584,1079399599,US 1079399600,1079400447,CA 1079400448,1079400511,FR @@ -12472,8 +16260,8 @@ 1079403936,1079403999,CA 1079404000,1079404031,US 1079404032,1079404543,CA -1079404544,1079404799,US -1079404800,1079405023,CA +1079404544,1079404927,US +1079404928,1079405023,CA 1079405024,1079405119,US 1079405120,1079405407,CA 1079405408,1079405439,BD @@ -12496,7 +16284,9 @@ 1079411456,1079411711,PK 1079411712,1079413311,CA 1079413312,1079413343,US -1079413344,1079414783,CA +1079413344,1079413535,CA +1079413536,1079413567,US +1079413568,1079414783,CA 1079414784,1079415039,US 1079415040,1079415295,HN 1079415296,1079415807,CA @@ -12538,8 +16328,9 @@ 1079576496,1079578623,PR 1079578624,1079585391,US 1079585392,1079585407,IN -1079585408,1079648255,US -1079656448,1079664639,US +1079585408,1079623679,US +1079623680,1079627775,PR +1079627776,1079664639,US 1079664640,1079668735,CA 1079668736,1079827871,US 1079827872,1079827887,RU @@ -12547,13 +16338,13 @@ 1079857888,1079857903,NZ 1079857904,1079861247,US 1079861248,1079865343,CA -1079865344,1079944295,US +1079865344,1079943999,US +1079944000,1079944031,AU +1079944032,1079944295,US 1079944296,1079944303,IL -1079944304,1079944383,US -1079944384,1079944415,IL -1079944416,1079946143,US -1079946144,1079946151,FR -1079946152,1079946431,US +1079944304,1079946271,US +1079946272,1079946303,IE +1079946304,1079946431,US 1079946432,1079946463,CA 1079946464,1079953567,US 1079953568,1079953599,GB @@ -12563,7 +16354,9 @@ 1079994368,1079996415,CA 1079996416,1080021999,US 1080022000,1080022007,GT -1080022008,1080033279,US +1080022008,1080030527,US +1080030528,1080030591,AR +1080030592,1080033279,US 1080033280,1080295423,CA 1080295424,1080722827,US 1080722828,1080722837,IT @@ -12717,9 +16510,7 @@ 1081037312,1081037567,CA 1081037568,1081038335,US 1081038336,1081040895,CA -1081040896,1081085951,US -1081085952,1081086207,VI -1081086208,1081122559,US +1081040896,1081122559,US 1081122560,1081122815,VI 1081122816,1081212927,US 1081212928,1081278463,CA @@ -12787,9 +16578,7 @@ 1081397760,1081398783,CL 1081398784,1081399295,US 1081399296,1081401343,CL -1081401344,1081401375,AR -1081401376,1081401383,US -1081401384,1081401391,AR +1081401344,1081401391,AR 1081401392,1081401415,US 1081401416,1081401471,AR 1081401472,1081401567,US @@ -12871,8 +16660,8 @@ 1081463248,1081463255,US 1081463256,1081463263,BR 1081463264,1081463271,US -1081463272,1081463279,BR -1081463280,1081463295,US +1081463272,1081463287,BR +1081463288,1081463295,US 1081463296,1081463391,BR 1081463392,1081463423,US 1081463424,1081463487,BR @@ -12881,7 +16670,29 @@ 1081483248,1081483255,US 1081483256,1081483263,CA 1081483264,1081487359,US -1081487360,1081491455,A2 +1081487360,1081487375,A2 +1081487376,1081487383,US +1081487384,1081487391,A2 +1081487392,1081487407,US +1081487408,1081487567,A2 +1081487568,1081487583,US +1081487584,1081487919,A2 +1081487920,1081487927,US +1081487928,1081487959,A2 +1081487960,1081487967,US +1081487968,1081488055,A2 +1081488056,1081488079,US +1081488080,1081488087,A2 +1081488088,1081488095,US +1081488096,1081488135,A2 +1081488136,1081488151,US +1081488152,1081488199,A2 +1081488200,1081488215,US +1081488216,1081488223,A2 +1081488224,1081488247,US +1081488248,1081488255,A2 +1081488256,1081488287,US +1081488288,1081491455,A2 1081491456,1081565183,US 1081565184,1081573375,CA 1081573376,1081581615,US @@ -13029,11 +16840,7 @@ 1081912576,1081912639,DE 1081912640,1081927135,US 1081927136,1081927143,GB -1081927144,1081955327,US -1081955328,1081955583,CA -1081955584,1081955839,US -1081955840,1081956095,CA -1081956096,1081966871,US +1081927144,1081966871,US 1081966872,1081966879,AS 1081966880,1082091263,US 1082091264,1082091271,CN @@ -13051,9 +16858,25 @@ 1082315472,1082318847,CA 1082318848,1082344080,US 1082344081,1082344084,GB -1082344085,1082345733,US +1082344085,1082344784,US +1082344785,1082344786,HN +1082344787,1082345733,US 1082345734,1082345737,CA -1082345738,1082348319,US +1082345738,1082346510,US +1082346511,1082346514,IN +1082346515,1082347740,US +1082347741,1082347744,IN +1082347745,1082347760,US +1082347761,1082347763,MX +1082347764,1082347882,US +1082347883,1082347886,IN +1082347887,1082347892,US +1082347893,1082347896,IN +1082347897,1082348005,US +1082348006,1082348009,IN +1082348010,1082348115,US +1082348116,1082348123,CA +1082348124,1082348319,US 1082348320,1082348327,GB 1082348328,1082348335,US 1082348336,1082348351,GB @@ -13079,9 +16902,9 @@ 1082349744,1082349767,US 1082349768,1082349775,GR 1082349776,1082349783,IT -1082349784,1082349815,US -1082349816,1082349823,RU -1082349824,1082350655,US +1082349784,1082349807,US +1082349808,1082349815,GB +1082349816,1082350655,US 1082350656,1082350671,IT 1082350672,1082350911,US 1082350912,1082350943,RU @@ -13098,14 +16921,22 @@ 1082885344,1082885855,US 1082885856,1082885887,CA 1082885888,1082945535,US -1082945536,1082949631,CA +1082945536,1082948943,CA +1082948944,1082948959,US +1082948960,1082949631,CA 1082949632,1082952703,US 1082952704,1082952959,CA 1082952960,1082982399,US 1082982400,1083015167,CA -1083015168,1083263743,US +1083015168,1083261663,US +1083261664,1083261679,GB +1083261680,1083263743,US 1083263744,1083263999,GB -1083264000,1083396095,US +1083264000,1083264447,US +1083264448,1083264463,GB +1083264464,1083265023,US +1083265024,1083265279,CA +1083265280,1083396095,US 1083396096,1083400191,BM 1083400192,1083417727,US 1083417728,1083417791,CA @@ -13264,25 +17095,21 @@ 1086023288,1086023295,NZ 1086023296,1086023335,US 1086023336,1086023343,RO -1086023344,1086024031,US -1086024032,1086024047,CA -1086024048,1086027391,US +1086023344,1086025447,US +1086025448,1086025455,CA +1086025456,1086027391,US 1086027392,1086027407,IT -1086027408,1086027423,US -1086027424,1086027455,VN -1086027456,1086028031,US -1086028032,1086028287,PA -1086028288,1086028663,US +1086027408,1086028663,US 1086028664,1086028671,BR 1086028672,1086028751,US 1086028752,1086028759,BR -1086028760,1086029567,US -1086029568,1086029599,BO -1086029600,1086029727,US +1086028760,1086029727,US 1086029728,1086029743,CA 1086029744,1086309887,US 1086309888,1086310143,AU -1086310144,1086358143,US +1086310144,1086317823,US +1086317824,1086318079,CA +1086318080,1086358143,US 1086358144,1086358271,PA 1086358272,1086359231,US 1086359232,1086359295,IL @@ -13296,8 +17123,8 @@ 1086910336,1086910463,LB 1086910464,1086922751,US 1086922752,1086923343,CA -1086923344,1086923359,US -1086923360,1086930943,CA +1086923344,1086923351,US +1086923352,1086930943,CA 1086930944,1086955519,US 1086955520,1086971903,CA 1086971904,1087008767,US @@ -13414,9 +17241,7 @@ 1088101024,1088101031,PR 1088101032,1088108351,US 1088108352,1088108359,PR -1088108360,1088117199,US -1088117200,1088117207,PR -1088117208,1088120527,US +1088108360,1088120527,US 1088120528,1088120535,PR 1088120536,1088146151,US 1088146152,1088146159,PR @@ -13622,13 +17447,15 @@ 1089970176,1089974271,PR 1089974272,1090146303,US 1090146304,1090150399,CA -1090150400,1090207743,US +1090150400,1090172495,US +1090172496,1090172511,GB +1090172512,1090207743,US 1090207744,1090215935,CA 1090215936,1090355199,US 1090355200,1090356327,CA 1090356328,1090356335,US -1090356336,1090356407,CA -1090356408,1090356415,US +1090356336,1090356399,CA +1090356400,1090356415,US 1090356416,1090357535,CA 1090357536,1090357567,US 1090357568,1090357663,CA @@ -13660,9 +17487,7 @@ 1090448256,1090453503,CA 1090453504,1090497903,US 1090497904,1090497919,AU -1090497920,1091444735,US -1091444736,1091445247,A2 -1091445248,1091683357,US +1090497920,1091683357,US 1091683358,1091683367,GB 1091683368,1091683387,US 1091683388,1091683397,LB @@ -13739,9 +17564,7 @@ 1091695214,1091695223,CA 1091695224,1091695283,US 1091695284,1091695293,CA -1091695294,1091695487,US -1091695488,1091695551,SA -1091695552,1091797263,US +1091695294,1091797263,US 1091797264,1091797279,IT 1091797280,1091797855,US 1091797856,1091797871,IT @@ -13755,19 +17578,13 @@ 1091800320,1091800327,JP 1091800328,1091802111,US 1091802112,1091802367,CA -1091802368,1091802831,US -1091802832,1091802847,CN -1091802848,1091802863,US -1091802864,1091802871,HK -1091802872,1091803135,US +1091802368,1091803135,US 1091803136,1091803391,CN 1091803392,1091803711,US 1091803712,1091803775,TH 1091803776,1091803871,US 1091803872,1091803903,NL -1091803904,1091804263,US -1091804264,1091804271,BM -1091804272,1091806719,US +1091803904,1091806719,US 1091806720,1091806847,IT 1091806848,1091807231,US 1091807232,1091807487,CA @@ -13810,9 +17627,9 @@ 1093054080,1093054095,GB 1093054096,1093054127,US 1093054128,1093054143,FR -1093054144,1093054175,US -1093054176,1093054191,CA -1093054192,1093055487,US +1093054144,1093054287,US +1093054288,1093054303,GB +1093054304,1093055487,US 1093055488,1093055871,AR 1093055872,1093056095,US 1093056096,1093056127,SY @@ -13820,16 +17637,14 @@ 1093056144,1093056159,SY 1093056160,1093056167,US 1093056168,1093056175,RO -1093056176,1093056319,US -1093056320,1093056335,CA -1093056336,1093056447,US +1093056176,1093056447,US 1093056448,1093056463,FR 1093056464,1093056479,CA 1093056480,1093056511,US 1093056512,1093056519,GB 1093056520,1093056591,US -1093056592,1093056607,CA -1093056608,1093056959,US +1093056592,1093056599,CA +1093056600,1093056959,US 1093056960,1093056975,SA 1093056976,1093057103,US 1093057104,1093057119,JP @@ -13894,7 +17709,25 @@ 1093112896,1093112911,CA 1093112912,1093113087,US 1093113088,1093113119,CA -1093113120,1093114623,US +1093113120,1093113127,US +1093113128,1093113135,CA +1093113136,1093113151,US +1093113152,1093113183,CA +1093113184,1093113407,US +1093113408,1093113423,CA +1093113424,1093113479,US +1093113480,1093113487,CA +1093113488,1093113503,US +1093113504,1093113535,CA +1093113536,1093113639,US +1093113640,1093113647,CA +1093113648,1093113727,US +1093113728,1093113743,CA +1093113744,1093113759,US +1093113760,1093113783,CA +1093113784,1093113791,US +1093113792,1093113823,CA +1093113824,1093114623,US 1093114624,1093114679,CA 1093114680,1093114703,US 1093114704,1093114711,CA @@ -13906,7 +17739,8 @@ 1093114864,1093115839,CA 1093115840,1093115903,US 1093115904,1093116927,CA -1093116928,1093117439,US +1093116928,1093117183,HK +1093117184,1093117439,US 1093117440,1093117455,CA 1093117456,1093117503,US 1093117504,1093117519,CA @@ -13918,7 +17752,8 @@ 1093117616,1093117631,CA 1093117632,1093117647,VG 1093117648,1093118207,CA -1093118208,1093118479,US +1093118208,1093118463,HK +1093118464,1093118479,US 1093118480,1093118495,CA 1093118496,1093118527,US 1093118528,1093118531,CA @@ -13966,8 +17801,8 @@ 1093122592,1093122655,CA 1093122656,1093122671,US 1093122672,1093122687,CA -1093122688,1093122727,US -1093122728,1093122767,CA +1093122688,1093122719,US +1093122720,1093122767,CA 1093122768,1093122783,US 1093122784,1093122791,CA 1093122792,1093122799,US @@ -13993,7 +17828,9 @@ 1093125776,1093125871,US 1093125872,1093126015,CA 1093126016,1093126047,US -1093126048,1093126111,CA +1093126048,1093126063,CA +1093126064,1093126079,US +1093126080,1093126111,CA 1093126112,1093126134,US 1093126135,1093126142,CA 1093126143,1093126143,US @@ -14004,7 +17841,9 @@ 1093126544,1093126591,CA 1093126592,1093126607,US 1093126608,1093126639,CA -1093126640,1093126801,US +1093126640,1093126767,US +1093126768,1093126783,CA +1093126784,1093126801,US 1093126802,1093126809,CA 1093126810,1093126823,US 1093126824,1093126831,CA @@ -14035,9 +17874,7 @@ 1093131248,1093131263,CA 1093131264,1093131391,US 1093131392,1093131487,CA -1093131488,1093131775,US -1093131776,1093132287,CA -1093132288,1093132351,US +1093131488,1093132351,US 1093132352,1093132799,CA 1093132800,1093133055,US 1093133056,1093133311,CA @@ -14087,18 +17924,20 @@ 1093723648,1093724415,BB 1093724416,1093725183,VC 1093725184,1093730303,BB -1093730304,1093730559,US -1093730560,1093730815,HK -1093730816,1093737247,US +1093730304,1093730815,US +1093730816,1093731071,A1 +1093731072,1093733887,US +1093733888,1093734143,A1 +1093734144,1093737247,US 1093737248,1093737263,AE 1093737264,1093737423,US 1093737424,1093737431,GB 1093737432,1093740095,US 1093740096,1093740159,JP -1093740160,1093740167,US -1093740168,1093740191,CN -1093740192,1093740223,US -1093740224,1093740239,CN +1093740160,1093740183,US +1093740184,1093740191,CN +1093740192,1093740231,US +1093740232,1093740239,CN 1093740240,1093740247,US 1093740248,1093740255,HK 1093740256,1093740271,US @@ -14120,9 +17959,7 @@ 1093746880,1093746943,DE 1093746944,1093748799,US 1093748800,1093748863,CN -1093748864,1093753111,US -1093753112,1093753119,CN -1093753120,1094549687,US +1093748864,1094549687,US 1094549688,1094549695,CA 1094549696,1094549783,US 1094549784,1094549791,AU @@ -14629,7 +18466,9 @@ 1096925184,1096941567,CA 1096941568,1096942679,US 1096942680,1096942687,IE -1096942688,1096950551,US +1096942688,1096947471,US +1096947472,1096947479,MY +1096947480,1096950551,US 1096950552,1096950559,CA 1096950560,1096952455,US 1096952456,1096952463,GB @@ -14649,17 +18488,15 @@ 1096959600,1096959607,GB 1096959608,1096960767,US 1096960768,1096960895,GB -1096960896,1096961023,US -1096961024,1096961151,GB -1096961152,1096964263,US +1096960896,1096964263,US 1096964264,1096964271,IN 1096964272,1096968127,US 1096968128,1096968159,CA 1096968160,1096968191,US 1096968192,1096968319,GB -1096968320,1096968447,US -1096968448,1096968575,GB -1096968576,1097057623,US +1096968320,1096969471,US +1096969472,1096969479,IN +1096969480,1097057623,US 1097057624,1097057631,IT 1097057632,1097057655,US 1097057656,1097057663,NZ @@ -14697,11 +18534,7 @@ 1097731456,1097736191,CA 1097736192,1097768959,US 1097768960,1097777151,CA -1097777152,1097800959,US -1097800960,1097800991,CY -1097800992,1097801183,US -1097801184,1097801215,DE -1097801216,1097830399,US +1097777152,1097830399,US 1097830400,1097834495,CA 1097834496,1097896191,US 1097896192,1097896711,VI @@ -14879,7 +18712,9 @@ 1102005248,1102005503,CA 1102005504,1102005759,PK 1102005760,1102005823,BE -1102005824,1102006271,US +1102005824,1102005887,US +1102005888,1102005951,IN +1102005952,1102006271,US 1102006272,1102006527,CA 1102006528,1102007295,US 1102007296,1102007551,PK @@ -14916,23 +18751,24 @@ 1102011888,1102011903,AU 1102011904,1102012799,US 1102012800,1102012927,IN -1102012928,1102012975,US -1102012976,1102012991,RU -1102012992,1102013167,US +1102012928,1102013167,US 1102013168,1102013183,VE -1102013184,1102014271,US -1102014272,1102014335,IN +1102013184,1102014207,US +1102014208,1102014335,IN 1102014336,1102014399,CA 1102014400,1102016255,US 1102016256,1102016287,AR 1102016288,1102016351,US 1102016352,1102016383,MY -1102016384,1102019583,US +1102016384,1102017087,US +1102017088,1102017119,DM +1102017120,1102018431,US +1102018432,1102018495,TZ +1102018496,1102019583,US 1102019584,1102019711,IN 1102019712,1102389247,US 1102389248,1102393343,CA -1102393344,1102397439,US -1102413824,1102446591,US +1102393344,1102446591,US 1102446592,1102448383,HN 1102448384,1102449151,US 1102449152,1102449407,SV @@ -14942,7 +18778,14 @@ 1102488124,1102488163,IN 1102488164,1102488284,US 1102488285,1102488315,IN -1102488316,1102494332,US +1102488316,1102494223,US +1102494224,1102494227,AU +1102494228,1102494262,US +1102494263,1102494279,AU +1102494280,1102494292,US +1102494293,1102494297,GB +1102494298,1102494301,CA +1102494302,1102494332,US 1102494333,1102494378,AU 1102494379,1102495519,US 1102495520,1102495527,AU @@ -15078,7 +18921,9 @@ 1106349600,1106349607,UM 1106349608,1106428959,US 1106428960,1106428975,UM -1106428976,1106443623,US +1106428976,1106441615,US +1106441616,1106441623,A2 +1106441624,1106443623,US 1106443624,1106443631,CA 1106443632,1106469695,US 1106469696,1106469759,CO @@ -15123,7 +18968,7 @@ 1107275776,1107279871,CA 1107279872,1107288063,US 1107288064,1107292159,CA -1107296256,1107701759,US +1107292160,1107701759,US 1107701760,1107705855,CA 1107705856,1107800063,US 1107800064,1107800319,CA @@ -15180,8 +19025,8 @@ 1108055424,1108055439,US 1108055440,1108055455,CA 1108055456,1108055471,US -1108055472,1108055487,CA -1108055488,1108055551,US +1108055472,1108055519,CA +1108055520,1108055551,US 1108055552,1108055903,CA 1108055904,1108055919,US 1108055920,1108055967,CA @@ -15228,9 +19073,7 @@ 1108057784,1108066303,CA 1108066304,1108492287,US 1108492288,1108500479,ZA -1108500480,1108502303,US -1108502304,1108502311,PR -1108502312,1108525055,US +1108500480,1108525055,US 1108525056,1108541439,CA 1108541440,1109245981,US 1109245982,1109245993,GB @@ -15372,7 +19215,9 @@ 1110443328,1110443551,CA 1110443552,1110443711,US 1110443712,1110443719,CA -1110443720,1110444287,US +1110443720,1110443903,US +1110443904,1110444031,CA +1110444032,1110444287,US 1110444288,1110444799,CA 1110444800,1110445055,US 1110445056,1110446655,CA @@ -15447,8 +19292,8 @@ 1110460320,1110460383,US 1110460384,1110460447,CA 1110460448,1110460479,US -1110460480,1110460607,CA -1110460608,1110460671,US +1110460480,1110460639,CA +1110460640,1110460671,US 1110460672,1110460719,CA 1110460720,1110460743,US 1110460744,1110460775,CA @@ -15517,7 +19362,9 @@ 1110887424,1110887679,IE 1110887680,1110929407,US 1110929408,1110933503,BM -1110933504,1111195647,US +1110933504,1110940751,US +1110940752,1110940767,A1 +1110940768,1111195647,US 1111195648,1111212031,CA 1111212032,1111228415,US 1111228416,1111244799,AR @@ -15531,9 +19378,7 @@ 1112357376,1112357503,CA 1112357504,1112360959,US 1112360960,1112361023,CA -1112361024,1112369343,US -1112369344,1112369375,AU -1112369376,1112432639,US +1112361024,1112432639,US 1112432640,1112433147,CA 1112433148,1112433151,US 1112433152,1112440831,CA @@ -15608,14 +19453,19 @@ 1114170112,1114505215,US 1114505216,1114507263,CA 1114507264,1114507295,US -1114507296,1114507423,CA +1114507296,1114507327,CA +1114507328,1114507391,US +1114507392,1114507423,CA 1114507424,1114507431,GB -1114507432,1114511359,CA +1114507432,1114508287,CA +1114508288,1114508799,US +1114508800,1114511359,CA 1114511360,1114511871,US 1114511872,1114513407,CA 1114513408,1114515455,SA 1114515456,1114517503,US -1114517504,1114520063,CA +1114517504,1114519551,CA +1114519552,1114520063,US 1114520064,1114520319,PH 1114520320,1114520575,US 1114520576,1114520831,PH @@ -15627,9 +19477,7 @@ 1114533376,1114533887,ZA 1114533888,1114537983,AO 1114537984,1114550271,CA -1114550272,1114627071,US -1114627072,1114628095,NZ -1114628096,1114653951,US +1114550272,1114653951,US 1114653952,1114653983,MO 1114653984,1114657927,US 1114657928,1114657935,LA @@ -15664,11 +19512,13 @@ 1114880096,1114880383,US 1114880384,1114880399,CY 1114880400,1114880407,GB -1114880408,1114881343,US -1114881344,1114881407,CY +1114880408,1114881279,US +1114881280,1114881407,CY 1114881408,1114881471,US 1114881472,1114881535,CY -1114881536,1114930175,US +1114881536,1114928863,US +1114928864,1114928871,GB +1114928872,1114930175,US 1114930176,1114930303,GB 1114930304,1114966815,US 1114966816,1114966831,GB @@ -15678,13 +19528,9 @@ 1115111936,1115112063,PR 1115112064,1115112079,US 1115112080,1115112087,ES -1115112088,1115112159,US -1115112160,1115112191,SV -1115112192,1115112575,US +1115112088,1115112575,US 1115112576,1115112607,IN -1115112608,1115113167,US -1115113168,1115113175,SV -1115113176,1115113471,US +1115112608,1115113471,US 1115113472,1115114495,HN 1115114496,1115114751,MX 1115114752,1115115007,GT @@ -15752,9 +19598,7 @@ 1115698432,1115698687,DO 1115698688,1115698783,US 1115698784,1115698791,CO -1115698792,1115698983,US -1115698984,1115698991,CO -1115698992,1115699903,US +1115698792,1115699903,US 1115699904,1115699911,CA 1115699912,1115699919,US 1115699920,1115699927,CA @@ -15787,7 +19631,9 @@ 1116158496,1116168191,US 1116168192,1116169311,CA 1116169312,1116169327,US -1116169328,1116176383,CA +1116169328,1116175103,CA +1116175104,1116175135,JM +1116175136,1116176383,CA 1116176384,1116210247,US 1116210248,1116210255,PR 1116210256,1116210375,US @@ -15814,9 +19660,7 @@ 1116214160,1116214167,PR 1116214168,1116217151,US 1116217152,1116217159,PR -1116217160,1116217439,US -1116217440,1116217447,PR -1116217448,1116218527,US +1116217160,1116218527,US 1116218528,1116218535,PR 1116218536,1116220231,US 1116220232,1116220239,PR @@ -15982,25 +19826,21 @@ 1117142272,1117142527,CA 1117142528,1117163023,US 1117163024,1117163031,CA -1117163032,1117169503,US +1117163032,1117167855,US +1117167856,1117167871,GB +1117167872,1117169503,US 1117169504,1117169535,CA -1117169536,1117178287,US +1117169536,1117171071,US +1117171072,1117171103,CA +1117171104,1117178287,US 1117178288,1117178303,GB -1117178304,1117182271,US -1117182272,1117182335,CA -1117182336,1117189951,US +1117178304,1117189951,US 1117189952,1117190015,KR -1117190016,1117195903,US -1117195904,1117195911,IL -1117195912,1117195991,US +1117190016,1117195991,US 1117195992,1117195999,A2 1117196000,1117198591,US 1117198592,1117198847,CA -1117198848,1117206599,US -1117206600,1117206623,FR -1117206624,1117253247,US -1117253248,1117253255,IL -1117253256,1117274111,US +1117198848,1117274111,US 1117274112,1117282303,CA 1117282304,1117299615,US 1117299616,1117299623,GB @@ -16012,7 +19852,9 @@ 1117409344,1117409351,GB 1117409352,1117409783,US 1117409784,1117409791,GB -1117409792,1117411071,US +1117409792,1117410239,US +1117410240,1117410303,GB +1117410304,1117411071,US 1117411072,1117411087,PL 1117411088,1117412863,US 1117412864,1117412991,CA @@ -16051,7 +19893,9 @@ 1117814824,1117814831,CN 1117814832,1117815295,US 1117815296,1117815551,CN -1117815552,1117817919,US +1117815552,1117816831,US +1117816832,1117816959,CN +1117816960,1117817919,US 1117817920,1117817983,CA 1117817984,1117818495,US 1117818496,1117818623,IT @@ -16068,9 +19912,7 @@ 1117829376,1117829631,GR 1117829632,1117831359,US 1117831360,1117831423,A2 -1117831424,1117832191,US -1117832192,1117832447,IT -1117832448,1117978623,US +1117831424,1117978623,US 1117978624,1117979503,CA 1117979504,1117979519,US 1117979520,1117982639,CA @@ -16127,7 +19969,7 @@ 1118127232,1118127359,US 1118127360,1118127615,CA 1118127616,1118128191,US -1118128192,1118128255,MY +1118128192,1118128255,IN 1118128256,1118128319,CA 1118128320,1118128383,MY 1118128384,1118128639,CA @@ -16147,7 +19989,8 @@ 1118132992,1118133375,CA 1118133376,1118133503,US 1118133504,1118133631,CA -1118133632,1118133759,US +1118133632,1118133695,US +1118133696,1118133759,IN 1118133760,1118133887,CA 1118133888,1118134783,US 1118134784,1118134879,CA @@ -16163,9 +20006,7 @@ 1118135648,1118135663,CA 1118135664,1118135807,US 1118135808,1118136191,CA -1118136192,1118136319,US -1118136320,1118136351,CA -1118136352,1118136831,US +1118136192,1118136831,US 1118136832,1118136863,IN 1118136864,1118136895,BE 1118136896,1118136927,US @@ -16205,7 +20046,9 @@ 1118151464,1118151471,CR 1118151472,1118151631,US 1118151632,1118151647,MX -1118151648,1118151791,US +1118151648,1118151759,US +1118151760,1118151775,ES +1118151776,1118151791,US 1118151792,1118151795,BR 1118151796,1118152015,US 1118152016,1118152031,CO @@ -16296,7 +20139,21 @@ 1118477536,1118477543,US 1118477544,1118478335,CA 1118478336,1118502911,US -1118568448,1118789783,US +1118507008,1118511103,US +1118511104,1118519295,CA +1118519296,1118527487,US +1118527488,1118531583,CA +1118531584,1118535679,US +1118535680,1118539775,CA +1118539776,1118543871,US +1118543872,1118547967,CA +1118547968,1118564607,US +1118564608,1118564639,NO +1118564640,1118564655,US +1118564656,1118564671,IN +1118564672,1118564895,US +1118564896,1118564927,AU +1118564928,1118789783,US 1118789784,1118789791,BB 1118789792,1118790351,US 1118790352,1118790367,GB @@ -16306,19 +20163,27 @@ 1118791600,1118791615,ES 1118791616,1118792815,US 1118792816,1118792831,DO -1118792832,1118793471,US +1118792832,1118792975,US +1118792976,1118792991,BB +1118792992,1118793407,US +1118793408,1118793423,BB +1118793424,1118793471,US 1118793472,1118793727,CO 1118793728,1118793823,US 1118793824,1118793839,CA 1118793840,1118793935,US 1118793936,1118793951,ES -1118793952,1118794287,US +1118793952,1118793967,US +1118793968,1118793983,HT +1118793984,1118794287,US 1118794288,1118794303,BR 1118794304,1118794799,US 1118794800,1118794815,PR 1118794816,1118794959,US 1118794960,1118794975,JM -1118794976,1118795791,US +1118794976,1118795407,US +1118795408,1118795423,PE +1118795424,1118795791,US 1118795792,1118795807,AG 1118795808,1118795895,US 1118795896,1118795903,CY @@ -16476,7 +20341,7 @@ 1118970112,1118970119,KE 1118970120,1118970239,A2 1118970240,1118970367,NG -1118970368,1118970623,GY +1118970368,1118970623,GB 1118970624,1118970751,SA 1118970752,1118970879,GY 1118970880,1118971520,SR @@ -16484,7 +20349,7 @@ 1118971648,1118971903,GY 1118971904,1118972159,A2 1118972160,1118972415,VE -1118972416,1118972671,EC +1118972416,1118972671,GB 1118972672,1118972927,SA 1118972928,1118972943,NI 1118972944,1118972959,VE @@ -16507,7 +20372,7 @@ 1118973160,1118973167,NI 1118973168,1118973183,A2 1118973184,1118973439,VE -1118973440,1118973695,GY +1118973440,1118973695,HK 1118973696,1118973951,NG 1118973952,1118974015,GY 1118974016,1118974047,A2 @@ -16561,8 +20426,8 @@ 1118977552,1118977575,A2 1118977576,1118977583,SA 1118977584,1118977631,A2 -1118977632,1118977663,NG -1118977664,1118977839,A2 +1118977632,1118977639,US +1118977640,1118977839,A2 1118977840,1118977847,LB 1118977848,1118977879,A2 1118977880,1118977887,NI @@ -16682,7 +20547,7 @@ 1118984896,1118984943,SA 1118984944,1118984951,LB 1118984952,1118984959,SA -1118984960,1118985215,VE +1118984960,1118985215,LB 1118985216,1118985983,A2 1118985984,1118986111,NG 1118986112,1118986239,A2 @@ -16714,7 +20579,8 @@ 1118992736,1118992743,SA 1118992744,1118992767,A2 1118992768,1118992839,US -1118992840,1118994431,A2 +1118992840,1118994175,A2 +1118994176,1118994431,LR 1118994432,1119023735,US 1119023736,1119023743,UY 1119023744,1119109119,US @@ -16734,15 +20600,17 @@ 1119167360,1119167367,CA 1119167368,1119167407,US 1119167408,1119167415,CA -1119167416,1119167839,US +1119167416,1119167495,US +1119167496,1119167503,CA +1119167504,1119167839,US 1119167840,1119167855,CA -1119167856,1119167895,US -1119167896,1119167903,CA -1119167904,1119168023,US +1119167856,1119168023,US 1119168024,1119168031,CA 1119168032,1119168183,US 1119168184,1119168191,CA -1119168192,1119168687,US +1119168192,1119168351,US +1119168352,1119168359,AF +1119168360,1119168687,US 1119168688,1119168695,CA 1119168696,1119168799,US 1119168800,1119168807,MX @@ -16762,7 +20630,9 @@ 1119171208,1119171215,CA 1119171216,1119171383,US 1119171384,1119171391,CA -1119171392,1119172895,US +1119171392,1119172199,US +1119172200,1119172207,CA +1119172208,1119172895,US 1119172896,1119172991,MX 1119172992,1119173007,US 1119173008,1119173095,MX @@ -16842,8 +20712,7 @@ 1119502336,1119510527,CA 1119510528,1119558143,US 1119558144,1119558655,PR -1119558656,1119567871,US -1119571968,1119580159,US +1119558656,1119580159,US 1119580160,1119584255,CA 1119584256,1119999935,US 1119999936,1119999967,A2 @@ -16864,9 +20733,7 @@ 1120151696,1120151711,TW 1120151712,1120152159,CA 1120152160,1120152191,US -1120152192,1120152319,CA -1120152320,1120152575,US -1120152576,1120153599,CA +1120152192,1120153599,CA 1120153600,1120272383,US 1120272384,1120280575,CA 1120280576,1120280831,US @@ -16878,7 +20745,8 @@ 1120281104,1120281111,CA 1120281112,1120281119,US 1120281120,1120281135,ZA -1120281136,1120281375,CA +1120281136,1120281151,US +1120281152,1120281375,CA 1120281376,1120281383,AR 1120281384,1120281391,US 1120281392,1120281407,ZA @@ -16924,9 +20792,15 @@ 1120315136,1120315391,US 1120315392,1120321535,CA 1120321536,1120346111,US -1120346112,1120350207,CA +1120346112,1120347527,CA +1120347528,1120347535,US +1120347536,1120347591,CA +1120347592,1120347599,US +1120347600,1120350207,CA 1120350208,1120370687,US -1120370688,1120371487,CA +1120370688,1120371199,CA +1120371200,1120371455,US +1120371456,1120371487,CA 1120371488,1120371503,US 1120371504,1120371511,CA 1120371512,1120371519,US @@ -16952,9 +20826,9 @@ 1120374512,1120374783,US 1120374784,1120375243,CA 1120375244,1120375263,US -1120375264,1120376063,CA -1120376064,1120376079,US -1120376080,1120376095,CA +1120375264,1120375423,CA +1120375424,1120375551,US +1120375552,1120376095,CA 1120376096,1120376127,US 1120376128,1120376223,CA 1120376224,1120376239,US @@ -17001,9 +20875,7 @@ 1120380640,1120380655,US 1120380656,1120380659,CA 1120380660,1120380663,US -1120380664,1120380671,CA -1120380672,1120380927,US -1120380928,1120381055,CA +1120380664,1120381055,CA 1120381056,1120381071,US 1120381072,1120381087,PA 1120381088,1120381095,US @@ -17037,9 +20909,9 @@ 1120385184,1120385535,CA 1120385536,1120386559,US 1120386560,1120386815,CA -1120386816,1120485759,US -1120485760,1120485887,CA -1120485888,1120486079,US +1120386816,1120485503,US +1120485504,1120485631,IN +1120485632,1120486079,US 1120486080,1120486143,IN 1120486144,1120486399,US 1120486400,1120486911,CA @@ -17082,11 +20954,13 @@ 1120493824,1120494079,CA 1120494080,1120494335,US 1120494336,1120494591,CA -1120494592,1120494975,US +1120494592,1120494847,US +1120494848,1120494911,IN +1120494912,1120494975,US 1120494976,1120495039,CA -1120495040,1120495359,US -1120495360,1120495615,CA -1120495616,1120495743,US +1120495040,1120495103,US +1120495104,1120495167,IN +1120495168,1120495743,US 1120495744,1120495871,SG 1120495872,1120496223,US 1120496224,1120496255,BE @@ -17110,9 +20984,7 @@ 1120498144,1120498303,CA 1120498304,1120498943,US 1120498944,1120499199,CA -1120499200,1120499487,US -1120499488,1120499519,CA -1120499520,1120499583,US +1120499200,1120499583,US 1120499584,1120499615,FR 1120499616,1120499647,IN 1120499648,1120500639,US @@ -17153,7 +21025,9 @@ 1120743424,1120743679,KN 1120743680,1120744447,US 1120744448,1120744703,KN -1120744704,1120854015,US +1120744704,1120846431,US +1120846432,1120846463,CA +1120846464,1120854015,US 1120854016,1120862207,CA 1120862208,1120870399,US 1120874496,1120874503,A2 @@ -17197,9 +21071,7 @@ 1120894976,1120911359,US 1120911360,1120914415,CA 1120914416,1120914431,AT -1120914432,1120914687,CA -1120914688,1120914719,AG -1120914720,1120918623,CA +1120914432,1120918623,CA 1120918624,1120918639,US 1120918640,1120919551,CA 1120919552,1121005567,US @@ -17219,8 +21091,8 @@ 1121233584,1121233599,DE 1121233600,1121239039,CA 1121239040,1121247231,US -1121247232,1121247247,CA -1121247248,1121247255,AG +1121247232,1121247239,CA +1121247240,1121247255,AG 1121247256,1121247263,CA 1121247264,1121247271,CR 1121247272,1121247279,CA @@ -17237,7 +21109,7 @@ 1121247544,1121247551,CA 1121247552,1121247559,VG 1121247560,1121247567,CA -1121247568,1121247583,PA +1121247568,1121247583,MT 1121247584,1121247591,CY 1121247592,1121247615,CA 1121247616,1121247631,PA @@ -17245,7 +21117,9 @@ 1121247640,1121247647,VG 1121247648,1121247663,US 1121247664,1121247695,BZ -1121247696,1121247743,CA +1121247696,1121247711,CA +1121247712,1121247719,AN +1121247720,1121247743,CA 1121247744,1121247775,BZ 1121247776,1121247823,CA 1121247824,1121247855,AG @@ -17259,7 +21133,7 @@ 1121248064,1121248079,AG 1121248080,1121248095,CA 1121248096,1121248111,AG -1121248112,1121248127,CA +1121248112,1121248127,AN 1121248128,1121248135,MT 1121248136,1121248159,CA 1121248160,1121248255,AG @@ -17307,9 +21181,8 @@ 1121250080,1121250095,AG 1121250096,1121250111,CA 1121250112,1121250127,CR -1121250128,1121250151,CA -1121250152,1121250159,GB -1121250160,1121250175,CA +1121250128,1121250143,CA +1121250144,1121250175,GB 1121250176,1121250183,AW 1121250184,1121250207,BZ 1121250208,1121250239,CA @@ -17318,8 +21191,7 @@ 1121250816,1121250831,AG 1121250832,1121250839,BZ 1121250840,1121250879,AG -1121250880,1121250911,CA -1121250912,1121250927,VG +1121250880,1121250927,VG 1121250928,1121250935,CA 1121250936,1121251007,BZ 1121251008,1121251015,VG @@ -17328,8 +21200,10 @@ 1121251048,1121251055,AW 1121251056,1121251071,CA 1121251072,1121251079,GB -1121251080,1121251087,CY -1121251088,1121251135,CA +1121251080,1121251095,CY +1121251096,1121251103,CA +1121251104,1121251119,BZ +1121251120,1121251135,CA 1121251136,1121251167,AG 1121251168,1121251199,VG 1121251200,1121251263,AW @@ -17337,12 +21211,15 @@ 1121251272,1121251279,KN 1121251280,1121251295,CA 1121251296,1121251311,IM -1121251312,1121251583,CA +1121251312,1121251327,PA +1121251328,1121251583,CA 1121251584,1121251591,BZ -1121251592,1121251607,CA +1121251592,1121251599,MT +1121251600,1121251607,CA 1121251608,1121251615,BZ 1121251616,1121251647,NL -1121251648,1121251663,CA +1121251648,1121251655,BZ +1121251656,1121251663,CA 1121251664,1121251671,MT 1121251672,1121251679,CA 1121251680,1121251687,AG @@ -17352,24 +21229,27 @@ 1121251808,1121251831,CA 1121251832,1121251839,VG 1121251840,1121251847,BZ -1121251848,1121251871,CA +1121251848,1121251855,PA +1121251856,1121251863,AN +1121251864,1121251871,CA 1121251872,1121251887,VG 1121251888,1121251895,CY 1121251896,1121251903,CA 1121251904,1121251935,AG 1121251936,1121251943,CY -1121251944,1121251951,PA +1121251944,1121251951,MT 1121251952,1121251967,GB -1121251968,1121251983,PA +1121251968,1121251983,MT 1121251984,1121251991,CA 1121251992,1121251999,AG 1121252000,1121252063,CA 1121252064,1121252359,AG -1121252360,1121252375,CA -1121252376,1121252383,PA +1121252360,1121252367,ZA +1121252368,1121252375,GG +1121252376,1121252383,MT 1121252384,1121252391,CR -1121252392,1121252399,CA -1121252400,1121252415,PA +1121252392,1121252399,GG +1121252400,1121252415,MT 1121252416,1121252479,GI 1121252480,1121252607,CR 1121252608,1121252671,AW @@ -17677,24 +21557,30 @@ 1121483568,1121483575,PT 1121483576,1121483759,US 1121483760,1121483775,FR -1121483776,1121655071,US -1121655072,1121655103,RU -1121655104,1121655231,US +1121483776,1121654863,US +1121654864,1121654879,IN +1121654880,1121654975,US +1121654976,1121654991,FR +1121654992,1121655231,US 1121655232,1121655263,AR 1121655264,1121655439,US -1121655440,1121655447,VE -1121655448,1121656063,US +1121655440,1121655447,IN +1121655448,1121655455,US +1121655456,1121655463,IN +1121655464,1121656063,US 1121656064,1121656095,NZ 1121656096,1121714975,US 1121714976,1121714991,AU -1121714992,1121715967,US +1121714992,1121715935,US +1121715936,1121715943,A1 +1121715944,1121715967,US 1121715968,1121716095,IT 1121716096,1121717431,US 1121717432,1121717439,JP 1121717440,1121717759,US 1121717760,1121718015,IT -1121718016,1121721711,US -1121721712,1121721727,CN +1121718016,1121721703,US +1121721704,1121721727,CN 1121721728,1121878015,US 1121878016,1121910783,CA 1121910784,1122074623,US @@ -17703,13 +21589,15 @@ 1122088192,1122091007,CA 1122091008,1122092623,US 1122092624,1122092631,CA -1122092632,1122092695,US -1122092696,1122092703,CA -1122092704,1122092799,US +1122092632,1122092687,US +1122092688,1122092695,GB +1122092696,1122092799,US 1122092800,1122093055,CA 1122093056,1122093807,US 1122093808,1122093815,HK -1122093816,1122103471,US +1122093816,1122101431,US +1122101432,1122101439,SG +1122101440,1122103471,US 1122103472,1122103479,BE 1122103480,1122125996,US 1122125997,1122126004,GB @@ -17766,17 +21654,13 @@ 1122493440,1122494207,PR 1122494208,1122495231,US 1122495232,1122495999,PR -1122496000,1122497407,US -1122497408,1122497471,SV -1122497472,1122497535,US +1122496000,1122497535,US 1122497536,1122498047,PR 1122498048,1122498559,US 1122498560,1122498815,PR 1122498816,1122499583,US 1122499584,1122500095,PR -1122500096,1122506751,US -1122506752,1122507007,IN -1122507008,1122525855,US +1122500096,1122525855,US 1122525856,1122525865,RU 1122525866,1122526096,US 1122526097,1122526111,RU @@ -17798,13 +21682,7 @@ 1122667072,1122667135,CH 1122667136,1122759247,US 1122759248,1122759263,CA -1122759264,1123057663,US -1123057664,1123061759,CA -1123061760,1123063807,US -1123063808,1123069951,CA -1123069952,1123071999,US -1123072000,1123074047,CA -1123074048,1123123199,US +1122759264,1123123199,US 1123123200,1123127295,CA 1123127296,1123165247,US 1123165248,1123165311,CA @@ -17827,7 +21705,8 @@ 1123584352,1123584383,DE 1123584384,1123588063,US 1123588064,1123588095,CY -1123588096,1123590143,US +1123588096,1123588351,DE +1123588352,1123590143,US 1123590144,1123598335,VI 1123598336,1123651583,US 1123651584,1123655679,JM @@ -17924,9 +21803,7 @@ 1125095296,1125095327,AU 1125095328,1125096959,US 1125096960,1125097087,AR -1125097088,1125097119,US -1125097120,1125097151,TH -1125097152,1125097215,US +1125097088,1125097215,US 1125097216,1125097279,AU 1125097280,1125097343,BR 1125097344,1125097407,US @@ -18018,11 +21895,16 @@ 1125120512,1125120767,US 1125120768,1125120799,UY 1125120800,1125120831,IL -1125120832,1125120847,TH -1125120848,1125120863,US +1125120832,1125120863,US 1125120864,1125120895,GB 1125120896,1125121023,RO -1125121024,1125454111,US +1125121024,1125396483,US +1125396484,1125396491,LK +1125396492,1125396999,US +1125397000,1125397007,ES +1125397008,1125454007,US +1125454008,1125454015,GB +1125454016,1125454111,US 1125454112,1125454119,ES 1125454120,1125454143,US 1125454144,1125454151,GB @@ -18060,7 +21942,8 @@ 1125454544,1125454555,ES 1125454556,1125454587,US 1125454588,1125454591,CA -1125454592,1125455359,US +1125454592,1125454847,A2 +1125454848,1125455359,US 1125455360,1125455363,CA 1125455364,1125455367,US 1125455368,1125455371,GB @@ -18084,7 +21967,7 @@ 1125455516,1125455519,CA 1125455520,1125455523,ES 1125455524,1125455527,US -1125455528,1125455531,ES +1125455528,1125455531,GB 1125455532,1125455535,NO 1125455536,1125455543,US 1125455544,1125455547,ES @@ -18096,9 +21979,12 @@ 1125455568,1125455571,US 1125455572,1125455575,NO 1125455576,1125455579,AN -1125455580,1125456131,US +1125455580,1125455615,US +1125455616,1125455871,A2 +1125455872,1125456131,US 1125456132,1125456135,NO -1125456136,1125456151,US +1125456136,1125456139,A2 +1125456140,1125456151,US 1125456152,1125456155,NL 1125456156,1125456163,US 1125456164,1125456167,NO @@ -18122,13 +22008,14 @@ 1125456420,1125474303,US 1125474304,1125478399,CA 1125478400,1125479199,US -1125479200,1125479231,BR -1125479232,1125493127,US +1125479200,1125479255,BR +1125479256,1125493127,US 1125493128,1125493135,CA 1125493136,1125498879,US 1125498880,1125508095,CA 1125508096,1125508351,PA -1125508352,1125514495,CA +1125508352,1125514239,CA +1125514240,1125514495,CY 1125514496,1125514751,US 1125514752,1125515263,CA 1125515264,1125531647,US @@ -18153,7 +22040,21 @@ 1125541152,1125541159,CN 1125541160,1125541183,CA 1125541184,1125541215,KY -1125541216,1125543935,CA +1125541216,1125541223,CA +1125541224,1125541231,US +1125541232,1125541391,CA +1125541392,1125541407,US +1125541408,1125541487,CA +1125541488,1125541503,US +1125541504,1125541543,CA +1125541544,1125541551,CN +1125541552,1125541807,CA +1125541808,1125541815,US +1125541816,1125543543,CA +1125543544,1125543551,US +1125543552,1125543687,CA +1125543688,1125543695,US +1125543696,1125543935,CA 1125543936,1125545983,US 1125548032,1125548291,CA 1125548292,1125548351,US @@ -18162,15 +22063,21 @@ 1125550336,1125552127,CA 1125552128,1125572607,US 1125572608,1125576703,CA -1125576704,1125613567,US +1125576704,1125595695,US +1125595696,1125595711,NG +1125595712,1125596343,US +1125596344,1125596351,NO +1125596352,1125596479,US +1125596480,1125596503,GB +1125596504,1125613567,US 1125613568,1125617663,CA -1125617664,1125626111,US -1125626112,1125626367,IN -1125626368,1125626623,US -1125626624,1125626879,IN -1125626880,1125628671,US +1125617664,1125623295,US +1125623296,1125623551,IN +1125623552,1125628671,US 1125628672,1125628703,NZ -1125628704,1126009343,US +1125628704,1125642674,US +1125642675,1125642694,BO +1125642695,1126009343,US 1126009344,1126009599,AR 1126009600,1126504223,US 1126504224,1126504231,PR @@ -18240,9 +22147,7 @@ 1127976192,1127976223,IL 1127976224,1127979111,US 1127979112,1127979119,CA -1127979120,1127985951,US -1127985952,1127985983,NG -1127985984,1127986087,US +1127979120,1127986087,US 1127986088,1127986095,RO 1127986096,1127986935,US 1127986936,1127986943,IN @@ -18264,9 +22169,7 @@ 1128641536,1128792063,CA 1128792064,1128818687,US 1128818688,1128818719,CA -1128818720,1130536959,US -1130536960,1130539007,GU -1130539008,1131440135,US +1128818720,1131440135,US 1131440136,1131440143,PR 1131440144,1131949295,US 1131949296,1131949303,PR @@ -18282,7 +22185,9 @@ 1132910112,1132910143,AU 1132910144,1132947431,US 1132947432,1132947439,CA -1132947440,1133785375,US +1132947440,1132954319,US +1132954320,1132954335,IS +1132954336,1133785375,US 1133785376,1133785383,NE 1133785384,1133785391,US 1133785392,1133785407,GB @@ -19039,7 +22944,9 @@ 1137278976,1137283071,CA 1137283072,1137287167,US 1137287168,1137295359,CA -1137295360,1137369087,US +1137295360,1137341063,US +1137341064,1137341064,GB +1137341065,1137369087,US 1137369088,1137369519,CA 1137369520,1137369535,US 1137369536,1137370111,CA @@ -19053,9 +22960,7 @@ 1137376480,1137376511,CA 1137376512,1137377311,US 1137377312,1137377327,DE -1137377328,1137377471,US -1137377472,1137377479,IN -1137377480,1137383455,US +1137377328,1137383455,US 1137383456,1137383471,DE 1137383472,1137426431,US 1137426432,1137442815,PR @@ -19196,16 +23101,16 @@ 1137711280,1137711287,NL 1137711288,1137711295,US 1137711296,1137711303,NL -1137711304,1137711343,US -1137711344,1137711367,CA +1137711304,1137711335,US +1137711336,1137711367,CA 1137711368,1137711375,US 1137711376,1137711399,CA 1137711400,1137711407,US 1137711408,1137711439,CA 1137711440,1137711455,US 1137711456,1137711471,CA -1137711472,1137711479,US -1137711480,1137711503,CA +1137711472,1137711487,US +1137711488,1137711503,CA 1137711504,1137711511,US 1137711512,1137711559,CA 1137711560,1137711567,US @@ -19230,8 +23135,10 @@ 1137712120,1137712127,CA 1137712128,1137712135,US 1137712136,1137712151,CA -1137712152,1137712207,US -1137712208,1137712223,CA +1137712152,1137712183,US +1137712184,1137712191,CA +1137712192,1137712215,US +1137712216,1137712223,CA 1137712224,1137712239,US 1137712240,1137712255,CA 1137712256,1137712263,US @@ -19240,8 +23147,8 @@ 1137712288,1137712295,CA 1137712296,1137712327,US 1137712328,1137712343,CA -1137712344,1137712351,US -1137712352,1137712383,CA +1137712344,1137712359,US +1137712360,1137712383,CA 1137712384,1137712671,US 1137712672,1137712687,CA 1137712688,1137712711,US @@ -19249,8 +23156,8 @@ 1137712720,1137712759,US 1137712760,1137712767,CA 1137712768,1137712919,US -1137712920,1137712935,CA -1137712936,1137712959,US +1137712920,1137712927,CA +1137712928,1137712959,US 1137712960,1137712975,CA 1137712976,1137713015,US 1137713016,1137713023,CA @@ -19258,7 +23165,9 @@ 1137713072,1137713087,CA 1137713088,1137713103,US 1137713104,1137713111,CA -1137713112,1137724495,US +1137713112,1137713127,US +1137713128,1137713135,CA +1137713136,1137724495,US 1137724496,1137724511,CA 1137724512,1137724543,US 1137724544,1137724575,CA @@ -19278,13 +23187,13 @@ 1137758496,1137758527,AU 1137758528,1137758671,US 1137758672,1137758687,CH -1137758688,1137759999,US -1137760000,1137760255,PA -1137760256,1137785855,US +1137758688,1137785855,US 1137785856,1137786111,HU 1137786112,1137795071,US 1137795072,1137799167,A2 -1137799168,1137840127,US +1137799168,1137803519,US +1137803520,1137803775,CA +1137803776,1137840127,US 1137840128,1137840383,CA 1137840384,1137843711,US 1137843712,1137843775,NO @@ -19337,7 +23246,8 @@ 1137927680,1137927807,CR 1137927808,1137927935,CA 1137927936,1137928063,VG -1137928064,1137928255,CA +1137928064,1137928191,PA +1137928192,1137928255,CA 1137928256,1137928319,BZ 1137928320,1137930143,CA 1137930144,1137930159,MT @@ -19346,7 +23256,9 @@ 1137946146,1137946153,DE 1137946154,1137946585,US 1137946586,1137946593,NO -1137946594,1137953023,US +1137946594,1137950975,US +1137950976,1137951231,CA +1137951232,1137953023,US 1137953024,1137954815,CA 1137954816,1137963007,US 1137963008,1137967103,VI @@ -19358,7 +23270,9 @@ 1138000096,1138001519,US 1138001520,1138001535,CA 1138001536,1138049023,US -1138049024,1138061311,CA +1138049024,1138053631,CA +1138053632,1138053887,US +1138053888,1138061311,CA 1138061312,1138163711,US 1138163712,1138163967,CA 1138163968,1138163975,MA @@ -19396,8 +23310,8 @@ 1138164824,1138164831,CA 1138164832,1138164839,PH 1138164840,1138164863,CA -1138164864,1138165247,US -1138165248,1138165311,CA +1138164864,1138164991,US +1138164992,1138165311,CA 1138165312,1138165319,US 1138165320,1138165431,CA 1138165432,1138165439,LB @@ -19467,13 +23381,22 @@ 1138212864,1138216959,CA 1138216960,1138271087,US 1138271088,1138271103,TN -1138271104,1138401279,US -1138409472,1138417663,US +1138271104,1138337167,US +1138337168,1138337183,GB +1138337184,1138337199,US +1138337200,1138337207,SG +1138337208,1138417663,US 1138417664,1138417695,CA 1138417696,1138417727,DE 1138417728,1138421759,US 1138421760,1138421791,DE -1138421792,1138450959,US +1138421792,1138422783,US +1138422784,1138423039,PA +1138423040,1138425855,US +1138425856,1138427519,KN +1138427520,1138427647,US +1138427648,1138429951,KN +1138429952,1138450959,US 1138450960,1138450967,JM 1138450968,1138450991,US 1138450992,1138450999,MX @@ -19500,7 +23423,9 @@ 1138452016,1138452047,US 1138452048,1138452055,AU 1138452056,1138452063,GB -1138452064,1138452263,US +1138452064,1138452223,US +1138452224,1138452231,DE +1138452232,1138452263,US 1138452264,1138452271,IN 1138452272,1138452287,US 1138452288,1138452295,GR @@ -19516,11 +23441,18 @@ 1138452456,1138452479,FR 1138452480,1138453567,US 1138453568,1138453615,FR -1138453616,1138454015,US -1138454016,1138454271,RU -1138454272,1138454591,US +1138453616,1138454527,US +1138454528,1138454543,BR +1138454544,1138454591,US 1138454592,1138454599,CA -1138454600,1138480127,US +1138454600,1138458127,US +1138458128,1138458143,AU +1138458144,1138458159,IN +1138458160,1138458239,US +1138458240,1138458255,PK +1138458256,1138458271,AR +1138458272,1138458287,RU +1138458288,1138480127,US 1138480128,1138482687,AU 1138482688,1138499583,US 1138499584,1138503679,CA @@ -19550,7 +23482,9 @@ 1138512640,1138512671,ID 1138512672,1138512895,US 1138512896,1138512927,ID -1138512928,1138548735,US +1138512928,1138544895,US +1138544896,1138545151,GB +1138545152,1138548735,US 1138548736,1138556927,CA 1138556928,1138593791,US 1138593792,1138597887,CA @@ -19574,11 +23508,15 @@ 1138655696,1138655703,MX 1138655704,1138655715,US 1138655716,1138655723,GB -1138655724,1138655841,US +1138655724,1138655817,US +1138655818,1138655825,MX +1138655826,1138655841,US 1138655842,1138655849,CN 1138655850,1138655899,US 1138655900,1138655911,MX -1138655912,1138656077,US +1138655912,1138656025,US +1138656026,1138656033,MX +1138656034,1138656077,US 1138656078,1138656093,MX 1138656094,1138656141,US 1138656142,1138656173,GB @@ -19587,30 +23525,36 @@ 1138656199,1138656206,GB 1138656207,1138656222,US 1138656223,1138656230,EG -1138656231,1138656661,US +1138656231,1138656597,US +1138656598,1138656605,EG +1138656606,1138656661,US 1138656662,1138656669,MA 1138656670,1138656745,US 1138656746,1138656753,AE -1138656754,1138657123,US +1138656754,1138657101,US +1138657102,1138657109,IN +1138657110,1138657123,US 1138657124,1138657131,EG 1138657132,1138657173,US 1138657174,1138657181,EG -1138657182,1138657197,US -1138657198,1138657205,EG -1138657206,1138657206,US +1138657182,1138657206,US 1138657207,1138657214,EG 1138657215,1138657222,IN 1138657223,1138657235,US 1138657236,1138657244,MA 1138657245,1138657324,US 1138657325,1138657332,LK -1138657333,1138657504,US +1138657333,1138657401,US +1138657402,1138657409,IN +1138657410,1138657504,US 1138657505,1138657520,EG 1138657521,1138657748,US 1138657749,1138657780,GB 1138657781,1138658057,US 1138658058,1138658123,GB -1138658124,1138658175,US +1138658124,1138658131,US +1138658132,1138658163,EG +1138658164,1138658175,US 1138658176,1138658302,GB 1138658303,1138658431,US 1138658432,1138658496,PK @@ -19625,9 +23569,11 @@ 1138659498,1138659593,US 1138659594,1138659609,LK 1138659610,1138659642,GB -1138659643,1138659673,US +1138659643,1138659650,ID +1138659651,1138659673,US 1138659674,1138659681,MA -1138659682,1138659705,US +1138659682,1138659697,US +1138659698,1138659705,ID 1138659706,1138659713,CA 1138659714,1138659723,US 1138659724,1138659731,ID @@ -19657,8 +23603,7 @@ 1138660218,1138660225,IN 1138660226,1138660233,US 1138660234,1138660241,EG -1138660242,1138660242,US -1138660243,1138660270,CA +1138660242,1138660270,US 1138660271,1138660310,GB 1138660311,1138660311,US 1138660312,1138660333,GB @@ -19717,21 +23662,26 @@ 1138661670,1138661677,IN 1138661678,1138661713,US 1138661714,1138661721,EG -1138661722,1138661769,US +1138661722,1138661761,US +1138661762,1138661769,ID 1138661770,1138661777,MA 1138661778,1138661821,US 1138661822,1138661829,MA 1138661830,1138661913,US 1138661914,1138661954,EG -1138661955,1138661985,US -1138661986,1138661993,EG +1138661955,1138661977,US +1138661978,1138661993,EG 1138661994,1138662057,US 1138662058,1138662107,EG 1138662108,1138662169,US 1138662170,1138662233,EG 1138662234,1138662273,US 1138662274,1138662309,EG -1138662310,1138662409,US +1138662310,1138662333,US +1138662334,1138662353,GB +1138662354,1138662369,US +1138662370,1138662393,GB +1138662394,1138662409,US 1138662410,1138662473,EG 1138662474,1138662505,GB 1138662506,1138662537,US @@ -19744,18 +23694,14 @@ 1138662794,1138662801,ID 1138662802,1138662841,US 1138662842,1138662849,GB -1138662850,1138662966,US -1138662967,1138662982,EG -1138662983,1138663037,US +1138662850,1138663037,US 1138663038,1138663166,GB 1138663167,1138712575,US 1138712576,1138713583,CA -1138713584,1138713599,IR +1138713584,1138713599,MY 1138713600,1138713927,CA 1138713928,1138713935,US -1138713936,1138713951,CA -1138713952,1138713959,US -1138713960,1138714039,CA +1138713936,1138714039,CA 1138714040,1138714047,US 1138714048,1138714071,CA 1138714072,1138714079,US @@ -19789,7 +23735,13 @@ 1138950144,1139146751,US 1139146752,1139154943,GT 1139154944,1139167231,JM -1139167232,1139179519,US +1139167232,1139167743,US +1139167744,1139169023,PR +1139169024,1139169279,US +1139169280,1139170047,PR +1139170048,1139171327,US +1139171328,1139175423,GT +1139175424,1139179519,US 1139179520,1139188223,CA 1139188224,1139188479,GB 1139188480,1139188735,CA @@ -19808,7 +23760,7 @@ 1139195136,1139195391,GB 1139195392,1139195775,US 1139195776,1139195903,CA -1139195904,1139265535,US +1139195904,1139261439,US 1139265536,1139269631,CA 1139269632,1142187775,US 1142187776,1142187783,PR @@ -19834,42 +23786,48 @@ 1145259264,1145259327,IN 1145259328,1145260031,US 1145260032,1145260095,IN -1145260096,1145261055,US +1145260096,1145260623,US +1145260624,1145260631,IN +1145260632,1145261055,US 1145261056,1145261119,IN 1145261120,1145261311,US 1145261312,1145261375,IN 1145261376,1145307135,US 1145307136,1145311231,CA -1145311232,1145315559,US -1145315560,1145315567,GB -1145315568,1145331711,US +1145311232,1145331711,US 1145331712,1145331967,DK 1145331968,1145333031,US 1145333032,1145333039,IT -1145333040,1145333239,US +1145333040,1145333191,US +1145333192,1145333199,CN +1145333200,1145333215,US +1145333216,1145333223,CN +1145333224,1145333239,US 1145333240,1145333247,CN 1145333248,1145333327,US 1145333328,1145333343,CN 1145333344,1145333351,US -1145333352,1145333367,CN +1145333352,1145333359,CN +1145333360,1145333367,US 1145333368,1145333375,PA 1145333376,1145333503,BD 1145333504,1145333863,US 1145333864,1145333871,EG 1145333872,1145333879,US 1145333880,1145333903,CN -1145333904,1145333911,US -1145333912,1145333919,CN -1145333920,1145334055,US -1145334056,1145334063,CN -1145334064,1145334143,US -1145334144,1145334167,CN -1145334168,1145334175,HK -1145334176,1145335167,US -1145335168,1145335199,CN -1145335200,1145335215,US -1145335216,1145335231,CN -1145335232,1145376767,US +1145333904,1145334151,US +1145334152,1145334167,CN +1145334168,1145334175,US +1145334176,1145334223,CN +1145334224,1145334231,US +1145334232,1145334239,CN +1145334240,1145335103,US +1145335104,1145335135,NL +1145335136,1145335167,US +1145335168,1145335183,CN +1145335184,1145335215,US +1145335216,1145335223,CN +1145335224,1145376767,US 1145376768,1145380863,CA 1145380864,1145405439,US 1145405440,1145413631,CA @@ -19931,20 +23889,24 @@ 1151896088,1151896127,CA 1151896128,1151896191,US 1151896192,1151896319,CA -1151896320,1151943999,US +1151896320,1151896575,US +1151896576,1151896831,CA +1151896832,1151943999,US 1151944000,1151944063,HK 1151944064,1151945759,US 1151945760,1151945791,IE -1151945792,1151954943,US -1151959040,1152073727,US +1151945792,1152073727,US 1152073728,1152077823,CA -1152077824,1152581631,US +1152077824,1152081919,US +1152081920,1152082175,AU +1152082176,1152082303,IN +1152082304,1152082431,US +1152082432,1152082687,AU +1152082688,1152581631,US 1152581632,1152614399,CA 1152614400,1152778239,US 1152778240,1152843775,CA -1152843776,1154488319,US -1154488320,1154488575,A2 -1154488576,1156071423,US +1152843776,1156071423,US 1156071424,1156079615,CA 1156079616,1156129479,US 1156129480,1156129487,SG @@ -19965,9 +23927,13 @@ 1157670432,1157670463,CA 1157670464,1157713663,US 1157713664,1157713791,CA -1157713792,1157755247,US +1157713792,1157753087,US +1157753088,1157753343,GB +1157753344,1157755247,US 1157755248,1157755263,GR -1157755264,1157931007,US +1157755264,1157758207,US +1157758208,1157758463,RU +1157758464,1157931007,US 1157931008,1157935103,BS 1157935104,1157943295,US 1157943296,1157947391,CA @@ -20248,9 +24214,7 @@ 1158732877,1158732884,GB 1158732885,1158736241,US 1158736242,1158736249,IN -1158736250,1158741290,US -1158741291,1158741298,CA -1158741299,1158774783,US +1158736250,1158774783,US 1158774784,1158791167,CA 1158791168,1158799359,BM 1158799360,1158807551,CA @@ -20336,7 +24300,9 @@ 1158946640,1158946647,IL 1158946648,1158946711,US 1158946712,1158946719,HK -1158946720,1158947087,US +1158946720,1158946771,US +1158946772,1158946772,MX +1158946773,1158947087,US 1158947088,1158947095,ZA 1158947096,1158947391,US 1158947392,1158947399,CA @@ -20371,7 +24337,9 @@ 1158949408,1158949415,ZA 1158949416,1158949775,US 1158949776,1158949783,GB -1158949784,1158950319,US +1158949784,1158950105,US +1158950106,1158950107,CA +1158950108,1158950319,US 1158950320,1158950327,CA 1158950328,1158950335,US 1158950336,1158950351,CA @@ -20404,10 +24372,14 @@ 1158952816,1158952823,CA 1158952824,1158952895,US 1158952896,1158952903,IL -1158952904,1158954815,US +1158952904,1158953503,US +1158953504,1158953511,NL +1158953512,1158954815,US 1158954816,1158954823,GB 1158954824,1158954831,CA -1158954832,1158955039,US +1158954832,1158955015,US +1158955016,1158955023,CA +1158955024,1158955039,US 1158955040,1158955047,GB 1158955048,1158956063,US 1158956064,1158956079,NL @@ -20457,9 +24429,7 @@ 1158961256,1158961263,ES 1158961264,1158961775,US 1158961776,1158961783,CA -1158961784,1158961823,US -1158961824,1158961855,BD -1158961856,1158962175,US +1158961784,1158962175,US 1158962176,1158962183,GB 1158962184,1158962287,US 1158962288,1158962295,ZA @@ -20467,7 +24437,9 @@ 1158962592,1158962607,GB 1158962608,1158962615,US 1158962616,1158962623,GB -1158962624,1158963271,US +1158962624,1158962671,US +1158962672,1158962675,IN +1158962676,1158963271,US 1158963272,1158963279,IE 1158963280,1158963335,US 1158963336,1158963343,SE @@ -20479,7 +24451,9 @@ 1158963728,1158963735,GB 1158963736,1158964103,US 1158964104,1158964111,IN -1158964112,1158964255,US +1158964112,1158964189,US +1158964190,1158964191,CA +1158964192,1158964255,US 1158964256,1158964263,IN 1158964264,1158964287,US 1158964288,1158964319,CA @@ -20504,7 +24478,7 @@ 1158965168,1158965199,US 1158965200,1158965215,CA 1158965216,1158965247,US -1158965248,1158965255,RU +1158965248,1158965255,IN 1158965256,1158965559,US 1158965560,1158965567,IN 1158965568,1158965743,US @@ -20577,13 +24551,18 @@ 1159254016,1159262471,US 1159262472,1159262475,TZ 1159262476,1159262479,SA -1159262480,1159262727,US +1159262480,1159262483,US +1159262484,1159262487,TZ +1159262488,1159262491,SA +1159262492,1159262727,US 1159262728,1159262731,DE 1159262732,1159262735,RU -1159262736,1159266935,US +1159262736,1159262743,US +1159262744,1159262747,RU +1159262748,1159266935,US 1159266936,1159266943,PR 1159266944,1159269119,US -1159269120,1159269375,CA +1159269120,1159269375,AR 1159269376,1159274495,US 1159274496,1159274751,GB 1159274752,1159276799,US @@ -20610,9 +24589,9 @@ 1159314080,1159314087,TR 1159314088,1159314367,US 1159314368,1159314383,BR -1159314384,1159314687,US -1159314688,1159314703,MX -1159314704,1159318015,US +1159314384,1159314943,US +1159314944,1159315199,CR +1159315200,1159318015,US 1159318016,1159318047,GB 1159318048,1159328655,US 1159328656,1159328671,FR @@ -20620,9 +24599,7 @@ 1159348224,1159356415,CA 1159356416,1159421951,US 1159421952,1159430143,CA -1159430144,1159441343,US -1159441344,1159441375,CA -1159441376,1159480439,US +1159430144,1159480439,US 1159480440,1159480447,CA 1159480448,1159481167,US 1159481168,1159481183,VG @@ -20657,8 +24634,8 @@ 1159517120,1159517151,CA 1159517152,1159517183,US 1159517184,1159517327,CA -1159517328,1159517567,US -1159517568,1159517599,CA +1159517328,1159517439,US +1159517440,1159517599,CA 1159517600,1159517631,US 1159517632,1159517663,CA 1159517664,1159517695,US @@ -20701,9 +24678,7 @@ 1159525376,1159526399,CA 1159526400,1159527935,US 1159527936,1159528191,CA -1159528192,1159530671,US -1159530672,1159530679,MO -1159530680,1159532103,US +1159528192,1159532103,US 1159532104,1159532111,MO 1159532112,1159560207,US 1159560208,1159560215,MO @@ -20711,8 +24686,8 @@ 1159643440,1159643455,TR 1159643456,1159643471,JP 1159643472,1159656487,US -1159656488,1159656511,BR -1159656512,1159657023,US +1159656488,1159656495,BR +1159656496,1159657023,US 1159657024,1159657039,AU 1159657040,1159657071,US 1159657072,1159657087,NZ @@ -20740,8 +24715,7 @@ 1159997584,1159997591,BB 1159997592,1159997623,US 1159997624,1159997631,SC -1159997632,1159997639,GB -1159997640,1159998575,US +1159997632,1159998575,US 1159998576,1159998583,UG 1159998584,1159998703,US 1159998704,1159998711,RS @@ -20817,7 +24791,8 @@ 1160406480,1160406487,A2 1160406488,1160408095,US 1160408096,1160408111,GD -1160408112,1160408319,US +1160408112,1160408127,ES +1160408128,1160408319,US 1160408320,1160408575,CA 1160408576,1160409423,US 1160409424,1160409439,PT @@ -20885,7 +24860,20 @@ 1160487424,1160503295,US 1160503296,1160503871,A2 1160503872,1160503903,US -1160503904,1160507391,A2 +1160503904,1160504159,A2 +1160504160,1160504175,US +1160504176,1160504191,A2 +1160504192,1160504207,AU +1160504208,1160504287,A2 +1160504288,1160504303,US +1160504304,1160504319,A2 +1160504320,1160504383,US +1160504384,1160504511,A2 +1160504512,1160504543,NP +1160504544,1160504575,AF +1160504576,1160505343,A2 +1160505344,1160505855,AU +1160505856,1160507391,A2 1160507392,1160542207,US 1160542208,1160542239,LB 1160542240,1160543327,US @@ -20900,7 +24888,21 @@ 1160563200,1160563711,MP 1160563712,1160609791,US 1160609792,1160610815,MX -1160610816,1160667135,US +1160610816,1160660111,US +1160660112,1160660119,GB +1160660120,1160661639,US +1160661640,1160661647,GB +1160661648,1160662487,US +1160662488,1160662495,GB +1160662496,1160662743,US +1160662744,1160662751,GB +1160662752,1160665623,US +1160665624,1160665631,GB +1160665632,1160665807,US +1160665808,1160665815,GB +1160665816,1160667087,US +1160667088,1160667095,GB +1160667096,1160667135,US 1160667136,1160675327,CA 1160675328,1160677015,US 1160677016,1160677023,AR @@ -21034,7 +25036,15 @@ 1160864000,1160864255,CA 1160864256,1160921087,US 1160921088,1160925183,AG -1160925184,1160941535,US +1160925184,1160938879,US +1160938880,1160938887,NL +1160938888,1160938895,US +1160938896,1160938911,CY +1160938912,1160941463,US +1160941464,1160941471,RU +1160941472,1160941503,US +1160941504,1160941519,CY +1160941520,1160941535,US 1160941536,1160941567,CA 1160941568,1160945663,US 1160953856,1160973439,US @@ -21057,8 +25067,8 @@ 1161293824,1161297919,CA 1161297920,1161298303,US 1161298304,1161298311,IL -1161298312,1161300511,US -1161300512,1161300519,CA +1161298312,1161300495,US +1161300496,1161300519,CA 1161300520,1161304591,US 1161304592,1161304599,AU 1161304600,1161311743,US @@ -21078,7 +25088,9 @@ 1161314160,1161363455,US 1161363456,1161367551,CA 1161367552,1161416703,US -1161420800,1161421311,AG +1161420800,1161421151,AG +1161421152,1161421167,MS +1161421168,1161421311,AG 1161421312,1161421567,AI 1161421568,1161422079,AG 1161422080,1161422335,VG @@ -21103,7 +25115,9 @@ 1161426176,1161426943,AG 1161426944,1161427199,AI 1161427200,1161427455,VG -1161427456,1161428223,AG +1161427456,1161427487,AG +1161427488,1161427519,MS +1161427520,1161428223,AG 1161428224,1161428991,KN 1161428992,1161453567,US 1161453568,1161457663,CA @@ -21115,44 +25129,78 @@ 1161586688,1161586943,PA 1161586944,1161617407,US 1161617408,1161625599,CA -1161625600,1161627695,US -1161627696,1161627703,AR -1161627704,1161627727,US +1161625600,1161627663,US +1161627664,1161627679,SE +1161627680,1161627687,US +1161627688,1161627695,HR +1161627696,1161627703,US +1161627704,1161627711,DE +1161627712,1161627727,US 1161627728,1161627743,AR -1161627744,1161627759,US +1161627744,1161627751,RO +1161627752,1161627759,US 1161627760,1161627775,GB 1161627776,1161627807,US -1161627808,1161627823,AR +1161627808,1161627815,HR +1161627816,1161627823,US 1161627824,1161627831,AU -1161627832,1161627863,AR -1161627864,1161627871,US -1161627872,1161627879,GB +1161627832,1161627839,US +1161627840,1161627863,AR +1161627864,1161627871,CA +1161627872,1161627879,HR 1161627880,1161627895,US -1161627896,1161627903,AZ -1161627904,1161628479,US +1161627896,1161627903,CA +1161627904,1161628447,US +1161628448,1161628455,NL +1161628456,1161628463,GB +1161628464,1161628479,US 1161628480,1161628487,GB 1161628488,1161628607,US 1161628608,1161628639,AR 1161628640,1161628647,IN -1161628648,1161628655,CA -1161628656,1161628663,US +1161628648,1161628663,US 1161628664,1161628671,AR -1161628672,1161629327,US -1161629328,1161629335,RO -1161629336,1161629343,NL -1161629344,1161629391,US -1161629392,1161629399,RU -1161629400,1161629519,US +1161628672,1161629199,US +1161629200,1161629215,SI +1161629216,1161629223,US +1161629224,1161629231,GB +1161629232,1161629239,US +1161629240,1161629247,PL +1161629248,1161629263,US +1161629264,1161629271,PL +1161629272,1161629343,US +1161629344,1161629375,FI +1161629376,1161629383,CA +1161629384,1161629391,AR +1161629392,1161629399,IE +1161629400,1161629407,IL +1161629408,1161629415,GB +1161629416,1161629423,SI +1161629424,1161629431,US +1161629432,1161629439,MY +1161629440,1161629519,US 1161629520,1161629527,GB 1161629528,1161629535,MY -1161629536,1161629551,GB -1161629552,1161629695,US +1161629536,1161629567,GB +1161629568,1161629583,US +1161629584,1161629599,GB +1161629600,1161629615,HR +1161629616,1161629695,US 1161629696,1161629951,PL -1161629952,1161630335,US -1161630336,1161630343,PL -1161630344,1161630399,US +1161629952,1161630263,US +1161630264,1161630271,AR +1161630272,1161630335,US +1161630336,1161630343,AR +1161630344,1161630351,IL +1161630352,1161630367,US +1161630368,1161630375,GB +1161630376,1161630383,US +1161630384,1161630391,AR +1161630392,1161630399,US 1161630400,1161630431,GB -1161630432,1161630727,US +1161630432,1161630455,US +1161630456,1161630463,NL +1161630464,1161630727,US 1161630728,1161630735,EG 1161630736,1161630743,AU 1161630744,1161630751,GB @@ -21160,46 +25208,58 @@ 1161630768,1161630775,IL 1161630776,1161630791,US 1161630792,1161630799,AR -1161630800,1161630823,US -1161630824,1161630831,AR -1161630832,1161630855,US -1161630856,1161630863,DE -1161630864,1161630911,US +1161630800,1161630807,US +1161630808,1161630815,BG +1161630816,1161630823,US +1161630824,1161630831,GB +1161630832,1161630895,US +1161630896,1161630903,DK +1161630904,1161630911,US 1161630912,1161630919,KW 1161630920,1161630927,US 1161630928,1161630935,GB -1161630936,1161630967,US +1161630936,1161630943,SI +1161630944,1161630951,US +1161630952,1161630959,TR +1161630960,1161630967,US 1161630968,1161630975,IL 1161630976,1161630983,US 1161630984,1161630991,CA 1161630992,1161630999,US 1161631000,1161631007,AU 1161631008,1161631015,IL -1161631016,1161631039,US +1161631016,1161631031,US +1161631032,1161631039,CZ 1161631040,1161631047,GB -1161631048,1161631079,US -1161631080,1161631087,AR -1161631088,1161631127,US +1161631048,1161631055,IN +1161631056,1161631079,US +1161631080,1161631087,SI +1161631088,1161631103,US +1161631104,1161631111,KW +1161631112,1161631127,US 1161631128,1161631135,BG 1161631136,1161631159,US 1161631160,1161631167,CA 1161631168,1161631183,US 1161631184,1161631199,GB -1161631200,1161631215,AR +1161631200,1161631207,US +1161631208,1161631215,AR 1161631216,1161631223,GB -1161631224,1161631471,US +1161631224,1161631431,US +1161631432,1161631439,KW +1161631440,1161631471,US 1161631472,1161631479,AR -1161631480,1161631487,US -1161631488,1161631495,AR +1161631480,1161631495,US 1161631496,1161631503,CA 1161631504,1161631511,US 1161631512,1161631519,BG -1161631520,1161631535,US +1161631520,1161631535,GB 1161631536,1161631543,AR 1161631544,1161631551,BR 1161631552,1161631591,US 1161631592,1161631599,BR -1161631600,1161631631,US +1161631600,1161631623,US +1161631624,1161631631,KW 1161631632,1161631639,BR 1161631640,1161631647,US 1161631648,1161631655,AU @@ -21210,7 +25270,8 @@ 1161632520,1161632527,BG 1161632528,1161632551,US 1161632552,1161632559,BR -1161632560,1161632631,US +1161632560,1161632575,GB +1161632576,1161632631,US 1161632632,1161632639,GB 1161632640,1161632655,US 1161632656,1161632663,GB @@ -21220,13 +25281,21 @@ 1161633024,1161633055,CA 1161633056,1161633215,US 1161633216,1161633231,EE -1161633232,1161634063,US -1161634064,1161634071,RO +1161633232,1161633631,US +1161633632,1161633639,CA +1161633640,1161634055,US +1161634056,1161634063,IN +1161634064,1161634071,CA 1161634072,1161634127,US 1161634128,1161634135,AR -1161634136,1161634199,US +1161634136,1161634143,PH +1161634144,1161634175,US +1161634176,1161634191,PL +1161634192,1161634199,US 1161634200,1161634207,NZ -1161634208,1161634239,US +1161634208,1161634223,US +1161634224,1161634231,VN +1161634232,1161634239,US 1161634240,1161634247,GB 1161634248,1161634271,US 1161634272,1161634287,CH @@ -21234,11 +25303,14 @@ 1161634336,1161634352,PL 1161634353,1161634495,US 1161634496,1161634503,GB -1161634504,1161634943,US +1161634504,1161634519,US +1161634520,1161634527,BG +1161634528,1161634943,US 1161634944,1161634959,PL 1161634960,1161634975,US 1161634976,1161635007,PL -1161635008,1161635855,US +1161635008,1161635071,KW +1161635072,1161635855,US 1161635856,1161635871,BE 1161635872,1161636063,US 1161636064,1161636095,IL @@ -21251,9 +25323,12 @@ 1161636464,1161636471,EG 1161636472,1161636495,US 1161636496,1161636503,CA -1161636504,1161637159,US +1161636504,1161637135,US +1161637136,1161637143,CA +1161637144,1161637159,US 1161637160,1161637167,NZ -1161637168,1161637199,US +1161637168,1161637175,GB +1161637176,1161637199,US 1161637200,1161637207,GB 1161637208,1161637215,US 1161637216,1161637223,PL @@ -21261,7 +25336,9 @@ 1161637296,1161637303,AR 1161637304,1161637343,US 1161637344,1161637351,RU -1161637352,1161637671,US +1161637352,1161637655,US +1161637656,1161637663,IL +1161637664,1161637671,US 1161637672,1161637679,IL 1161637680,1161637695,AR 1161637696,1161637775,US @@ -21272,7 +25349,11 @@ 1161638968,1161638975,GB 1161638976,1161638991,US 1161638992,1161638999,PL -1161639000,1161639063,US +1161639000,1161639007,US +1161639008,1161639023,BG +1161639024,1161639039,US +1161639040,1161639047,CA +1161639048,1161639063,US 1161639064,1161639071,PL 1161639072,1161639087,US 1161639088,1161639095,CA @@ -21287,33 +25368,43 @@ 1161639520,1161639527,PL 1161639528,1161639575,US 1161639576,1161639583,BG -1161639584,1161639703,US +1161639584,1161639687,US +1161639688,1161639695,KW +1161639696,1161639703,US 1161639704,1161639711,BZ 1161639712,1161639719,PL 1161639720,1161639727,US 1161639728,1161639743,GB 1161639744,1161639831,US 1161639832,1161639839,AR -1161639840,1161639887,US +1161639840,1161639879,US +1161639880,1161639887,NL 1161639888,1161639895,AT -1161639896,1161639951,US -1161639952,1161639959,IL +1161639896,1161639959,US 1161639960,1161639967,GB -1161639968,1161639999,US -1161640000,1161640015,PL -1161640016,1161640023,US +1161639968,1161639991,US +1161639992,1161639999,HR +1161640000,1161640015,US +1161640016,1161640023,PL 1161640024,1161640031,AR 1161640032,1161640095,US 1161640096,1161640127,AR 1161640128,1161640767,US -1161640768,1161640791,GB +1161640768,1161640783,RO +1161640784,1161640791,GB 1161640792,1161640847,US 1161640848,1161640863,PL -1161640864,1161641887,US +1161640864,1161640895,AR +1161640896,1161641375,US +1161641376,1161641383,KW +1161641384,1161641463,US +1161641464,1161641471,IN +1161641472,1161641887,US 1161641888,1161641911,KW 1161641912,1161641919,US 1161641920,1161641983,PL -1161641984,1161642007,US +1161641984,1161641999,US +1161642000,1161642007,IN 1161642008,1161642015,NL 1161642016,1161642039,GB 1161642040,1161642175,US @@ -21339,56 +25430,95 @@ 1161647104,1161647119,PL 1161647120,1161647135,GB 1161647136,1161647167,PL -1161647168,1161650183,US -1161650184,1161650191,IL +1161647168,1161649407,US +1161649408,1161649663,AR +1161649664,1161650175,US +1161650176,1161650183,HR +1161650184,1161650191,AR 1161650192,1161650199,US 1161650200,1161650207,BG -1161650208,1161650303,US +1161650208,1161650215,US +1161650216,1161650223,FI +1161650224,1161650239,CA +1161650240,1161650303,US 1161650304,1161650311,NL 1161650312,1161650327,US -1161650328,1161650335,AR -1161650336,1161650359,US -1161650360,1161650367,RO -1161650368,1161650687,US -1161650688,1161650695,AR -1161650696,1161650703,BR -1161650704,1161650847,US +1161650328,1161650343,AR +1161650344,1161650359,US +1161650360,1161650367,IL +1161650368,1161650375,ES +1161650376,1161650391,US +1161650392,1161650399,CA +1161650400,1161650415,US +1161650416,1161650423,PL +1161650424,1161650799,US +1161650800,1161650815,SI +1161650816,1161650823,US +1161650824,1161650831,AU +1161650832,1161650847,US 1161650848,1161650863,AR -1161650864,1161650927,US +1161650864,1161650879,US +1161650880,1161650895,GB +1161650896,1161650927,US 1161650928,1161650935,HR -1161650936,1161651055,US +1161650936,1161650943,US +1161650944,1161650951,SI +1161650952,1161650967,US +1161650968,1161650975,SI +1161650976,1161651055,US 1161651056,1161651071,PL -1161651072,1161651103,US +1161651072,1161651079,HR +1161651080,1161651095,US +1161651096,1161651103,HR 1161651104,1161651135,GB -1161651136,1161651487,US +1161651136,1161651143,BG +1161651144,1161651183,US +1161651184,1161651199,GB +1161651200,1161651487,US 1161651488,1161651503,GB -1161651504,1161651535,US +1161651504,1161651511,US +1161651512,1161651519,GB +1161651520,1161651535,CA 1161651536,1161651543,PL -1161651544,1161651551,US -1161651552,1161651559,CA -1161651560,1161651599,US -1161651600,1161651607,AR +1161651544,1161651575,US +1161651576,1161651583,CA +1161651584,1161651599,US +1161651600,1161651607,RS 1161651608,1161651647,US 1161651648,1161651711,PL -1161651712,1161651967,US +1161651712,1161651743,US +1161651744,1161651775,GB +1161651776,1161651807,AR +1161651808,1161651839,US +1161651840,1161651855,MY +1161651856,1161651967,US 1161651968,1161651975,CH 1161651976,1161652007,US 1161652008,1161652015,GB 1161652016,1161652095,US 1161652096,1161652103,CY -1161652104,1161652127,US -1161652128,1161652135,AR -1161652136,1161653023,US +1161652104,1161652143,US +1161652144,1161652151,GB +1161652152,1161652991,US +1161652992,1161653023,CA 1161653024,1161653055,AR -1161653056,1161653503,US +1161653056,1161653087,US +1161653088,1161653119,PL +1161653120,1161653503,US 1161653504,1161653759,CA 1161653760,1161653791,US 1161653792,1161653799,SI 1161653800,1161653831,US -1161653832,1161653839,HR -1161653840,1161655807,US -1161655808,1161656063,IL -1161656064,1161657615,US +1161653832,1161653839,SI +1161653840,1161653847,US +1161653848,1161653855,SI +1161653856,1161653887,US +1161653888,1161653951,SE +1161653952,1161654239,US +1161654240,1161654247,GB +1161654248,1161654263,US +1161654264,1161654271,SI +1161654272,1161657615,US 1161657616,1161657623,CA 1161657624,1161657679,US 1161657680,1161657695,PL @@ -21399,22 +25529,40 @@ 1161658160,1161764863,US 1161764864,1161773055,CA 1161773056,1161777151,SZ -1161777152,1161790407,US -1161790408,1161790416,PA -1161790417,1161790839,US +1161777152,1161789981,US +1161789982,1161789983,CA +1161789984,1161789984,US +1161789985,1161789985,CA +1161789986,1161790165,US +1161790166,1161790171,CA +1161790172,1161790196,US +1161790197,1161790205,DE +1161790206,1161790839,US 1161790840,1161790848,CA -1161790849,1161818111,US +1161790849,1161791321,US +1161791322,1161791330,CA +1161791331,1161791381,US +1161791382,1161791386,CA +1161791387,1161795979,US +1161795980,1161795983,CA +1161795984,1161818111,US 1161818112,1161822207,CA -1161822208,1161832799,US -1161832800,1161832831,ZA -1161832832,1161832863,DE -1161832864,1161833967,US +1161822208,1161832767,US +1161832768,1161832831,BR +1161832832,1161833759,US +1161833760,1161833791,FR +1161833792,1161833855,US +1161833856,1161833887,FR +1161833888,1161833919,US +1161833920,1161833951,UA +1161833952,1161833967,US 1161833968,1161833975,DE 1161833976,1161835341,US 1161835342,1161835353,GR 1161835354,1161836031,US 1161836032,1161836063,CA -1161836064,1161836159,US +1161836064,1161836095,JP +1161836096,1161836159,US 1161836160,1161836191,BR 1161836192,1161836287,US 1161836288,1161836319,RS @@ -21422,7 +25570,7 @@ 1161836384,1161836415,CY 1161836416,1161836447,BR 1161836448,1161836479,US -1161836480,1161836511,UA +1161836480,1161836511,GB 1161836512,1161837567,US 1161837568,1161837823,JP 1161837824,1161838548,US @@ -21457,7 +25605,9 @@ 1161891528,1161891535,CA 1161891536,1161891543,US 1161891544,1161891551,CA -1161891552,1161901647,US +1161891552,1161900863,US +1161900864,1161900895,A1 +1161900896,1161901647,US 1161901648,1161901655,VN 1161901656,1161925631,US 1161925632,1161925887,EC @@ -21528,7 +25678,9 @@ 1162461184,1162461695,BB 1162461696,1162462207,GD 1162462208,1162462975,BB -1162462976,1162463999,VC +1162462976,1162463054,VC +1162463055,1162463055,BB +1162463056,1162463999,VC 1162464000,1162465279,BB 1162465280,1162465535,GD 1162465536,1162470911,BB @@ -21551,7 +25703,8 @@ 1162811648,1162812159,US 1162812160,1162812415,DO 1162812416,1162813439,BS -1162813440,1162821631,US +1162813440,1162817535,AN +1162817536,1162821631,GT 1162821632,1162823679,PR 1162823680,1162825727,GT 1162825728,1162827775,US @@ -21561,16 +25714,28 @@ 1162836224,1162836735,AN 1162836736,1162836991,US 1162836992,1162838015,BS -1162838016,1162870783,US +1162838016,1162840063,PR +1162840064,1162853375,US +1162853376,1162854399,PR +1162854400,1162858495,JM +1162858496,1162862591,HN +1162862592,1162870783,US 1162870784,1162871295,BB -1162871296,1162874367,LC -1162874368,1162887167,BB -1162903552,1162925983,US +1162871296,1162879999,LC +1162880000,1162882559,DM +1162882560,1162883839,GD +1162883840,1162887167,BB +1162887168,1162895359,US +1162895360,1162899455,A1 +1162899456,1162925983,US 1162925984,1162926015,AU 1162926016,1162926071,US 1162926072,1162926079,AU 1162926080,1163395071,US -1163395072,1163395839,A2 +1163395072,1163395823,A2 +1163395824,1163395827,NP +1163395828,1163395831,AF +1163395832,1163395839,A2 1163395840,1163395847,BD 1163395848,1163395855,ID 1163395856,1163395863,BD @@ -21634,7 +25799,9 @@ 1163397576,1163397583,BD 1163397584,1163397663,A2 1163397664,1163397695,BD -1163397696,1163397855,A2 +1163397696,1163397791,A2 +1163397792,1163397807,AF +1163397808,1163397855,A2 1163397856,1163397887,US 1163397888,1163398143,NP 1163398144,1163398239,A2 @@ -21644,7 +25811,7 @@ 1163399040,1163399103,A2 1163399104,1163399295,BD 1163399296,1163399679,A2 -1163399680,1163399807,BD +1163399680,1163399807,US 1163399808,1163399935,A2 1163399936,1163400063,US 1163400064,1163400447,A2 @@ -21686,29 +25853,30 @@ 1163403264,1163407359,US 1163407360,1163411455,CA 1163411456,1163468799,US -1163468800,1163472895,PR -1163472896,1163526143,US +1163468800,1163469055,PR +1163469056,1163469311,US +1163469312,1163472895,PR +1163472896,1163477695,US +1163477696,1163477727,JP +1163477728,1163478047,US +1163478048,1163478063,JP +1163478064,1163526143,US 1163526144,1163526463,CA -1163526464,1163526911,US -1163526912,1163527007,CA -1163527008,1163527023,US +1163526464,1163526655,US +1163526656,1163527023,CA 1163527024,1163527039,BV 1163527040,1163527059,CA 1163527060,1163527071,US 1163527072,1163527103,CA 1163527104,1163527135,US -1163527136,1163527143,CA -1163527144,1163527151,US -1163527152,1163527167,CA -1163527168,1163527743,US +1163527136,1163527679,CA +1163527680,1163527743,US 1163527744,1163527775,CA 1163527776,1163527791,US -1163527792,1163528191,CA -1163528192,1163528703,US -1163528704,1163529215,CA +1163527792,1163529215,CA 1163529216,1163530239,US -1163530240,1163530399,CA -1163530400,1163530431,US +1163530240,1163530415,CA +1163530416,1163530431,US 1163530432,1163530639,CA 1163530640,1163530655,US 1163530656,1163530839,CA @@ -21729,12 +25897,14 @@ 1163533696,1163533727,US 1163533728,1163533791,CA 1163533792,1163533807,US -1163533808,1163533823,CA -1163533824,1163534015,US +1163533808,1163533951,CA +1163533952,1163534015,US 1163534016,1163534031,CA 1163534032,1163534047,US 1163534048,1163534063,CA -1163534064,1163534143,US +1163534064,1163534071,US +1163534072,1163534079,MX +1163534080,1163534143,US 1163534144,1163534175,CA 1163534176,1163534255,US 1163534256,1163534311,CA @@ -21759,9 +25929,7 @@ 1163542848,1163542855,US 1163542856,1163542919,CA 1163542920,1163542927,US -1163542928,1163542975,CA -1163542976,1163543007,US -1163543008,1163543687,CA +1163542928,1163543687,CA 1163543688,1163543695,FI 1163543696,1163543839,CA 1163543840,1163543847,US @@ -21769,20 +25937,17 @@ 1163543984,1163543991,US 1163543992,1163544319,CA 1163544320,1163544327,US -1163544328,1163544383,CA +1163544328,1163544335,GB +1163544336,1163544383,CA 1163544384,1163544423,US 1163544424,1163544575,CA 1163544576,1163544607,US -1163544608,1163544671,CA -1163544672,1163544687,US -1163544688,1163544751,CA +1163544608,1163544751,CA 1163544752,1163544759,SG 1163544760,1163544783,CA 1163544784,1163544799,US -1163544800,1163545215,CA -1163545216,1163545247,FI -1163545248,1163545279,CA -1163545280,1163545303,US +1163544800,1163545295,CA +1163545296,1163545303,US 1163545304,1163545311,CA 1163545312,1163545343,BV 1163545344,1163545351,US @@ -21798,62 +25963,45 @@ 1163545984,1163546015,US 1163546016,1163546039,CA 1163546040,1163546047,NZ -1163546048,1163546079,CA -1163546080,1163546111,US -1163546112,1163546119,CA +1163546048,1163546119,CA 1163546120,1163546127,US 1163546128,1163546135,CA -1163546136,1163546175,US -1163546176,1163546199,CA -1163546200,1163546239,US -1163546240,1163546367,CA -1163546368,1163546375,US -1163546376,1163546391,CA -1163546392,1163546423,US +1163546136,1163546143,US +1163546144,1163546199,CA +1163546200,1163546207,US +1163546208,1163546399,CA +1163546400,1163546423,US 1163546424,1163546447,CA 1163546448,1163546455,US 1163546456,1163546527,CA 1163546528,1163546535,US -1163546536,1163546543,CA -1163546544,1163546559,US +1163546536,1163546551,CA +1163546552,1163546559,US 1163546560,1163547455,CA 1163547456,1163547463,US 1163547464,1163547487,CA 1163547488,1163547519,US -1163547520,1163547527,CA -1163547528,1163547539,US -1163547540,1163547551,CA -1163547552,1163547567,US +1163547520,1163547535,CA +1163547536,1163547539,US +1163547540,1163547567,CA 1163547568,1163547583,VG 1163547584,1163547647,CA 1163547648,1163547903,US 1163547904,1163547951,CA -1163547952,1163547999,US -1163548000,1163549007,CA -1163549008,1163549023,US -1163549024,1163549183,CA -1163549184,1163549695,US -1163549696,1163550239,CA -1163550240,1163550255,US -1163550256,1163550271,CA -1163550272,1163550303,US -1163550304,1163550335,CA +1163547952,1163547983,US +1163547984,1163550335,CA 1163550336,1163550351,US 1163550352,1163550367,CA 1163550368,1163550375,US 1163550376,1163550383,CA 1163550384,1163550399,US -1163550400,1163550591,CA -1163550592,1163550655,US -1163550656,1163550783,CA +1163550400,1163550783,CA 1163550784,1163550815,US 1163550816,1163551071,CA 1163551072,1163551087,US 1163551088,1163551423,CA 1163551424,1163551439,US -1163551440,1163551455,CA -1163551456,1163551487,US -1163551488,1163551623,CA +1163551440,1163551623,CA 1163551624,1163551631,CN 1163551632,1163551663,CA 1163551664,1163551679,US @@ -21867,9 +26015,7 @@ 1163552576,1163552607,PA 1163552608,1163552679,CA 1163552680,1163552687,US -1163552688,1163553791,CA -1163553792,1163553807,US -1163553808,1163553855,CA +1163552688,1163553855,CA 1163553856,1163553871,US 1163553872,1163553919,CA 1163553920,1163553935,BV @@ -21881,10 +26027,8 @@ 1163554648,1163554655,MX 1163554656,1163554703,CA 1163554704,1163554751,US -1163554752,1163554815,CA -1163554816,1163555071,US -1163555072,1163555327,CA -1163555328,1163556095,US +1163554752,1163555839,CA +1163555840,1163556095,US 1163556096,1163556607,CA 1163556608,1163557727,US 1163557728,1163557759,CA @@ -21893,9 +26037,7 @@ 1163558029,1163560191,US 1163560192,1163560447,CA 1163560448,1163560959,US -1163560960,1163561727,CA -1163561728,1163561983,FI -1163561984,1163562063,CA +1163560960,1163562063,CA 1163562064,1163562079,US 1163562080,1163562119,CA 1163562120,1163562127,SG @@ -21904,7 +26046,9 @@ 1163562208,1163562231,CA 1163562232,1163562239,US 1163562240,1163563007,CA -1163563008,1163566047,US +1163563008,1163564031,US +1163564032,1163564799,CA +1163564800,1163566047,US 1163566048,1163566079,CA 1163566080,1163567103,US 1163567104,1163568127,CA @@ -21915,9 +26059,7 @@ 1163571984,1163571999,US 1163572000,1163572031,CA 1163572032,1163572063,BE -1163572064,1163572079,CA -1163572080,1163572087,US -1163572088,1163572175,CA +1163572064,1163572175,CA 1163572176,1163572183,US 1163572184,1163572687,CA 1163572688,1163572703,US @@ -21927,7 +26069,7 @@ 1163573200,1163573215,US 1163573216,1163573263,CA 1163573264,1163573439,US -1163573440,1163573503,EG +1163573440,1163573503,IN 1163573504,1163575295,US 1163575296,1163576703,CA 1163576704,1163576799,US @@ -21940,8 +26082,10 @@ 1163577376,1163577407,CA 1163577408,1163577423,US 1163577424,1163577439,CA -1163577440,1163577871,US -1163577872,1163577919,CA +1163577440,1163577471,US +1163577472,1163577503,CA +1163577504,1163577863,US +1163577864,1163577919,CA 1163577920,1163577951,US 1163577952,1163578111,CA 1163578112,1163578191,US @@ -21949,9 +26093,7 @@ 1163578240,1163578255,US 1163578256,1163578271,CA 1163578272,1163578287,US -1163578288,1163578335,CA -1163578336,1163578351,US -1163578352,1163578711,CA +1163578288,1163578711,CA 1163578712,1163578715,US 1163578716,1163579119,CA 1163579120,1163579127,US @@ -21965,8 +26107,8 @@ 1163581184,1163581439,US 1163581440,1163581503,CA 1163581504,1163581567,US -1163581568,1163581591,CA -1163581592,1163581615,US +1163581568,1163581583,CA +1163581584,1163581615,US 1163581616,1163581631,CA 1163581632,1163581695,US 1163581696,1163581983,CA @@ -21978,7 +26120,9 @@ 1163582168,1163582183,CA 1163582184,1163582191,US 1163582192,1163583487,CA -1163583488,1163585855,US +1163583488,1163585199,US +1163585200,1163585215,CA +1163585216,1163585855,US 1163585856,1163585887,CA 1163585888,1163585889,US 1163585890,1163585905,GB @@ -21986,8 +26130,8 @@ 1163586741,1163586743,CA 1163586744,1163586744,NL 1163586745,1163586745,GB -1163586746,1163587839,US -1163587840,1163588095,CA +1163586746,1163587583,US +1163587584,1163588095,CA 1163588096,1163588111,US 1163588112,1163588159,CA 1163588160,1163588199,US @@ -21998,9 +26142,9 @@ 1163588608,1163588608,US 1163588609,1163588655,CA 1163588656,1163588671,US -1163588672,1163588703,CA -1163588704,1163588711,US -1163588712,1163588727,CA +1163588672,1163588695,CA +1163588696,1163588703,US +1163588704,1163588727,CA 1163588728,1163588863,US 1163588864,1163589631,CA 1163589632,1163870575,US @@ -22009,15 +26153,17 @@ 1163876472,1163876479,PA 1163876480,1163878399,US 1163878400,1163878407,CN -1163878408,1167321959,US +1163878408,1167319111,US +1167319112,1167319119,ZA +1167319120,1167321959,US 1167321960,1167321967,GB 1167321968,1167322695,US 1167322696,1167322703,IN -1167322704,1167323799,US -1167323800,1167323807,IN -1167323808,1167323823,US +1167322704,1167323823,US 1167323824,1167323831,IN -1167323832,1167325935,US +1167323832,1167324287,US +1167324288,1167324295,GB +1167324296,1167325935,US 1167325936,1167325951,CA 1167325952,1167326207,US 1167326208,1167326271,IN @@ -22038,11 +26184,15 @@ 1167693200,1167693215,UA 1167693216,1167851519,US 1167851520,1168113663,CA -1168113664,1168138239,US +1168113664,1168134271,US +1168134272,1168134303,CA +1168134304,1168138239,US 1168138240,1168146431,JM 1168146432,1168211967,US 1168211968,1168220159,CA -1168220160,1168318719,US +1168220160,1168281599,US +1168281600,1168281855,EG +1168281856,1168318719,US 1168318720,1168318975,CA 1168318976,1168321535,US 1168321536,1168321791,CA @@ -22052,14 +26202,12 @@ 1168394280,1168394375,CA 1168394376,1168394383,US 1168394384,1168394423,CA -1168394424,1168394463,US -1168394464,1168394471,CA +1168394424,1168394431,US +1168394432,1168394471,CA 1168394472,1168394479,US 1168394480,1168394503,CA 1168394504,1168394511,US -1168394512,1168394527,CA -1168394528,1168394559,US -1168394560,1168394751,CA +1168394512,1168394751,CA 1168394752,1168420863,US 1168420864,1168424959,CA 1168424960,1168474111,US @@ -22078,11 +26226,15 @@ 1168887808,1168891903,CA 1168891904,1168916479,US 1168916480,1168932863,CA -1168932864,1168936959,US +1168932864,1168935807,US +1168935808,1168935935,RU +1168935936,1168936959,US 1168936960,1168949247,CA 1168949248,1168949503,US 1168949504,1168949759,CA -1168949760,1168950271,US +1168949760,1168949823,US +1168949824,1168949855,CA +1168949856,1168950271,US 1168950272,1168951823,CA 1168951824,1168952063,US 1168952064,1168952095,CA @@ -22094,10 +26246,14 @@ 1168952888,1168952895,CA 1168952896,1168952959,US 1168952960,1168953343,CA -1168953344,1168954075,US +1168953344,1168954015,US +1168954016,1168954047,IN +1168954048,1168954075,US 1168954076,1168954079,CA -1168954080,1168955903,US -1168955904,1168956159,CA +1168954080,1168954623,US +1168954624,1168954687,IN +1168954688,1168955647,US +1168955648,1168956159,CA 1168956160,1168957439,US 1168957440,1168958047,CA 1168958048,1168958055,DE @@ -22115,8 +26271,8 @@ 1168958424,1168958463,US 1168958464,1168958479,CA 1168958480,1168958495,US -1168958496,1168958527,FR -1168958528,1168960543,US +1168958496,1168958559,IN +1168958560,1168960543,US 1168960544,1168960591,CA 1168960592,1168960607,US 1168960608,1168960623,CA @@ -22127,9 +26283,7 @@ 1168960832,1168960863,US 1168960864,1168960887,CA 1168960888,1168960895,US -1168960896,1168961887,CA -1168961888,1168961919,US -1168961920,1168961983,CA +1168960896,1168961983,CA 1168961984,1168961991,US 1168961992,1168961999,CA 1168962000,1168962303,US @@ -22183,104 +26337,197 @@ 1170456960,1170456975,CR 1170456976,1170456991,US 1170456992,1170457007,PR -1170457008,1170458063,US +1170457008,1170457599,US +1170457600,1170457663,BR +1170457664,1170458063,US 1170458064,1170458079,DE -1170458080,1170461183,US -1170461184,1170461439,CO +1170458080,1170461055,US +1170461056,1170461439,CO 1170461440,1170461695,US 1170461696,1170462719,IL -1170462720,1170472959,US +1170462720,1170465791,US +1170465792,1170466047,CY +1170466048,1170466767,US +1170466768,1170466783,MQ +1170466784,1170466815,US +1170466816,1170467839,IL +1170467840,1170468351,DO +1170468352,1170469055,US +1170469056,1170469071,VG +1170469072,1170472959,US 1170472960,1170481151,CA 1170481152,1170489343,US 1170489344,1170497535,CA 1170497536,1170505727,US 1170505728,1170522111,CA -1170522112,1170539329,US +1170522112,1170538495,US +1170538496,1170538751,KH +1170538752,1170539329,US 1170539330,1170539330,CN -1170539331,1170539393,US -1170539394,1170539394,TR -1170539395,1170539399,US -1170539400,1170539400,TR -1170539401,1170539416,US -1170539417,1170539417,TR -1170539418,1170539463,US -1170539464,1170539464,CN -1170539465,1170539466,US -1170539467,1170539467,IE -1170539468,1170539523,US -1170539524,1170539524,IE -1170539525,1170539586,US -1170539587,1170539587,FR -1170539588,1170539590,US +1170539331,1170539331,TR +1170539332,1170539332,CA +1170539333,1170539333,RO +1170539334,1170539460,US +1170539461,1170539461,PK +1170539462,1170539522,US +1170539523,1170539523,AU +1170539524,1170539589,US +1170539590,1170539590,SA 1170539591,1170539591,CN -1170539592,1170539592,US -1170539593,1170539593,CN -1170539594,1170539652,US +1170539592,1170539592,AU +1170539593,1170539650,US +1170539651,1170539651,TR +1170539652,1170539652,US 1170539653,1170539653,GB -1170539654,1170539714,US +1170539654,1170539712,US +1170539713,1170539713,CN +1170539714,1170539714,US 1170539715,1170539715,PK -1170539716,1170539776,US -1170539777,1170539777,FR -1170539778,1170539778,US -1170539779,1170539779,FR -1170539780,1170539969,US +1170539716,1170539777,US +1170539778,1170539778,CN +1170539779,1170539780,US +1170539781,1170539781,KR +1170539782,1170539841,US +1170539842,1170539842,BD +1170539843,1170539843,MY +1170539844,1170539910,US +1170539911,1170539911,KH +1170539912,1170539969,US 1170539970,1170539970,KH -1170539971,1170540038,US +1170539971,1170540036,US +1170540037,1170540037,TR +1170540038,1170540038,US 1170540039,1170540039,PH -1170540040,1170540097,US -1170540098,1170540098,TR -1170540099,1170540104,US -1170540105,1170540105,PK -1170540106,1170540231,US +1170540040,1170540096,US +1170540097,1170540098,TR +1170540099,1170540105,US +1170540106,1170540106,CN +1170540107,1170540163,US +1170540164,1170540164,RO +1170540165,1170540228,US +1170540229,1170540229,TR +1170540230,1170540230,US +1170540231,1170540231,KR 1170540232,1170540232,CN -1170540233,1170540289,US -1170540290,1170540290,CN -1170540291,1170544199,US +1170540233,1170540288,US +1170540289,1170540290,CN +1170540291,1170540291,US +1170540292,1170540292,TR +1170540293,1170540294,US +1170540295,1170540295,CN +1170540296,1170540296,TR +1170540297,1170540353,US +1170540354,1170540354,CN +1170540355,1170540359,US +1170540360,1170540360,CN +1170540361,1170540361,CA +1170540362,1170540369,US +1170540370,1170540370,CN +1170540371,1170540371,US +1170540372,1170540372,CN +1170540373,1170540416,US +1170540417,1170540417,CN +1170540418,1170540428,US +1170540429,1170540429,TR +1170540430,1170540480,US +1170540481,1170540481,TR +1170540482,1170540485,US +1170540486,1170540487,TR +1170540488,1170540491,US +1170540492,1170540494,TR +1170540495,1170540608,US +1170540609,1170540609,CN +1170540610,1170540616,US +1170540617,1170540617,TR +1170540618,1170542863,US +1170542864,1170542871,CN +1170542872,1170544127,US +1170544128,1170544191,CN +1170544192,1170544195,US +1170544196,1170544199,BD 1170544200,1170544207,TR -1170544208,1170544255,US -1170544256,1170544383,IN +1170544208,1170544239,US +1170544240,1170544247,CN +1170544248,1170544251,US +1170544252,1170544255,CN +1170544256,1170544383,PK 1170544384,1170544387,US 1170544388,1170544391,BD -1170544392,1170544431,US +1170544392,1170544395,TR +1170544396,1170544431,US 1170544432,1170544439,CN -1170544440,1170544511,US -1170544512,1170544575,SE -1170544576,1170544639,US -1170544640,1170544767,MY -1170544768,1170547455,US -1170547456,1170547711,CA -1170547712,1170553087,US +1170544440,1170544443,AU +1170544444,1170544511,US +1170544512,1170544543,TR +1170544544,1170544807,US +1170544808,1170544815,CN +1170544816,1170544831,US +1170544832,1170544959,CN +1170544960,1170544983,US +1170544984,1170544987,CN +1170544988,1170545055,US +1170545056,1170545087,CN +1170545088,1170545407,US +1170545408,1170545439,TR +1170545440,1170545595,US +1170545596,1170545599,CN +1170545600,1170552607,US +1170552608,1170552611,CN +1170552612,1170552959,US +1170552960,1170553023,CN +1170553024,1170553087,US 1170553088,1170553151,GB -1170553152,1170553215,FR -1170553216,1170553343,PK -1170553344,1170553407,CN -1170553408,1170553431,US +1170553152,1170553279,US +1170553280,1170553407,CN +1170553408,1170553423,US +1170553424,1170553427,CN +1170553428,1170553431,US 1170553432,1170553435,TR -1170553436,1170553439,CA -1170553440,1170553471,US +1170553436,1170553439,US +1170553440,1170553471,TR 1170553472,1170553535,PK -1170553536,1170553599,CN -1170553600,1170553855,US +1170553536,1170553599,US +1170553600,1170553603,TR +1170553604,1170553615,US +1170553616,1170553619,SA +1170553620,1170553623,TR +1170553624,1170553627,US +1170553628,1170553631,TR +1170553632,1170553635,US +1170553636,1170553643,SA +1170553644,1170553647,TR +1170553648,1170553651,US +1170553652,1170553655,TR +1170553656,1170553663,US +1170553664,1170553667,SA +1170553668,1170553683,US +1170553684,1170553687,CN +1170553688,1170553707,US +1170553708,1170553711,TR +1170553712,1170553855,US 1170553856,1170553983,MY -1170553984,1170554367,US +1170553984,1170554047,CN +1170554048,1170554367,US 1170554368,1170554431,CN 1170554432,1170554463,US 1170554464,1170554479,CN 1170554480,1170554483,TR 1170554484,1170554487,BD 1170554488,1170554495,CN -1170554496,1170554559,US -1170554560,1170554623,CN -1170554624,1175977983,US +1170554496,1170554683,US +1170554684,1170554687,TR +1170554688,1170573375,US +1170573376,1170573391,RU +1170573392,1170573392,US +1170573393,1170573439,RU +1170573440,1175977983,US 1175977984,1176068167,CA 1176068168,1176068175,US 1176068176,1176068191,CA 1176068192,1176068207,US 1176068208,1176069007,CA 1176069008,1176069023,US -1176069024,1176100903,CA -1176100904,1176100911,US -1176100912,1176101023,CA +1176069024,1176101023,CA 1176101024,1176101039,US 1176101040,1176101063,CA 1176101064,1176101071,US @@ -22289,7 +26536,9 @@ 1176108560,1176502271,CA 1176502272,1176512151,US 1176512152,1176512159,GB -1176512160,1176513879,US +1176512160,1176512703,US +1176512704,1176512711,ZA +1176512712,1176513879,US 1176513880,1176513887,GB 1176513888,1176514271,US 1176514272,1176514303,IN @@ -22302,9 +26551,7 @@ 1176609664,1176613927,US 1176613928,1176613935,CA 1176613936,1176616959,US -1176616960,1176619007,CA -1176619008,1176620031,CY -1176620032,1176620047,CA +1176616960,1176620047,CA 1176620048,1176620055,US 1176620056,1176620095,CA 1176620096,1176620127,US @@ -22322,16 +26569,26 @@ 1176620968,1176620975,US 1176620976,1176620991,CA 1176620992,1176620999,US -1176621000,1176621023,CA -1176621024,1176621055,US -1176621056,1176623359,CA +1176621000,1176621599,CA +1176621600,1176621631,US +1176621632,1176621695,CA +1176621696,1176621727,US +1176621728,1176621759,CA +1176621760,1176621823,US +1176621824,1176621871,CA +1176621872,1176621887,US +1176621888,1176622047,CA +1176622048,1176622079,US +1176622080,1176622335,GB +1176622336,1176622591,US +1176622592,1176623359,CA 1176623360,1176623487,US 1176623488,1176623567,CA 1176623568,1176623583,US 1176623584,1176623615,CA 1176623616,1176623871,US -1176623872,1176629287,CA -1176629288,1176629295,US +1176623872,1176629279,CA +1176629280,1176629295,US 1176629296,1176629303,CA 1176629304,1176629311,US 1176629312,1176629343,CA @@ -22339,13 +26596,14 @@ 1176629376,1176629439,GI 1176629440,1176629455,CA 1176629456,1176629463,GI -1176629464,1176629471,CA -1176629472,1176629503,US +1176629464,1176629503,US 1176629504,1176629519,CA 1176629520,1176629535,NZ 1176629536,1176629631,CA 1176629632,1176629727,US -1176629728,1176631295,CA +1176629728,1176630271,CA +1176630272,1176631039,US +1176631040,1176631295,CA 1176631296,1176631551,NL 1176631552,1176662015,US 1176662016,1176666111,CA @@ -22355,17 +26613,230 @@ 1176682544,1176682559,TR 1176682560,1176682623,US 1176682624,1176682631,JM -1176682632,1176682639,US +1176682632,1176682639,GB 1176682640,1176682687,TR -1176682688,1176686591,US -1176686592,1176686599,PK +1176682688,1176684383,US +1176684384,1176684399,DE +1176684400,1176686591,US +1176686592,1176686599,BR 1176686600,1176686623,US 1176686624,1176686631,IL -1176686632,1176686719,US +1176686632,1176686639,US +1176686640,1176686647,DE +1176686648,1176686719,US 1176686720,1176686751,CA 1176686752,1176686847,US 1176686848,1176687103,AN -1176687104,1176702975,US +1176687104,1176687519,US +1176687520,1176687551,JP +1176687552,1176687775,US +1176687776,1176687807,MX +1176687808,1176687839,US +1176687840,1176687871,GB +1176687872,1176687887,US +1176687888,1176687895,AU +1176687896,1176687903,US +1176687904,1176687911,MX +1176687912,1176688383,US +1176688384,1176688391,GB +1176688392,1176688399,US +1176688400,1176688407,CA +1176688408,1176688439,US +1176688440,1176688447,CZ +1176688448,1176688471,US +1176688472,1176688479,RU +1176688480,1176688487,US +1176688488,1176688495,AU +1176688496,1176688503,BG +1176688504,1176688511,SG +1176688512,1176688567,US +1176688568,1176688575,DE +1176688576,1176688631,US +1176688632,1176688639,TR +1176688640,1176688767,US +1176688768,1176688799,NZ +1176688800,1176688831,CN +1176688832,1176688863,US +1176688864,1176688895,GB +1176688896,1176688927,US +1176688928,1176688959,GB +1176688960,1176688991,NL +1176688992,1176689023,US +1176689024,1176689055,CA +1176689056,1176689087,MY +1176689088,1176689183,US +1176689184,1176689215,BR +1176689216,1176689407,US +1176689408,1176689439,DE +1176689440,1176689503,US +1176689504,1176689535,IL +1176689536,1176689567,BR +1176689568,1176689599,FI +1176689600,1176689823,US +1176689824,1176689839,AU +1176689840,1176689847,US +1176689848,1176689855,FR +1176689856,1176689983,US +1176689984,1176690015,DE +1176690016,1176690047,JM +1176690048,1176690055,US +1176690056,1176690063,GB +1176690064,1176690071,US +1176690072,1176690079,GB +1176690080,1176690111,AU +1176690112,1176690175,US +1176690176,1176690207,FR +1176690208,1176690271,US +1176690272,1176690303,EG +1176690304,1176690335,US +1176690336,1176690367,CA +1176690368,1176690399,PK +1176690400,1176690431,CA +1176690432,1176690463,US +1176690464,1176690495,DO +1176690496,1176690527,CA +1176690528,1176690535,FR +1176690536,1176690543,US +1176690544,1176690551,RU +1176690552,1176690559,US +1176690560,1176690591,IN +1176690592,1176690791,US +1176690792,1176690799,CA +1176690800,1176690815,US +1176690816,1176690847,BR +1176690848,1176691007,US +1176691008,1176691039,ES +1176691040,1176691071,US +1176691072,1176691103,ID +1176691104,1176691135,DE +1176691136,1176691167,GB +1176691168,1176691199,US +1176691200,1176691231,GB +1176691232,1176691263,US +1176691264,1176691295,RU +1176691296,1176691327,TR +1176691328,1176691375,US +1176691376,1176691391,AU +1176691392,1176691519,US +1176691520,1176691551,GB +1176691552,1176691583,US +1176691584,1176691615,BE +1176691616,1176691647,LT +1176691648,1176691743,US +1176691744,1176691775,CA +1176691776,1176691807,US +1176691808,1176691839,GB +1176691840,1176691871,HK +1176691872,1176691999,US +1176692000,1176692031,PK +1176692032,1176692127,US +1176692128,1176692143,FR +1176692144,1176692151,NO +1176692152,1176692159,BR +1176692160,1176692287,US +1176692288,1176692319,GB +1176692320,1176692351,US +1176692352,1176692383,CA +1176692384,1176692415,US +1176692416,1176692447,ID +1176692448,1176692575,US +1176692576,1176692583,TR +1176692584,1176692591,RO +1176692592,1176692599,FR +1176692600,1176692607,SE +1176692608,1176692639,US +1176692640,1176692671,GR +1176692672,1176692703,DE +1176692704,1176692735,GB +1176692736,1176692767,BR +1176692768,1176692799,US +1176692800,1176692831,AT +1176692832,1176692927,US +1176692928,1176692959,GB +1176692960,1176692991,US +1176692992,1176693023,CN +1176693024,1176693063,US +1176693064,1176693071,AU +1176693072,1176693079,US +1176693080,1176693087,GB +1176693088,1176693215,US +1176693216,1176693247,FI +1176693248,1176693567,US +1176693568,1176693599,GB +1176693600,1176693631,LT +1176693632,1176693663,TR +1176693664,1176693695,MY +1176693696,1176693727,US +1176693728,1176693759,TR +1176693760,1176693791,US +1176693792,1176693823,TR +1176693824,1176693887,US +1176693888,1176693919,CA +1176693920,1176694047,US +1176694048,1176694079,IT +1176694080,1176694111,PA +1176694112,1176694143,FR +1176694144,1176694175,ES +1176694176,1176694303,US +1176694304,1176694335,RU +1176694336,1176694367,CN +1176694368,1176694399,UY +1176694400,1176694431,GR +1176694432,1176694463,HR +1176694464,1176694559,US +1176694560,1176694591,IE +1176694592,1176694623,US +1176694624,1176694655,TH +1176694656,1176694943,US +1176694944,1176694975,GB +1176694976,1176695007,CA +1176695008,1176695231,US +1176695232,1176695263,DE +1176695264,1176695295,US +1176695296,1176695303,TR +1176695304,1176695327,US +1176695328,1176695335,CA +1176695336,1176695359,US +1176695360,1176695391,JP +1176695392,1176695487,US +1176695488,1176695519,AU +1176695520,1176695551,FR +1176695552,1176695583,CA +1176695584,1176695615,US +1176695616,1176695647,HR +1176695648,1176695655,GB +1176695656,1176695663,US +1176695664,1176695671,HR +1176695672,1176696447,US +1176696448,1176696463,CA +1176696464,1176697015,US +1176697016,1176697023,TR +1176697024,1176697159,US +1176697160,1176697167,AT +1176697168,1176697223,US +1176697224,1176697231,FR +1176697232,1176697239,US +1176697240,1176697247,IL +1176697248,1176697407,US +1176697408,1176697415,IL +1176697416,1176697423,US +1176697424,1176697439,CA +1176697440,1176697815,US +1176697816,1176697823,DE +1176697824,1176697951,US +1176697952,1176697959,CA +1176697960,1176697967,DE +1176697968,1176697975,US +1176697976,1176697983,AU +1176697984,1176698535,US +1176698536,1176698543,CA +1176698544,1176698615,US +1176698616,1176698623,DZ +1176698624,1176698727,US +1176698728,1176698735,NL +1176698736,1176698847,US +1176698848,1176698855,GB +1176698856,1176702975,US 1176702976,1176707071,CA 1176707072,1176731647,US 1176731648,1176735743,PR @@ -22377,9 +26848,19 @@ 1176764416,1176768511,PM 1176768512,1176770751,US 1176770752,1176770783,AE -1176770784,1176770831,US +1176770784,1176770799,US +1176770800,1176770803,KR +1176770804,1176770811,US +1176770812,1176770815,CA +1176770816,1176770831,US 1176770832,1176770847,BR -1176770848,1176771895,US +1176770848,1176770851,BM +1176770852,1176770919,US +1176770920,1176770927,BR +1176770928,1176770935,DO +1176770936,1176771327,US +1176771328,1176771583,KR +1176771584,1176771895,US 1176771896,1176771903,AE 1176771904,1176776703,US 1176776704,1176780799,CA @@ -22407,10 +26888,8 @@ 1177053696,1177053951,GB 1177053952,1177059327,US 1177059328,1177061375,CA -1177061376,1177062399,US -1177062400,1177074943,CA -1177074944,1177075199,US -1177075200,1177075455,CA +1177061376,1177062143,US +1177062144,1177075455,CA 1177075456,1177164255,US 1177164256,1177164263,CA 1177164264,1177164415,US @@ -22421,7 +26900,11 @@ 1177164928,1177164943,CA 1177164944,1177165311,US 1177165312,1177165823,CA -1177165824,1177175199,US +1177165824,1177167743,US +1177167744,1177167751,LB +1177167752,1177168223,US +1177168224,1177168231,IE +1177168232,1177175199,US 1177175200,1177175231,CZ 1177175232,1177182527,US 1177182528,1177182591,CA @@ -22437,13 +26920,9 @@ 1178000920,1178075135,CA 1178075136,1178599423,US 1178599424,1179910143,CA -1179910144,1184805887,US -1184805888,1184806015,A2 -1184806016,1184811007,US -1184811008,1184811263,A2 -1184811264,1184829439,US -1184829440,1184829695,A2 -1184829696,1189130447,US +1179910144,1180113919,US +1180113920,1180114431,AE +1180114432,1189130447,US 1189130448,1189130463,IN 1189130464,1190170111,US 1190170112,1190170127,UY @@ -22455,6 +26934,7 @@ 1192296448,1192361983,CA 1192361984,1192427519,US 1192427520,1192460287,CA +1192464384,1192468479,US 1192493056,1207975935,US 1207975936,1207980031,CA 1207980032,1208008703,US @@ -22533,7 +27013,13 @@ 1208194088,1208194095,AU 1208194096,1208194191,US 1208194192,1208194223,MY -1208194224,1208195359,US +1208194224,1208194289,US +1208194290,1208194291,GB +1208194292,1208194511,US +1208194512,1208194513,CA +1208194514,1208194519,US +1208194520,1208194521,AU +1208194522,1208195359,US 1208195360,1208195375,MY 1208195376,1208195391,US 1208195392,1208195399,IN @@ -22559,7 +27045,9 @@ 1208196608,1208196615,CA 1208196616,1208196703,US 1208196704,1208196719,CA -1208196720,1208197023,US +1208196720,1208196951,US +1208196952,1208196959,ZA +1208196960,1208197023,US 1208197024,1208197031,CR 1208197032,1208197135,US 1208197136,1208197167,MY @@ -22585,13 +27073,16 @@ 1208198040,1208198047,BS 1208198048,1208198135,US 1208198136,1208198143,AU -1208198144,1208198279,US +1208198144,1208198159,US +1208198160,1208198167,ID +1208198168,1208198279,US 1208198280,1208198287,ZA 1208198288,1208198303,US 1208198304,1208198319,FR 1208198320,1208198343,US 1208198344,1208198347,GB -1208198348,1208198463,US +1208198348,1208198349,CA +1208198350,1208198463,US 1208198464,1208198471,CA 1208198472,1208198559,US 1208198560,1208198575,IN @@ -22725,7 +27216,9 @@ 1208208256,1208208287,US 1208208288,1208208303,GB 1208208304,1208208311,KR -1208208312,1208208799,US +1208208312,1208208319,US +1208208320,1208208321,CA +1208208322,1208208799,US 1208208800,1208208807,AU 1208208808,1208208815,US 1208208816,1208208831,CA @@ -22766,7 +27259,9 @@ 1208213088,1208213103,NG 1208213104,1208213383,US 1208213384,1208213391,CA -1208213392,1208215935,US +1208213392,1208215351,US +1208215352,1208215359,PR +1208215360,1208215935,US 1208215936,1208215951,GB 1208215952,1208216367,US 1208216368,1208216375,CA @@ -22831,62 +27326,106 @@ 1208338176,1208516607,US 1208516608,1208516623,MX 1208516624,1208516639,US -1208516640,1208516671,CN -1208516672,1208516735,TR +1208516640,1208516735,TR 1208516736,1208516799,ID 1208516800,1208516855,US 1208516856,1208516859,CN -1208516860,1208517001,US +1208516860,1208516955,US +1208516956,1208516959,CN +1208516960,1208516999,US +1208517000,1208517000,TR +1208517001,1208517001,US 1208517002,1208517002,CN -1208517003,1208517009,US -1208517010,1208517011,CN -1208517012,1208517017,US +1208517003,1208517010,US +1208517011,1208517011,TR +1208517012,1208517012,GB +1208517013,1208517017,US 1208517018,1208517018,GB -1208517019,1208517019,US -1208517020,1208517020,FR -1208517021,1208517119,US +1208517019,1208517119,US 1208517120,1208517375,KH -1208517376,1208517631,US +1208517376,1208517471,US +1208517472,1208517487,CN +1208517488,1208517503,US +1208517504,1208517567,CN +1208517568,1208517631,US 1208517632,1208517887,KH -1208517888,1208518143,US -1208518144,1208518207,MY -1208518208,1208518246,US +1208517888,1208518015,TR +1208518016,1208518079,CN +1208518080,1208518143,US +1208518144,1208518207,CN +1208518208,1208518243,US +1208518244,1208518244,CN +1208518245,1208518246,US 1208518247,1208518247,KH -1208518248,1208518263,US +1208518248,1208518261,US +1208518262,1208518262,TR +1208518263,1208518263,CN 1208518264,1208518264,GB -1208518265,1208518271,US -1208518272,1208518287,GB -1208518288,1208518291,US -1208518292,1208518295,CN -1208518296,1208518335,US +1208518265,1208518299,US +1208518300,1208518303,BD +1208518304,1208518335,US 1208518336,1208518399,TR -1208518400,1208519167,US +1208518400,1208518655,ID +1208518656,1208519167,US 1208519168,1208519423,CN -1208519424,1208519551,US -1208519552,1208519679,TR -1208519680,1208523775,US -1208523776,1208523903,GB -1208523904,1208523991,US +1208519424,1208519551,TR +1208519552,1208521983,US +1208521984,1208522239,CN +1208522240,1208522271,US +1208522272,1208522303,TR +1208522304,1208522319,US +1208522320,1208522335,TR +1208522336,1208522367,US +1208522368,1208522431,CN +1208522432,1208523975,US +1208523976,1208523983,CN +1208523984,1208523991,US 1208523992,1208523995,TR -1208523996,1208524063,US +1208523996,1208523999,US +1208524000,1208524031,TR +1208524032,1208524047,US +1208524048,1208524055,TR +1208524056,1208524059,CN +1208524060,1208524063,US 1208524064,1208524079,CN -1208524080,1208524159,US +1208524080,1208524083,US +1208524084,1208524087,KR +1208524088,1208524091,US +1208524092,1208524095,TR +1208524096,1208524159,US 1208524160,1208524223,ID -1208524224,1208524287,US +1208524224,1208524227,US +1208524228,1208524231,TR +1208524232,1208524287,US 1208524288,1208524351,PK 1208524352,1208524415,CN -1208524416,1208525823,US -1208525824,1208526079,CA -1208526080,1208527615,US -1208527616,1208527871,CA -1208527872,1208528127,VN -1208528128,1208528895,US -1208528896,1208529151,CA -1208529152,1208529919,US -1208529920,1208530175,CN -1208530176,1208531967,US -1208531968,1208532223,CA -1208532224,1208586364,US +1208524416,1208524863,US +1208524864,1208524927,PK +1208524928,1208525311,US +1208525312,1208525343,CN +1208525344,1208525375,TR +1208525376,1208525823,US +1208525824,1208526079,KH +1208526080,1208526335,US +1208526336,1208526591,CN +1208526592,1208526607,TR +1208526608,1208526623,US +1208526624,1208526655,TR +1208526656,1208526815,US +1208526816,1208526847,CN +1208526848,1208527871,US +1208527872,1208527887,VN +1208527888,1208527903,US +1208527904,1208528127,VN +1208528128,1208531007,US +1208531008,1208531071,CN +1208531072,1208531455,US +1208531456,1208531583,CN +1208531584,1208531711,US +1208531712,1208531967,PK +1208531968,1208532287,US +1208532288,1208532351,PK +1208532352,1208586364,US 1208586365,1208586372,MA 1208586373,1208586419,US 1208586420,1208586427,AE @@ -22911,7 +27450,9 @@ 1208586957,1208586957,US 1208586958,1208586973,GB 1208586974,1208586976,US -1208586977,1208586992,GB +1208586977,1208586980,GB +1208586981,1208586988,US +1208586989,1208586992,GB 1208586993,1208587025,US 1208587026,1208587033,NZ 1208587034,1208587045,US @@ -22930,9 +27471,7 @@ 1208587334,1208587341,CA 1208587342,1208587345,US 1208587346,1208587353,GB -1208587354,1208587359,US -1208587360,1208587377,GB -1208587378,1208587378,US +1208587354,1208587378,US 1208587379,1208587386,GE 1208587387,1208587394,US 1208587395,1208587402,EG @@ -22940,7 +27479,9 @@ 1208587419,1208587426,TR 1208587427,1208587427,US 1208587428,1208587443,GB -1208587444,1208587479,US +1208587444,1208587450,US +1208587451,1208587458,IN +1208587459,1208587479,US 1208587480,1208587487,LK 1208587488,1208587488,US 1208587489,1208587504,GB @@ -22969,17 +27510,26 @@ 1208588104,1208588111,MA 1208588112,1208588211,US 1208588212,1208588219,CA -1208588220,1208588427,US +1208588220,1208588408,US +1208588409,1208588416,PE +1208588417,1208588427,US 1208588428,1208588435,MO 1208588436,1208588463,US 1208588464,1208588476,AU 1208588477,1208588591,US 1208588592,1208588599,IN -1208588600,1208588728,US +1208588600,1208588706,US +1208588707,1208588707,PE +1208588708,1208588711,US +1208588712,1208588714,PE +1208588715,1208588728,US 1208588729,1208588760,GB 1208588761,1208588771,US 1208588772,1208588779,GB -1208588780,1208588953,US +1208588780,1208588853,US +1208588854,1208588861,IN +1208588862,1208588869,PE +1208588870,1208588953,US 1208588954,1208588961,TR 1208588962,1208588972,US 1208588973,1208588985,GB @@ -23001,9 +27551,7 @@ 1208589640,1208589651,TR 1208589652,1208589857,US 1208589858,1208589865,MA -1208589866,1208589894,US -1208589895,1208589904,GB -1208589905,1208589970,US +1208589866,1208589970,US 1208589971,1208590002,GB 1208590003,1208590004,US 1208590005,1208590014,GB @@ -23125,23 +27673,33 @@ 1208814688,1208814719,CA 1208814720,1208814855,US 1208814856,1208814863,CA -1208814864,1208832455,US +1208814864,1208832391,US +1208832392,1208832407,CN +1208832408,1208832455,US 1208832456,1208832463,CN 1208832464,1208832567,US 1208832568,1208832575,CN -1208832576,1208832599,US +1208832576,1208832583,US +1208832584,1208832591,CN +1208832592,1208832599,US 1208832600,1208832607,CN 1208832608,1208832623,IT 1208832624,1208832631,NZ -1208832632,1208832639,HK -1208832640,1208832703,IN -1208832704,1208832775,US +1208832632,1208832639,CN +1208832640,1208832711,US +1208832712,1208832719,CN +1208832720,1208832775,US 1208832776,1208832783,CA 1208832784,1208833023,US 1208833024,1208833031,PR -1208833032,1208833439,US -1208833440,1208833471,GB -1208833472,1208852479,US +1208833032,1208834415,US +1208834416,1208834423,TK +1208834424,1208834967,US +1208834968,1208834975,ID +1208834976,1208834991,US +1208834992,1208834999,NP +1208835000,1208835007,CA +1208835008,1208852479,US 1208852480,1208860671,CA 1208860672,1208918015,US 1208918016,1208920007,CA @@ -23171,86 +27729,152 @@ 1209190852,1209190883,CA 1209190884,1209190911,US 1209190912,1209191167,MX -1209191168,1209270543,US -1209270544,1209270547,CN -1209270548,1209270579,US +1209191168,1209270579,US 1209270580,1209270583,ID -1209270584,1209270759,US -1209270760,1209270763,CA -1209270764,1209270859,US -1209270860,1209270863,CA -1209270864,1209271067,US +1209270584,1209270607,US +1209270608,1209270611,KR +1209270612,1209270615,CN +1209270616,1209271067,US 1209271068,1209271071,VN -1209271072,1209271111,US -1209271112,1209271115,CA -1209271116,1209271207,US -1209271208,1209271211,FR -1209271212,1209271371,US +1209271072,1209271083,US +1209271084,1209271087,BR +1209271088,1209271127,US +1209271128,1209271131,SA +1209271132,1209271187,US +1209271188,1209271191,TR +1209271192,1209271195,RO +1209271196,1209271215,US +1209271216,1209271219,IN +1209271220,1209271367,US +1209271368,1209271371,TR 1209271372,1209271375,PE 1209271376,1209271435,US 1209271436,1209271439,CN -1209271440,1209271463,US -1209271464,1209271467,IN -1209271468,1209271491,US -1209271492,1209271499,CA +1209271440,1209271451,US +1209271452,1209271455,CN +1209271456,1209271463,US +1209271464,1209271467,PK +1209271468,1209271487,US +1209271488,1209271495,CN +1209271496,1209271499,CA 1209271500,1209271503,MX -1209271504,1209271527,US -1209271528,1209271531,CA -1209271532,1209271579,US +1209271504,1209271519,US +1209271520,1209271523,RO +1209271524,1209271543,US +1209271544,1209271551,CN +1209271552,1209271567,US +1209271568,1209271571,PL +1209271572,1209271575,TR +1209271576,1209271579,US 1209271580,1209271583,BD 1209271584,1209271607,US 1209271608,1209271611,KH -1209271612,1209271639,US -1209271640,1209271643,CZ -1209271644,1209271691,US +1209271612,1209271615,CA +1209271616,1209271639,US +1209271640,1209271643,CA +1209271644,1209271659,US +1209271660,1209271663,PK +1209271664,1209271691,US 1209271692,1209271695,CA -1209271696,1209271791,US -1209271792,1209271795,GB -1209271796,1209271871,US -1209271872,1209271875,TR -1209271876,1209271967,US +1209271696,1209271703,US +1209271704,1209271707,CN +1209271708,1209271719,US +1209271720,1209271723,CN +1209271724,1209271727,US +1209271728,1209271731,PK +1209271732,1209271735,CN +1209271736,1209271767,US +1209271768,1209271771,RO +1209271772,1209271783,US +1209271784,1209271787,RO +1209271788,1209271827,US +1209271828,1209271831,CN +1209271832,1209271839,US +1209271840,1209271843,CN +1209271844,1209271847,US +1209271848,1209271855,IN +1209271856,1209271867,US +1209271868,1209271871,BR +1209271872,1209271951,US +1209271952,1209271955,KH +1209271956,1209271963,US +1209271964,1209271967,TR 1209271968,1209271971,VN 1209271972,1209271975,TR -1209271976,1209271995,US -1209271996,1209271999,FR -1209272000,1209272015,US -1209272016,1209272019,GB -1209272020,1209272031,US -1209272032,1209272035,GB -1209272036,1209272407,US +1209271976,1209271979,CA +1209271980,1209271983,ZA +1209271984,1209271999,US +1209272000,1209272007,TR +1209272008,1209272011,PL +1209272012,1209272043,US +1209272044,1209272047,TR +1209272048,1209272079,US +1209272080,1209272095,TR +1209272096,1209272127,US +1209272128,1209272159,CN +1209272160,1209272175,US +1209272176,1209272191,BR +1209272192,1209272223,TR +1209272224,1209272239,US +1209272240,1209272255,TR +1209272256,1209272287,CN +1209272288,1209272383,US +1209272384,1209272399,CN +1209272400,1209272407,US 1209272408,1209272415,PE 1209272416,1209272447,US 1209272448,1209272479,KH -1209272480,1209272511,US +1209272480,1209272495,CN +1209272496,1209272511,US 1209272512,1209272575,CN 1209272576,1209272583,US 1209272584,1209272591,PH -1209272592,1209272655,US +1209272592,1209272607,US +1209272608,1209272623,TR +1209272624,1209272655,US 1209272656,1209272671,TR -1209272672,1209272895,US +1209272672,1209272719,US +1209272720,1209272767,CN +1209272768,1209272783,TR +1209272784,1209272847,US +1209272848,1209272863,TR +1209272864,1209272895,US 1209272896,1209272959,CN -1209272960,1209273215,US -1209273216,1209273279,CN -1209273280,1209273647,US +1209272960,1209273023,BR +1209273024,1209273055,US +1209273056,1209273071,TR +1209273072,1209273119,US +1209273120,1209273135,BR +1209273136,1209273151,TR +1209273152,1209273207,US +1209273208,1209273215,CA +1209273216,1209273279,US +1209273280,1209273311,BR +1209273312,1209273359,US +1209273360,1209273407,TR +1209273408,1209273555,US +1209273556,1209273559,CA +1209273560,1209273647,US 1209273648,1209273655,CN -1209273656,1209273663,US +1209273656,1209273663,AU 1209273664,1209273671,BD -1209273672,1209273991,US -1209273992,1209273999,FR -1209274000,1209274031,US +1209273672,1209273999,US +1209274000,1209274015,TR +1209274016,1209274023,US +1209274024,1209274031,RO 1209274032,1209274039,TR -1209274040,1209274115,US +1209274040,1209274047,US +1209274048,1209274111,CN +1209274112,1209274115,US 1209274116,1209274119,CZ 1209274120,1209274135,US 1209274136,1209274151,TR -1209274152,1209274175,US -1209274176,1209274239,FR -1209274240,1209274303,US -1209274304,1209274367,CN -1209274368,1209274607,US -1209274608,1209274623,FR -1209274624,1209274751,CN -1209274752,1209274815,US +1209274152,1209274367,US +1209274368,1209274495,TR +1209274496,1209274527,CN +1209274528,1209274543,US +1209274544,1209274559,TR +1209274560,1209274815,US 1209274816,1209274879,CA 1209274880,1209274911,CZ 1209274912,1209274927,US @@ -23259,90 +27883,222 @@ 1209274960,1209274967,PH 1209274968,1209275071,US 1209275072,1209275135,GB -1209275136,1209275863,US -1209275864,1209275871,FR -1209275872,1209275906,US +1209275136,1209275679,US +1209275680,1209275695,TR +1209275696,1209275791,US +1209275792,1209275799,TR +1209275800,1209275823,US +1209275824,1209275827,CN +1209275828,1209275906,US 1209275907,1209275908,KH -1209275909,1209275910,US -1209275911,1209275911,MY -1209275912,1209275924,US -1209275925,1209275925,CN -1209275926,1209275928,US +1209275909,1209275913,US +1209275914,1209275914,KH +1209275915,1209275917,US +1209275918,1209275918,KH +1209275919,1209275924,US +1209275925,1209275925,TR +1209275926,1209275927,US +1209275928,1209275928,CN 1209275929,1209275929,MY -1209275930,1209275931,US +1209275930,1209275930,US +1209275931,1209275931,AU 1209275932,1209275932,CN -1209275933,1209276351,US +1209275933,1209275935,US +1209275936,1209275951,RO +1209275952,1209275999,US +1209276000,1209276031,MY +1209276032,1209276063,BR +1209276064,1209276351,US 1209276352,1209276415,CN -1209276416,1209276799,US -1209276800,1209276807,BD -1209276808,1209276815,FR -1209276816,1209276911,US +1209276416,1209276591,US +1209276592,1209276607,RO +1209276608,1209276671,US +1209276672,1209276703,CN +1209276704,1209276799,US +1209276800,1209276803,SA +1209276804,1209276807,BD +1209276808,1209276903,US +1209276904,1209276911,CN 1209276912,1209276927,TR -1209276928,1209277087,US -1209277088,1209277095,FR -1209277096,1209277103,US +1209276928,1209277103,US 1209277104,1209277119,TR -1209277120,1209277135,US -1209277136,1209277143,FR -1209277144,1209277155,US +1209277120,1209277135,RO +1209277136,1209277143,US +1209277144,1209277147,TR +1209277148,1209277154,US +1209277155,1209277155,TR 1209277156,1209277156,SE -1209277157,1209277177,US -1209277178,1209277178,FR -1209277179,1209277575,US +1209277157,1209277157,US +1209277158,1209277158,IN +1209277159,1209277159,US +1209277160,1209277160,CN +1209277161,1209277166,US +1209277167,1209277167,CN +1209277168,1209277168,AU +1209277169,1209277171,US +1209277172,1209277172,AU +1209277173,1209277215,US +1209277216,1209277231,BR +1209277232,1209277247,US +1209277248,1209277263,BR +1209277264,1209277279,US +1209277280,1209277283,CA +1209277284,1209277287,US +1209277288,1209277295,RO +1209277296,1209277375,US +1209277376,1209277379,PL +1209277380,1209277399,US +1209277400,1209277419,CN +1209277420,1209277575,US 1209277576,1209277583,BD -1209277584,1209278207,US -1209278208,1209278463,IE -1209278464,1209278911,US +1209277584,1209277599,TR +1209277600,1209277695,US +1209277696,1209277951,KH +1209277952,1209278083,US +1209278084,1209278087,CN +1209278088,1209278095,AU +1209278096,1209278111,US +1209278112,1209278143,TR +1209278144,1209278207,US +1209278208,1209278463,KH +1209278464,1209278495,US +1209278496,1209278511,TR +1209278512,1209278523,US +1209278524,1209278527,CN +1209278528,1209278591,US +1209278592,1209278719,CN +1209278720,1209278795,US +1209278796,1209278799,CN +1209278800,1209278815,US +1209278816,1209278823,CN +1209278824,1209278827,US +1209278828,1209278831,CN +1209278832,1209278839,US +1209278840,1209278847,CN +1209278848,1209278911,US 1209278912,1209278919,TR -1209278920,1209279167,US +1209278920,1209278975,US +1209278976,1209279103,CA +1209279104,1209279119,US +1209279120,1209279135,CA +1209279136,1209279139,US +1209279140,1209279143,PL +1209279144,1209279167,US 1209279168,1209279231,VN -1209279232,1209279615,US +1209279232,1209279295,BR +1209279296,1209279615,US 1209279616,1209279743,GB -1209279744,1209279871,US +1209279744,1209279855,US +1209279856,1209279871,TR 1209279872,1209279935,MY -1209279936,1209280191,US -1209280192,1209280255,VN -1209280256,1209280575,US -1209280576,1209280607,FR -1209280608,1209280619,US -1209280620,1209280623,GB -1209280624,1209280959,US -1209280960,1209280975,GB -1209280976,1209281247,US +1209279936,1209279951,GB +1209279952,1209279967,US +1209279968,1209279999,CN +1209280000,1209280015,TR +1209280016,1209280027,US +1209280028,1209280031,SA +1209280032,1209280047,IN +1209280048,1209280191,US +1209280192,1209280255,ID +1209280256,1209280419,US +1209280420,1209280423,CN +1209280424,1209280439,US +1209280440,1209280447,CN +1209280448,1209280463,IN +1209280464,1209280495,US +1209280496,1209280511,CN +1209280512,1209280515,US +1209280516,1209280519,TR +1209280520,1209280527,AU +1209280528,1209280623,US +1209280624,1209280639,TR +1209280640,1209280895,US +1209280896,1209280959,BR +1209280960,1209281007,US +1209281008,1209281023,TR +1209281024,1209281151,US +1209281152,1209281231,CN +1209281232,1209281247,US 1209281248,1209281279,CA 1209281280,1209281535,KH -1209281536,1209281983,US +1209281536,1209281791,IN +1209281792,1209281871,US +1209281872,1209281887,TR +1209281888,1209281927,US +1209281928,1209281935,IN +1209281936,1209281983,US 1209281984,1209282047,TR -1209282048,1209282583,US -1209282584,1209282591,GB -1209282592,1209283479,US -1209283480,1209283487,GB -1209283488,1209283535,US -1209283536,1209283543,GB -1209283544,1209283587,US -1209283588,1209283591,CN -1209283592,1209283695,US -1209283696,1209283703,GB -1209283704,1209283751,US +1209282048,1209282063,US +1209282064,1209282067,SA +1209282068,1209282159,US +1209282160,1209282175,CN +1209282176,1209282559,US +1209282560,1209282623,CN +1209282624,1209283487,US +1209283488,1209283503,TR +1209283504,1209283543,US +1209283544,1209283547,SA +1209283548,1209283567,US +1209283568,1209283575,CN +1209283576,1209283583,US +1209283584,1209283587,SA +1209283588,1209283599,US +1209283600,1209283607,IN +1209283608,1209283751,US 1209283752,1209283759,BD -1209283760,1209283871,US +1209283760,1209283775,US +1209283776,1209283807,ZA +1209283808,1209283839,CA +1209283840,1209283871,US 1209283872,1209283875,TR -1209283876,1209283967,US -1209283968,1209284095,GB -1209284096,1209284223,US +1209283876,1209283887,US +1209283888,1209283903,BR +1209283904,1209283915,US +1209283916,1209283919,KR +1209283920,1209284159,US +1209284160,1209284223,TR 1209284224,1209284351,IE -1209284352,1209284759,US -1209284760,1209284767,FR -1209284768,1209284799,US -1209284800,1209284815,TR -1209284816,1209284831,CN -1209284832,1209284855,US -1209284856,1209284863,TR -1209284864,1209285063,US +1209284352,1209284391,US +1209284392,1209284399,RO +1209284400,1209284415,TR +1209284416,1209284431,US +1209284432,1209284447,TR +1209284448,1209284607,US +1209284608,1209284671,TR +1209284672,1209284735,CN +1209284736,1209284767,US +1209284768,1209284799,MY +1209284800,1209284831,TR +1209284832,1209284839,US +1209284840,1209284843,TR +1209284844,1209284855,US +1209284856,1209284863,CN +1209284864,1209284993,US +1209284994,1209284994,TR +1209284995,1209284995,US +1209284996,1209284996,TR +1209284997,1209284997,US +1209284998,1209284998,CN +1209284999,1209284999,US +1209285000,1209285000,CA +1209285001,1209285002,US +1209285003,1209285004,CN +1209285005,1209285009,US +1209285010,1209285010,CA +1209285011,1209285011,US +1209285012,1209285012,TR +1209285013,1209285017,US +1209285018,1209285018,CA +1209285019,1209285021,US +1209285022,1209285022,CA +1209285023,1209285063,US 1209285064,1209285071,TR -1209285072,1209285183,US +1209285072,1209285151,US +1209285152,1209285183,RO 1209285184,1209285247,TR -1209285248,1209347839,US +1209285248,1209286143,US +1209286144,1209286399,KH +1209286400,1209347839,US 1209347840,1209348095,GB 1209348096,1209357215,US 1209357216,1209357231,SI @@ -23369,9 +28125,7 @@ 1209860448,1209860479,BE 1209860480,1209860575,US 1209860576,1209860607,IN -1209860608,1209860863,US -1209860864,1209860895,CY -1209860896,1209860927,US +1209860608,1209860927,US 1209860928,1209860959,AU 1209860960,1209861119,US 1209861120,1209861375,CA @@ -23395,8 +28149,8 @@ 1209866112,1209866143,IN 1209866144,1209866175,US 1209866176,1209866207,BE -1209866208,1209866239,IN -1209866240,1209866751,US +1209866208,1209866303,IN +1209866304,1209866751,US 1209866752,1209867007,IN 1209867008,1209867039,NZ 1209867040,1209867071,BE @@ -23426,7 +28180,9 @@ 1209890496,1209890559,AU 1209890560,1209893503,US 1209893504,1209893519,MX -1209893520,1209917439,US +1209893520,1209904959,US +1209904960,1209904975,GB +1209904976,1209917439,US 1209917440,1209925631,CA 1209925632,1210057039,US 1210057040,1210057047,JM @@ -23438,7 +28194,9 @@ 1210057568,1210057583,NG 1210057584,1210057615,US 1210057616,1210057623,CA -1210057624,1210057879,US +1210057624,1210057639,US +1210057640,1210057647,GB +1210057648,1210057879,US 1210057880,1210057887,IL 1210057888,1210057895,US 1210057896,1210057903,MX @@ -23501,7 +28259,9 @@ 1210062928,1210062935,AU 1210062936,1210062975,US 1210062976,1210062983,CR -1210062984,1210064311,US +1210062984,1210064067,US +1210064068,1210064071,CA +1210064072,1210064311,US 1210064312,1210064319,IE 1210064320,1210064527,US 1210064528,1210064535,AU @@ -23584,9 +28344,7 @@ 1210070504,1210070511,CA 1210070512,1210070631,US 1210070632,1210070639,MX -1210070640,1210070703,US -1210070704,1210070711,GB -1210070712,1210070799,US +1210070640,1210070799,US 1210070800,1210070807,AU 1210070808,1210070863,US 1210070864,1210070871,BH @@ -23631,7 +28389,9 @@ 1210081336,1210081343,CR 1210081344,1210081559,US 1210081560,1210081567,PK -1210081568,1210081823,US +1210081568,1210081599,US +1210081600,1210081615,AU +1210081616,1210081823,US 1210081824,1210081831,MX 1210081832,1210081839,US 1210081840,1210081847,MX @@ -23704,7 +28464,9 @@ 1210090368,1210090375,JM 1210090376,1210090383,US 1210090384,1210090399,CA -1210090400,1210090623,US +1210090400,1210090439,US +1210090440,1210090443,FR +1210090444,1210090623,US 1210090624,1210090639,BD 1210090640,1210090767,US 1210090768,1210090783,BD @@ -23724,7 +28486,9 @@ 1210091536,1210091543,CA 1210091544,1210091679,US 1210091680,1210091687,AU -1210091688,1210091791,US +1210091688,1210091723,US +1210091724,1210091725,GB +1210091726,1210091791,US 1210091792,1210091807,CA 1210091808,1210091839,US 1210091840,1210091847,CA @@ -23755,7 +28519,11 @@ 1210093672,1210093679,AU 1210093680,1210093751,US 1210093752,1210093759,AU -1210093760,1210093847,US +1210093760,1210093771,US +1210093772,1210093775,HU +1210093776,1210093815,US +1210093816,1210093817,JE +1210093818,1210093847,US 1210093848,1210093855,AU 1210093856,1210094175,US 1210094176,1210094183,TT @@ -23763,7 +28531,9 @@ 1210094408,1210094415,GB 1210094416,1210094831,US 1210094832,1210094847,SG -1210094848,1210094943,US +1210094848,1210094855,US +1210094856,1210094863,SE +1210094864,1210094943,US 1210094944,1210094951,GB 1210094952,1210094959,US 1210094960,1210094967,GB @@ -23850,7 +28620,9 @@ 1210100632,1210100639,NZ 1210100640,1210101023,US 1210101024,1210101039,GB -1210101040,1210101263,US +1210101040,1210101191,US +1210101192,1210101195,CA +1210101196,1210101263,US 1210101264,1210101279,MY 1210101280,1210101311,US 1210101312,1210101319,IE @@ -23861,7 +28633,9 @@ 1210101728,1210101743,GB 1210101744,1210101879,US 1210101880,1210101887,CA -1210101888,1210102399,US +1210101888,1210102287,US +1210102288,1210102295,IL +1210102296,1210102399,US 1210102400,1210102407,AU 1210102408,1210102815,US 1210102816,1210102823,CA @@ -24012,7 +28786,9 @@ 1210117888,1210117895,TH 1210117896,1210118023,US 1210118024,1210118031,GB -1210118032,1210118191,US +1210118032,1210118089,US +1210118090,1210118091,IN +1210118092,1210118191,US 1210118192,1210118199,NZ 1210118200,1210118239,US 1210118240,1210118255,TH @@ -24037,7 +28813,9 @@ 1210119552,1210119559,MX 1210119560,1210119823,US 1210119824,1210119831,CA -1210119832,1210120007,US +1210119832,1210119881,US +1210119882,1210119883,GB +1210119884,1210120007,US 1210120008,1210120015,IN 1210120016,1210120847,US 1210120848,1210120855,MY @@ -24094,7 +28872,8 @@ 1211035664,1211035711,US 1211035712,1211035775,CA 1211035776,1211035791,US -1211035792,1211035823,CR +1211035792,1211035807,CR +1211035808,1211035823,US 1211035824,1211035839,CH 1211035840,1211036031,US 1211036032,1211036095,EC @@ -24104,7 +28883,10 @@ 1211036736,1211036751,GT 1211036752,1211036991,US 1211036992,1211037055,BR -1211037056,1211037519,US +1211037056,1211037135,US +1211037136,1211037151,GB +1211037152,1211037183,DO +1211037184,1211037519,US 1211037520,1211037535,UY 1211037536,1211037679,US 1211037680,1211037695,AR @@ -24116,20 +28898,26 @@ 1211038064,1211038079,TT 1211038080,1211038719,US 1211038720,1211038975,CY -1211038976,1211039087,US +1211038976,1211039007,US +1211039008,1211039023,VG +1211039024,1211039087,US 1211039088,1211039103,RU 1211039104,1211039503,US 1211039504,1211039519,A2 1211039520,1211039551,US 1211039552,1211039567,BM -1211039568,1211039679,US +1211039568,1211039647,US +1211039648,1211039663,AR +1211039664,1211039679,US 1211039680,1211039695,BR 1211039696,1211236351,US 1211236352,1211269119,PR 1211269120,1211303935,US 1211303936,1211304159,CA -1211304160,1211304191,US -1211304192,1211304319,CA +1211304160,1211304223,US +1211304224,1211304255,CA +1211304256,1211304287,US +1211304288,1211304319,CA 1211304320,1211304351,NL 1211304352,1211304703,CA 1211304704,1211304767,GB @@ -24139,8 +28927,8 @@ 1211305984,1211306111,NL 1211306112,1211306751,US 1211306752,1211306879,CA -1211306880,1211308159,US -1211308160,1211308175,CA +1211306880,1211308167,US +1211308168,1211308175,CA 1211308176,1211308191,BV 1211308192,1211308543,CA 1211308544,1211308559,KN @@ -24156,12 +28944,26 @@ 1211308736,1211308751,BV 1211308752,1211308767,CA 1211308768,1211308783,US -1211308784,1211309055,CA -1211309056,1211309311,US -1211309312,1211310079,CA -1211310080,1211313219,US +1211308784,1211310079,CA +1211310080,1211310404,US +1211310405,1211310405,IN +1211310406,1211310951,US +1211310952,1211310952,IN +1211310953,1211311378,US +1211311379,1211311379,IN +1211311380,1211311394,US +1211311395,1211311395,IN +1211311396,1211311883,US +1211311884,1211311884,IN +1211311885,1211311963,US +1211311964,1211311964,IN +1211311965,1211312569,US +1211312570,1211312570,IN +1211312571,1211313219,US 1211313220,1211313231,IN -1211313232,1211313431,US +1211313232,1211313311,US +1211313312,1211313315,IN +1211313316,1211313431,US 1211313432,1211313439,IN 1211313440,1211313567,US 1211313568,1211313579,IN @@ -24187,8 +28989,7 @@ 1211333120,1211333631,VC 1211333632,1211333887,GD 1211333888,1211334655,VG -1211334656,1211367423,US -1211367424,1211367487,EE +1211334656,1211367487,US 1211367488,1211367495,GB 1211367496,1211367503,US 1211367504,1211367519,CH @@ -24199,9 +29000,13 @@ 1211368192,1211368447,EE 1211368448,1211384279,US 1211384280,1211384287,GB -1211384288,1211387983,US +1211384288,1211384327,US +1211384328,1211384335,A1 +1211384336,1211387983,US 1211387984,1211387999,AE -1211388000,1211388671,US +1211388000,1211388159,US +1211388160,1211388287,A1 +1211388288,1211388671,US 1211388672,1211388687,IT 1211388688,1211391455,US 1211391456,1211391487,CN @@ -24354,7 +29159,15 @@ 1244848128,1244852223,CA 1244852224,1244864511,US 1244864512,1244872703,CA -1244872704,1245183999,US +1244872704,1244996655,US +1244996656,1244996663,CH +1244996664,1245144575,US +1245144576,1245144831,CH +1245144832,1245168215,US +1245168216,1245168219,CH +1245168220,1245173215,US +1245173216,1245173223,CH +1245173224,1245183999,US 1245184000,1245446143,CA 1245446144,1246864899,US 1246864900,1246864958,EG @@ -24375,7 +29188,13 @@ 1246875930,1246902783,US 1246902784,1246903039,NL 1246903040,1246937087,US -1246937088,1246945279,CA +1246937088,1246938111,CA +1246938112,1246938127,US +1246938128,1246940159,CA +1246940160,1246940415,GB +1246940416,1246943287,CA +1246943288,1246943295,DE +1246943296,1246945279,CA 1246945280,1247027199,US 1247027200,1247034559,A2 1247034560,1247034575,US @@ -24386,14 +29205,78 @@ 1247070816,1247070831,CA 1247070832,1247072719,US 1247072720,1247072735,NL -1247072736,1248864255,US +1247072736,1247481855,US +1247481856,1247481863,CN +1247481864,1247481871,CO +1247481872,1247481879,TR +1247481880,1247481887,US +1247481888,1247481903,CN +1247481904,1247481911,BO +1247481912,1247481927,CN +1247481928,1247481951,US +1247481952,1247481967,CN +1247481968,1247481983,US +1247481984,1247482015,GB +1247482016,1247482047,CN +1247482048,1247482063,CA +1247482064,1247482071,BO +1247482072,1247482079,US +1247482080,1247482175,CN +1247482176,1247482239,US +1247482240,1247482255,GB +1247482256,1247482319,CN +1247482320,1247482335,US +1247482336,1247482351,CN +1247482352,1247482367,US +1247482368,1247482383,GB +1247482384,1247482543,CN +1247482544,1247482551,US +1247482552,1247482559,CN +1247482560,1247482567,US +1247482568,1247482583,CN +1247482584,1247482607,US +1247482608,1247482623,CN +1247482624,1247482687,US +1247482688,1247482751,CA +1247482752,1247482815,US +1247482816,1247482879,CN +1247482880,1247482927,US +1247482928,1247482951,BO +1247482952,1247482967,US +1247482968,1247482975,CN +1247482976,1247483015,US +1247483016,1247483039,CN +1247483040,1247483047,CA +1247483048,1247483079,US +1247483080,1247483095,CN +1247483096,1247483111,US +1247483112,1247483119,CN +1247483120,1247483647,US +1247483648,1247484671,CN +1247484672,1247484927,US +1247484928,1247485191,CN +1247485192,1247485231,US +1247485232,1247485263,CN +1247485264,1247485439,US +1247485440,1247485543,CN +1247485544,1247485615,US +1247485616,1247485639,CN +1247485640,1247485647,US +1247485648,1247485951,CN +1247485952,1248864255,US 1248864256,1248866303,CA 1248866304,1248885759,US 1248885760,1248886783,CA -1248886784,1248899071,US +1248886784,1248897263,US +1248897264,1248897271,FR +1248897272,1248899071,US 1248899072,1248900095,CA -1248900096,1248913407,US -1248913408,1248915455,GP +1248900096,1248903695,US +1248903696,1248903711,ZA +1248903712,1248903775,US +1248903776,1248903791,FR +1248903792,1248913407,US +1248913408,1248915455,MF 1248915456,1248919551,US 1248919552,1248920575,CA 1248920576,1248921599,US @@ -24412,23 +29295,38 @@ 1249010688,1249011711,CA 1249011712,1249019903,US 1249019904,1249020927,CA -1249020928,1249027175,US +1249020928,1249026423,US +1249026424,1249026431,CA +1249026432,1249026455,US +1249026456,1249026463,ES +1249026464,1249026703,US +1249026704,1249026711,ZA +1249026712,1249026719,CA +1249026720,1249026767,US +1249026768,1249026775,CA +1249026776,1249026783,MX +1249026784,1249027127,US +1249027128,1249027135,ZA +1249027136,1249027143,AU +1249027144,1249027175,US 1249027176,1249027183,IN -1249027184,1249027391,US +1249027184,1249027271,US +1249027272,1249027279,GB +1249027280,1249027391,US 1249027392,1249027407,PH -1249027408,1249027455,US -1249027456,1249027471,CA -1249027472,1249027503,US +1249027408,1249027503,US 1249027504,1249027519,CA 1249027520,1249027551,US 1249027552,1249027559,CA 1249027560,1249027647,US -1249027648,1249027655,AU -1249027656,1249027823,US +1249027648,1249027655,GB +1249027656,1249027719,US +1249027720,1249027727,GR +1249027728,1249027823,US 1249027824,1249027839,CA -1249027840,1249027887,US -1249027888,1249027895,EG -1249027896,1249027919,US +1249027840,1249027895,US +1249027896,1249027903,PL +1249027904,1249027919,US 1249027920,1249027935,AU 1249027936,1249029119,US 1249029120,1249030143,CA @@ -24446,36 +29344,26 @@ 1249092608,1249099775,US 1249099776,1249101823,CA 1249101824,1249102847,PR -1249102848,1249103871,CA +1249102848,1249103103,US +1249103104,1249103871,CA 1249103872,1249103887,TW -1249103888,1249103903,PH -1249103904,1249103951,US +1249103888,1249103951,US 1249103952,1249103967,TW 1249103968,1249104095,US 1249104096,1249104111,TW -1249104112,1249104127,US -1249104128,1249104191,GB -1249104192,1249104255,US -1249104256,1249104319,GB -1249104320,1249104351,US +1249104112,1249104351,US 1249104352,1249104367,AU -1249104368,1249104383,US -1249104384,1249104447,GB -1249104448,1249104511,US -1249104512,1249104543,GB +1249104368,1249104543,US 1249104544,1249104551,ES 1249104552,1249104575,US 1249104576,1249104607,ES -1249104608,1249104895,US -1249104896,1249104959,GB -1249104960,1249105119,US +1249104608,1249105119,US 1249105120,1249105127,AR 1249105128,1249105135,US 1249105136,1249105143,CH 1249105144,1249105183,US 1249105184,1249105191,ZA -1249105192,1249105215,US -1249105216,1249105279,GB +1249105192,1249105279,US 1249105280,1249105295,CA 1249105296,1249105367,US 1249105368,1249105375,ES @@ -24501,7 +29389,9 @@ 1249180032,1249180095,TW 1249180096,1249191935,US 1249191936,1249193983,CA -1249193984,1249203199,US +1249193984,1249195007,US +1249195008,1249196031,CA +1249196032,1249203199,US 1249203200,1249204223,GD 1249204224,1249210367,US 1249210368,1249212415,KY @@ -24509,12 +29399,50 @@ 1249217536,1249218559,CA 1249218560,1249221887,US 1249221888,1249222655,RO -1249222656,1249236991,US +1249222656,1249227007,US +1249227008,1249227071,CY +1249227072,1249227135,VG +1249227136,1249227167,US +1249227168,1249227199,VG +1249227200,1249227263,HK +1249227264,1249227519,VG +1249227520,1249228031,US +1249228032,1249228063,CZ +1249228064,1249228095,US +1249228096,1249228223,UA +1249228224,1249228239,CZ +1249228240,1249228287,US +1249228288,1249228351,SC +1249228352,1249229007,US +1249229008,1249229008,CA +1249229009,1249229087,US +1249229088,1249229095,CA +1249229096,1249229216,US +1249229217,1249229217,CA +1249229218,1249229289,US +1249229290,1249229291,CA +1249229292,1249236991,US 1249236992,1249239039,KY 1249239040,1249245183,US 1249245184,1249247231,CA 1249247232,1249256447,US -1249256448,1249257471,CA +1249256448,1249256500,CA +1249256501,1249256542,GB +1249256543,1249256713,CA +1249256714,1249256773,US +1249256774,1249256988,CA +1249256989,1249256998,US +1249256999,1249256999,CA +1249257000,1249257009,LB +1249257010,1249257017,CA +1249257018,1249257042,US +1249257043,1249257052,CA +1249257053,1249257062,US +1249257063,1249257121,CA +1249257122,1249257131,LB +1249257132,1249257348,CA +1249257349,1249257412,US +1249257413,1249257471,CA 1249257472,1249260543,US 1249260544,1249261567,CA 1249261568,1249272831,US @@ -24527,7 +29455,13 @@ 1249335296,1249337343,CA 1249337344,1249359871,US 1249359872,1249361919,CA -1249361920,1249384447,US +1249361920,1249381503,US +1249381504,1249381519,DE +1249381520,1249381759,US +1249381760,1249381775,DE +1249381776,1249382287,US +1249382288,1249382303,DE +1249382304,1249384447,US 1249384448,1249386495,PR 1249386496,1249391615,US 1249391616,1249392639,CA @@ -24535,7 +29469,15 @@ 1249396736,1249397759,CA 1249397760,1249409023,US 1249409024,1249410047,CA -1249410048,1249452031,US +1249410048,1249439823,US +1249439824,1249439839,BR +1249439840,1249440063,US +1249440064,1249440127,AN +1249440128,1249440255,US +1249440256,1249440271,AN +1249440272,1249440279,US +1249440280,1249440287,FR +1249440288,1249452031,US 1249452032,1249453055,CA 1249453056,1249474559,US 1249474560,1249475583,CA @@ -24551,14 +29493,22 @@ 1249531904,1249533951,GD 1249533952,1249542143,US 1249542144,1249544191,CA -1249544192,1249562623,US +1249544192,1249550367,US +1249550368,1249550375,HK +1249550376,1249562623,US 1249562624,1249564671,CA 1249564672,1249568319,US 1249568320,1249568327,NL 1249568328,1249571839,US 1249571840,1249572863,CA 1249572864,1249577087,US -1249577088,1249577983,CA +1249577088,1249577232,CA +1249577233,1249577343,US +1249577344,1249577480,CA +1249577481,1249577545,US +1249577546,1249577730,CA +1249577731,1249577794,US +1249577795,1249577983,CA 1249577984,1249592319,US 1249592320,1249593343,CA 1249593344,1249598463,US @@ -24580,10 +29530,12 @@ 1249804288,1249838847,US 1249838848,1249838911,IN 1249838912,1249838975,US -1249838976,1249839039,IN -1249839040,1249839423,US +1249838976,1249839103,IN +1249839104,1249839423,US 1249839424,1249839487,VE -1249839488,1249843231,US +1249839488,1249839551,US +1249839552,1249839615,IN +1249839616,1249843231,US 1249843232,1249843247,IN 1249843248,1249843423,US 1249843424,1249843439,IN @@ -24601,9 +29553,7 @@ 1249847872,1249847903,US 1249847904,1249847935,NO 1249847936,1249847967,GB -1249847968,1249848479,US -1249848480,1249848511,PH -1249848512,1249848927,US +1249847968,1249848927,US 1249848928,1249848959,AU 1249848960,1249850367,US 1249850368,1249850383,IN @@ -24626,23 +29576,23 @@ 1249886208,1249902591,CA 1249902592,1254490111,US 1254490112,1254555647,CA -1254555648,1254604159,US +1254555648,1254604047,US +1254604048,1254604063,ES +1254604064,1254604159,US 1254604160,1254604175,GB 1254604176,1254604191,US 1254604192,1254604199,IE 1254604200,1254621183,US 1254621184,1254629375,CA -1254629376,1254704383,US +1254629376,1254688511,US +1254688512,1254688543,CA +1254688544,1254704383,US 1254704384,1254704639,PH 1254704640,1254704903,US 1254704904,1254704911,PH -1254704912,1254708927,US -1254708928,1254708959,SG -1254708960,1254713359,US +1254704912,1254713359,US 1254713360,1254713407,CA -1254713408,1254725119,US -1254725120,1254725151,GB -1254725152,1254924687,US +1254713408,1254924687,US 1254924688,1254924703,RO 1254924704,1254948927,US 1254948928,1254948935,SG @@ -24650,12 +29600,12 @@ 1254948960,1254948975,CA 1254948976,1254949247,US 1254949248,1254949279,IN -1254949280,1254950671,US +1254949280,1254950199,US +1254950200,1254950207,IL +1254950208,1254950671,US 1254950672,1254950679,RU 1254950680,1254950687,CA -1254950688,1254950719,US -1254950720,1254950727,SG -1254950728,1254950751,US +1254950688,1254950751,US 1254950752,1254950759,IL 1254950760,1254950767,US 1254950768,1254950775,GR @@ -24718,9 +29668,7 @@ 1254953616,1254953623,GB 1254953624,1254953639,US 1254953640,1254953647,TW -1254953648,1254953671,US -1254953672,1254953679,MT -1254953680,1254953687,US +1254953648,1254953687,US 1254953688,1254953703,CA 1254953704,1254953743,US 1254953744,1254953751,IN @@ -24750,7 +29698,9 @@ 1254954664,1254954671,GB 1254954672,1254954887,US 1254954888,1254954895,IL -1254954896,1254955599,US +1254954896,1254955103,US +1254955104,1254955111,GB +1254955112,1254955599,US 1254955600,1254955607,GB 1254955608,1254955735,US 1254955736,1254955743,GB @@ -24766,7 +29716,9 @@ 1254957248,1254957263,MT 1254957264,1254957287,US 1254957288,1254957295,IN -1254957296,1254957375,US +1254957296,1254957311,US +1254957312,1254957327,CA +1254957328,1254957375,US 1254957376,1254957391,CA 1254957392,1254957407,US 1254957408,1254957423,IN @@ -24879,7 +29831,9 @@ 1254964344,1254964351,PR 1254964352,1254964391,US 1254964392,1254964399,AU -1254964400,1254964799,US +1254964400,1254964639,US +1254964640,1254964671,AU +1254964672,1254964799,US 1254964800,1254964815,CA 1254964816,1254964927,US 1254964928,1254964943,CA @@ -25178,9 +30132,7 @@ 1255042752,1255042783,CA 1255042784,1255047167,US 1255047168,1255055359,CA -1255055360,1255055487,US -1255055488,1255055503,CA -1255055504,1255056063,US +1255055360,1255056063,US 1255056064,1255056095,NL 1255056096,1255057887,US 1255057888,1255057919,NL @@ -25191,7 +30143,8 @@ 1255059168,1255059327,US 1255059328,1255059343,NL 1255059344,1255059359,US -1255059360,1255059407,CA +1255059360,1255059391,CA +1255059392,1255059407,US 1255059408,1255059423,AR 1255059424,1255060159,US 1255060160,1255060191,NL @@ -25209,15 +30162,19 @@ 1255061984,1255062015,CA 1255062016,1255062463,US 1255062464,1255062527,PA -1255062528,1255062591,US -1255062592,1255062607,CA -1255062608,1255062847,US +1255062528,1255062847,US 1255062848,1255062863,CA 1255062864,1255063551,US 1255063552,1255071743,PR 1255071744,1255210495,US 1255210496,1255211007,DE -1255211008,1255276543,US +1255211008,1255265279,US +1255265280,1255266303,SG +1255266304,1255274047,US +1255274048,1255274079,GB +1255274080,1255274495,US +1255274496,1255274751,SG +1255274752,1255276543,US 1255276544,1255342079,CA 1255342080,1255369055,US 1255369056,1255369087,DE @@ -25233,15 +30190,21 @@ 1255669760,1255735295,CA 1255735296,1255746799,US 1255746800,1255746815,BB -1255746816,1255753215,US -1255753216,1255753471,GB -1255753472,1255768063,US +1255746816,1255750239,US +1255750240,1255750271,AU +1255750272,1255756799,US +1255756800,1255756815,CA +1255756816,1255768063,US 1255768064,1255768575,CA 1255768576,1255770367,US 1255770368,1255770623,CA -1255770624,1255780351,US +1255770624,1255776431,US +1255776432,1255776439,LB +1255776440,1255780351,US 1255780352,1255782399,CA -1255782400,1255796743,US +1255782400,1255792127,US +1255792128,1255792383,IL +1255792384,1255796743,US 1255796744,1255796751,GB 1255796752,1255972863,US 1255972864,1255981055,CA @@ -25257,11 +30220,13 @@ 1256079360,1256087551,KY 1256087552,1256098559,US 1256098560,1256098815,CA -1256098816,1263264273,US -1263264274,1263264289,PK -1263264290,1263264305,US -1263264306,1263264354,PK -1263264355,1263266623,US +1256098816,1263263999,US +1263264000,1263264127,CA +1263264128,1263264305,US +1263264306,1263264321,PK +1263264322,1263264511,US +1263264512,1263264767,CA +1263264768,1263266623,US 1263266624,1263266655,CA 1263266656,1263267327,US 1263267328,1263267583,CA @@ -25273,21 +30238,37 @@ 1263268276,1263268340,CA 1263268341,1263268343,US 1263268344,1263268351,CA -1263268352,1263268607,US -1263268608,1263268672,CA -1263268673,1263268769,US +1263268352,1263268769,US 1263268770,1263268863,CA -1263268864,1263271423,US +1263268864,1263270143,US +1263270144,1263270159,CA +1263270160,1263271423,US 1263271424,1263271679,CA 1263271680,1264717823,US 1264717824,1264718335,CA -1264718336,1264736255,US +1264718336,1264718591,US +1264718592,1264718599,GB +1264718600,1264718719,US +1264718720,1264718847,CA +1264718848,1264719103,US +1264719104,1264719359,CA +1264719360,1264736255,US 1264736256,1264737279,DO -1264737280,1264762879,US +1264737280,1264738175,US +1264738176,1264738207,IL +1264738208,1264762879,US 1264762880,1264766975,CA 1264766976,1264980735,US 1264980736,1264980743,CA -1264980744,1266107759,US +1264980744,1264982895,US +1264982896,1264982903,AF +1264982904,1264983031,US +1264983032,1264983039,AU +1264983040,1264984703,US +1264984704,1264984711,CA +1264984712,1264984799,US +1264984800,1264984807,AF +1264984808,1266107759,US 1266107760,1266107775,UM 1266107776,1266147327,US 1266147328,1266155519,CA @@ -25658,7 +30639,11 @@ 1275920080,1275920095,CA 1275920096,1279262719,US 1279262720,1279787007,CA -1279787008,1279848447,US +1279787008,1279828567,US +1279828568,1279828575,CA +1279828576,1279828615,US +1279828616,1279828623,CA +1279828624,1279848447,US 1279848448,1279852543,PR 1279852544,1279921919,US 1279921920,1279922047,IE @@ -25671,13 +30656,13 @@ 1279941000,1279943679,US 1279943680,1279943743,PR 1279943744,1279950847,US -1279950848,1279951103,FI +1279950848,1279951103,CA 1279951104,1279951135,US 1279951136,1279951151,CA 1279951152,1279951167,US 1279951168,1279951199,CA -1279951200,1279951231,US -1279951232,1279952919,CA +1279951200,1279951223,US +1279951224,1279952919,CA 1279952920,1279952927,VG 1279952928,1279952943,US 1279952944,1279953023,CA @@ -25685,7 +30670,9 @@ 1279953056,1279953087,US 1279953088,1279953671,CA 1279953672,1279953679,US -1279953680,1279953951,CA +1279953680,1279953759,CA +1279953760,1279953791,GB +1279953792,1279953951,CA 1279953952,1279953967,US 1279953968,1279954095,CA 1279954096,1279954119,US @@ -25694,13 +30681,16 @@ 1279954432,1279954527,CA 1279954528,1279954559,US 1279954560,1279954623,CA -1279954624,1279954687,FI -1279954688,1279954783,CA +1279954624,1279954655,FI +1279954656,1279954719,CA +1279954720,1279954727,US +1279954728,1279954783,CA 1279954784,1279954839,US 1279954840,1279954879,CA 1279954880,1279954911,US 1279954912,1279954943,CA -1279954944,1279955103,US +1279954944,1279955095,US +1279955096,1279955103,BB 1279955104,1279955119,CA 1279955120,1279955151,US 1279955152,1279955159,AU @@ -25723,13 +30713,21 @@ 1279957120,1279957128,IN 1279957129,1279957135,US 1279957136,1279957151,IN -1279957152,1279957231,US +1279957152,1279957172,US +1279957173,1279957173,IN +1279957174,1279957174,US +1279957175,1279957175,IN +1279957176,1279957179,US +1279957180,1279957180,IN +1279957181,1279957184,US +1279957185,1279957185,IN +1279957186,1279957231,US 1279957232,1279957243,IN -1279957244,1279957375,US +1279957244,1279957252,US +1279957253,1279957253,IN +1279957254,1279957375,US 1279957376,1279957383,IN -1279957384,1279957407,US -1279957408,1279957427,IN -1279957428,1279957431,US +1279957384,1279957431,US 1279957432,1279957439,IN 1279957440,1279957631,US 1279957632,1279957651,IN @@ -25737,7 +30735,9 @@ 1279957656,1279957674,IN 1279957675,1279958020,US 1279958021,1279958030,IN -1279958031,1279958399,US +1279958031,1279958305,US +1279958306,1279958306,IN +1279958307,1279958399,US 1279958400,1279958495,IN 1279958496,1279959551,US 1279959552,1279959807,CA @@ -25746,16 +30746,13 @@ 1279960128,1279960143,US 1279960144,1279960159,CA 1279960160,1279960215,US -1279960216,1279960319,CA -1279960320,1279960335,US -1279960336,1279960343,CA +1279960216,1279960343,CA 1279960344,1279960415,US -1279960416,1279960479,CA -1279960480,1279960511,US -1279960512,1279960527,CA +1279960416,1279960527,CA 1279960528,1279960535,US 1279960536,1279960559,CA -1279960560,1279962175,US +1279960560,1279960567,MX +1279960568,1279962175,US 1279962176,1279962207,CA 1279962208,1279962223,US 1279962224,1279962239,CA @@ -25764,7 +30761,9 @@ 1279962912,1279962927,CN 1279962928,1279962943,US 1279962944,1279962975,CN -1279962976,1279963935,US +1279962976,1279963135,US +1279963136,1279963391,IN +1279963392,1279963935,US 1279963936,1279963967,CA 1279963968,1279965183,US 1279965184,1279966207,CA @@ -25772,16 +30771,17 @@ 1279967232,1279971327,CA 1279971328,1279971583,US 1279971584,1279972095,CA -1279972096,1279973951,US +1279972096,1279973887,US +1279973888,1279973951,IN 1279973952,1279973967,CA -1279973968,1279974175,US +1279973968,1279973983,US +1279973984,1279974015,IN +1279974016,1279974175,US 1279974176,1279974207,CN 1279974208,1279974271,CA 1279974272,1279974391,US 1279974392,1279974399,CA -1279974400,1279974527,US -1279974528,1279974655,CA -1279974656,1279974783,US +1279974400,1279974783,US 1279974784,1279974799,EG 1279974800,1279974815,CA 1279974816,1279975263,US @@ -25818,7 +30818,9 @@ 1279979008,1279979263,IN 1279979264,1279979327,US 1279979328,1279979391,IN -1279979392,1279979559,US +1279979392,1279979424,US +1279979425,1279979425,IN +1279979426,1279979559,US 1279979560,1279979575,CA 1279979576,1279979583,US 1279979584,1279980063,CA @@ -25826,7 +30828,9 @@ 1279980072,1279980079,BV 1279980080,1279980127,CA 1279980128,1279980135,US -1279980136,1279981567,CA +1279980136,1279980159,CA +1279980160,1279980287,US +1279980288,1279981567,CA 1279981568,1279981823,US 1279981824,1279981855,VG 1279981856,1279982778,US @@ -25835,9 +30839,7 @@ 1279983048,1279983072,IN 1279983073,1279983079,US 1279983080,1279983087,IN -1279983088,1279983519,US -1279983520,1279983532,IN -1279983533,1279999999,US +1279983088,1279999999,US 1280000000,1280032767,CA 1280032768,1280040959,US 1280040960,1280043527,CA @@ -26053,11 +31055,12 @@ 1296237312,1296237567,US 1296237568,1296237823,NL 1296237824,1296238079,ES -1296238080,1296238591,IL +1296238080,1296238591,DE 1296238592,1296239103,NL 1296239104,1296239231,FR 1296239232,1296239359,NL -1296239360,1296240127,FR +1296239360,1296239615,DE +1296239616,1296240127,FR 1296240128,1296241151,BE 1296241152,1296241407,IT 1296241408,1296242175,NL @@ -26088,7 +31091,9 @@ 1296248384,1296248447,IT 1296248448,1296248575,US 1296248576,1296248703,IE -1296248704,1296249855,FR +1296248704,1296248959,FR +1296248960,1296249024,DE +1296249025,1296249855,FR 1296249856,1296249887,US 1296249888,1296249951,FR 1296249952,1296250015,DE @@ -26103,7 +31108,8 @@ 1296250272,1296250303,DE 1296250304,1296250335,FR 1296250336,1296250367,ES -1296250368,1296251135,FR +1296250368,1296251103,FR +1296251104,1296251135,ES 1296251136,1296251167,GB 1296251168,1296251199,HR 1296251200,1296251295,DE @@ -26111,7 +31117,16 @@ 1296251328,1296251359,IE 1296251360,1296251391,DE 1296251392,1296251775,NL -1296251776,1296252095,FR +1296251776,1296251903,DE +1296251904,1296251967,FR +1296251968,1296252015,NL +1296252016,1296252031,US +1296252032,1296252039,FR +1296252040,1296252055,DE +1296252056,1296252063,BE +1296252064,1296252079,IT +1296252080,1296252087,IE +1296252088,1296252095,FR 1296252096,1296252111,US 1296252112,1296252127,GB 1296252128,1296252143,ES @@ -26127,12 +31142,13 @@ 1296252304,1296252319,IL 1296252320,1296252367,FR 1296252368,1296252383,DE -1296252384,1296252415,IE +1296252384,1296252399,FR +1296252400,1296252415,IE 1296252416,1296252671,FR 1296252672,1296252679,GB 1296252680,1296252687,FR 1296252688,1296252695,NL -1296252696,1296252703,IE +1296252696,1296252703,FR 1296252704,1296252711,DE 1296252712,1296252719,FR 1296252720,1296252727,BE @@ -26147,7 +31163,7 @@ 1296252848,1296252855,GB 1296252856,1296252871,IE 1296252872,1296252879,BE -1296252880,1296252887,DE +1296252880,1296252887,FR 1296252888,1296252895,IE 1296252896,1296252911,BE 1296252912,1296252919,GB @@ -26161,12 +31177,12 @@ 1296258048,1296258303,TW 1296258304,1296259071,NL 1296259072,1296259583,US -1296259584,1296259839,FR +1296259584,1296259839,DE 1296259840,1296260351,NL 1296260352,1296260607,US -1296260608,1296260863,DE -1296260864,1296262143,FR -1296262144,1296262655,US +1296260608,1296262143,DE +1296262144,1296262399,FR +1296262400,1296262655,US 1296262656,1296262911,CA 1296262912,1296263935,US 1296263936,1296263943,FR @@ -26186,8 +31202,8 @@ 1296264240,1296264271,FR 1296264272,1296264303,US 1296264304,1296264319,CA -1296264320,1296264399,US -1296264400,1296264447,FR +1296264320,1296264383,US +1296264384,1296264447,FR 1296264448,1296264543,US 1296264544,1296264639,CA 1296264640,1296264671,US @@ -26198,7 +31214,9 @@ 1296265152,1296265215,FR 1296265216,1296265727,US 1296265728,1296265983,FR -1296265984,1296267263,US +1296265984,1296266751,US +1296266752,1296267007,FR +1296267008,1296267263,US 1296267264,1296267519,FR 1296267520,1296267775,CA 1296267776,1296268031,US @@ -26215,17 +31233,17 @@ 1296465920,1296466239,NG 1296466240,1296466303,NO 1296466304,1296466335,BF -1296466336,1296466367,NO -1296466368,1296466383,AO -1296466384,1296466399,NO +1296466336,1296466399,NO 1296466400,1296466415,AO 1296466416,1296466431,NG -1296466432,1296466439,TZ -1296466440,1296466559,NO -1296466560,1296466583,NG -1296466584,1296466607,NO -1296466608,1296466623,NG -1296466624,1296466639,NO +1296466432,1296466447,TZ +1296466448,1296466495,NO +1296466496,1296466543,GN +1296466544,1296466559,NO +1296466560,1296466575,NG +1296466576,1296466623,NO +1296466624,1296466631,MR +1296466632,1296466639,NO 1296466640,1296466655,NG 1296466656,1296466671,BJ 1296466672,1296466687,NO @@ -26235,18 +31253,15 @@ 1296466760,1296466767,SL 1296466768,1296466775,BF 1296466776,1296466783,GN -1296466784,1296467711,NO -1296467712,1296467967,NG -1296467968,1296468479,NO +1296466784,1296468479,NO 1296468480,1296469247,NG -1296469248,1296472351,NO -1296472352,1296472383,NG +1296469248,1296472383,NO 1296472384,1296472415,BI 1296472416,1296473087,NO 1296473088,1296474623,LT 1296474624,1296476159,US -1296476160,1296480255,LT -1296480256,1296482303,NO +1296476160,1296479743,LT +1296479744,1296482303,NO 1296482304,1296498687,LT 1296498688,1296531455,BG 1296531456,1296564223,MT @@ -26273,7 +31288,9 @@ 1296606272,1296606335,DE 1296606336,1296606367,AT 1296606368,1296606399,CH -1296606400,1296607231,AT +1296606400,1296607103,AT +1296607104,1296607135,CH +1296607136,1296607231,AT 1296607232,1296607743,CH 1296607744,1296607999,NL 1296608000,1296609023,CH @@ -26283,7 +31300,7 @@ 1296613376,1296615423,IT 1296615424,1296617471,GB 1296617472,1296619519,ES -1296619520,1296621567,IT +1296619520,1296621567,DE 1296621568,1296623615,SE 1296623616,1296625663,BE 1296625664,1296629759,RU @@ -26337,9 +31354,7 @@ 1296678152,1296678159,A2 1296678160,1296678215,NG 1296678216,1296678223,A2 -1296678224,1296678319,NG -1296678320,1296678327,A2 -1296678328,1296678351,NG +1296678224,1296678351,NG 1296678352,1296678367,A2 1296678368,1296678415,NG 1296678416,1296678431,A2 @@ -26352,7 +31367,10 @@ 1296678792,1296678831,NG 1296678832,1296678839,A2 1296678840,1296678911,NG -1296678912,1296680959,SA +1296678912,1296680191,SA +1296680192,1296680447,AE +1296680448,1296680703,KW +1296680704,1296680959,SA 1296680960,1296683007,ES 1296683008,1296685055,IE 1296685056,1296687103,TR @@ -26360,7 +31378,9 @@ 1296689152,1296691199,RU 1296691200,1296693247,CH 1296693248,1296695295,DE -1296695296,1296697343,CH +1296695296,1296696831,CH +1296696832,1296697087,DE +1296697088,1296697343,CH 1296697344,1296699391,RU 1296699392,1296701439,IT 1296701440,1296703487,RU @@ -26392,12 +31412,9 @@ 1296748544,1296750591,FR 1296750592,1296752639,NO 1296752640,1296754687,BA -1296754688,1296754911,DE -1296754912,1296754927,AT -1296754928,1296756735,DE +1296754688,1296756735,DE 1296756736,1296758783,FR 1296758784,1296760831,RS -1296760832,1296762879,GB 1296762880,1296764927,RU 1296764928,1296769023,AT 1296769024,1296771071,TR @@ -26411,7 +31428,7 @@ 1296785408,1296787455,IE 1296787456,1296789503,GB 1296789504,1296791551,CH -1296791552,1296793599,NL +1296791552,1296793599,GB 1296793600,1296795647,RU 1296795648,1296795903,NL 1296795904,1296797695,GB @@ -26439,15 +31456,15 @@ 1296957440,1296973823,BG 1296973824,1296990207,CZ 1296990208,1297006591,BG -1297006592,1297022207,BA -1297022208,1297022463,MD -1297022464,1297022975,BA -1297022976,1297039359,LT +1297006592,1297022975,BA +1297022976,1297026815,LT +1297026816,1297026847,FR +1297026848,1297026879,LT +1297026880,1297026888,CY +1297026889,1297039359,LT 1297039360,1297055743,TR 1297055744,1297072127,RU -1297072128,1297074743,PL -1297074744,1297074751,SE -1297074752,1297083375,PL +1297072128,1297083375,PL 1297083376,1297083391,SE 1297083392,1297088511,PL 1297088512,1297121279,AT @@ -26510,7 +31527,9 @@ 1297867584,1297867647,SC 1297867648,1297867687,RU 1297867688,1297867695,CY -1297867696,1297867855,RU +1297867696,1297867743,RU +1297867744,1297867775,AQ +1297867776,1297867855,RU 1297867856,1297867871,MK 1297867872,1297867879,ES 1297867880,1297868799,RU @@ -26595,7 +31614,6 @@ 1298126848,1298127615,SA 1298127616,1298128127,IR 1298128128,1298128895,SA -1298128896,1298130943,FR 1298130944,1298132991,BG 1298132992,1298135039,FI 1298135040,1298137087,NL @@ -26619,8 +31637,8 @@ 1298956288,1298972671,GB 1298972672,1298989055,RU 1298989056,1299005439,UA -1299005440,1299005695,RU -1299005696,1299005951,BE +1299005440,1299005695,BE +1299005696,1299005951,RU 1299005952,1299008511,NL 1299008512,1299009791,BE 1299009792,1299010047,NL @@ -26640,15 +31658,15 @@ 1299016960,1299017215,NL 1299017216,1299017727,RU 1299017728,1299021823,BE -1299021824,1299024559,CH +1299021824,1299023879,CH +1299023880,1299023887,DE +1299023888,1299024559,CH 1299024560,1299024575,DE 1299024576,1299026111,CH 1299026112,1299026127,ES 1299026128,1299026251,CH 1299026252,1299026263,PT -1299026264,1299032063,CH -1299032064,1299032319,NL -1299032320,1299038207,CH +1299026264,1299038207,CH 1299038208,1299054591,FI 1299054592,1299070975,SE 1299070976,1299075071,SA @@ -26673,7 +31691,13 @@ 1305477120,1305739263,ES 1305739264,1306001407,DK 1306001408,1306132479,RU -1306132480,1306263551,SE +1306132480,1306198015,SE +1306198016,1306206207,LV +1306206208,1306214399,HR +1306214400,1306222591,LT +1306222592,1306230783,HR +1306230784,1306238975,LT +1306238976,1306263551,SE 1306263552,1306271743,KE 1306271744,1306279935,RU 1306279936,1306286079,IT @@ -26686,7 +31710,9 @@ 1306311144,1306311151,CH 1306311152,1306312703,RU 1306312704,1306320895,UZ -1306320896,1306329087,DE +1306320896,1306323199,DE +1306323200,1306323263,NL +1306323264,1306329087,DE 1306329088,1306337279,BA 1306337280,1306345471,HU 1306345472,1306353663,LT @@ -26831,7 +31857,7 @@ 1307701248,1307709439,RU 1307709440,1307713535,AL 1307713536,1307717631,IT -1307717632,1307721727,DK +1307717632,1307721727,GE 1307721728,1307725823,AT 1307725824,1307729919,CZ 1307729920,1307734015,RU @@ -26846,15 +31872,14 @@ 1307756288,1307756431,GB 1307756432,1307756447,FR 1307756448,1307756543,GB -1307756544,1307756847,FR -1307756848,1307756863,US +1307756544,1307756863,FR 1307756864,1307756903,GB 1307756904,1307756911,US 1307756912,1307757063,GB 1307757064,1307757071,US 1307757072,1307757183,GB -1307757184,1307757247,US -1307757248,1307758591,GB +1307757184,1307757279,US +1307757280,1307758591,GB 1307758592,1307762687,SM 1307762688,1307766783,PL 1307766784,1307770879,GB @@ -26867,11 +31892,21 @@ 1307803648,1307807743,DK 1307807744,1307811839,SE 1307811840,1307815935,NL -1307815936,1307819791,BE -1307819792,1307820031,EU +1307815936,1307816191,EU +1307816192,1307816447,GB +1307816448,1307818239,EU +1307818240,1307818495,GB +1307818496,1307818751,DE +1307818752,1307819007,ES +1307819008,1307819263,DE +1307819264,1307819519,NL +1307819520,1307819775,BE +1307819776,1307820031,IT 1307820032,1307824127,ES 1307824128,1307828223,HU -1307828224,1307832319,NL +1307828224,1307830128,NL +1307830129,1307830129,SE +1307830130,1307832319,NL 1307832320,1307836415,RU 1307836416,1307840511,SE 1307840512,1307844607,RU @@ -26922,19 +31957,7 @@ 1307907328,1307910143,CH 1307910144,1307914239,DE 1307914240,1307918335,NL -1307918336,1307919439,GB -1307919440,1307919447,ES -1307919448,1307919503,GB -1307919504,1307919511,ES -1307919512,1307919699,GB -1307919700,1307919703,ZA -1307919704,1307920575,GB -1307920576,1307920583,AU -1307920584,1307921431,GB -1307921432,1307921439,BD -1307921440,1307921471,GB -1307921472,1307921535,ES -1307921536,1307922431,GB +1307918336,1307922431,GB 1307922432,1307926527,NL 1307926528,1307930623,KZ 1307930624,1307934719,RU @@ -26950,7 +31973,12 @@ 1307979776,1307981823,ZW 1307981824,1307982847,ZA 1307982848,1307983359,ZW -1307983360,1307983871,GB +1307983360,1307983423,ZA +1307983424,1307983487,BW +1307983488,1307983551,ZM +1307983552,1307983583,MZ +1307983584,1307983615,ZA +1307983616,1307983871,GB 1307983872,1307987967,LB 1307987968,1307992063,FR 1307992064,1307996159,RU @@ -26966,13 +31994,16 @@ 1308033280,1308033535,FR 1308033536,1308033791,DE 1308033792,1308034047,IT -1308034048,1308034559,DE +1308034048,1308034559,GB 1308034560,1308034815,CZ 1308034816,1308035327,DE 1308035328,1308035583,GB 1308035584,1308035839,AE 1308035840,1308036095,GB -1308036096,1308037119,DE +1308036096,1308036351,SE +1308036352,1308036607,BE +1308036608,1308036863,ES +1308036864,1308037119,FR 1308037120,1308041215,UA 1308041216,1308049407,RU 1308049408,1308053503,DK @@ -26981,11 +32012,11 @@ 1308061696,1308069887,RU 1308069888,1308073983,NO 1308073984,1308078079,RU -1308078080,1308078263,NL -1308078264,1308078267,SE -1308078268,1308078879,NL +1308078080,1308078879,NL 1308078880,1308078911,FR -1308078912,1308080127,NL +1308078912,1308079807,NL +1308079808,1308079823,SC +1308079824,1308080127,NL 1308080128,1308082175,RU 1308082176,1308084223,GB 1308084224,1308086271,RS @@ -26993,7 +32024,6 @@ 1308088320,1308090367,UA 1308090368,1308092415,SK 1308092416,1308094463,RU -1308094464,1308096511,KW 1308096512,1308098559,RS 1308098560,1308360703,NL 1308360704,1308622847,PL @@ -27005,19 +32035,10 @@ 1309933568,1310195711,BE 1310195712,1310197759,RU 1310197760,1310199807,CZ -1310199808,1310201855,IE +1310199808,1310201599,IE +1310201600,1310201855,GB 1310201856,1310203903,RU -1310203904,1310204191,FR -1310204192,1310204255,BE -1310204256,1310204287,FR -1310204288,1310204321,BE -1310204322,1310204415,FR -1310204416,1310204671,BE -1310204672,1310204675,FR -1310204676,1310204687,BE -1310204688,1310204707,FR -1310204708,1310204715,BE -1310204716,1310205951,FR +1310203904,1310205951,FR 1310205952,1310207999,RU 1310208000,1310210047,MD 1310210048,1310212095,RU @@ -27025,7 +32046,9 @@ 1310214144,1310216191,UA 1310216192,1310218239,IT 1310218240,1310220287,NO -1310220288,1310222335,NL +1310220288,1310221311,NL +1310221312,1310221567,MK +1310221568,1310222335,NL 1310222336,1310224383,RS 1310224384,1310226431,GB 1310226432,1310228479,BE @@ -27210,7 +32233,7 @@ 1310257152,1310259199,FR 1310259200,1310261247,GB 1310261248,1310277631,UA -1310277632,1310310399,RU +1310294016,1310310399,RU 1310310400,1310326783,GB 1310326784,1310343167,NO 1310343168,1310359551,IT @@ -27268,22 +32291,28 @@ 1311256576,1311258623,FR 1311258624,1311262719,GB 1311262720,1311262975,FR -1311262976,1311263247,CH -1311263248,1311263263,FR -1311263264,1311263359,CH +1311262976,1311263359,CH 1311263360,1311263375,FR 1311263376,1311263407,CH 1311263408,1311263423,BE 1311263424,1311263615,CH -1311263616,1311264767,FR +1311263616,1311263679,FR +1311263680,1311263871,CH +1311263872,1311263999,FR +1311264000,1311264095,CH +1311264096,1311264767,FR 1311264768,1311266815,RU 1311266816,1311268863,FR 1311268864,1311270911,BE 1311270912,1311272959,RU 1311272960,1311275007,GB -1311275008,1311277055,FR +1311275008,1311276671,FR +1311276672,1311276687,RU +1311276688,1311277055,FR 1311277056,1311279103,IT -1311279104,1311281151,BG +1311279104,1311280127,BG +1311280128,1311280383,MK +1311280384,1311281151,BG 1311281152,1311285247,GB 1311285248,1311289343,IT 1311289344,1311291391,LB @@ -27296,7 +32325,9 @@ 1311301632,1311303679,TR 1311303680,1311307775,GB 1311307776,1311309823,IS -1311309824,1311311871,GB +1311309824,1311311823,GB +1311311824,1311311824,JE +1311311825,1311311871,GB 1311311872,1311315967,CZ 1311315968,1311316423,PL 1311316424,1311316439,GB @@ -27340,10 +32371,23 @@ 1311367808,1311367839,US 1311367840,1311367871,DK 1311367872,1311367887,LR -1311367888,1311367895,A2 -1311367896,1311367935,DK +1311367888,1311367895,DE +1311367896,1311367903,NG +1311367904,1311367927,A2 +1311367928,1311367935,DE 1311367936,1311367967,BJ -1311367968,1311368191,A2 +1311367968,1311367999,ET +1311368000,1311368015,A2 +1311368016,1311368023,DE +1311368024,1311368031,A2 +1311368032,1311368063,PG +1311368064,1311368071,A2 +1311368072,1311368103,NG +1311368104,1311368111,AF +1311368112,1311368143,NG +1311368144,1311368159,ET +1311368160,1311368175,NG +1311368176,1311368191,A2 1311368192,1311368319,BD 1311368320,1311368447,CF 1311368448,1311368575,TZ @@ -27359,9 +32403,19 @@ 1311374352,1311375359,FR 1311375360,1311506431,DE 1311506432,1311637503,CZ -1311637504,1311707655,DE +1311637504,1311676023,DE +1311676024,1311676031,IT +1311676032,1311707655,DE 1311707656,1311707663,NL -1311707664,1312292863,DE +1311707664,1311756823,DE +1311756824,1311756831,ES +1311756832,1311757439,DE +1311757440,1311757447,ES +1311757448,1311757463,DE +1311757464,1311757471,ES +1311757472,1311767311,DE +1311767312,1311767319,IT +1311767320,1312292863,DE 1312292864,1312817151,LT 1312817152,1313865727,SE 1313865728,1313931263,CZ @@ -27442,9 +32496,7 @@ 1315771936,1315771951,NA 1315771952,1315771959,UA 1315771960,1315771967,NA -1315771968,1315771975,UA -1315771976,1315771983,NA -1315771984,1315772031,UA +1315771968,1315772031,UA 1315772032,1315772039,NA 1315772040,1315772167,UA 1315772168,1315772175,NA @@ -27512,9 +32564,11 @@ 1315774264,1315774423,UA 1315774424,1315774431,NA 1315774432,1315774463,UA -1315774464,1315782655,RU +1315774464,1315778559,RU 1315782656,1315786751,AM -1315786752,1315790847,FR +1315786752,1315790592,FR +1315790593,1315790593,IT +1315790594,1315790847,FR 1315790848,1315794943,RS 1315794944,1315803135,RU 1315803136,1315807231,KZ @@ -27544,22 +32598,7 @@ 1315885056,1315889151,CZ 1315889152,1315893247,DE 1315893248,1315897343,RU -1315897344,1315897855,IR -1315897856,1315897863,AE -1315897864,1315897879,IR -1315897880,1315897887,AE -1315897888,1315897951,IR -1315897952,1315897991,AE -1315897992,1315897999,IR -1315898000,1315898015,AE -1315898016,1315898031,IR -1315898032,1315898111,AE -1315898112,1315900671,IR -1315900672,1315900735,AE -1315900736,1315900799,IR -1315900800,1315900927,AE -1315900928,1315901223,IR -1315901224,1315901439,AE +1315897344,1315901439,IR 1315901440,1315905535,UA 1315905536,1315907583,BA 1315907584,1315908095,SI @@ -27569,7 +32608,9 @@ 1315917824,1315921919,RU 1315921920,1315926015,TR 1315926016,1315930111,CZ -1315930112,1315934207,DE +1315930112,1315930623,DE +1315930624,1315930879,LB +1315930880,1315934207,DE 1315934208,1315938303,RU 1315938304,1315942399,DK 1315942400,1315946495,UA @@ -27581,7 +32622,9 @@ 1317011456,1317044223,BG 1317044224,1317076991,CZ 1317076992,1317109759,BE -1317109760,1317113855,GB +1317109760,1317113103,GB +1317113104,1317113119,IE +1317113120,1317113855,GB 1317113856,1317114111,US 1317114112,1317115135,GB 1317115136,1317115391,IE @@ -27595,11 +32638,15 @@ 1317129280,1317129343,CA 1317129344,1317129471,GB 1317129472,1317129727,IT -1317129728,1317137663,GB +1317129728,1317135615,GB +1317135616,1317135871,DE +1317135872,1317137663,GB 1317137664,1317137919,SE 1317137920,1317140095,GB 1317140096,1317140223,US -1317140224,1317142143,GB +1317140224,1317140559,GB +1317140560,1317140575,FR +1317140576,1317142143,GB 1317142144,1317142271,CA 1317142272,1317142527,GB 1317142528,1317175295,PT @@ -27632,7 +32679,9 @@ 1317642864,1317642879,GB 1317642880,1317642975,IE 1317642976,1317642991,GB -1317642992,1317645407,IE +1317642992,1317643023,IE +1317643024,1317643039,GB +1317643040,1317645407,IE 1317645408,1317645823,GB 1317645824,1317646895,IE 1317646896,1317646911,GB @@ -27649,10 +32698,9 @@ 1317650096,1317650135,IE 1317650136,1317650143,GB 1317650144,1317650431,IE -1317650432,1317666815,RU 1317666816,1317666823,IQ 1317666824,1317666831,CD -1317666832,1317666839,NG +1317666832,1317666839,A2 1317666840,1317666855,GH 1317666856,1317666863,A2 1317666864,1317666871,GH @@ -27669,7 +32717,7 @@ 1317667048,1317667055,A2 1317667056,1317667063,LR 1317667064,1317667103,A2 -1317667104,1317667111,NG +1317667104,1317667111,UG 1317667112,1317667135,A2 1317667136,1317667143,AO 1317667144,1317667151,A2 @@ -27678,14 +32726,14 @@ 1317667168,1317667175,NG 1317667176,1317667191,A2 1317667192,1317667231,NG -1317667232,1317667239,GH +1317667232,1317667239,A2 1317667240,1317667247,NG 1317667248,1317667263,A2 1317667264,1317667271,GB -1317667272,1317667279,A2 -1317667280,1317667295,NG -1317667296,1317667303,A2 -1317667304,1317667335,NG +1317667272,1317667287,A2 +1317667288,1317667295,NG +1317667296,1317667311,A2 +1317667312,1317667335,NG 1317667336,1317667343,A2 1317667344,1317667351,NG 1317667352,1317667359,AO @@ -27711,11 +32759,13 @@ 1317667760,1317667767,FR 1317667768,1317667775,ZA 1317667776,1317667783,US -1317667784,1317667823,NG -1317667824,1317668095,A2 +1317667784,1317667791,AO +1317667792,1317667799,NG +1317667800,1317667807,A2 +1317667808,1317667815,NG +1317667816,1317668095,A2 1317668096,1317668103,GH -1317668104,1317668111,ZM -1317668112,1317668143,A2 +1317668104,1317668143,A2 1317668144,1317668151,AO 1317668152,1317668167,NG 1317668168,1317668183,A2 @@ -27723,17 +32773,14 @@ 1317668192,1317668199,A2 1317668200,1317668207,BW 1317668208,1317668215,LR -1317668216,1317668223,CM +1317668216,1317668223,A2 1317668224,1317668239,NG -1317668240,1317668247,A2 -1317668248,1317668255,NG -1317668256,1317668271,A2 +1317668240,1317668271,A2 1317668272,1317668279,SL 1317668280,1317668303,A2 -1317668304,1317668311,NG +1317668304,1317668311,UG 1317668312,1317668319,IQ -1317668320,1317668343,A2 -1317668344,1317668351,AO +1317668320,1317668351,A2 1317668352,1317668359,NG 1317668360,1317668367,SL 1317668368,1317668391,A2 @@ -27746,7 +32793,7 @@ 1317668464,1317668471,AO 1317668472,1317668479,NG 1317668480,1317668487,A2 -1317668488,1317668495,NG +1317668488,1317668495,UG 1317668496,1317668503,GH 1317668504,1317668511,CD 1317668512,1317668519,IQ @@ -27758,9 +32805,9 @@ 1317668560,1317668575,NG 1317668576,1317668583,A2 1317668584,1317668591,LR -1317668592,1317668599,NG +1317668592,1317668599,UG 1317668600,1317668615,A2 -1317668616,1317668623,NG +1317668616,1317668623,UG 1317668624,1317668631,IQ 1317668632,1317668639,A2 1317668640,1317668655,NG @@ -27770,27 +32817,22 @@ 1317668728,1317668735,NG 1317668736,1317668767,A2 1317668768,1317668775,LR -1317668776,1317668791,NG +1317668776,1317668783,A2 +1317668784,1317668791,NG 1317668792,1317668807,A2 1317668808,1317668815,NG -1317668816,1317668831,A2 -1317668832,1317668839,NG -1317668840,1317668847,A2 +1317668816,1317668847,A2 1317668848,1317668855,NG 1317668856,1317668863,A2 1317668864,1317668871,LR -1317668872,1317668911,A2 -1317668912,1317668919,NG -1317668920,1317668935,A2 -1317668936,1317668943,NG -1317668944,1317668959,A2 -1317668960,1317668983,NG -1317668984,1317668999,A2 +1317668872,1317668959,A2 +1317668960,1317668991,UG +1317668992,1317668999,A2 1317669000,1317669007,CD 1317669008,1317669015,NG 1317669016,1317669055,A2 -1317669056,1317669079,NG -1317669080,1317669095,A2 +1317669056,1317669063,NG +1317669064,1317669095,A2 1317669096,1317669103,NG 1317669104,1317669111,A2 1317669112,1317669119,NG @@ -27803,11 +32845,11 @@ 1317669944,1317669959,NG 1317669960,1317669983,A2 1317669984,1317669991,LR -1317669992,1317670015,NG -1317670016,1317670063,A2 +1317669992,1317669999,NG +1317670000,1317670063,A2 1317670064,1317670103,NG -1317670104,1317670111,A2 -1317670112,1317670143,NG +1317670104,1317670135,A2 +1317670136,1317670143,NG 1317670144,1317670175,SL 1317670176,1317670215,A2 1317670216,1317670223,NG @@ -27816,9 +32858,7 @@ 1317670240,1317670247,NG 1317670248,1317670255,A2 1317670256,1317670263,NG -1317670264,1317670423,A2 -1317670424,1317670431,NG -1317670432,1317670447,A2 +1317670264,1317670447,A2 1317670448,1317670455,IQ 1317670456,1317670463,A2 1317670464,1317670471,NG @@ -27827,12 +32867,15 @@ 1317670512,1317670519,CI 1317670520,1317670543,NG 1317670544,1317670551,IQ -1317670552,1317670567,NG +1317670552,1317670559,UG +1317670560,1317670567,NG 1317670568,1317670575,A2 1317670576,1317670583,NG 1317670584,1317670591,GH 1317670592,1317670607,A2 -1317670608,1317670639,NG +1317670608,1317670615,NG +1317670616,1317670631,UG +1317670632,1317670639,NG 1317670640,1317670647,A2 1317670648,1317670655,NG 1317670656,1317670663,AO @@ -27842,13 +32885,12 @@ 1317670712,1317670719,GH 1317670720,1317670727,A2 1317670728,1317670735,GH -1317670736,1317670759,A2 -1317670760,1317670767,NG +1317670736,1317670767,A2 1317670768,1317670775,GH 1317670776,1317670783,A2 1317670784,1317670791,GH -1317670792,1317670807,NG -1317670808,1317670815,A2 +1317670792,1317670799,NG +1317670800,1317670815,A2 1317670816,1317670823,NG 1317670824,1317670847,A2 1317670848,1317670855,NG @@ -27859,15 +32901,13 @@ 1317670897,1317670911,NG 1317670912,1317671175,A2 1317671176,1317671191,NG -1317671192,1317671231,A2 -1317671232,1317671239,NG +1317671192,1317671239,A2 1317671240,1317671247,CI -1317671248,1317671255,NG +1317671248,1317671255,A2 1317671256,1317671263,CI -1317671264,1317671271,NG -1317671272,1317671279,A2 -1317671280,1317671311,NG -1317671312,1317671319,A2 +1317671264,1317671279,A2 +1317671280,1317671303,NG +1317671304,1317671319,A2 1317671320,1317671327,NG 1317671328,1317671335,A2 1317671336,1317671343,BW @@ -27879,9 +32919,9 @@ 1317671392,1317671399,NG 1317671400,1317671407,IQ 1317671408,1317671415,UG -1317671416,1317671423,NG -1317671424,1317671439,A2 -1317671440,1317671487,NG +1317671416,1317671439,A2 +1317671440,1317671447,ZW +1317671448,1317671487,NG 1317671488,1317671527,A2 1317671528,1317671543,NG 1317671544,1317671551,GH @@ -27891,10 +32931,11 @@ 1317671592,1317671607,A2 1317671608,1317671615,GH 1317671616,1317671647,A2 -1317671648,1317671679,NG +1317671648,1317671671,NG +1317671672,1317671679,AO 1317671680,1317671687,LR -1317671688,1317671711,A2 -1317671712,1317671727,NG +1317671688,1317671719,A2 +1317671720,1317671727,NG 1317671728,1317671759,A2 1317671760,1317671767,IQ 1317671768,1317671783,A2 @@ -27902,16 +32943,18 @@ 1317671808,1317671823,CI 1317671824,1317671831,NG 1317671832,1317671847,A2 -1317671848,1317671863,NG +1317671848,1317671855,NG +1317671856,1317671863,UG 1317671864,1317671887,A2 1317671888,1317671895,NG -1317671896,1317671903,CM +1317671896,1317671903,A2 1317671904,1317671911,NG 1317671912,1317671919,AO 1317671920,1317671927,NG 1317671928,1317671935,A2 1317671936,1317672447,GA -1317672448,1317672463,A2 +1317672448,1317672455,A2 +1317672456,1317672463,GA 1317672464,1317672471,NG 1317672472,1317672479,A2 1317672480,1317672487,ZM @@ -27920,32 +32963,30 @@ 1317672544,1317672551,CD 1317672552,1317672583,A2 1317672584,1317672591,CD -1317672592,1317672599,NG -1317672600,1317672615,A2 +1317672592,1317672615,A2 1317672616,1317672623,NG 1317672624,1317672655,A2 1317672656,1317672663,CD -1317672664,1317672679,NG +1317672664,1317672671,A2 +1317672672,1317672679,NG 1317672680,1317672727,A2 -1317672728,1317672735,NG +1317672728,1317672735,UG 1317672736,1317672743,LR 1317672744,1317672759,A2 1317672760,1317672767,NG -1317672768,1317672775,A2 -1317672776,1317672783,NG -1317672784,1317672815,A2 +1317672768,1317672815,A2 1317672816,1317672823,BW 1317672824,1317672831,NG 1317672832,1317672839,A2 1317672840,1317672847,NG 1317672848,1317672863,A2 1317672864,1317672871,NG -1317672872,1317672879,A2 -1317672880,1317672895,NG -1317672896,1317672903,A2 +1317672872,1317672903,A2 1317672904,1317672919,CI 1317672920,1317672927,GH -1317672928,1317672951,NG +1317672928,1317672935,A2 +1317672936,1317672943,NG +1317672944,1317672951,UG 1317672952,1317672959,A2 1317672960,1317673247,NG 1317673248,1317673263,A2 @@ -27955,32 +32996,32 @@ 1317673288,1317673335,A2 1317673336,1317673343,GH 1317673344,1317673359,A2 -1317673360,1317673375,NG +1317673360,1317673367,NG +1317673368,1317673375,A2 1317673376,1317673383,AO 1317673384,1317673391,NG 1317673392,1317673399,A2 1317673400,1317673407,NG 1317673408,1317673423,A2 1317673424,1317673431,NG -1317673432,1317673447,A2 -1317673448,1317673463,AO +1317673432,1317673455,A2 +1317673456,1317673463,AO 1317673464,1317673471,A2 1317673472,1317673479,NG 1317673480,1317673495,A2 1317673496,1317673527,NG 1317673528,1317673535,A2 -1317673536,1317673551,NG +1317673536,1317673551,ZW 1317673552,1317673559,A2 1317673560,1317673575,NG 1317673576,1317673583,CD -1317673584,1317673591,A2 -1317673592,1317673615,NG +1317673584,1317673607,A2 +1317673608,1317673615,NG 1317673616,1317673623,A2 1317673624,1317673631,NG 1317673632,1317673639,A2 1317673640,1317673647,AO -1317673648,1317673671,A2 -1317673672,1317673679,CM +1317673648,1317673679,A2 1317673680,1317673687,IQ 1317673688,1317673695,A2 1317673696,1317673703,NG @@ -28003,10 +33044,7 @@ 1317673952,1317673967,NG 1317673968,1317673975,A2 1317673976,1317674239,NG -1317674240,1317674247,A2 -1317674248,1317674255,NG -1317674256,1317674263,CM -1317674264,1317674271,A2 +1317674240,1317674271,A2 1317674272,1317674279,NG 1317674280,1317674287,A2 1317674288,1317674295,GH @@ -28018,27 +33056,27 @@ 1317674384,1317674399,NG 1317674400,1317674415,A2 1317674416,1317674423,AO -1317674424,1317674431,NG +1317674424,1317674431,UG 1317674432,1317674439,A2 1317674440,1317674440,AO 1317674441,1317674447,A2 1317674448,1317674455,AO 1317674456,1317674471,NG 1317674472,1317674487,A2 -1317674488,1317674495,NG +1317674488,1317674495,UG 1317674496,1317674527,A2 1317674528,1317674535,NG 1317674536,1317674543,IQ -1317674544,1317674575,NG -1317674576,1317674607,A2 +1317674544,1317674567,NG +1317674568,1317674607,A2 1317674608,1317674615,NG 1317674616,1317674623,IQ 1317674624,1317674631,NG 1317674632,1317674639,A2 1317674640,1317674647,NG 1317674648,1317674655,A2 -1317674656,1317674679,NG -1317674680,1317674687,A2 +1317674656,1317674671,NG +1317674672,1317674687,A2 1317674688,1317674703,NG 1317674704,1317674711,A2 1317674712,1317674735,NG @@ -28046,12 +33084,14 @@ 1317674744,1317674751,IQ 1317674752,1317674759,NG 1317674760,1317674767,A2 -1317674768,1317674791,NG +1317674768,1317674775,NG +1317674776,1317674783,A2 +1317674784,1317674791,NG 1317674792,1317674799,A2 1317674800,1317674807,NG 1317674808,1317674823,A2 -1317674824,1317674839,NG -1317674840,1317674847,A2 +1317674824,1317674831,NG +1317674832,1317674847,A2 1317674848,1317674863,NG 1317674864,1317674879,A2 1317674880,1317674887,NG @@ -28063,36 +33103,26 @@ 1317674952,1317674959,NG 1317674960,1317674967,GH 1317674968,1317674983,NG -1317674984,1317674991,A2 -1317674992,1317675007,NG -1317675008,1317675023,A2 -1317675024,1317675047,NG -1317675048,1317675055,A2 +1317674984,1317674999,A2 +1317675000,1317675007,NG +1317675008,1317675031,A2 +1317675032,1317675039,NG +1317675040,1317675055,A2 1317675056,1317675063,NG 1317675064,1317675071,AO 1317675072,1317675095,NG -1317675096,1317675103,A2 -1317675104,1317675111,CD -1317675112,1317675183,A2 -1317675184,1317675199,CM -1317675200,1317675223,NG -1317675224,1317675231,A2 -1317675232,1317675239,LR -1317675240,1317675247,A2 +1317675096,1317675199,A2 +1317675200,1317675215,NG +1317675216,1317675247,A2 1317675248,1317675255,AO 1317675256,1317675271,A2 1317675272,1317675279,NG -1317675280,1317675287,CM -1317675288,1317675295,A2 +1317675280,1317675295,A2 1317675296,1317675319,NG -1317675320,1317675343,CM -1317675344,1317675351,A2 +1317675320,1317675351,A2 1317675352,1317675359,IQ 1317675360,1317675367,NG -1317675368,1317675375,A2 -1317675376,1317675383,CM -1317675384,1317675391,NG -1317675392,1317675407,A2 +1317675368,1317675407,A2 1317675408,1317675415,NG 1317675416,1317675423,A2 1317675424,1317675439,NG @@ -28105,12 +33135,11 @@ 1317675488,1317675503,A2 1317675504,1317675511,NG 1317675512,1317675535,A2 -1317675536,1317675543,NG +1317675536,1317675543,UG 1317675544,1317675551,IQ 1317675552,1317675559,NG 1317675560,1317675567,NA -1317675568,1317675583,A2 -1317675584,1317675591,LR +1317675568,1317675591,A2 1317675592,1317675607,NG 1317675608,1317675623,A2 1317675624,1317675639,NG @@ -28123,52 +33152,56 @@ 1317675696,1317675703,NG 1317675704,1317675711,A2 1317675712,1317675719,CM -1317675720,1317675727,A2 -1317675728,1317675735,NG -1317675736,1317675743,A2 +1317675720,1317675743,A2 1317675744,1317675751,GH 1317675752,1317675759,NG 1317675760,1317675775,GH 1317675776,1317675783,NG -1317675784,1317675799,A2 -1317675800,1317675807,NG -1317675808,1317675815,A2 -1317675816,1317675839,NG -1317675840,1317675855,A2 +1317675784,1317675791,A2 +1317675792,1317675799,CD +1317675800,1317675807,GB +1317675808,1317675815,NG +1317675816,1317675823,A2 +1317675824,1317675847,NG +1317675848,1317675855,TD 1317675856,1317675863,NG 1317675864,1317675887,A2 1317675888,1317675895,CD -1317675896,1317675911,A2 -1317675912,1317675935,NG -1317675936,1317675943,A2 -1317675944,1317675975,NG +1317675896,1317675919,A2 +1317675920,1317675927,UG +1317675928,1317675935,LR +1317675936,1317675951,A2 +1317675952,1317675959,NG +1317675960,1317675967,A2 +1317675968,1317675975,NG 1317675976,1317675983,A2 -1317675984,1317675991,LR -1317675992,1317675999,A2 +1317675984,1317675991,ML +1317675992,1317675999,NG 1317676000,1317676007,GN 1317676008,1317676015,GH 1317676016,1317676023,SD 1317676024,1317676031,GQ 1317676032,1317676039,NG -1317676040,1317676047,CD -1317676048,1317676063,A2 -1317676064,1317676071,CM +1317676040,1317676055,A2 +1317676056,1317676063,NG +1317676064,1317676071,GH 1317676072,1317676079,A2 1317676080,1317676087,AO 1317676088,1317676095,NG -1317676096,1317676103,NE +1317676096,1317676103,CM 1317676104,1317676111,NG -1317676112,1317676127,A2 -1317676128,1317676135,NG -1317676136,1317676151,A2 +1317676112,1317676119,CM +1317676120,1317676135,A2 +1317676136,1317676143,CM +1317676144,1317676151,NG 1317676152,1317676159,CM 1317676160,1317676167,TG 1317676168,1317676175,ML 1317676176,1317676191,A2 1317676192,1317676207,SD 1317676208,1317676215,A2 -1317676216,1317676223,GH -1317676224,1317676231,AO +1317676216,1317676223,NG +1317676224,1317676231,GH 1317676232,1317676239,NG 1317676240,1317676247,SD 1317676248,1317676255,NG @@ -28176,26 +33209,23 @@ 1317676264,1317676271,NG 1317676272,1317676279,A2 1317676280,1317676287,NG -1317676288,1317676551,LR +1317676288,1317676543,LR +1317676544,1317676551,A2 1317676552,1317676559,AO 1317676560,1317676567,NG -1317676568,1317676583,A2 +1317676568,1317676575,LR +1317676576,1317676583,A2 1317676584,1317676591,NG 1317676592,1317676599,AO 1317676600,1317676607,UG 1317676608,1317676615,NG -1317676616,1317676623,A2 -1317676624,1317676631,CM -1317676632,1317676639,A2 -1317676640,1317676647,LR +1317676616,1317676639,A2 +1317676640,1317676647,CD 1317676648,1317676655,A2 1317676656,1317676671,NG 1317676672,1317676687,A2 1317676688,1317676695,LR -1317676696,1317676711,A2 -1317676712,1317676719,NG -1317676720,1317676727,GQ -1317676728,1317676751,A2 +1317676696,1317676751,A2 1317676752,1317676759,ML 1317676760,1317676767,LR 1317676768,1317676775,A2 @@ -28204,8 +33234,7 @@ 1317676800,1317676807,CD 1317676808,1317676815,NG 1317676816,1317676823,LR -1317676824,1317676831,NG -1317676832,1317676847,A2 +1317676824,1317676847,A2 1317676848,1317676855,NG 1317676856,1317676863,A2 1317676864,1317676871,TG @@ -28213,32 +33242,35 @@ 1317676880,1317676903,A2 1317676904,1317676927,NG 1317676928,1317676943,A2 -1317676944,1317676959,CM -1317676960,1317676983,A2 +1317676944,1317676951,CM +1317676952,1317676983,A2 1317676984,1317676991,NG -1317676992,1317676999,LR +1317676992,1317676999,A2 1317677000,1317677007,IQ 1317677008,1317677015,CD -1317677016,1317677023,GH -1317677024,1317677031,NG -1317677032,1317677047,A2 +1317677016,1317677023,A2 +1317677024,1317677039,NG +1317677040,1317677047,A2 1317677048,1317677055,NG -1317677056,1317677071,A2 +1317677056,1317677063,UG +1317677064,1317677071,TD 1317677072,1317677079,NG -1317677080,1317677087,SD -1317677088,1317677143,A2 -1317677144,1317677151,SD -1317677152,1317677191,A2 +1317677080,1317677087,UG +1317677088,1317677095,A2 +1317677096,1317677103,BF +1317677104,1317677127,A2 +1317677128,1317677135,NG +1317677136,1317677191,A2 1317677192,1317677199,SD -1317677200,1317677207,NG -1317677208,1317677223,A2 -1317677224,1317677231,NG +1317677200,1317677207,A2 +1317677208,1317677215,NG +1317677216,1317677231,A2 1317677232,1317677239,UG 1317677240,1317677247,A2 1317677248,1317677271,NG -1317677272,1317677295,A2 -1317677296,1317677311,NG -1317677312,1317677319,A2 +1317677272,1317677303,A2 +1317677304,1317677311,NG +1317677312,1317677319,CD 1317677320,1317677327,AO 1317677328,1317677335,CD 1317677336,1317677343,A2 @@ -28248,98 +33280,126 @@ 1317677376,1317677399,A2 1317677400,1317677407,NG 1317677408,1317677415,CD -1317677416,1317677423,A2 +1317677416,1317677423,LR 1317677424,1317677431,CD -1317677432,1317677439,A2 -1317677440,1317677455,CD +1317677432,1317677439,LR +1317677440,1317677447,NG +1317677448,1317677455,CD 1317677456,1317677463,AO -1317677464,1317677471,A2 +1317677464,1317677471,GQ 1317677472,1317677479,NG 1317677480,1317677487,AO -1317677488,1317677495,A2 -1317677496,1317677503,CD -1317677504,1317677511,NG -1317677512,1317677519,CD -1317677520,1317677527,NG +1317677488,1317677495,CD +1317677496,1317677527,NG 1317677528,1317677535,GQ -1317677536,1317677543,A2 -1317677544,1317677551,CD -1317677552,1317677591,NG -1317677592,1317677599,A2 -1317677600,1317677711,NG -1317677712,1317677719,A2 -1317677720,1317677735,NG -1317677736,1317677743,A2 -1317677744,1317677775,NG -1317677776,1317677791,A2 -1317677792,1317677823,NG +1317677536,1317677551,CD +1317677552,1317677567,NG +1317677568,1317677663,A2 +1317677664,1317677671,GB +1317677672,1317677823,A2 1317677824,1317677831,AO 1317677832,1317677839,A2 1317677840,1317677847,LR 1317677848,1317677855,NG -1317677856,1317677895,A2 +1317677856,1317677863,BF +1317677864,1317677895,A2 1317677896,1317677903,GN -1317677904,1317677959,A2 -1317677960,1317677967,NG -1317677968,1317678007,A2 +1317677904,1317678007,A2 1317678008,1317678015,NG 1317678016,1317678047,A2 1317678048,1317678055,IQ -1317678056,1317678143,A2 +1317678056,1317678079,A2 +1317678080,1317678095,NG +1317678096,1317678103,GQ +1317678104,1317678111,NG +1317678112,1317678127,A2 +1317678128,1317678135,SD +1317678136,1317678143,NG 1317678144,1317678151,CD -1317678152,1317678167,A2 +1317678152,1317678159,NG +1317678160,1317678167,GQ 1317678168,1317678175,NG -1317678176,1317678207,A2 -1317678208,1317678215,NG -1317678216,1317678231,A2 +1317678176,1317678183,GR +1317678184,1317678191,NG +1317678192,1317678199,A2 +1317678200,1317678207,CD +1317678208,1317678223,A2 +1317678224,1317678231,NG 1317678232,1317678239,BF -1317678240,1317678335,A2 -1317678336,1317678343,NG -1317678344,1317678375,A2 +1317678240,1317678247,CD +1317678248,1317678255,TD +1317678256,1317678271,A2 +1317678272,1317678287,NG +1317678288,1317678295,GR +1317678296,1317678311,A2 +1317678312,1317678319,SD +1317678320,1317678327,NG +1317678328,1317678335,A2 +1317678336,1317678343,AO +1317678344,1317678351,A2 +1317678352,1317678359,CD +1317678360,1317678367,NG +1317678368,1317678375,CD 1317678376,1317678383,NG -1317678384,1317678439,A2 +1317678384,1317678391,GL +1317678392,1317678399,A2 +1317678400,1317678407,ML +1317678408,1317678415,A2 +1317678416,1317678431,NG +1317678432,1317678439,A2 1317678440,1317678447,CD 1317678448,1317678455,A2 1317678456,1317678463,CD -1317678464,1317678471,A2 -1317678472,1317678479,AO -1317678480,1317678487,A2 -1317678488,1317678495,NG -1317678496,1317679615,A2 +1317678464,1317678471,NG +1317678472,1317678479,A2 +1317678480,1317678487,CD +1317678488,1317678495,ML +1317678496,1317678503,A2 +1317678504,1317678527,NG +1317678528,1317678543,A2 +1317678544,1317678551,CD +1317678552,1317678559,ML +1317678560,1317678567,NG +1317678568,1317678575,CD +1317678576,1317678583,NG +1317678584,1317678591,AO +1317678592,1317679615,A2 1317679616,1317679631,AO -1317679632,1317679639,A2 +1317679632,1317679639,NG 1317679640,1317679647,ZW -1317679648,1317679663,A2 +1317679648,1317679655,CD +1317679656,1317679663,NG 1317679664,1317679671,AO -1317679672,1317679679,NG -1317679680,1317679695,A2 +1317679672,1317679687,NG +1317679688,1317679695,A2 1317679696,1317679703,LU -1317679704,1317679711,A2 -1317679712,1317679719,NG -1317679720,1317679727,A2 +1317679704,1317679727,NG 1317679728,1317679735,GN -1317679736,1317679743,A2 +1317679736,1317679743,NG 1317679744,1317679751,AO 1317679752,1317679767,NG -1317679768,1317679783,A2 -1317679784,1317679799,NG -1317679800,1317679831,A2 -1317679832,1317679839,CD +1317679768,1317679775,A2 +1317679776,1317679799,NG +1317679800,1317679807,A2 +1317679808,1317679831,NG +1317679832,1317679839,A2 1317679840,1317679847,NG -1317679848,1317683199,A2 +1317679848,1317679855,A2 +1317679856,1317679871,NG +1317679872,1317681183,A2 +1317681184,1317681191,NG +1317681192,1317683199,A2 1317683200,1317683839,DE 1317683840,1317683855,CH 1317683856,1317683863,DE 1317683864,1317683871,FR 1317683872,1317685503,DE 1317685504,1317685631,BE -1317685632,1317686271,DE -1317686272,1317686287,NL -1317686288,1317686335,DE +1317685632,1317686303,DE +1317686304,1317686319,NL +1317686320,1317686335,DE 1317686336,1317686399,NL -1317686400,1317695743,DE -1317695744,1317695999,CH -1317696000,1317698559,DE +1317686400,1317698559,DE 1317698560,1317698687,NL 1317698688,1317699583,DE 1317699584,1317715967,RU @@ -28349,34 +33409,63 @@ 1317765120,1317781503,GE 1317781504,1317814271,RU 1317814272,1317830655,DE -1317830656,1317832191,NL +1317830656,1317831839,NL +1317831840,1317831871,CA +1317831872,1317832191,NL 1317832192,1317832447,GB 1317832448,1317832511,CY -1317832512,1317832959,NL +1317832512,1317832575,NL +1317832576,1317832703,GI +1317832704,1317832959,NL 1317832960,1317833215,IT -1317833216,1317835615,NL +1317833216,1317835007,NL +1317835008,1317835071,RU +1317835072,1317835135,GI +1317835136,1317835199,RU +1317835200,1317835263,CY +1317835264,1317835615,NL 1317835616,1317835647,RU -1317835648,1317836863,NL +1317835648,1317835711,NL +1317835712,1317835775,GI +1317835776,1317836031,CY +1317836032,1317836863,NL 1317836864,1317836927,CY 1317836928,1317836991,NL 1317836992,1317837007,GB -1317837008,1317838943,NL +1317837008,1317837023,RU +1317837024,1317837567,NL +1317837568,1317837823,US +1317837824,1317838943,NL 1317838944,1317838959,GB -1317838960,1317839359,NL +1317838960,1317838975,NL +1317838976,1317839103,GI +1317839104,1317839359,NL 1317839360,1317839615,RU 1317839616,1317839679,HK 1317839680,1317839695,CZ 1317839696,1317841407,NL 1317841408,1317841439,SC -1317841440,1317841663,NL +1317841440,1317841471,MT +1317841472,1317841535,CY +1317841536,1317841599,NL +1317841600,1317841663,GI 1317841664,1317841727,HK 1317841728,1317841855,CY -1317841856,1317842943,NL +1317841856,1317841887,IL +1317841888,1317842943,NL 1317842944,1317843071,CY 1317843072,1317843135,HK 1317843136,1317843199,CY 1317843200,1317843391,US -1317843392,1317847039,NL +1317843392,1317843423,NL +1317843424,1317843455,PR +1317843456,1317843519,NL +1317843520,1317843583,GI +1317843584,1317843647,US +1317843648,1317843839,NL +1317843840,1317843967,SC +1317843968,1317844223,MY +1317844224,1317847039,NL 1317847040,1317863423,RU 1317863424,1317879807,GB 1317879808,1317896191,SK @@ -28386,12 +33475,11 @@ 1317945344,1317965047,AT 1317965048,1317965055,DE 1317965056,1317978111,AT -1317978112,1317994495,RU -1317994496,1317996031,NL -1317996032,1317996095,DE +1317994496,1317995519,NL +1317995520,1317996095,DE 1317996096,1317996287,NL -1317996288,1317997567,DE -1317997568,1317998591,NL +1317996288,1317998207,DE +1317998208,1317998591,NL 1317998592,1318000383,DE 1318000384,1318000447,NL 1318000448,1318002175,DE @@ -28402,12 +33490,10 @@ 1318006272,1318006783,NL 1318006784,1318007999,DE 1318008000,1318008031,NL -1318008032,1318008703,DE -1318008704,1318008767,NL -1318008768,1318009423,DE +1318008032,1318009423,DE 1318009424,1318009471,NL -1318009472,1318010527,DE -1318010528,1318010879,NL +1318009472,1318010511,DE +1318010512,1318010879,NL 1318010880,1318027263,DK 1318027264,1318043647,IE 1318043648,1318584319,GB @@ -28440,12 +33526,16 @@ 1318707776,1318707783,GB 1318707784,1318708511,FR 1318708512,1318708519,GB -1318708520,1318708523,FR -1318708524,1318708527,GB -1318708528,1318708599,FR +1318708520,1318708599,FR 1318708600,1318708607,GB -1318708608,1318708639,FR -1318708640,1318708731,GB +1318708608,1318708623,FR +1318708624,1318708627,GB +1318708628,1318708639,FR +1318708640,1318708647,GB +1318708648,1318708683,FR +1318708684,1318708687,GB +1318708688,1318708723,FR +1318708724,1318708731,GB 1318708732,1318708735,FR 1318708736,1318708991,GB 1318708992,1318711647,FR @@ -28485,9 +33575,10 @@ 1318936576,1318944767,DK 1318944768,1318956287,CZ 1318956288,1318957055,PL -1318957056,1318958847,CZ -1318958848,1318961151,PL -1318961152,1318969343,NL +1318957056,1318958079,CZ +1318958080,1318960895,PL +1318960896,1318961151,CZ +1318961152,1318969343,GB 1318969344,1318977535,RU 1318977536,1318985727,LT 1318985728,1319001087,GB @@ -28511,15 +33602,14 @@ 1319069777,1319069823,CN 1319069824,1319070217,DE 1319070218,1319070254,CN -1319070255,1319070271,GB +1319070255,1319070271,DE 1319070272,1319070335,PT 1319070336,1319070463,RU 1319070464,1319070975,DE 1319070976,1319071103,PL 1319071104,1319071231,RU 1319071232,1319071487,PL -1319071488,1319072767,DE -1319072768,1319073023,IT +1319071488,1319073023,DE 1319073024,1319073279,TR 1319073280,1319074303,DE 1319074304,1319074559,HK @@ -28546,7 +33636,9 @@ 1331757056,1331822591,IE 1331822592,1331824639,IT 1331824640,1331826687,RU -1331826688,1331828735,FR +1331826688,1331828607,FR +1331828608,1331828615,BE +1331828616,1331828735,FR 1331828736,1331830783,LT 1331830784,1331831335,GB 1331831336,1331831343,IE @@ -28574,8 +33666,9 @@ 1331873792,1331879935,RU 1331879936,1331881983,DE 1331881984,1331883007,GB -1331883008,1331883263,SE +1331883008,1331883263,SL 1331883264,1331886079,GB +1331886080,1331888127,RU 1331888128,1331890175,SE 1331890176,1331892223,IT 1331892224,1331894271,RU @@ -28601,25 +33694,47 @@ 1331931136,1331933183,SE 1331933184,1331935231,TR 1331935232,1331937279,NL -1331937280,1331937535,GB +1331937280,1331937407,PL +1331937408,1331937471,GB +1331937472,1331937519,NG +1331937520,1331937535,GB 1331937536,1331937567,SM 1331937568,1331937583,US 1331937584,1331937599,ZA -1331937600,1331938111,GB +1331937600,1331937663,GB +1331937664,1331937727,DE +1331937728,1331938111,GB 1331938112,1331938127,AE 1331938128,1331938135,SA -1331938136,1331938191,GB +1331938136,1331938143,AE +1331938144,1331938151,GB +1331938152,1331938159,PL +1331938160,1331938167,GB +1331938168,1331938175,KW +1331938176,1331938191,GB 1331938192,1331938207,AE -1331938208,1331938375,GB +1331938208,1331938319,GB +1331938320,1331938335,AE +1331938336,1331938375,GB 1331938376,1331938383,AE 1331938384,1331938399,IE -1331938400,1331938823,GB +1331938400,1331938815,GB +1331938816,1331938823,NG 1331938824,1331938831,US 1331938832,1331938839,NG 1331938840,1331938847,IE -1331938848,1331938879,GB -1331938880,1331938895,NG -1331938896,1331939327,GB +1331938848,1331938871,GB +1331938872,1331938895,NG +1331938896,1331938911,GB +1331938912,1331938927,NG +1331938928,1331938935,RU +1331938936,1331938943,NG +1331938944,1331938958,US +1331938959,1331938959,GB +1331938960,1331938967,US +1331938968,1331938983,GB +1331938984,1331938999,NG +1331939000,1331939327,GB 1331939328,1331941375,BE 1331941376,1331943423,ES 1331943424,1331945471,RU @@ -28646,7 +33761,9 @@ 1332412416,1332477951,GR 1332477952,1332609023,ES 1332609024,1332613119,PL -1332613120,1332629503,UA +1332613120,1332617215,UA +1332621312,1332625407,UA +1332625408,1332629503,RU 1332629504,1332633599,DE 1332633600,1332637695,UA 1332637696,1332641791,BG @@ -28692,7 +33809,9 @@ 1334181888,1334190079,RU 1334190080,1334198271,BG 1334198272,1334206463,RU -1334206464,1334214655,FI +1334206464,1334214551,FI +1334214552,1334214559,AX +1334214560,1334214655,FI 1334214656,1334222847,JO 1334222848,1334231039,BG 1334231040,1334239231,EE @@ -28727,9 +33846,7 @@ 1334583808,1334584063,CH 1334584064,1334584255,DE 1334584256,1334584287,AT -1334584288,1334584351,DE -1334584352,1334584383,LU -1334584384,1334584999,DE +1334584288,1334584999,DE 1334585000,1334585007,US 1334585008,1334585111,DE 1334585112,1334585119,AT @@ -28769,11 +33886,10 @@ 1334645248,1334647807,IQ 1334647808,1334648063,LB 1334648064,1334648319,IQ -1334648320,1334648831,A2 -1334648832,1334650959,GB -1334650960,1334650975,NL -1334650976,1334651391,GB -1334651392,1334651647,NL +1334648320,1334648575,DE +1334648576,1334648831,A2 +1334648832,1334651455,GB +1334651456,1334651647,NL 1334651648,1334651903,FR 1334651904,1334652159,DE 1334652160,1334652543,GB @@ -28807,9 +33923,13 @@ 1334710272,1334714367,RU 1334714368,1334718463,DE 1334718464,1334722559,KZ -1334722560,1334726655,NL +1334722560,1334725631,NL +1334725632,1334726143,SE +1334726144,1334726655,NL 1334726656,1334729983,RU -1334729984,1334730431,KZ +1334729984,1334730027,KZ +1334730028,1334730239,RU +1334730240,1334730431,KZ 1334730432,1334730439,RU 1334730440,1334730443,KZ 1334730444,1334730447,RU @@ -28819,12 +33939,12 @@ 1334730500,1334730503,RU 1334730504,1334730539,KZ 1334730540,1334730543,RU -1334730544,1334730667,KZ -1334730668,1334730687,RU -1334730688,1334730699,KZ -1334730700,1334730703,RU -1334730704,1334730743,KZ -1334730744,1334734847,RU +1334730544,1334730579,KZ +1334730580,1334730583,RU +1334730584,1334730667,KZ +1334730668,1334730671,RU +1334730672,1334730751,KZ +1334730752,1334734847,RU 1334734848,1334738943,LT 1334738944,1334743039,CH 1334743040,1334747135,CZ @@ -28893,7 +34013,6 @@ 1336614912,1336616959,GB 1336616960,1336619007,ES 1336619008,1336621055,AL -1336621056,1336623103,IT 1336623104,1336625151,BE 1336625152,1336625823,IE 1336625824,1336625839,GB @@ -28976,13 +34095,15 @@ 1343017984,1343018367,RE 1343018368,1343025151,FR 1343025152,1343025663,RE -1343025664,1343217663,FR +1343025664,1343025819,FR +1343025820,1343025820,LU +1343025821,1343217663,FR 1343217664,1343218687,MU 1343218688,1343219711,FR 1343219712,1343219967,KR 1343219968,1343220479,FR -1343220480,1343220639,DE -1343220640,1343220735,FR +1343220480,1343220671,DE +1343220672,1343220735,FR 1343220736,1343220863,GB 1343220864,1343221023,FR 1343221024,1343221027,DE @@ -29022,7 +34143,9 @@ 1346371584,1346375679,FI 1346375680,1346379775,RU 1346379776,1346383871,ES -1346383872,1346387967,GB +1346383872,1346386719,GB +1346386720,1346386727,SE +1346386728,1346387967,GB 1346387968,1346392063,HU 1346392064,1346396159,UA 1346396160,1346400255,RU @@ -29055,32 +34178,32 @@ 1346486272,1346490367,SE 1346490368,1346494463,GB 1346494464,1346498559,FR -1346498560,1346499967,IM -1346499968,1346499983,GB -1346499984,1346500607,IM +1346498560,1346500607,IM 1346500608,1346500639,GB 1346500640,1346500735,IM 1346500736,1346500767,GB 1346500768,1346500863,IM -1346500864,1346501151,GB -1346501152,1346501247,IM +1346500864,1346501231,GB +1346501232,1346501247,IM 1346501248,1346501343,GB 1346501344,1346501375,IM 1346501376,1346501695,GB -1346501696,1346501727,IM -1346501728,1346501743,GB -1346501744,1346501775,IM -1346501776,1346501795,GB -1346501796,1346501823,IM -1346501824,1346501847,GB +1346501696,1346501759,IM +1346501760,1346501795,GB +1346501796,1346501799,IM +1346501800,1346501807,GB +1346501808,1346501839,IM +1346501840,1346501847,GB 1346501848,1346501879,IM -1346501880,1346502223,GB -1346502224,1346502239,IM -1346502240,1346502319,GB +1346501880,1346501883,GB +1346501884,1346501887,IM +1346501888,1346501891,GB +1346501892,1346501895,IM +1346501896,1346502223,GB +1346502224,1346502263,IM +1346502264,1346502319,GB 1346502320,1346502323,IM -1346502324,1346502399,GB -1346502400,1346502527,IM -1346502528,1346502655,GB +1346502324,1346502655,GB 1346502656,1346510847,DE 1346510848,1346519039,AT 1346519040,1346527231,RU @@ -29107,7 +34230,8 @@ 1346563072,1346563327,CH 1346563328,1346564095,LI 1346564096,1346568191,EE -1346568192,1346572287,SE +1346568192,1346571775,SE +1346571776,1346572287,A1 1346572288,1346576383,DE 1346576384,1346580479,DK 1346580480,1346584575,RU @@ -29138,21 +34262,44 @@ 1346686976,1346691071,GB 1346691072,1346695167,PL 1346695168,1346699263,RU -1346699264,1346700575,GB +1346699264,1346699755,GB +1346699756,1346699756,LI +1346699757,1346699767,GB +1346699768,1346699775,US +1346699776,1346699839,GB +1346699840,1346699871,HK +1346699872,1346699875,GB +1346699876,1346699879,IL +1346699880,1346699887,US +1346699888,1346700575,GB 1346700576,1346700591,VG -1346700592,1346700608,GB -1346700609,1346700623,US -1346700624,1346700847,GB +1346700592,1346700607,GB +1346700608,1346700639,US +1346700640,1346700847,GB 1346700848,1346700855,US -1346700856,1346701184,GB -1346701185,1346701215,GR -1346701216,1346703871,GB +1346700856,1346701183,GB +1346701184,1346701215,GR +1346701216,1346703431,GB +1346703432,1346703435,US +1346703436,1346703483,GB +1346703484,1346703487,US +1346703488,1346703503,GB +1346703504,1346703511,US +1346703512,1346703871,GB 1346703872,1346704127,LI -1346704128,1346704479,GB +1346704128,1346704383,GB +1346704384,1346704447,US +1346704448,1346704479,GB 1346704480,1346704511,US -1346704512,1346704639,GB +1346704512,1346704575,GB +1346704576,1346704639,US 1346704640,1346704767,LI -1346704768,1346707455,GB +1346704768,1346704895,US +1346704896,1346705247,GB +1346705248,1346705279,US +1346705280,1346705407,GB +1346705408,1346705535,US +1346705536,1346707455,GB 1346707456,1346711551,DE 1346711552,1346715647,AZ 1346715648,1346723839,NL @@ -29174,7 +34321,9 @@ 1346793472,1346797567,IT 1346797568,1346801663,IL 1346801664,1346805759,SE -1346805760,1346818047,DE +1346805760,1346806031,DE +1346806032,1346806047,CH +1346806048,1346818047,DE 1346818048,1346822143,FR 1346822144,1346826239,RU 1346826240,1346830335,RS @@ -29201,6 +34350,7 @@ 1346928640,1346932735,DE 1346932736,1346936831,DK 1346936832,1346940927,IT +1346940928,1346945023,KG 1346945024,1346949119,PL 1346949120,1346957311,RU 1346957312,1346961407,DE @@ -29259,14 +34409,16 @@ 1347133440,1347141631,EG 1347141632,1347145727,CH 1347145728,1347146239,GB -1347146240,1347147007,FR +1347146240,1347146495,IN +1347146496,1347146751,FR +1347146752,1347147007,IN 1347147008,1347147263,DE 1347147264,1347147775,GB 1347147776,1347148287,DE 1347148288,1347148543,GB -1347148544,1347148799,FR +1347148544,1347148799,IN 1347148800,1347149055,NO -1347149056,1347149823,FR +1347149056,1347149823,IN 1347149824,1347153919,HU 1347153920,1347158015,AT 1347158016,1347162111,CH @@ -29288,7 +34440,7 @@ 1347210936,1347211111,GB 1347211112,1347211119,IE 1347211120,1347215359,GB -1347215360,1347219455,RU +1347215360,1347223551,RU 1347223552,1347223807,EG 1347223808,1347224063,HK 1347224064,1347224183,US @@ -29305,7 +34457,9 @@ 1347229312,1347229343,AT 1347229344,1347229895,DE 1347229896,1347229903,GR -1347229904,1347231071,DE +1347229904,1347230975,DE +1347230976,1347230983,ES +1347230984,1347231071,DE 1347231072,1347231087,AT 1347231088,1347231095,GR 1347231096,1347231743,DE @@ -29314,9 +34468,11 @@ 1347239936,1347240943,DK 1347240944,1347240959,GB 1347240960,1347244031,DK -1347244032,1347247359,GB -1347247360,1347247871,RU -1347247872,1347248127,US +1347244032,1347245311,GB +1347245312,1347245567,US +1347245568,1347247359,GB +1347247360,1347247839,RU +1347247840,1347248127,US 1347248128,1347248863,SE 1347248864,1347248864,FI 1347248865,1347249343,SE @@ -29351,148 +34507,74 @@ 1347293184,1347293311,SE 1347293312,1347293319,LR 1347293320,1347293327,GA -1347293328,1347293335,NG -1347293336,1347293339,A2 -1347293340,1347293343,SO -1347293344,1347293351,A2 -1347293352,1347293391,NG -1347293392,1347293399,CY -1347293400,1347293407,IQ -1347293408,1347293415,NG -1347293416,1347293423,A2 +1347293328,1347293351,A2 +1347293352,1347293359,NG +1347293360,1347293423,A2 1347293424,1347293431,GN -1347293432,1347293439,NG -1347293440,1347293447,A2 +1347293432,1347293447,A2 1347293448,1347293455,GB -1347293456,1347293463,NG -1347293464,1347293471,A2 -1347293472,1347293479,IQ +1347293456,1347293479,A2 1347293480,1347293487,LR -1347293488,1347293495,TD -1347293496,1347293503,GH -1347293504,1347293511,US +1347293488,1347293511,A2 1347293512,1347293519,GN 1347293520,1347293527,PS 1347293528,1347293535,NG 1347293536,1347293543,GH -1347293544,1347293551,US -1347293552,1347293559,A2 +1347293544,1347293559,A2 1347293560,1347293567,GN -1347293568,1347293575,GH -1347293576,1347293583,IQ -1347293584,1347293591,AF -1347293592,1347293599,A2 +1347293568,1347293599,A2 1347293600,1347293607,NG 1347293608,1347293615,A2 -1347293616,1347293639,US -1347293640,1347293647,IQ -1347293648,1347293655,US -1347293656,1347293675,GN -1347293676,1347293679,BH -1347293680,1347293687,GN -1347293688,1347293723,NG -1347293724,1347293727,IQ -1347293728,1347293735,A2 -1347293736,1347293759,GN -1347293760,1347293767,US -1347293768,1347293775,CM -1347293776,1347293799,NG -1347293800,1347293807,IQ +1347293616,1347293623,US +1347293624,1347293631,A2 +1347293632,1347293639,US +1347293640,1347293655,A2 +1347293656,1347293671,GN +1347293672,1347293687,A2 +1347293688,1347293711,NG +1347293712,1347293743,A2 +1347293744,1347293751,GN +1347293752,1347293759,A2 +1347293760,1347293767,ZM +1347293768,1347293791,A2 +1347293792,1347293799,NG +1347293800,1347293807,A2 1347293808,1347293815,NG -1347293816,1347293823,SO -1347293824,1347293831,CM -1347293832,1347293839,NG +1347293816,1347293839,A2 1347293840,1347293847,CA -1347293848,1347293855,BH +1347293848,1347293855,A2 1347293856,1347293863,GN 1347293864,1347293871,GB -1347293872,1347293879,A2 -1347293880,1347293887,NG +1347293872,1347293887,A2 1347293888,1347293903,GQ -1347293904,1347293911,NG -1347293912,1347293919,GA +1347293904,1347293919,A2 1347293920,1347293927,GB 1347293928,1347293935,US 1347293936,1347293943,NG -1347293944,1347293951,A2 -1347293952,1347293975,NG -1347293976,1347293983,GN -1347293984,1347293991,US +1347293944,1347293959,A2 +1347293960,1347293967,NG +1347293968,1347293991,A2 1347293992,1347293999,NG -1347294000,1347294007,US -1347294008,1347294015,A2 -1347294016,1347294023,US -1347294024,1347294039,GN -1347294040,1347294047,GB -1347294048,1347294055,TH -1347294056,1347294063,NG -1347294064,1347294071,GH -1347294072,1347294079,NG -1347294080,1347294087,A2 +1347294000,1347294031,A2 +1347294032,1347294039,GN +1347294040,1347294087,A2 1347294088,1347294095,US -1347294096,1347294111,CM -1347294112,1347294119,GN -1347294120,1347294127,A2 -1347294128,1347294135,NG -1347294136,1347294143,LR +1347294096,1347294143,A2 1347294144,1347294151,NG 1347294152,1347294159,GB -1347294160,1347294167,CM -1347294168,1347294175,GB -1347294176,1347294183,NG -1347294184,1347294191,A2 -1347294192,1347294199,GB +1347294160,1347294199,A2 1347294200,1347294207,NG -1347294208,1347294215,A2 -1347294216,1347294223,IQ -1347294224,1347294231,A2 -1347294232,1347294239,US -1347294240,1347294271,A2 -1347294272,1347294279,BH -1347294280,1347294287,BD -1347294288,1347294303,UG -1347294304,1347294311,US -1347294312,1347294319,A2 -1347294320,1347294327,NG -1347294328,1347294343,A2 -1347294344,1347294351,CM -1347294352,1347294367,LR -1347294368,1347294375,NG -1347294376,1347294383,A2 -1347294384,1347294399,NG -1347294400,1347294407,A2 -1347294408,1347294415,GN -1347294416,1347294423,A2 +1347294208,1347294423,A2 1347294424,1347294431,KW -1347294432,1347294435,US -1347294436,1347294439,A2 -1347294440,1347294447,SO -1347294448,1347294975,US -1347294976,1347294991,A2 -1347294992,1347295007,NG -1347295008,1347295039,A2 -1347295040,1347295047,GB -1347295048,1347295055,IQ -1347295056,1347295063,AF -1347295064,1347295071,A2 +1347294432,1347295071,A2 1347295072,1347295079,US 1347295080,1347295087,NG -1347295088,1347295095,A2 -1347295096,1347295103,NG -1347295104,1347295143,A2 -1347295144,1347295151,IQ -1347295152,1347295159,US -1347295160,1347295199,A2 -1347295200,1347295215,GB -1347295216,1347295223,A2 -1347295224,1347295231,CH -1347295232,1347295743,A2 -1347295744,1347295755,US -1347295756,1347295759,A2 -1347295760,1347295775,US +1347295088,1347295207,A2 +1347295208,1347295215,GB +1347295216,1347295775,A2 1347295776,1347295783,IQ -1347295784,1347295999,A2 -1347296000,1347296015,US +1347295784,1347296007,A2 +1347296008,1347296015,US 1347296016,1347297279,A2 1347297280,1347305471,UA 1347305472,1347309567,AL @@ -29502,16 +34584,12 @@ 1347313664,1347321855,RU 1347321856,1347323775,KW 1347323776,1347323903,IR -1347323904,1347325183,KW -1347325184,1347325439,SA -1347325440,1347325951,KW +1347323904,1347325951,KW 1347325952,1347327231,CZ 1347327232,1347327487,SK 1347327488,1347327743,CZ 1347327744,1347327999,SK -1347328000,1347329535,CZ -1347329536,1347329599,SK -1347329600,1347330047,CZ +1347328000,1347330047,CZ 1347330048,1347338239,DE 1347338240,1347342335,RU 1347342336,1347346431,SE @@ -29524,9 +34602,27 @@ 1347371008,1347375103,RU 1347375104,1347379199,GB 1347379200,1347383295,NL -1347383296,1347386751,EE +1347383296,1347384111,EE +1347384112,1347384115,FI +1347384116,1347384703,EE +1347384704,1347384831,US +1347384832,1347385063,EE +1347385064,1347385071,RU +1347385072,1347385599,EE +1347385600,1347385855,US +1347385856,1347386559,EE +1347386560,1347386567,RU +1347386568,1347386655,EE +1347386656,1347386671,US +1347386672,1347386751,EE 1347386752,1347386815,MY -1347386816,1347387391,EE +1347386816,1347387011,EE +1347387012,1347387015,DE +1347387016,1347387215,EE +1347387216,1347387219,NZ +1347387220,1347387224,EE +1347387225,1347387228,DE +1347387229,1347387391,EE 1347387392,1347391487,GB 1347391488,1347395583,LB 1347395584,1347399679,SE @@ -29556,11 +34652,7 @@ 1347440640,1347444735,ES 1347444736,1347452927,RU 1347452928,1347461119,BG -1347461120,1347461671,AL -1347461672,1347461679,RS -1347461680,1347462023,AL -1347462024,1347462031,RS -1347462032,1347462579,AL +1347461120,1347462579,AL 1347462580,1347462583,RS 1347462584,1347462591,AL 1347462592,1347462607,RS @@ -29583,8 +34675,7 @@ 1347505408,1347505663,DE 1347505664,1347506175,ES 1347506176,1347506431,GB -1347506432,1347510271,FR -1347510272,1347518463,ES +1347506432,1347518463,ES 1347518464,1347522559,AT 1347522560,1347526655,LB 1347526656,1347527967,FI @@ -29629,9 +34720,7 @@ 1347655176,1347655183,EG 1347655184,1347657727,GB 1347657728,1347661823,IT -1347661824,1347663119,DE -1347663120,1347663127,GB -1347663128,1347665919,DE +1347661824,1347665919,DE 1347665920,1347670015,RU 1347670016,1347674111,SE 1347674112,1347682303,RU @@ -29675,7 +34764,7 @@ 1347754936,1347754943,RS 1347754944,1347754951,CY 1347754952,1347754959,TN -1347754960,1347754967,MA +1347754960,1347754967,CY 1347754968,1347754983,GR 1347754984,1347754991,CY 1347754992,1347755112,GR @@ -29721,8 +34810,8 @@ 1347854880,1347854887,DE 1347854888,1347854911,EU 1347854912,1347855071,DE -1347855072,1347855079,EU -1347855080,1347855103,DE +1347855072,1347855087,EU +1347855088,1347855103,DE 1347855104,1347855359,CH 1347855360,1347855935,DE 1347855936,1347855943,EU @@ -29731,12 +34820,14 @@ 1347855960,1347855967,DE 1347855968,1347855999,EU 1347856000,1347856063,DE -1347856064,1347856095,EU +1347856064,1347856079,EU +1347856080,1347856087,DE +1347856088,1347856095,EU 1347856096,1347856239,DE 1347856240,1347856255,EU 1347856256,1347856383,DE -1347856384,1347856391,EU -1347856392,1347856431,DE +1347856384,1347856399,EU +1347856400,1347856431,DE 1347856432,1347856447,EU 1347856448,1347856639,DE 1347856640,1347856895,AT @@ -29748,12 +34839,14 @@ 1347858576,1347858623,EU 1347858624,1347858631,DE 1347858632,1347858639,EU -1347858640,1347859351,DE +1347858640,1347859335,DE +1347859336,1347859343,EU +1347859344,1347859351,DE 1347859352,1347859359,EU 1347859360,1347859383,DE 1347859384,1347859407,EU -1347859408,1347859439,DE -1347859440,1347859455,EU +1347859408,1347859423,DE +1347859424,1347859455,EU 1347859456,1347860863,DE 1347860864,1347860879,EU 1347860880,1347860895,DE @@ -29767,7 +34860,9 @@ 1347861800,1347861823,DE 1347861824,1347861943,EU 1347861944,1347861951,DE -1347861952,1347862111,EU +1347861952,1347862007,EU +1347862008,1347862015,CH +1347862016,1347862111,EU 1347862112,1347862143,DE 1347862144,1347862303,EU 1347862304,1347862431,DE @@ -29799,9 +34894,7 @@ 1347960832,1347964927,DE 1347964928,1347969023,IT 1347969024,1347977215,SE -1347977216,1347977599,A2 -1347977600,1347977607,NG -1347977608,1347978007,A2 +1347977216,1347978007,A2 1347978008,1347978015,NG 1347978016,1347978031,A2 1347978032,1347978039,NG @@ -29809,25 +34902,19 @@ 1347978192,1347978199,NG 1347978200,1347978263,A2 1347978264,1347978271,NG -1347978272,1347978287,A2 -1347978288,1347978295,NG -1347978296,1347978303,A2 -1347978304,1347978327,NG -1347978328,1347978343,A2 -1347978344,1347978359,NG +1347978272,1347978319,A2 +1347978320,1347978327,NG +1347978328,1347978351,A2 +1347978352,1347978359,NG 1347978360,1347978375,A2 1347978376,1347978407,NG 1347978408,1347978447,A2 1347978448,1347978463,NG -1347978464,1347978575,A2 -1347978576,1347978623,NG -1347978624,1347978631,A2 +1347978464,1347978631,A2 1347978632,1347978647,NG 1347978648,1347978727,A2 1347978728,1347978735,NG -1347978736,1347978775,A2 -1347978776,1347978783,NG -1347978784,1347978847,A2 +1347978736,1347978847,A2 1347978848,1347978855,NG 1347978856,1347978935,A2 1347978936,1347978943,NG @@ -29837,64 +34924,39 @@ 1347979136,1347979143,NG 1347979144,1347979159,A2 1347979160,1347979167,NG -1347979168,1347979215,A2 -1347979216,1347979223,NG -1347979224,1347979231,A2 +1347979168,1347979231,A2 1347979232,1347979247,NG 1347979248,1347979375,A2 1347979376,1347979399,NG -1347979400,1347979567,A2 -1347979568,1347979575,NG -1347979576,1347979583,A2 +1347979400,1347979583,A2 1347979584,1347979591,NG 1347979592,1347979743,A2 1347979744,1347979751,NG 1347979752,1347980111,A2 1347980112,1347980127,GN -1347980128,1347980167,A2 -1347980168,1347980175,NG -1347980176,1347980223,A2 -1347980224,1347980271,NG +1347980128,1347980271,A2 1347980272,1347980279,DK -1347980280,1347980415,A2 -1347980416,1347980479,NG -1347980480,1347980543,A2 -1347980544,1347980559,DK -1347980560,1347981007,A2 +1347980280,1347981007,A2 1347981008,1347981015,NG 1347981016,1347981023,A2 1347981024,1347981031,NG -1347981032,1347981239,A2 -1347981240,1347981247,NG -1347981248,1347981255,A2 +1347981032,1347981255,A2 1347981256,1347981263,DK 1347981264,1347981927,A2 1347981928,1347981935,NG 1347981936,1347982031,A2 1347982032,1347982055,NG -1347982056,1347982223,A2 -1347982224,1347982231,NG -1347982232,1347982279,A2 +1347982056,1347982279,A2 1347982280,1347982287,NG -1347982288,1347982911,A2 -1347982912,1347982919,NG -1347982920,1347982927,A2 +1347982288,1347982927,A2 1347982928,1347982943,NG -1347982944,1347983039,A2 -1347983040,1347983047,NG -1347983048,1347983063,A2 +1347982944,1347983063,A2 1347983064,1347983071,NG -1347983072,1347983103,A2 -1347983104,1347983119,NG -1347983120,1347983247,A2 +1347983072,1347983247,A2 1347983248,1347983263,DK 1347983264,1347983303,A2 1347983304,1347983311,NG -1347983312,1347983423,A2 -1347983424,1347983487,NG -1347983488,1347983567,A2 -1347983568,1347983575,NG -1347983576,1347983903,A2 +1347983312,1347983903,A2 1347983904,1347983911,NG 1347983912,1347983919,A2 1347983920,1347983927,NG @@ -29904,18 +34966,16 @@ 1347984208,1347984215,NG 1347984216,1347984415,A2 1347984416,1347984423,NG -1347984424,1347984647,A2 -1347984648,1347984655,NG -1347984656,1347984719,A2 -1347984720,1347984735,NG -1347984736,1347984879,A2 +1347984424,1347984719,A2 +1347984720,1347984727,NG +1347984728,1347984879,A2 1347984880,1347984895,NG 1347984896,1347984959,A2 1347984960,1347984991,NG 1347984992,1347985031,A2 1347985032,1347985039,NG -1347985040,1347985095,A2 -1347985096,1347985119,NG +1347985040,1347985103,A2 +1347985104,1347985119,NG 1347985120,1347985151,A2 1347985152,1347985407,DK 1347985408,1347989503,IT @@ -30135,7 +35195,9 @@ 1352038696,1352038699,US 1352038700,1352041471,DE 1352041472,1352041727,US -1352041728,1352139671,DE +1352041728,1352058431,DE +1352058432,1352058495,US +1352058496,1352139671,DE 1352139672,1352139679,IT 1352139680,1352144519,DE 1352144520,1352144527,IT @@ -30162,18 +35224,26 @@ 1352149428,1352149451,FR 1352149452,1352149455,DE 1352149456,1352149487,FR -1352149488,1352277535,DE +1352149488,1352149743,DE +1352149744,1352149751,AT +1352149752,1352149783,DE +1352149784,1352149791,SE +1352149792,1352149807,DE +1352149808,1352149823,SE +1352149824,1352149855,DE +1352149856,1352149871,SE +1352149872,1352277535,DE 1352277536,1352277567,IT -1352277568,1352287399,DE -1352287400,1352287407,NL -1352287408,1352402791,DE +1352277568,1352402791,DE 1352402792,1352402799,BE 1352402800,1352404599,DE 1352404600,1352404607,NL 1352404608,1352445687,DE 1352445688,1352445703,NL 1352445704,1352663039,DE -1352663040,1353187327,DK +1352663040,1353182591,DK +1353182592,1353182599,DE +1353182600,1353187327,DK 1353187328,1353252991,GB 1353252992,1353253023,FR 1353253024,1353253663,GB @@ -30190,14 +35260,18 @@ 1353257984,1353258247,SE 1353258248,1353258255,GB 1353258256,1353258263,SE -1353258264,1353258271,DK +1353258264,1353258271,NO 1353258272,1353258303,SE 1353258304,1353258367,FI -1353258368,1353258415,SE +1353258368,1353258391,SE +1353258392,1353258399,GB +1353258400,1353258415,SE 1353258416,1353258423,DK 1353258424,1353258495,SE 1353258496,1353258503,GB -1353258504,1353258639,SE +1353258504,1353258519,SE +1353258520,1353258559,GB +1353258560,1353258639,SE 1353258640,1353258783,GB 1353258784,1353258807,SE 1353258808,1353259271,GB @@ -30213,7 +35287,9 @@ 1353266976,1353267455,GB 1353267456,1353268223,IE 1353268224,1353268479,GB -1353268480,1353269247,BE +1353268480,1353268599,BE +1353268600,1353268607,GB +1353268608,1353269247,BE 1353269248,1353270527,GB 1353270528,1353270783,IE 1353270784,1353271295,GB @@ -30232,7 +35308,9 @@ 1353272692,1353272695,GB 1353272696,1353272807,ES 1353272808,1353272815,GB -1353272816,1353273343,ES +1353272816,1353273023,ES +1353273024,1353273031,GB +1353273032,1353273343,ES 1353273344,1353273631,BE 1353273632,1353273639,ES 1353273640,1353273711,BE @@ -30246,39 +35324,43 @@ 1353274896,1353274911,GB 1353274912,1353275007,ES 1353275008,1353275015,GB -1353275016,1353275111,ES -1353275112,1353275119,GB -1353275120,1353275391,ES +1353275016,1353275391,ES 1353275392,1353277439,GB 1353277440,1353279487,CH 1353279488,1353279743,IT 1353279744,1353279751,GB 1353279752,1353279759,IT 1353279760,1353279763,GB -1353279764,1353280079,IT -1353280080,1353280087,GB -1353280088,1353280119,IT +1353279764,1353280119,IT 1353280120,1353280127,GB 1353280128,1353280143,IT 1353280144,1353280151,GB -1353280152,1353280279,IT -1353280280,1353280287,GB -1353280288,1353280567,IT -1353280568,1353280575,GB -1353280576,1353280663,IT -1353280664,1353280671,GB -1353280672,1353281023,IT +1353280152,1353280159,IT +1353280160,1353280167,GB +1353280168,1353280191,IT +1353280192,1353280199,GB +1353280200,1353280287,IT +1353280288,1353280295,GB +1353280296,1353280463,IT +1353280464,1353280471,GB +1353280472,1353280671,IT +1353280672,1353280679,GB +1353280680,1353281023,IT 1353281024,1353281535,BE 1353281536,1353282047,GB -1353282048,1353282559,IT +1353282048,1353282103,IT +1353282104,1353282111,GB +1353282112,1353282159,IT +1353282160,1353282167,GB +1353282168,1353282215,IT +1353282216,1353282223,GB +1353282224,1353282559,IT 1353282560,1353283071,GB 1353283072,1353283327,IT 1353283328,1353287327,GB 1353287328,1353287359,IE 1353287360,1353287679,GB -1353287680,1353287935,IE -1353287936,1353287943,GB -1353287944,1353288031,IE +1353287680,1353288031,IE 1353288032,1353288063,GB 1353288064,1353288151,IE 1353288152,1353288159,GB @@ -30303,7 +35385,9 @@ 1353288896,1353288959,IE 1353288960,1353288975,GB 1353288976,1353288991,IE -1353288992,1353289087,GB +1353288992,1353288999,GB +1353289000,1353289023,IE +1353289024,1353289087,GB 1353289088,1353289247,IE 1353289248,1353289255,GB 1353289256,1353289279,IE @@ -30334,14 +35418,20 @@ 1353298752,1353298815,SE 1353298816,1353298831,PT 1353298832,1353298839,SE -1353298840,1353298879,GB +1353298840,1353298847,IE +1353298848,1353298863,SE +1353298864,1353298879,GB 1353298880,1353298881,SE 1353298882,1353298887,GB -1353298888,1353299647,SE +1353298888,1353299503,SE +1353299504,1353299511,GB +1353299512,1353299647,SE 1353299648,1353299839,GB -1353299840,1353299855,SE -1353299856,1353299863,GB -1353299864,1353300079,SE +1353299840,1353299847,SE +1353299848,1353299863,GB +1353299864,1353299951,SE +1353299952,1353299967,GB +1353299968,1353300079,SE 1353300080,1353300095,PT 1353300096,1353300103,GB 1353300104,1353300111,SE @@ -30362,22 +35452,30 @@ 1353307136,1353307143,IT 1353307144,1353308159,GB 1353308160,1353309183,FR -1353309184,1353310463,GB -1353310464,1353310599,ES +1353309184,1353310303,GB +1353310304,1353310335,IE +1353310336,1353310463,GB +1353310464,1353310479,ES +1353310480,1353310487,GB +1353310488,1353310599,ES 1353310600,1353310607,DE 1353310608,1353310719,ES -1353310720,1353311175,IT +1353310720,1353311071,IT +1353311072,1353311079,GB +1353311080,1353311151,IT +1353311152,1353311159,GB +1353311160,1353311175,IT 1353311176,1353311183,ES -1353311184,1353311199,IT -1353311200,1353311215,GB -1353311216,1353311231,IT +1353311184,1353311214,IT +1353311215,1353311223,GB +1353311224,1353311231,IT 1353311232,1353312255,GB 1353312256,1353312767,CH 1353312768,1353312815,IT 1353312816,1353312823,GB -1353312824,1353313111,IT -1353313112,1353313119,GB -1353313120,1353313191,IT +1353312824,1353312999,IT +1353313000,1353313007,GB +1353313008,1353313191,IT 1353313192,1353313199,GB 1353313200,1353313279,IT 1353313280,1353313791,IE @@ -30426,7 +35524,15 @@ 1353956864,1353968639,IL 1353968640,1353968895,A2 1353968896,1353970431,IL -1353970432,1353970687,A2 +1353970432,1353970543,A2 +1353970544,1353970547,IL +1353970548,1353970571,A2 +1353970572,1353970575,IL +1353970576,1353970579,A2 +1353970580,1353970587,IL +1353970588,1353970623,A2 +1353970624,1353970639,IL +1353970640,1353970687,A2 1353970688,1353973759,IL 1353973760,1354235903,IT 1354235904,1354301439,KW @@ -30439,17 +35545,16 @@ 1354662144,1354662151,AT 1354662152,1354662463,DE 1354662464,1354662527,AT -1354662528,1354662591,ES -1354662592,1354663807,DE -1354663808,1354663808,AT -1354663809,1354664743,DE -1354664744,1354664751,IT +1354662528,1354662943,DE +1354662944,1354662975,AT +1354662976,1354664743,DE +1354664744,1354664751,AT 1354664752,1354664759,DE 1354664760,1354664767,IT -1354664768,1354665215,DE -1354665216,1354665247,ES -1354665248,1354665943,DE -1354665944,1354665951,IT +1354664768,1354665923,DE +1354665924,1354665927,AT +1354665928,1354665943,DE +1354665944,1354665951,AT 1354665952,1354666639,DE 1354666640,1354666650,FI 1354666651,1354666687,DE @@ -30524,9 +35629,7 @@ 1354687400,1354687407,IT 1354687408,1354687455,DE 1354687456,1354687487,IT -1354687488,1354687759,DE -1354687760,1354687763,CH -1354687764,1354694655,DE +1354687488,1354694655,DE 1354694656,1354760191,IR 1354760192,1355022335,GB 1355022336,1355284479,DK @@ -30569,8 +35672,8 @@ 1357321008,1357321015,GB 1357321016,1357321023,DK 1357321024,1357321087,KE -1357321088,1357321215,EU -1357321216,1357321471,GB +1357321088,1357321215,HK +1357321216,1357321471,EU 1357321472,1357321503,ES 1357321504,1357321727,EU 1357321728,1357321983,CY @@ -30598,7 +35701,7 @@ 1357334016,1357334271,TZ 1357334272,1357334527,CA 1357334528,1357335039,FR -1357335040,1357335295,LB +1357335040,1357335295,GB 1357335296,1357335551,FR 1357335552,1357335807,GB 1357335808,1357336063,KE @@ -30613,9 +35716,10 @@ 1357339648,1357339903,DZ 1357339904,1357340159,GB 1357340160,1357340415,DE -1357340416,1357340671,LB -1357340672,1357342719,GB -1357342720,1357348863,EU +1357340416,1357342719,GB +1357342720,1357344767,EU +1357344768,1357346815,CA +1357346816,1357348863,EU 1357348864,1357349119,DE 1357349120,1357349375,LU 1357349376,1357349887,GB @@ -30624,7 +35728,8 @@ 1357350912,1357351167,GB 1357351168,1357351423,PL 1357351424,1357352959,GB -1357352960,1357355007,EU +1357352960,1357353983,CA +1357353984,1357355007,EU 1357355008,1357355263,NL 1357355264,1357355775,FR 1357355776,1357356031,GB @@ -30637,9 +35742,17 @@ 1357358592,1357358847,DE 1357358848,1357359103,PL 1357359104,1357359999,ES -1357360000,1357360127,EU -1357360128,1357360255,GB -1357360256,1357360383,EU +1357360000,1357360015,GB +1357360016,1357360023,IT +1357360024,1357360031,BE +1357360032,1357360271,GB +1357360272,1357360279,FR +1357360280,1357360287,GB +1357360288,1357360319,IN +1357360320,1357360335,GB +1357360336,1357360343,BE +1357360344,1357360351,LU +1357360352,1357360383,GB 1357360384,1357360639,ES 1357360640,1357360895,GB 1357360896,1357361151,DE @@ -30656,15 +35769,19 @@ 1357366528,1357366591,BE 1357366592,1357366655,FR 1357366656,1357366719,PT -1357366720,1357366783,EU +1357366720,1357366783,GB 1357366784,1357366799,MD 1357366800,1357366815,ES 1357366816,1357366847,FR 1357366848,1357366863,GB 1357366864,1357366879,ES -1357366880,1357366911,GB -1357366912,1357367039,EU -1357367040,1357367295,GB +1357366880,1357366911,EU +1357366912,1357366927,GB +1357366928,1357366943,EU +1357366944,1357366959,GB +1357366960,1357366967,BE +1357366968,1357366975,EU +1357366976,1357367295,GB 1357367296,1357367551,FR 1357367552,1357367807,EU 1357367808,1357368063,GB @@ -30674,13 +35791,12 @@ 1357369600,1357369855,GB 1357369856,1357370111,KE 1357370112,1357370367,DE -1357370368,1357370879,EU +1357370368,1357370879,GB 1357370880,1357371391,LY 1357371392,1357371647,GB 1357371648,1357371903,FR 1357371904,1357372159,RU -1357372160,1357372415,GB -1357372416,1357372927,EU +1357372160,1357372927,GB 1357372928,1357373183,AM 1357373184,1357373439,GB 1357373440,1357381631,EU @@ -30729,13 +35845,15 @@ 1357876224,1357876239,NO 1357876240,1357876287,EU 1357876288,1357876303,PL -1357876304,1357876335,EU +1357876304,1357876319,GB +1357876320,1357876335,EU 1357876336,1357876339,PL 1357876340,1357876343,RU 1357876344,1357876383,EU 1357876384,1357876391,RU 1357876392,1357876399,PL -1357876400,1357876415,EU +1357876400,1357876407,DE +1357876408,1357876415,EU 1357876416,1357876479,PL 1357876480,1357876495,SE 1357876496,1357876543,EU @@ -30744,7 +35862,15 @@ 1357876928,1357877335,DE 1357877336,1357877343,EU 1357877344,1357877759,DE -1357877760,1357878783,EU +1357877760,1357878271,EU +1357878272,1357878335,CH +1357878336,1357878399,CZ +1357878400,1357878463,NL +1357878464,1357878527,NO +1357878528,1357878591,AT +1357878592,1357878655,PL +1357878656,1357878719,DE +1357878720,1357878783,NL 1357878784,1357879807,DE 1357879808,1357879871,RU 1357879872,1357879935,DE @@ -30765,25 +35891,31 @@ 1357883536,1357883551,FR 1357883552,1357883583,EU 1357883584,1357883727,FR -1357883728,1357883759,EU +1357883728,1357883743,DE +1357883744,1357883759,EU 1357883760,1357883775,FR -1357883776,1357883807,EU -1357883808,1357883903,FR +1357883776,1357883807,RU +1357883808,1357883839,EU +1357883840,1357883903,FR 1357883904,1357883999,EU 1357884000,1357884031,FR 1357884032,1357884095,RU 1357884096,1357884159,EU -1357884160,1357884423,FR +1357884160,1357884415,GB +1357884416,1357884423,FR 1357884424,1357884427,BE -1357884428,1357884439,EU +1357884428,1357884431,DE +1357884432,1357884439,US 1357884440,1357884447,FR 1357884448,1357884511,EU -1357884512,1357884935,FR -1357884936,1357884943,EU +1357884512,1357884927,FR +1357884928,1357884935,EU +1357884936,1357884943,GB 1357884944,1357884959,FR 1357884960,1357884991,RU 1357884992,1357885183,FR -1357885184,1357885215,EU +1357885184,1357885191,SE +1357885192,1357885215,EU 1357885216,1357885247,ES 1357885248,1357885439,DE 1357885440,1357885695,FR @@ -30791,9 +35923,7 @@ 1357885952,1357886463,FR 1357886464,1357887487,US 1357887488,1357888511,FR -1357888512,1357888703,DE -1357888704,1357888767,EU -1357888768,1357889023,DE +1357888512,1357889023,DE 1357889024,1357889535,GB 1357889536,1357890815,PL 1357890816,1357890827,NL @@ -30804,32 +35934,46 @@ 1357890944,1357891327,NL 1357891328,1357891391,EU 1357891392,1357891399,NL -1357891400,1357891423,EU -1357891424,1357891455,NL +1357891400,1357891455,EU 1357891456,1357891583,SE 1357891584,1357891647,EU 1357891648,1357891679,NL 1357891680,1357891711,GB -1357891712,1357891839,NL +1357891712,1357891839,SE 1357891840,1357892095,GB -1357892096,1357892351,EU +1357892096,1357892111,DE +1357892112,1357892127,ES +1357892128,1357892143,FR +1357892144,1357892159,IT +1357892160,1357892175,GB +1357892176,1357892183,AR +1357892184,1357892191,AU +1357892192,1357892199,BR +1357892200,1357892207,NL +1357892208,1357892215,SE +1357892216,1357892223,US +1357892224,1357892351,EU 1357892352,1357893119,NL 1357893120,1357893375,SE 1357893376,1357893407,EU 1357893408,1357893439,SE -1357893440,1357893503,EU +1357893440,1357893471,IT +1357893472,1357893503,PL 1357893504,1357893631,DE 1357893632,1357897855,EU 1357897856,1357898495,DE 1357898496,1357898751,EU -1357898752,1357899015,DE -1357899016,1357899023,EU +1357898752,1357899019,DE +1357899020,1357899023,NL 1357899024,1357899039,DE 1357899040,1357899047,EU 1357899048,1357899063,DE 1357899064,1357899071,EU 1357899072,1357899199,DE -1357899200,1357899279,EU +1357899200,1357899263,EU +1357899264,1357899267,DE +1357899268,1357899275,FR +1357899276,1357899279,NL 1357899280,1357899287,RU 1357899288,1357899327,EU 1357899328,1357899391,PL @@ -30851,7 +35995,8 @@ 1357903872,1357904383,EU 1357904384,1357904895,DE 1357904896,1357905407,GB -1357905408,1357905919,EU +1357905408,1357905663,SE +1357905664,1357905919,NL 1357905920,1357910015,LT 1357910016,1357914111,GR 1357914112,1357922303,RU @@ -30870,7 +36015,9 @@ 1357975552,1357979647,AT 1357979648,1357983743,KZ 1357983744,1357987839,RU -1357987840,1357988495,GB +1357987840,1357988479,GB +1357988480,1357988483,DE +1357988484,1357988495,GB 1357988496,1357988543,DE 1357988544,1357988551,NL 1357988552,1357988559,DE @@ -30894,7 +36041,8 @@ 1357989784,1357989791,GB 1357989792,1357989807,FR 1357989808,1357989823,GB -1357989824,1357989839,FR +1357989824,1357989831,NL +1357989832,1357989839,FR 1357989840,1357989847,GB 1357989848,1357989887,FR 1357989888,1357991679,GB @@ -30919,7 +36067,7 @@ 1358008320,1358012415,BH 1358012416,1358016511,IT 1358016512,1358020607,GE -1358020608,1358024703,DE +1358020608,1358028799,DE 1358028800,1358032895,IT 1358032896,1358036991,GE 1358036992,1358041087,IR @@ -30974,37 +36122,45 @@ 1358223360,1358223631,GB 1358223632,1358223663,DE 1358223664,1358223671,GB -1358223672,1358223719,DE -1358223720,1358223775,GB -1358223776,1358223843,DE +1358223672,1358223687,DE +1358223688,1358223695,GB +1358223696,1358223719,DE +1358223720,1358223815,GB +1358223816,1358223843,DE 1358223844,1358223871,GB 1358223872,1358223887,NL -1358223888,1358223911,DE +1358223888,1358223895,DE +1358223896,1358223903,NL +1358223904,1358223911,DE 1358223912,1358223927,NL -1358223928,1358223975,DE +1358223928,1358223935,DE +1358223936,1358223939,NL +1358223940,1358223975,DE 1358223976,1358223991,NL 1358223992,1358223999,DE -1358224000,1358224079,NL -1358224080,1358224511,DE +1358224000,1358224087,NL +1358224088,1358224511,DE 1358224512,1358224519,BE 1358224520,1358224611,DE 1358224612,1358224651,BE 1358224652,1358224655,DE -1358224656,1358224719,BE -1358224720,1358224959,DE +1358224656,1358224727,BE +1358224728,1358224959,DE 1358224960,1358225127,IT -1358225128,1358225407,DE +1358225128,1358225135,DE +1358225136,1358225183,IT +1358225184,1358225191,DE +1358225192,1358225199,IT +1358225200,1358225407,DE 1358225408,1358229503,RU -1358229504,1358229631,DE -1358229632,1358229639,LU -1358229640,1358230111,DE +1358229504,1358230111,DE 1358230112,1358230115,AT 1358230116,1358230383,DE 1358230384,1358230391,TR 1358230392,1358230399,CH 1358230400,1358232863,DE -1358232864,1358232879,IT -1358232880,1358232903,DE +1358232864,1358232867,IT +1358232868,1358232903,DE 1358232904,1358232911,CH 1358232912,1358233599,DE 1358233600,1358237695,ES @@ -31016,7 +36172,9 @@ 1358242592,1358242623,BE 1358242624,1358244351,FR 1358244352,1358244607,IT -1358244608,1358245695,FR +1358244608,1358245503,FR +1358245504,1358245631,BE +1358245632,1358245695,FR 1358245696,1358245759,BE 1358245760,1358249215,FR 1358249216,1358249471,IT @@ -31155,8 +36313,21 @@ 1358475264,1358479359,GB 1358479360,1358483455,LI 1358483456,1358487551,FR -1358487552,1358491647,SE -1358491648,1358495743,FI +1358487552,1358487711,SE +1358487712,1358487727,US +1358487728,1358487999,FR +1358488000,1358488191,SE +1358488192,1358488223,GB +1358488224,1358488239,US +1358488240,1358488255,FR +1358488256,1358488447,SE +1358488448,1358488479,GB +1358488480,1358488495,US +1358488496,1358488511,FR +1358488512,1358491647,SE +1358491648,1358493823,FI +1358493824,1358493887,AX +1358493888,1358495743,FI 1358495744,1358499839,PL 1358499840,1358503935,KZ 1358503936,1358508031,IT @@ -31184,8 +36355,8 @@ 1358602240,1358622719,RU 1358622720,1358626815,SK 1358626816,1358630911,A2 -1358630912,1358634495,US -1358634496,1358635007,GB +1358630912,1358632959,US +1358632960,1358635007,GB 1358635008,1358639103,TR 1358639104,1358643199,RU 1358643200,1358647295,ES @@ -31194,16 +36365,18 @@ 1358655488,1358667775,RU 1358667776,1358668067,PT 1358668068,1358668071,GB -1358668072,1358668271,PT +1358668072,1358668159,PT +1358668160,1358668175,GB +1358668176,1358668271,PT 1358668272,1358668279,ES 1358668280,1358668359,PT 1358668360,1358668367,GB 1358668368,1358668463,PT 1358668464,1358668479,ES 1358668480,1358668495,GB -1358668496,1358668551,PT -1358668552,1358668575,GB -1358668576,1358668799,PT +1358668496,1358668535,PT +1358668536,1358668543,GB +1358668544,1358668799,PT 1358668800,1358668807,GB 1358668808,1358668927,PT 1358668928,1358668959,ES @@ -31211,27 +36384,27 @@ 1358669352,1358669359,GB 1358669360,1358669463,PT 1358669464,1358669471,GB -1358669472,1358669503,PT -1358669504,1358669519,GB -1358669520,1358669543,PT +1358669472,1358669543,PT 1358669544,1358669551,GB 1358669552,1358669975,PT 1358669976,1358669983,GB -1358669984,1358669991,PT -1358669992,1358669999,GB -1358670000,1358670015,PT +1358669984,1358670015,PT 1358670016,1358670023,GB -1358670024,1358670071,PT -1358670072,1358670079,GB -1358670080,1358670183,PT +1358670024,1358670183,PT 1358670184,1358670191,GB -1358670192,1358671415,PT +1358670192,1358670943,PT +1358670944,1358670951,FR +1358670952,1358671039,PT +1358671040,1358671103,GB +1358671104,1358671415,PT 1358671416,1358671423,GB 1358671424,1358671431,PT 1358671432,1358671439,GB 1358671440,1358671839,PT 1358671840,1358671855,ES -1358671856,1358671967,PT +1358671856,1358671871,PT +1358671872,1358671903,GB +1358671904,1358671967,PT 1358671968,1358671983,GB 1358671984,1358672479,PT 1358672480,1358672511,GB @@ -31239,7 +36412,8 @@ 1358672688,1358672703,GB 1358672704,1358673535,PT 1358673536,1358673567,US -1358673568,1358673663,PT +1358673568,1358673599,GB +1358673600,1358673663,PT 1358673664,1358675967,GB 1358675968,1358676735,SE 1358676736,1358677759,DK @@ -31295,12 +36469,17 @@ 1358739136,1358739151,NL 1358739152,1358739503,SE 1358739504,1358739519,FR -1358739520,1358740159,SE +1358739520,1358740099,SE +1358740100,1358740103,MY +1358740104,1358740159,SE 1358740160,1358740175,FR 1358740176,1358740335,SE 1358740336,1358740351,GB 1358740352,1358740671,SE -1358740672,1358740687,GB +1358740672,1358740675,PL +1358740676,1358740679,BG +1358740680,1358740683,BR +1358740684,1358740687,TR 1358740688,1358740883,SE 1358740884,1358740887,NL 1358740888,1358740927,SE @@ -31348,7 +36527,8 @@ 1358861312,1358861823,DE 1358861824,1358862335,FR 1358862336,1358862847,US -1358862848,1358863359,DK +1358862848,1358863103,DK +1358863104,1358863359,CH 1358863360,1358864383,US 1358864384,1358864399,CH 1358864400,1358864407,IN @@ -31359,7 +36539,9 @@ 1358876672,1358880767,LV 1358880768,1358884863,GB 1358884864,1358888959,SE -1358888960,1358893055,DE +1358888960,1358889599,DE +1358889600,1358889631,IN +1358889632,1358893055,DE 1358893056,1358897151,RU 1358897152,1358898175,A2 1358898176,1358898239,CA @@ -31396,28 +36578,23 @@ 1358899392,1358899407,A2 1358899408,1358899415,DE 1358899416,1358899423,CD -1358899424,1358899431,US -1358899432,1358899455,NG +1358899424,1358899439,A2 +1358899440,1358899455,NG 1358899456,1358899463,A2 1358899464,1358899471,US 1358899472,1358899479,SV -1358899480,1358899583,A2 -1358899584,1358899591,IN -1358899592,1358899599,NG +1358899480,1358899599,A2 1358899600,1358899607,LK 1358899608,1358899615,A2 1358899616,1358899631,NG 1358899632,1358899647,NP -1358899648,1358899654,NG -1358899655,1358899983,A2 +1358899648,1358899983,A2 1358899984,1358899991,KY 1358899992,1358900767,A2 1358900768,1358900783,BI 1358900784,1358900959,A2 1358900960,1358900975,SL -1358900976,1358901543,A2 -1358901544,1358901551,DE -1358901552,1358901807,A2 +1358900976,1358901807,A2 1358901808,1358901815,CD 1358901816,1358901935,A2 1358901936,1358901951,NG @@ -31507,18 +36684,19 @@ 1359003648,1359020031,CZ 1359020032,1359036415,FR 1359036416,1359052799,GB -1359052800,1359069183,SE 1359069184,1359101951,RU 1359101952,1359118335,GB -1359118336,1359118655,DE -1359118656,1359118719,NL +1359118336,1359118591,DE +1359118592,1359118719,NL 1359118720,1359118815,DE 1359118816,1359118831,NL 1359118832,1359120383,DE 1359120384,1359121407,DK 1359121408,1359123583,DE 1359123584,1359123711,SE -1359123712,1359134303,DE +1359123712,1359133311,DE +1359133312,1359133439,AT +1359133440,1359134303,DE 1359134304,1359134319,NL 1359134320,1359134719,DE 1359134720,1359150079,CZ @@ -31577,18 +36755,19 @@ 1359467488,1359467495,DE 1359467496,1359467647,US 1359467648,1359467775,DE -1359467776,1359467815,US -1359467816,1359467903,DE -1359467904,1359468031,US -1359468032,1359468575,DE +1359467776,1359467839,US +1359467840,1359467903,DE +1359467904,1359468063,US +1359468064,1359468575,DE 1359468576,1359468583,SG 1359468584,1359468639,DE 1359468640,1359468655,SG 1359468656,1359468671,JP 1359468672,1359468695,SG 1359468696,1359468711,DE -1359468712,1359468743,SG -1359468744,1359468863,DE +1359468712,1359468751,SG +1359468752,1359468759,AU +1359468760,1359468863,DE 1359468864,1359468879,SG 1359468880,1359468927,DE 1359468928,1359469055,SG @@ -31657,7 +36836,7 @@ 1360056320,1360060415,SA 1360060416,1360064511,LT 1360064512,1360068607,GE -1360068608,1360076799,RU +1360068608,1360072703,RU 1360076800,1360084991,NL 1360084992,1360089087,GB 1360089088,1360093183,AZ @@ -31728,7 +36907,11 @@ 1360265216,1360269311,GB 1360269312,1360273407,KG 1360273408,1360281599,GB -1360281600,1360285695,NL +1360281600,1360281727,NL +1360281728,1360281855,ES +1360281856,1360282751,NL +1360282752,1360282783,GB +1360282784,1360285695,NL 1360285696,1360289791,DE 1360289792,1360293887,RU 1360293888,1360302079,DE @@ -31746,6 +36929,7 @@ 1360322560,1360326655,FI 1360326656,1360330751,PT 1360330752,1360334847,UA +1360334848,1360338943,IT 1360338944,1360343039,CY 1360343040,1360347135,SA 1360347136,1360351231,GB @@ -31753,6 +36937,7 @@ 1360355328,1360359423,EG 1360359424,1360363519,AT 1360363520,1360365567,IT +1360365568,1360367615,NL 1360367616,1360371711,IE 1360371712,1360375807,TR 1360375808,1360379903,NL @@ -31817,7 +37002,9 @@ 1360625664,1360626687,DE 1360626688,1360627199,LB 1360627200,1360627455,DE -1360627456,1360627743,LB +1360627456,1360627520,IQ +1360627521,1360627711,DE +1360627712,1360627743,LB 1360627744,1360627967,DE 1360627968,1360628095,IQ 1360628096,1360628223,LU @@ -31853,7 +37040,9 @@ 1360736256,1360740351,RU 1360740352,1360743679,GB 1360743680,1360743935,FR -1360743936,1360752639,GB +1360743936,1360749759,GB +1360749760,1360749791,IM +1360749792,1360752639,GB 1360752640,1360756735,DE 1360756736,1360760831,IT 1360760832,1360764927,RU @@ -31898,46 +37087,33 @@ 1360891648,1360891903,RU 1360891904,1360892427,CH 1360892428,1360892431,IT -1360892432,1360892479,CH -1360892480,1360892487,FR -1360892488,1360892495,CH -1360892496,1360892502,GB -1360892503,1360892671,CH -1360892672,1360892703,IT -1360892704,1360892735,CH -1360892736,1360892739,EE -1360892740,1360892743,GB -1360892744,1360892763,CH -1360892764,1360892771,IT -1360892772,1360892791,CH +1360892432,1360892487,CH +1360892488,1360892495,IT +1360892496,1360892751,CH +1360892752,1360892767,IT +1360892768,1360892791,CH 1360892792,1360892799,IT 1360892800,1360892807,CH -1360892808,1360892823,IT -1360892824,1360892927,CH -1360892928,1360893055,IT -1360893056,1360893191,CH -1360893192,1360893195,IT -1360893196,1360893831,CH -1360893832,1360893835,IT -1360893836,1360893951,CH -1360893952,1360894207,IT -1360894208,1360894975,CH -1360894976,1360895007,IT -1360895008,1360895751,CH -1360895752,1360895755,IT -1360895756,1360895999,CH +1360892808,1360892815,MR +1360892816,1360892927,CH +1360892928,1360893183,IT +1360893184,1360893191,CH +1360893192,1360893199,IT +1360893200,1360894071,CH +1360894072,1360894075,IT +1360894076,1360894079,CH +1360894080,1360894083,IT +1360894084,1360894975,CH +1360894976,1360894983,IT +1360894984,1360895999,CH 1360896000,1360900095,QA -1360900096,1360904335,IT -1360904336,1360904343,GB -1360904344,1360905039,IT +1360900096,1360905039,IT 1360905040,1360905055,GB 1360905056,1360905391,IT 1360905392,1360905407,GB 1360905408,1360906687,IT 1360906688,1360906719,GB -1360906720,1360907679,IT -1360907680,1360907711,GB -1360907712,1360909391,IT +1360906720,1360909391,IT 1360909392,1360909407,GB 1360909408,1360910495,IT 1360910496,1360910511,GB @@ -31956,10 +37132,10 @@ 1360957440,1360961535,DE 1360961536,1360965631,UA 1360965632,1360977919,RU -1360977920,1360987535,CZ -1360987536,1360987903,GB -1360987904,1360987919,CZ -1360987920,1360987927,GB +1360977920,1360987391,CZ +1360987392,1360987455,GB +1360987456,1360987535,CZ +1360987536,1360987927,GB 1360987928,1360987935,CZ 1360987936,1360987983,SK 1360987984,1360987999,CZ @@ -31968,24 +37144,17 @@ 1360988048,1360988055,GB 1360988056,1360988063,SK 1360988064,1360988079,CZ -1360988080,1360988159,GB -1360988160,1360988415,SK -1360988416,1360988927,CZ -1360988928,1360989183,GB -1360989184,1360989439,SK -1360989440,1360989695,GB -1360989696,1360990079,CZ +1360988080,1360989951,GB +1360989952,1360990079,CZ 1360990080,1360990207,GB 1360990208,1360990463,CZ 1360990464,1360990719,GB 1360990720,1360990975,CZ -1360990976,1360991231,GB -1360991232,1360991743,CZ +1360990976,1360991487,GB +1360991488,1360991743,CZ 1360991744,1360991999,GB 1360992000,1360992255,SK -1360992256,1360992511,GB -1360992512,1360992767,CZ -1360992768,1360994303,GB +1360992256,1360994303,GB 1360994304,1360998399,CZ 1360998400,1361002495,FI 1361002496,1361006591,GB @@ -32022,7 +37191,9 @@ 1361035680,1361035683,IE 1361035684,1361035687,IQ 1361035688,1361035691,GB -1361035692,1361035715,IQ +1361035692,1361035695,IQ +1361035696,1361035703,NL +1361035704,1361035715,IQ 1361035716,1361035723,GB 1361035724,1361035727,IQ 1361035728,1361035735,NL @@ -32147,7 +37318,7 @@ 1361036596,1361036599,GI 1361036600,1361036607,IQ 1361036608,1361036611,GI -1361036612,1361036615,IQ +1361036612,1361036615,NL 1361036616,1361036623,GB 1361036624,1361036631,IQ 1361036632,1361036635,GR @@ -32325,7 +37496,6 @@ 1361038320,1361038335,US 1361038336,1361039359,NL 1361039360,1361043455,PL -1361043456,1361051647,NO 1361051648,1362100223,ES 1362100224,1362395135,FR 1362395136,1362395183,CH @@ -32341,11 +37511,7 @@ 1362397440,1362397503,US 1362397504,1362398463,FR 1362398464,1362398719,DE -1362398720,1362399231,FR -1362399232,1362399263,GB -1362399264,1362399487,FR -1362399488,1362400767,GB -1362400768,1362403583,FR +1362398720,1362403583,FR 1362403584,1362405887,DZ 1362405888,1362406143,FR 1362406144,1362407167,SV @@ -32396,7 +37562,9 @@ 1364526592,1364528639,GB 1364528640,1364528895,UA 1364528896,1364530175,GB -1364530176,1364540671,NL +1364530176,1364531455,NL +1364531456,1364531711,IT +1364531712,1364540671,NL 1364540672,1364540927,US 1364540928,1364577023,NL 1364577024,1364577279,GB @@ -32444,7 +37612,9 @@ 1364803584,1364811775,RU 1364811776,1364815871,DE 1364815872,1364819967,RU -1364819968,1364824063,GB +1364819968,1364823295,GB +1364823296,1364823311,AE +1364823312,1364824063,GB 1364824064,1364828159,SE 1364828160,1364829439,GB 1364829440,1364829487,FR @@ -32502,7 +37672,8 @@ 1364971520,1364975615,CZ 1364975616,1364979711,BJ 1364979712,1364982783,GB -1364982784,1364983551,CH +1364982784,1364983295,CH +1364983296,1364983551,US 1364983552,1364983807,GB 1364983808,1364991999,DE 1364992000,1364996095,IT @@ -32519,7 +37690,16 @@ 1365004064,1365004287,GB 1365004288,1365008383,FR 1365008384,1365012479,CH -1365012480,1365016575,FR +1365012480,1365012735,FR +1365012736,1365013503,DE +1365013504,1365013631,FR +1365013632,1365015551,DE +1365015552,1365015839,FR +1365015840,1365015927,DE +1365015928,1365015935,ES +1365015936,1365016063,DE +1365016064,1365016079,FR +1365016080,1365016575,DE 1365016576,1365020671,ES 1365020672,1365024767,CZ 1365024768,1365027839,DE @@ -32627,7 +37807,9 @@ 1365110784,1365114879,FR 1365114880,1365118975,BA 1365118976,1365127167,RU -1365127168,1365130271,AT +1365127168,1365127427,AT +1365127428,1365127431,TR +1365127432,1365130271,AT 1365130272,1365130303,IT 1365130304,1365130495,AT 1365130496,1365131007,IT @@ -32637,11 +37819,7 @@ 1365147648,1365155839,RU 1365155840,1365159935,SE 1365159936,1365164031,HU -1365164032,1365166255,GB -1365166256,1365166271,IE -1365166272,1365166303,GB -1365166304,1365166311,BD -1365166312,1365172223,GB +1365164032,1365172223,GB 1365172224,1365176319,LV 1365176320,1365180415,HU 1365180416,1365183231,DE @@ -32654,28 +37832,37 @@ 1365204992,1365209087,CZ 1365209088,1365213183,BE 1365213184,1365217279,RU -1365217280,1365217567,GB +1365217280,1365217551,GB +1365217552,1365217567,US 1365217568,1365217575,PT 1365217576,1365217591,GB 1365217592,1365217599,EG 1365217600,1365217631,GB -1365217632,1365217671,US +1365217632,1365217663,US +1365217664,1365217671,PH 1365217672,1365217687,IL 1365217688,1365217695,KW 1365217696,1365217703,GB 1365217704,1365217711,AU -1365217712,1365217791,GB +1365217712,1365217791,US 1365217792,1365217807,BD 1365217808,1365217815,US -1365217816,1365217831,GB +1365217816,1365217823,DK +1365217824,1365217831,GB 1365217832,1365217839,TR -1365217840,1365217879,GB +1365217840,1365217847,GB +1365217848,1365217855,BD +1365217856,1365217871,GB +1365217872,1365217879,BD 1365217880,1365217919,US -1365217920,1365217975,GB -1365217976,1365218031,US -1365218032,1365218039,CA -1365218040,1365218047,GB -1365218048,1365218303,US +1365217920,1365217927,DK +1365217928,1365217951,BD +1365217952,1365217975,GB +1365217976,1365217983,US +1365217984,1365217991,DK +1365217992,1365218023,US +1365218024,1365218031,DK +1365218032,1365218303,US 1365218304,1365218311,CA 1365218312,1365218319,AR 1365218320,1365218327,ZA @@ -32718,7 +37905,7 @@ 1365219104,1365219111,SA 1365219112,1365219119,GB 1365219120,1365219135,US -1365219136,1365219143,SA +1365219136,1365219143,GB 1365219144,1365219159,US 1365219160,1365219167,CA 1365219168,1365219183,ES @@ -32797,8 +37984,7 @@ 1365220424,1365220431,GB 1365220432,1365220435,JO 1365220436,1365220439,US -1365220440,1365220471,GB -1365220472,1365220479,US +1365220440,1365220479,GB 1365220480,1365220487,AU 1365220488,1365220523,US 1365220524,1365220527,GB @@ -32869,15 +38055,13 @@ 1369559040,1369563135,RU 1369563136,1369567231,PL 1369567232,1369571327,BG -1369636864,1369702399,DE +1369571328,1369636863,DE 1369702400,1369833471,BE 1369833472,1369964543,NO 1369964544,1369997311,GB 1369997312,1370030079,PL 1370030080,1370062847,BE -1370062848,1370081279,DE -1370081280,1370091519,EU -1370091520,1370095615,DE +1370062848,1370095615,DE 1370095616,1370128383,GB 1370128384,1370161151,SE 1370161152,1370187775,NL @@ -32930,7 +38114,8 @@ 1371799552,1371865087,RO 1371865088,1371930623,FI 1371930624,1371996159,LV -1371996160,1371997183,A2 +1371996160,1371996415,NG +1371996416,1371997183,A2 1371997184,1371997439,KE 1371997440,1371998207,NG 1371998208,1371998463,CD @@ -33038,7 +38223,11 @@ 1372147712,1372151807,BE 1372151808,1372152823,DE 1372152824,1372152831,GB -1372152832,1372159999,DE +1372152832,1372156063,DE +1372156064,1372156095,GB +1372156096,1372156719,DE +1372156720,1372156735,GB +1372156736,1372159999,DE 1372160000,1372164095,GB 1372164096,1372166863,DE 1372166864,1372166879,US @@ -33126,8 +38315,8 @@ 1372702992,1372703271,EU 1372703272,1372703323,DE 1372703324,1372703327,EU -1372703328,1372703407,DE -1372703408,1372703423,EU +1372703328,1372703391,DE +1372703392,1372703423,EU 1372703424,1372703487,DE 1372703488,1372703743,EU 1372703744,1372713327,DE @@ -33140,7 +38329,7 @@ 1372717056,1372749823,PL 1372749824,1372782591,DE 1372782592,1372815359,RU -1372815360,1372848127,SE +1372815360,1372848127,KZ 1372848128,1373110271,TR 1373110272,1373175807,SE 1373175808,1373241343,AT @@ -33189,7 +38378,9 @@ 1382039056,1382039071,DE 1382039072,1382039175,SE 1382039176,1382039191,GB -1382039192,1382039551,SE +1382039192,1382039271,SE +1382039272,1382039275,GB +1382039276,1382039551,SE 1382039552,1382055935,DE 1382055936,1382072319,FR 1382072320,1382088703,RU @@ -33248,12 +38439,15 @@ 1382182832,1382182895,DE 1382182896,1382182911,GB 1382182912,1382183167,LI -1382183168,1382187007,DE +1382183168,1382183423,CH +1382183424,1382183935,LI +1382183936,1382185031,DE +1382185032,1382185039,SK +1382185040,1382187007,DE 1382187008,1382191871,ES 1382191872,1382192127,VE 1382192128,1382203391,ES -1382203392,1382204479,NL -1382204480,1382205439,GB +1382203392,1382205439,GB 1382205440,1382205695,EU 1382205696,1382205951,DE 1382205952,1382207743,EU @@ -33264,40 +38458,20 @@ 1382209536,1382209791,DE 1382209792,1382211071,EU 1382211072,1382211199,DE -1382211200,1382211327,EU -1382211328,1382211583,NL +1382211200,1382211583,EU 1382211584,1382211711,FR -1382211712,1382211839,EU -1382211840,1382212095,FR -1382212096,1382212223,EU +1382211712,1382212223,EU 1382212224,1382212239,FR -1382212240,1382212287,EU -1382212288,1382212351,NL -1382212352,1382212607,EU +1382212240,1382212607,EU 1382212608,1382212863,FR -1382212864,1382213183,NL -1382213184,1382213199,EU -1382213200,1382213375,NL -1382213376,1382213631,EU -1382213632,1382214079,NL -1382214080,1382214111,GB -1382214112,1382214879,NL -1382214880,1382214895,GB -1382214896,1382216831,NL -1382216832,1382216895,GB -1382216896,1382216959,NL -1382216960,1382217215,GB -1382217216,1382218399,NL -1382218400,1382218447,GB -1382218448,1382218455,NL -1382218456,1382218495,GB -1382218496,1382218623,NL -1382218624,1382218751,GB -1382218752,1382218815,NL -1382218816,1382218911,GB -1382218912,1382218959,NL -1382218960,1382218991,GB -1382218992,1382219775,NL +1382212864,1382213631,EU +1382213632,1382215679,GB +1382215680,1382216447,NL +1382216448,1382217727,GB +1382217728,1382217983,NL +1382217984,1382219007,GB +1382219008,1382219519,NL +1382219520,1382219775,GB 1382219776,1382223327,SE 1382223328,1382223359,FI 1382223360,1382223551,SE @@ -33322,9 +38496,7 @@ 1382233424,1382252543,SE 1382252544,1382268927,CZ 1382268928,1382285311,IR -1382285312,1382301391,CZ -1382301392,1382301407,SK -1382301408,1382301695,CZ +1382285312,1382301695,CZ 1382301696,1382318079,SE 1382318080,1382334463,RU 1382334464,1382350847,DE @@ -33354,8 +38526,7 @@ 1383073280,1383073535,KZ 1383073536,1383088127,RU 1383088128,1383096319,IS -1383096320,1383096383,PL -1383096384,1383096447,GB +1383096320,1383096447,PL 1383096448,1383096575,FR 1383096576,1383096831,GB 1383096832,1383096863,FR @@ -33363,11 +38534,15 @@ 1383097088,1383097343,ES 1383097344,1383098111,GB 1383098112,1383098367,DE -1383098368,1383099391,GB -1383099392,1383099903,DE -1383099904,1383099967,FR -1383099968,1383100159,GB -1383100160,1383100415,FR +1383098368,1383099135,GB +1383099136,1383099151,DE +1383099152,1383099391,GB +1383099392,1383099679,DE +1383099680,1383099687,GB +1383099688,1383099695,DE +1383099696,1383099711,GB +1383099712,1383099903,DE +1383099904,1383100415,FR 1383100416,1383100831,GB 1383100832,1383100847,IE 1383100848,1383100879,GB @@ -33375,13 +38550,12 @@ 1383100896,1383103271,GB 1383103272,1383103279,ES 1383103280,1383103471,GB -1383103472,1383103487,NL +1383103472,1383103487,AE 1383103488,1383104015,GB 1383104016,1383104023,ES 1383104024,1383104255,GB 1383104256,1383104511,FR 1383104512,1383112703,JE -1383112704,1383120895,GE 1383120896,1383129031,IT 1383129032,1383129039,ES 1383129040,1383129087,IT @@ -33466,7 +38640,6 @@ 1383440384,1383448575,RU 1383448576,1383456767,RS 1383456768,1383464959,UA -1383464960,1383473151,US 1383473152,1383481343,DE 1383481344,1383481599,GB 1383481600,1383481615,US @@ -33502,39 +38675,18 @@ 1383563264,1383571455,RU 1383571456,1383579647,DE 1383579648,1383587839,IT -1383587840,1383588415,SK -1383588416,1383588423,CZ -1383588424,1383588431,SK -1383588432,1383588439,CZ -1383588440,1383589375,SK -1383589376,1383590143,CZ -1383590144,1383590287,SK -1383590288,1383590295,CZ -1383590296,1383590367,SK -1383590368,1383590375,CZ -1383590376,1383590463,SK -1383590464,1383590543,CZ -1383590544,1383590591,SK -1383590592,1383590655,CZ -1383590656,1383590911,SK -1383590912,1383591167,CZ -1383591168,1383591935,SK +1383587840,1383591935,SK 1383591936,1383596031,CZ 1383596032,1384120319,FR 1384120320,1384153087,NG 1384153088,1384185855,FI -1384185856,1384187967,DE -1384187968,1384188031,CH -1384188032,1384189055,DE -1384189056,1384189183,CH +1384185856,1384189183,DE 1384189184,1384189439,AT 1384189440,1384190463,DE 1384190464,1384190719,NL 1384190720,1384190975,DE 1384190976,1384191231,DK -1384191232,1384191359,DE -1384191360,1384191423,AT -1384191424,1384191999,DE +1384191232,1384191999,DE 1384192000,1384192191,NL 1384192192,1384192255,DE 1384192256,1384192511,NL @@ -33542,12 +38694,9 @@ 1384192576,1384192639,SE 1384192640,1384192767,DE 1384192768,1384193023,BG -1384193024,1384194047,NL -1384194048,1384194191,DE +1384193024,1384194191,DE 1384194192,1384194207,AT -1384194208,1384194271,DE -1384194272,1384194303,NL -1384194304,1384194559,DE +1384194208,1384194559,DE 1384194560,1384194815,NL 1384194816,1384195711,DE 1384195712,1384195743,NL @@ -33608,15 +38757,9 @@ 1384794880,1384795135,CH 1384795136,1384795279,FR 1384795280,1384795327,BE -1384795328,1384796351,FR -1384796352,1384796415,IT -1384796416,1384799807,FR +1384795328,1384799807,FR 1384799808,1384799871,CH -1384799872,1384801023,FR -1384801024,1384801087,SM -1384801088,1384802495,FR -1384802496,1384802559,IT -1384802560,1384808447,FR +1384799872,1384808447,FR 1384808448,1384808479,BE 1384808480,1384808735,EU 1384808736,1384808799,BE @@ -33723,8 +38866,10 @@ 1385259008,1385267199,IT 1385267200,1385275391,SE 1385275392,1385283583,IT -1385287680,1385289727,IS -1385289728,1385291775,NO +1385283584,1385285631,DE +1385285632,1385287679,GB +1385287680,1385291648,IS +1385291649,1385291775,NO 1385291776,1385299967,TR 1385299968,1385308159,BG 1385308160,1385309439,BE @@ -33752,7 +38897,6 @@ 1385480192,1385488383,NL 1385488384,1385496575,GB 1385496576,1385504767,SI -1385504768,1385512959,GB 1385512960,1385521151,DE 1385521152,1385529343,AT 1385529344,1385537535,RU @@ -33771,7 +38915,9 @@ 1385559296,1385560831,DE 1385560832,1385561087,SK 1385561088,1385562111,DE -1385562112,1385563135,ES +1385562112,1385562367,ES +1385562368,1385562623,EU +1385562624,1385563135,ES 1385563136,1385563391,IE 1385563392,1385563647,EU 1385563648,1385563935,IE @@ -33781,16 +38927,15 @@ 1385564104,1385564111,IE 1385564112,1385564159,EU 1385564160,1385564231,HU -1385564232,1385564383,EU +1385564232,1385564235,AT +1385564236,1385564383,EU 1385564384,1385564671,HU 1385564672,1385565183,EU 1385565184,1385565439,ES 1385565440,1385566207,EU 1385566208,1385566399,FR 1385566400,1385566431,EU -1385566432,1385566447,FR -1385566448,1385566455,EU -1385566456,1385566847,FR +1385566432,1385566847,FR 1385566848,1385566927,EU 1385566928,1385566935,FR 1385566936,1385566959,EU @@ -33879,27 +39024,35 @@ 1387790336,1388314623,IT 1388314624,1388322815,AT 1388322816,1388331007,SI -1388331008,1388339199,NL +1388331008,1388338176,NL +1388338177,1388338178,FR +1388338179,1388338180,GB +1388338181,1388338182,DE +1388338183,1388338186,NL +1388338187,1388338188,IT +1388338189,1388338190,NL +1388338191,1388338192,PL +1388338193,1388339199,NL 1388339200,1388347391,GB 1388347392,1388363775,DK 1388363776,1388371967,DE 1388371968,1388380159,CH -1388380160,1388388895,IT -1388388896,1388388927,NG +1388380160,1388388911,IT +1388388912,1388388927,NG 1388388928,1388388943,IT -1388388944,1388388959,NG -1388388960,1388388967,IT -1388388968,1388388991,NG -1388388992,1388389447,IT -1388389448,1388389455,NG -1388389456,1388389567,IT +1388388944,1388388951,NG +1388388952,1388388959,IT +1388388960,1388388967,NG +1388388968,1388389151,IT +1388389152,1388389167,NG +1388389168,1388389567,IT 1388389568,1388389631,NG 1388389632,1388389927,IT 1388389928,1388390015,NG 1388390016,1388390143,IT 1388390144,1388394495,NG -1388394496,1388395519,IT -1388395520,1388396287,NG +1388394496,1388396031,IT +1388396032,1388396287,NG 1388396288,1388396543,IT 1388396544,1388404735,LV 1388404736,1388412927,UA @@ -33918,13 +39071,13 @@ 1388519424,1388527615,NL 1388527616,1388535807,DE 1388535808,1388543999,GB -1388544000,1388546191,IE +1388544000,1388546159,IE +1388546160,1388546167,GB +1388546168,1388546191,IE 1388546192,1388546201,GB 1388546202,1388547583,IE -1388547584,1388547775,GB -1388547776,1388547871,IE -1388547872,1388547903,GB -1388547904,1388547935,IE +1388547584,1388547839,GB +1388547840,1388547935,IE 1388547936,1388547951,GB 1388547952,1388552191,IE 1388552192,1388560383,GB @@ -33952,9 +39105,7 @@ 1388587616,1388587631,EU 1388587632,1388588415,GB 1388588416,1388588543,EU -1388588544,1388588575,US -1388588576,1388588783,EU -1388588784,1388588799,US +1388588544,1388588799,US 1388588800,1388589823,GB 1388589824,1388590079,EU 1388590080,1388590127,FR @@ -33986,8 +39137,7 @@ 1388658688,1388666879,GB 1388666880,1388675071,FR 1388675072,1388675327,NL -1388675328,1388675583,EU -1388675584,1388676863,DE +1388675328,1388676863,DE 1388676864,1388677119,EU 1388677120,1388677375,GB 1388677376,1388677631,EU @@ -34007,16 +39157,22 @@ 1388689648,1388691455,CH 1388691456,1388699647,NL 1388699648,1388707839,SE -1388707840,1388708863,RU -1388708864,1388709119,LT -1388709120,1388712191,RU +1388707840,1388708607,RU +1388708608,1388709119,LT +1388709120,1388709375,IQ +1388709376,1388709887,RU +1388709888,1388710143,LB +1388710144,1388710399,RU +1388710400,1388710911,LB +1388710912,1388711167,IQ +1388711168,1388711679,RU +1388711680,1388711935,IQ +1388711936,1388712191,RU 1388712192,1388712703,LT 1388712704,1388713215,LB 1388713216,1388713727,RU 1388713728,1388713983,LT -1388713984,1388714239,LB -1388714240,1388714495,LT -1388714496,1388714751,RU +1388713984,1388714751,RU 1388714752,1388715007,IQ 1388715008,1388715519,LT 1388715520,1388715775,LV @@ -34050,7 +39206,11 @@ 1388740736,1388741375,IE 1388741376,1388741443,GB 1388741444,1388741535,IE -1388741536,1388741631,GB +1388741536,1388741551,GB +1388741552,1388741559,IE +1388741560,1388741599,GB +1388741600,1388741615,IE +1388741616,1388741631,GB 1388741632,1388741659,IE 1388741660,1388741723,GB 1388741724,1388741745,IE @@ -34075,11 +39235,25 @@ 1388742656,1388742719,GB 1388742720,1388742731,IE 1388742732,1388742735,IR -1388742736,1388743043,IE -1388743044,1388743055,GB -1388743056,1388743439,IE -1388743440,1388743451,GB -1388743452,1388743919,IE +1388742736,1388742783,IE +1388742784,1388742847,GB +1388742848,1388743023,IE +1388743024,1388743035,GB +1388743036,1388743047,IE +1388743048,1388743055,GB +1388743056,1388743087,IE +1388743088,1388743099,GB +1388743100,1388743343,IE +1388743344,1388743351,GB +1388743352,1388743359,IE +1388743360,1388743375,GB +1388743376,1388743443,IE +1388743444,1388743451,GB +1388743452,1388743555,IE +1388743556,1388743559,GB +1388743560,1388743571,IE +1388743572,1388743583,GB +1388743584,1388743919,IE 1388743920,1388743935,GB 1388743936,1388744087,IE 1388744088,1388744095,GB @@ -34091,9 +39265,7 @@ 1388744912,1388744915,GB 1388744916,1388745155,IE 1388745156,1388745159,GB -1388745160,1388745215,IE -1388745216,1388745343,GB -1388745344,1388745499,IE +1388745160,1388745499,IE 1388745500,1388745503,GB 1388745504,1388745559,IE 1388745560,1388745563,GB @@ -34104,8 +39276,8 @@ 1388745728,1388745911,IE 1388745912,1388745919,GB 1388745920,1388745927,IE -1388745928,1388745935,GB -1388745936,1388746155,IE +1388745928,1388745931,GB +1388745932,1388746155,IE 1388746156,1388746159,GB 1388746160,1388746175,IE 1388746176,1388746239,GB @@ -34121,11 +39293,11 @@ 1388746960,1388746975,GB 1388746976,1388747083,IE 1388747084,1388747087,GB -1388747088,1388747551,IE -1388747552,1388747555,GB +1388747088,1388747543,IE +1388747544,1388747555,GB 1388747556,1388747575,IE -1388747576,1388747583,GB -1388747584,1388747671,IE +1388747576,1388747647,GB +1388747648,1388747671,IE 1388747672,1388747675,GB 1388747676,1388747783,IE 1388747784,1388747791,GB @@ -34133,9 +39305,7 @@ 1388747836,1388747839,GB 1388747840,1388747859,IE 1388747860,1388747875,GB -1388747876,1388747891,IE -1388747892,1388747895,GB -1388747896,1388747983,IE +1388747876,1388747983,IE 1388747984,1388747987,GB 1388747988,1388747999,IE 1388748000,1388748031,GB @@ -34151,11 +39321,23 @@ 1388765184,1388773375,GB 1388773376,1388781567,NO 1388781568,1388789759,ES -1388789760,1388797951,NL +1388789760,1388794943,NL +1388794944,1388794959,GB +1388794960,1388795343,NL +1388795344,1388795359,GB +1388795360,1388796559,NL +1388796560,1388796575,GB +1388796576,1388796679,NL +1388796680,1388796687,GB +1388796688,1388796783,NL +1388796784,1388796799,GB +1388796800,1388797951,NL 1388797952,1388806143,RU 1388806144,1388807679,DE 1388807680,1388807711,BZ -1388807712,1388814335,DE +1388807712,1388808255,DE +1388808256,1388808283,BZ +1388808284,1388814335,DE 1388814336,1388815103,AX 1388815104,1388815231,FI 1388815232,1388818687,AX @@ -34179,67 +39361,54 @@ 1389166592,1389199359,PS 1389199360,1389199615,A2 1389199616,1389199647,IR -1389199648,1389203391,A2 -1389203392,1389203455,IR -1389203456,1389203487,IQ -1389203488,1389203519,A2 -1389203520,1389203551,IQ +1389199648,1389200383,A2 +1389200384,1389200639,AE +1389200640,1389203551,A2 1389203552,1389203567,LB -1389203568,1389203583,A2 -1389203584,1389203615,IQ -1389203616,1389203743,A2 +1389203568,1389203743,A2 1389203744,1389203775,IQ 1389203776,1389203967,A2 1389203968,1389203999,LY 1389204000,1389204223,A2 1389204224,1389204255,IQ -1389204256,1389204287,A2 -1389204288,1389204303,SA -1389204304,1389204799,A2 +1389204256,1389204799,A2 1389204800,1389204863,IQ 1389204864,1389204879,A2 1389204880,1389204895,IQ -1389204896,1389205631,A2 -1389205632,1389205759,IR +1389204896,1389205247,A2 +1389205248,1389205503,AF +1389205504,1389205631,A2 +1389205632,1389205759,DE 1389205760,1389205791,A2 -1389205792,1389205935,IR -1389205936,1389205999,A2 -1389206000,1389206015,IR -1389206016,1389206047,IQ -1389206048,1389206143,A2 +1389205792,1389205919,IR +1389205920,1389206143,A2 1389206144,1389206175,LY 1389206176,1389206271,A2 1389206272,1389206656,IR -1389206657,1389206719,A2 -1389206720,1389207039,IR -1389207040,1389207295,LB -1389207296,1389207359,A2 -1389207360,1389207391,SA -1389207392,1389207487,IR +1389206657,1389206783,A2 +1389206784,1389207039,DE +1389207040,1389207391,A2 +1389207392,1389207423,IR +1389207424,1389207487,DE 1389207488,1389207519,A2 1389207520,1389207551,IR -1389207552,1389209087,A2 -1389209088,1389209343,IR -1389209344,1389209887,A2 +1389207552,1389209887,A2 1389209888,1389209903,IQ -1389209904,1389210127,A2 -1389210128,1389210207,IQ -1389210208,1389210223,A2 -1389210224,1389210255,IR -1389210256,1389210271,A2 +1389209904,1389210143,A2 +1389210144,1389210207,IQ +1389210208,1389210271,A2 1389210272,1389210303,IQ -1389210304,1389210335,IR -1389210336,1389210623,A2 +1389210304,1389210623,A2 1389210624,1389210655,IQ -1389210656,1389210687,IR +1389210656,1389210687,A2 1389210688,1389210719,IQ 1389210720,1389210767,A2 1389210768,1389210783,IQ 1389210784,1389210815,A2 -1389210816,1389210879,IQ -1389210880,1389211135,A2 -1389211136,1389211183,IQ -1389211184,1389211199,A2 +1389210816,1389210863,IQ +1389210864,1389211135,A2 +1389211136,1389211151,IQ +1389211152,1389211199,A2 1389211200,1389211263,IQ 1389211264,1389211343,A2 1389211344,1389211359,LY @@ -34251,108 +39420,46 @@ 1389211520,1389211535,IQ 1389211536,1389211567,A2 1389211568,1389211647,IQ -1389211648,1389211719,A2 -1389211720,1389211727,IR -1389211728,1389212159,A2 +1389211648,1389212159,A2 1389212160,1389212415,KW 1389212416,1389212671,A2 1389212672,1389212767,IQ 1389212768,1389212927,A2 1389212928,1389212991,IR -1389212992,1389213055,A2 -1389213056,1389213087,IR +1389212992,1389213087,A2 1389213088,1389213119,IQ -1389213120,1389213183,A2 -1389213184,1389213199,IQ -1389213200,1389213207,A2 +1389213120,1389213207,A2 1389213208,1389213215,LY 1389213216,1389213311,A2 1389213312,1389213343,LY 1389213344,1389214719,A2 1389214720,1389215743,LY 1389215744,1389217791,AF -1389217792,1389218303,A2 +1389217792,1389218047,A2 +1389218048,1389218303,AE 1389218304,1389219839,AF -1389219840,1389220095,A2 -1389220096,1389220143,SA -1389220144,1389220191,A2 +1389219840,1389220191,A2 1389220192,1389220207,IQ -1389220208,1389220223,IR -1389220224,1389220479,A2 -1389220480,1389220495,IQ -1389220496,1389220575,A2 -1389220576,1389220591,IQ -1389220592,1389220607,A2 -1389220608,1389220639,SA -1389220640,1389220671,A2 -1389220672,1389220687,IQ -1389220688,1389220703,SA -1389220704,1389220735,A2 -1389220736,1389220751,IQ -1389220752,1389220767,SA -1389220768,1389220895,A2 -1389220896,1389220927,SA -1389220928,1389220959,A2 -1389220960,1389220975,IQ -1389220976,1389221119,A2 -1389221120,1389221631,LY -1389221632,1389221887,A2 -1389221888,1389222399,SA -1389222400,1389222495,A2 +1389220208,1389220911,A2 +1389220912,1389220927,SA +1389220928,1389222495,A2 1389222496,1389222511,SA 1389222512,1389222543,A2 1389222544,1389222559,LY 1389222560,1389222591,SA -1389222592,1389222607,IQ -1389222608,1389222687,A2 -1389222688,1389222703,IR -1389222704,1389222719,SA -1389222720,1389222751,IQ -1389222752,1389222799,A2 -1389222800,1389222815,SA -1389222816,1389222847,A2 -1389222848,1389222879,SA -1389222880,1389222911,A2 -1389222912,1389223167,SA -1389223168,1389223175,LY -1389223176,1389223183,A2 -1389223184,1389223215,SA -1389223216,1389223231,A2 -1389223232,1389223263,SA -1389223264,1389223327,IQ -1389223328,1389223423,A2 -1389223424,1389223471,SA -1389223472,1389223487,IQ -1389223488,1389223519,LY -1389223520,1389223679,A2 +1389222592,1389223679,A2 1389223680,1389224191,DE -1389224192,1389224447,SA -1389224448,1389224511,IR -1389224512,1389224543,A2 -1389224544,1389224559,IR -1389224560,1389224575,SA -1389224576,1389225215,A2 -1389225216,1389225471,SA -1389225472,1389225535,A2 -1389225536,1389225599,IQ +1389224192,1389225583,A2 +1389225584,1389225599,IQ 1389225600,1389225983,A2 1389225984,1389226239,AE 1389226240,1389226495,A2 1389226496,1389227775,AE 1389227776,1389227791,IQ -1389227792,1389227839,A2 -1389227840,1389227855,SA -1389227856,1389228031,A2 -1389228032,1389228047,IQ -1389228048,1389228063,A2 -1389228064,1389228079,IQ -1389228080,1389228303,A2 -1389228304,1389228319,IQ -1389228320,1389228351,A2 +1389227792,1389228351,A2 1389228352,1389228415,AE 1389228416,1389228479,LB -1389228480,1389228799,A2 -1389228800,1389229055,LY +1389228480,1389229055,A2 1389229056,1389231615,AE 1389231616,1389231871,A2 1389231872,1389232127,SA @@ -34392,7 +39499,8 @@ 1389265576,1389265591,SC 1389265592,1389265598,CG 1389265599,1389265599,A2 -1389265600,1389265663,SO +1389265600,1389265639,US +1389265640,1389265663,SO 1389265664,1389265791,ZA 1389265792,1389265807,A2 1389265808,1389265823,CA @@ -34578,12 +39686,25 @@ 1389559040,1389559103,CH 1389559104,1389559743,DE 1389559744,1389559807,CH -1389559808,1389562879,DE -1389562880,1389563135,IT +1389559808,1389561343,DE +1389561344,1389561407,IT +1389561408,1389561471,DE +1389561472,1389561599,IT +1389561600,1389562367,DE +1389562368,1389563135,IT 1389563136,1389563391,DE 1389563392,1389563647,IT -1389563648,1389576191,DE +1389563648,1389563903,US +1389563904,1389564159,IT +1389564160,1389564415,DE +1389564416,1389564671,IT +1389564672,1389565183,DE +1389565184,1389565695,IT +1389565696,1389566975,DE +1389566976,1389567231,VN +1389567232,1389576191,DE 1389576192,1389592575,GB +1389592576,1389608959,GE 1389608960,1389625343,DK 1389625344,1389641727,DE 1389641728,1389658111,JO @@ -34593,13 +39714,16 @@ 1389707264,1389723647,IT 1389723648,1389756415,ES 1389756416,1389772799,SE -1389772800,1389780991,SI +1389772800,1389778431,SI +1389778432,1389778943,CA +1389778944,1389780991,RS 1389780992,1389782527,HR 1389782528,1389782543,SI 1389782544,1389782559,HR 1389782560,1389783039,SI -1389783040,1389784063,BA -1389784064,1389788671,SI +1389783040,1389785087,BA +1389785088,1389787135,MK +1389787136,1389788671,SI 1389788672,1389789183,RS 1389789184,1389805567,PL 1389805568,1389821951,US @@ -34660,7 +39784,6 @@ 1398886400,1398888447,CH 1398888448,1398890495,GB 1398890496,1398892543,DK -1398892544,1398894591,UA 1398894592,1398896639,DE 1398896640,1398898687,CH 1398898688,1398931455,ES @@ -34712,14 +39835,12 @@ 1399717888,1399848959,AE 1399848960,1400111103,FR 1400111104,1400373247,NL -1400373248,1400635391,DE -1400635392,1400700927,EU -1400700928,1400705279,DE -1400705280,1400706047,EU -1400706048,1400707071,DE -1400707072,1400709119,EU -1400709120,1400710143,DE -1400710144,1400710399,EU +1400373248,1400705279,DE +1400705280,1400705791,EU +1400705792,1400708607,DE +1400708608,1400709120,EU +1400709121,1400710142,DE +1400710143,1400710399,EU 1400710400,1400712191,DE 1400712192,1400712447,EU 1400712448,1400712703,DE @@ -34750,7 +39871,9 @@ 1401264128,1401264903,DE 1401264904,1401265151,EU 1401265152,1401265919,DE -1401265920,1401266175,EU +1401265920,1401265951,EU +1401265952,1401265983,DE +1401265984,1401266175,EU 1401266176,1401273599,DE 1401273600,1401273727,EU 1401273728,1401274367,DE @@ -34852,50 +39975,109 @@ 1401667584,1401683967,IT 1401683968,1401684067,SE 1401684068,1401684071,NO -1401684072,1401684479,SE +1401684072,1401684075,DE +1401684076,1401684479,SE 1401684480,1401684511,DK -1401684512,1401684543,SE +1401684512,1401684515,DE +1401684516,1401684543,SE 1401684544,1401684607,DK 1401684608,1401684671,SE 1401684672,1401684703,DK 1401684704,1401684731,SE 1401684732,1401684735,DK 1401684736,1401684755,NO -1401684756,1401684767,SE +1401684756,1401684759,SE +1401684760,1401684763,DE +1401684764,1401684767,SE 1401684768,1401684895,NO -1401684896,1401686015,SE +1401684896,1401684995,SE +1401684996,1401684999,DE +1401685000,1401686015,SE 1401686016,1401686059,GB -1401686060,1401686063,SE +1401686060,1401686063,DE 1401686064,1401686143,GB 1401686144,1401686223,SE 1401686224,1401686271,GB 1401686272,1401686287,NL -1401686288,1401686335,SE +1401686288,1401686291,DE +1401686292,1401686335,SE 1401686336,1401686399,NL 1401686400,1401686911,SE 1401686912,1401686927,DE -1401686928,1401691519,SE +1401686928,1401686943,SE +1401686944,1401686947,DE +1401686948,1401691519,SE 1401691520,1401691535,DE 1401691536,1401695263,SE 1401695264,1401695267,GB -1401695268,1401697815,SE +1401695268,1401695271,SE +1401695272,1401695275,GB +1401695276,1401695279,DE +1401695280,1401697815,SE 1401697816,1401697823,DE 1401697824,1401698223,SE 1401698224,1401698227,GB -1401698228,1401708543,SE +1401698228,1401698231,DE +1401698232,1401703951,SE +1401703952,1401703955,DE +1401703956,1401704511,SE +1401704512,1401704515,DE +1401704516,1401705983,SE +1401705984,1401705987,DE +1401705988,1401708543,SE 1401708544,1401709055,FR 1401709056,1401709311,SE 1401709312,1401709567,GB -1401709568,1401714047,SE +1401709568,1401711615,SE +1401711616,1401711647,GB +1401711648,1401711679,DE +1401711680,1401711711,NL +1401711712,1401711743,ES +1401711744,1401711775,DK +1401711776,1401711807,IT +1401711808,1401711839,US +1401711840,1401711871,NL +1401711872,1401711903,GB +1401711904,1401711935,DE +1401711936,1401711967,NL +1401711968,1401711999,ES +1401712000,1401712031,DK +1401712032,1401712063,CH +1401712064,1401712095,FR +1401712096,1401712127,NL +1401712128,1401712159,GB +1401712160,1401712191,DE +1401712192,1401712223,SE +1401712224,1401712255,ES +1401712256,1401712287,DK +1401712288,1401712319,SE +1401712320,1401712351,IT +1401712352,1401712383,DE +1401712384,1401712415,GB +1401712416,1401712447,DE +1401712448,1401712479,NL +1401712480,1401712511,ES +1401712512,1401712543,SE +1401712544,1401712575,US +1401712576,1401712607,GB +1401712608,1401712639,NL +1401712640,1401714047,SE 1401714048,1401714063,FR -1401714064,1401715455,SE +1401714064,1401715403,SE +1401715404,1401715407,DE +1401715408,1401715455,SE 1401715456,1401715459,US 1401715460,1401717759,SE 1401717760,1401718015,NL 1401718016,1401719935,SE 1401719936,1401719951,DK 1401719952,1401719955,GB -1401719956,1401727743,SE +1401719956,1401719959,SE +1401719960,1401719963,GB +1401719964,1401719967,DE +1401719968,1401726783,SE +1401726784,1401726787,DE +1401726788,1401727743,SE 1401727744,1401727999,GB 1401728000,1401728335,SE 1401728336,1401728351,NL @@ -34926,32 +40108,43 @@ 1401745920,1401745935,IT 1401745936,1401745959,SE 1401745960,1401745967,US -1401745968,1401745983,SE +1401745968,1401745971,MY +1401745972,1401745975,NL +1401745976,1401745983,SE 1401745984,1401745999,NL 1401746000,1401746015,ES 1401746016,1401746019,GB -1401746020,1401746175,SE +1401746020,1401746023,SE +1401746024,1401746027,DE +1401746028,1401746175,SE 1401746176,1401746191,DK 1401746192,1401746215,SE -1401746216,1401746223,GB +1401746216,1401746223,BG 1401746224,1401746239,SE 1401746240,1401746255,NL 1401746256,1401746271,ES 1401746272,1401746279,GB -1401746280,1401746431,SE +1401746280,1401746283,SE +1401746284,1401746287,US +1401746288,1401746291,DE +1401746292,1401746431,SE 1401746432,1401746447,NL 1401746448,1401746467,SE 1401746468,1401746471,NL -1401746472,1401746487,GB +1401746472,1401746479,US +1401746480,1401746487,GB 1401746488,1401746495,SE 1401746496,1401746511,NL 1401746512,1401746527,ES -1401746528,1401746623,SE +1401746528,1401746531,DE +1401746532,1401746623,SE 1401746624,1401746639,DE 1401746640,1401746655,SE 1401746656,1401746687,IE 1401746688,1401746703,NO -1401746704,1401746751,SE +1401746704,1401746719,SE +1401746720,1401746723,DE +1401746724,1401746751,SE 1401746752,1401746767,NL 1401746768,1401746783,ES 1401746784,1401746879,SE @@ -34961,11 +40154,15 @@ 1401746960,1401747007,SE 1401747008,1401747023,NL 1401747024,1401747039,ES -1401747040,1401747135,SE +1401747040,1401747043,DE +1401747044,1401747135,SE 1401747136,1401747151,DE 1401747152,1401747199,SE 1401747200,1401747215,IT -1401747216,1401747279,SE +1401747216,1401747235,SE +1401747236,1401747239,US +1401747240,1401747243,DE +1401747244,1401747279,SE 1401747280,1401747295,ES 1401747296,1401747391,SE 1401747392,1401747407,DE @@ -34974,7 +40171,9 @@ 1401747488,1401747495,DK 1401747496,1401747499,SE 1401747500,1401747503,GB -1401747504,1401747647,SE +1401747504,1401747583,SE +1401747584,1401747587,DE +1401747588,1401747647,SE 1401747648,1401747663,DE 1401747664,1401747711,SE 1401747712,1401747967,FR @@ -34987,7 +40186,10 @@ 1401759232,1401759487,GB 1401759488,1401760255,DE 1401760256,1401760767,SK -1401760768,1401765887,DE +1401760768,1401765247,DE +1401765248,1401765375,NL +1401765376,1401765759,DE +1401765760,1401765887,NL 1401765888,1401782271,IE 1401782272,1401815039,FR 1401815040,1401817087,SE @@ -35041,7 +40243,6 @@ 1401927680,1401929727,NL 1401929728,1401931775,RU 1401931776,1401933823,UA -1401933824,1401935871,PL 1401935872,1401937919,FI 1401937920,1401939967,GB 1401939968,1401942015,UA @@ -35051,7 +40252,9 @@ 1401962496,1401978879,PL 1401978880,1401995263,PT 1401995264,1402011647,CH -1402011648,1402028031,SE +1402011648,1402027823,SE +1402027824,1402027831,GB +1402027832,1402028031,SE 1402028032,1402044415,FR 1402044416,1402060799,PL 1402060800,1402068159,FI @@ -35139,72 +40342,94 @@ 1403518976,1403535359,CY 1403535360,1403551743,PL 1403551744,1403568127,SK -1403568128,1403580159,SE +1403568128,1403573247,SE +1403573248,1403573503,ES +1403573504,1403574783,SE +1403574784,1403575039,IT +1403575040,1403576063,SE +1403576064,1403576319,DE +1403576320,1403578879,SE +1403578880,1403579135,DK +1403579136,1403580159,SE 1403580160,1403580415,GB -1403580416,1403584511,SE +1403580416,1403581951,SE +1403581952,1403582207,US +1403582208,1403584511,SE 1403584512,1403600895,DE 1403600896,1403601519,FR 1403601520,1403601535,MC 1403601536,1403617279,FR 1403617280,1403633663,DE 1403633664,1403650047,RU -1403650048,1403655935,DE +1403650048,1403651647,A2 +1403651648,1403651663,DE +1403651664,1403651727,A2 +1403651728,1403651743,DE +1403651744,1403651807,A2 +1403651808,1403651831,DE +1403651832,1403651839,A2 +1403651840,1403652095,DE +1403652096,1403652319,A2 +1403652320,1403652351,DE +1403652352,1403655935,A2 1403655936,1403655943,IR -1403655944,1403656703,DE +1403655944,1403656703,A2 1403656704,1403656959,IR -1403656960,1403658495,DE +1403656960,1403658495,A2 1403658496,1403658527,IR 1403658528,1403658559,KW -1403658560,1403658847,DE +1403658560,1403658847,A2 1403658848,1403658879,IR -1403658880,1403658911,DE +1403658880,1403658911,A2 1403658912,1403658975,IR -1403658976,1403660735,DE +1403658976,1403660735,A2 1403660736,1403660799,IR -1403660800,1403661183,DE +1403660800,1403661183,A2 1403661184,1403661215,IR 1403661216,1403661279,AE 1403661280,1403661310,IR -1403661311,1403661631,DE +1403661311,1403661631,A2 1403661632,1403661663,IR -1403661664,1403661727,DE +1403661664,1403661727,A2 1403661728,1403661759,IR -1403661760,1403661887,DE +1403661760,1403661887,A2 1403661888,1403661919,IR -1403661920,1403661951,DE +1403661920,1403661951,A2 1403661952,1403661983,IR -1403661984,1403662015,DE +1403661984,1403662015,A2 1403662016,1403662047,IR -1403662048,1403662111,DE +1403662048,1403662111,A2 1403662112,1403662143,IR -1403662144,1403662175,DE +1403662144,1403662175,A2 1403662176,1403662207,AE -1403662208,1403662271,DE +1403662208,1403662271,A2 1403662272,1403662303,AE -1403662304,1403662495,DE +1403662304,1403662495,A2 1403662496,1403662527,IR -1403662528,1403662655,DE +1403662528,1403662655,A2 1403662656,1403662687,IR -1403662688,1403662815,DE +1403662688,1403662815,A2 1403662816,1403662911,IR -1403662912,1403662943,DE +1403662912,1403662943,A2 1403662944,1403662975,AE 1403662976,1403663039,IR -1403663040,1403663135,DE +1403663040,1403663135,A2 1403663136,1403663199,AE -1403663200,1403663359,DE +1403663200,1403663359,A2 1403663360,1403663487,IR -1403663488,1403663511,DE +1403663488,1403663511,A2 1403663512,1403663519,IR -1403663520,1403663527,DE +1403663520,1403663527,A2 1403663528,1403663535,IQ -1403663536,1403663567,DE +1403663536,1403663567,A2 1403663568,1403663575,AE -1403663576,1403663589,DE +1403663576,1403663589,A2 1403663590,1403663590,IR -1403663591,1403664919,DE +1403663591,1403664919,A2 1403664920,1403664927,TZ -1403664928,1403666431,DE +1403664928,1403665151,A2 +1403665152,1403665183,DE +1403665184,1403666431,A2 1403666432,1403682815,GB 1403682816,1403688959,A2 1403688960,1403692031,GB @@ -35230,10 +40455,15 @@ 1403994112,1404010495,AT 1404010496,1404026879,PL 1404026880,1404043263,ES -1404043264,1404076031,SE +1404043264,1404045311,EE +1404045312,1404051455,SE +1404051456,1404059647,KZ +1404059648,1404076031,NO 1404076032,1404084223,DE 1404084224,1404092415,NO -1404092416,1404184063,SE +1404092416,1404116991,SE +1404116992,1404125183,NO +1404125184,1404184063,SE 1404184064,1404184575,NO 1404184576,1404186623,SE 1404186624,1404187647,NO @@ -35270,28 +40500,40 @@ 1404232704,1404233215,CH 1404233216,1404234239,SE 1404234240,1404235775,HR -1404235776,1404305407,SE +1404235776,1404256255,SE +1404256256,1404305407,RU 1404305408,1404321791,NL -1404321792,1404379135,SE +1404321792,1404338175,RU +1404338176,1404379135,SE 1404379136,1404383231,AT 1404383232,1404387327,SE 1404387328,1404395519,DE 1404395520,1404403711,SE 1404403712,1404411903,NL -1404411904,1404645375,SE +1404411904,1404420095,SE +1404420096,1404436479,RU +1404436480,1404575743,SE +1404575744,1404583935,HR +1404583936,1404600319,KZ +1404600320,1404645375,SE 1404645376,1404645887,HR 1404645888,1404764159,SE 1404764160,1404768511,NL 1404768512,1404768767,SE 1404768768,1404769279,NL 1404769280,1404770303,SE -1404770304,1404772351,NL -1404772352,1404802047,SE +1404770304,1404780543,NL +1404780544,1404796927,SE +1404796928,1404801023,EE +1404801024,1404802047,SE 1404802048,1404803071,EE 1404803072,1404804095,LV 1404804096,1404805119,SE 1404805120,1404813311,AT -1404813312,1404829695,SE +1404813312,1404815871,EE +1404815872,1404816383,LT +1404816384,1404821503,NL +1404821504,1404829695,SE 1404829696,1404870655,RU 1404870656,1404872703,LT 1404872704,1404874751,SE @@ -35299,14 +40541,16 @@ 1404875776,1404876799,LT 1404876800,1404895231,SE 1404895232,1404927999,DE -1404928000,1404952575,SE +1404928000,1404944383,SE +1404944384,1404952575,DE 1404952576,1404960767,NL 1404960768,1405050879,SE 1405050880,1405059071,AT 1405059072,1405063167,SE 1405063168,1405067263,NO 1405067264,1405075455,DE -1405075456,1405091839,SE +1405075456,1405083647,NL +1405083648,1405091839,SE 1405091840,1406140415,FR 1406140416,1406205951,CZ 1406205952,1406271487,SE @@ -35339,7 +40583,9 @@ 1406716928,1406717439,AT 1406717440,1406717695,NL 1406717696,1406717951,DE -1406717952,1406719487,GB +1406717952,1406718015,GB +1406718016,1406718019,AT +1406718020,1406719487,GB 1406719488,1406719743,AT 1406719744,1406719999,GB 1406720000,1406721023,AT @@ -35380,6 +40626,7 @@ 1406763008,1406771199,BE 1406771200,1406779391,GB 1406779392,1406787583,RU +1406787584,1406795775,ES 1406795776,1406803967,GB 1406803968,1406812159,DE 1406812160,1406820351,SE @@ -35401,15 +40648,14 @@ 1406935040,1406951423,RU 1406951424,1406959615,PL 1406959616,1406964287,DE -1406964288,1406964319,NL -1406964320,1406964327,DE -1406964328,1406964351,NL +1406964288,1406964351,NL 1406964352,1406964735,DE 1406964736,1406964927,US 1406964928,1406967295,DE 1406967296,1406967327,GB 1406967328,1406967343,NL -1406967344,1406967807,DE +1406967344,1406967359,GB +1406967360,1406967807,DE 1406967808,1406975999,RU 1406976000,1406984191,IE 1406984192,1407000575,RU @@ -35425,9 +40671,7 @@ 1407049728,1407057919,DE 1407057920,1407066111,RU 1407066112,1407074303,LU -1407074304,1407082623,RU -1407082624,1407082639,DE -1407082640,1407089663,RU +1407074304,1407089663,RU 1407089664,1407090687,US 1407090688,1407098879,CH 1407098880,1407107071,BG @@ -35436,9 +40680,20 @@ 1407123456,1407131647,SE 1407131648,1407139839,NL 1407139840,1407148031,DE -1407148032,1407152903,GB +1407148032,1407148295,GB +1407148296,1407148303,SE +1407148304,1407149695,GB +1407149696,1407149759,CY +1407149760,1407151615,GB +1407151616,1407151871,SE +1407151872,1407152259,GB +1407152260,1407152263,IE +1407152264,1407152287,US +1407152288,1407152903,GB 1407152904,1407152927,NL -1407152928,1407156223,GB +1407152928,1407154711,GB +1407154712,1407154719,SE +1407154720,1407156223,GB 1407156224,1407164415,LV 1407164416,1407172607,PT 1407172608,1407180799,GB @@ -35455,16 +40710,13 @@ 1407516728,1407516735,NG 1407516736,1407516743,UG 1407516744,1407516751,LR -1407516752,1407516759,SL -1407516760,1407516767,A2 +1407516752,1407516767,A2 1407516768,1407516775,AO 1407516776,1407516783,A2 1407516784,1407516791,NG 1407516792,1407516807,A2 1407516808,1407516815,NG -1407516816,1407516831,A2 -1407516832,1407516839,NG -1407516840,1407516847,A2 +1407516816,1407516847,A2 1407516848,1407516855,NG 1407516856,1407516863,A2 1407516864,1407516871,NG @@ -35472,12 +40724,28 @@ 1407516880,1407516895,NG 1407516896,1407516911,A2 1407516912,1407516927,NG -1407516928,1407517183,ZW +1407516928,1407516935,A2 +1407516936,1407516951,NG +1407516952,1407516959,A2 +1407516960,1407516967,NG +1407516968,1407516975,A2 +1407516976,1407516983,GN +1407516984,1407516991,KE +1407516992,1407516999,CD +1407517000,1407517023,A2 +1407517024,1407517031,GQ +1407517032,1407517039,NG +1407517040,1407517047,A2 +1407517048,1407517055,GQ +1407517056,1407517151,A2 +1407517152,1407517159,CD +1407517160,1407517167,ML +1407517168,1407517175,A2 +1407517176,1407517183,NG 1407517184,1407517311,GB 1407517312,1407517383,A2 1407517384,1407517391,CD -1407517392,1407517415,A2 -1407517416,1407517423,NG +1407517392,1407517423,A2 1407517424,1407517431,ZW 1407517432,1407517439,NG 1407517440,1407517695,A2 @@ -35487,8 +40755,8 @@ 1407517952,1407518015,SL 1407518016,1407518031,ZA 1407518032,1407518039,A2 -1407518040,1407518047,CD -1407518048,1407518063,NG +1407518040,1407518055,CD +1407518056,1407518063,NG 1407518064,1407518079,A2 1407518080,1407518111,LR 1407518112,1407518127,NG @@ -35499,13 +40767,11 @@ 1407518160,1407518167,NG 1407518168,1407518175,CD 1407518176,1407518183,A2 -1407518184,1407518191,NG -1407518192,1407518199,A2 +1407518184,1407518199,NG 1407518200,1407518207,AE 1407518208,1407518215,ZW -1407518216,1407518239,A2 -1407518240,1407518247,NG -1407518248,1407518255,A2 +1407518216,1407518231,A2 +1407518232,1407518255,NG 1407518256,1407518263,CD 1407518264,1407518269,GH 1407518270,1407518335,A2 @@ -35514,10 +40780,10 @@ 1407518352,1407518359,A2 1407518360,1407518367,NG 1407518368,1407518375,ZA -1407518376,1407518383,CD -1407518384,1407518783,A2 -1407518784,1407518815,CD -1407518816,1407518831,A2 +1407518376,1407518383,AO +1407518384,1407518391,A2 +1407518392,1407518399,CD +1407518400,1407518831,A2 1407518832,1407518847,NG 1407518848,1407518911,FR 1407518912,1407518943,NG @@ -35544,7 +40810,7 @@ 1407519160,1407519167,AO 1407519168,1407519175,A2 1407519176,1407519183,SL -1407519184,1407519191,NG +1407519184,1407519191,UG 1407519192,1407519199,CD 1407519200,1407519207,A2 1407519208,1407519215,TG @@ -35552,53 +40818,58 @@ 1407519224,1407519231,A2 1407519232,1407519615,NG 1407519616,1407519751,A2 -1407519752,1407519767,NG +1407519752,1407519759,NG +1407519760,1407519767,CD 1407519768,1407519775,GN 1407519776,1407519783,A2 -1407519784,1407519823,NG +1407519784,1407519791,IQ +1407519792,1407519799,NG +1407519800,1407519815,A2 +1407519816,1407519823,NG 1407519824,1407519831,A2 1407519832,1407519839,SD -1407519840,1407519855,NG +1407519840,1407519847,ML +1407519848,1407519855,NG 1407519856,1407519863,GN 1407519864,1407519871,NG -1407519872,1407519879,A2 -1407519880,1407519895,NG +1407519872,1407519879,IL +1407519880,1407519887,NG +1407519888,1407519895,CD 1407519896,1407519903,GN 1407519904,1407519911,NG 1407519912,1407519919,GN 1407519920,1407519943,A2 -1407519944,1407519951,NG -1407519952,1407519959,A2 -1407519960,1407519983,NG -1407519984,1407519991,A2 -1407519992,1407519999,NG -1407520000,1407520007,CD -1407520008,1407520023,NG +1407519944,1407519959,CD +1407519960,1407519967,GB +1407519968,1407519983,NG +1407519984,1407519991,SD +1407519992,1407520023,NG 1407520024,1407520031,A2 1407520032,1407520039,GN 1407520040,1407520047,A2 -1407520048,1407520063,ZW -1407520064,1407520071,A2 +1407520048,1407520055,GB +1407520056,1407520071,A2 1407520072,1407520079,CM 1407520080,1407520087,NG -1407520088,1407520103,GN +1407520088,1407520103,A2 1407520104,1407520111,SD -1407520112,1407520119,GN +1407520112,1407520119,A2 1407520120,1407520127,NE -1407520128,1407520151,GN +1407520128,1407520135,GN +1407520136,1407520143,CD +1407520144,1407520151,GN 1407520152,1407520152,A2 1407520153,1407520159,GN 1407520160,1407520167,IL 1407520168,1407520175,GN 1407520176,1407520207,A2 1407520208,1407520215,NG -1407520216,1407520223,NE +1407520216,1407520223,CD 1407520224,1407520231,SD -1407520232,1407520239,NG -1407520240,1407520271,A2 +1407520232,1407520271,A2 1407520272,1407520279,NG -1407520280,1407520303,A2 -1407520304,1407520327,NG +1407520280,1407520311,A2 +1407520312,1407520327,NG 1407520328,1407520335,SL 1407520336,1407520351,A2 1407520352,1407520359,NG @@ -35610,8 +40881,8 @@ 1407520424,1407520439,A2 1407520440,1407520447,CD 1407520448,1407520463,NG -1407520464,1407520519,A2 -1407520520,1407520527,CD +1407520464,1407520511,A2 +1407520512,1407520527,CD 1407520528,1407520543,NG 1407520544,1407520551,A2 1407520552,1407520559,NG @@ -35622,43 +40893,43 @@ 1407520600,1407520607,A2 1407520608,1407520615,AO 1407520616,1407520623,A2 -1407520624,1407520631,NG -1407520632,1407520639,A2 -1407520640,1407520655,NG +1407520624,1407520655,NG 1407520656,1407520663,GA -1407520664,1407520687,A2 +1407520664,1407520671,CD +1407520672,1407520687,A2 1407520688,1407520695,NG 1407520696,1407520711,A2 1407520712,1407520719,NG -1407520720,1407520735,A2 +1407520720,1407520727,A2 +1407520728,1407520735,AO 1407520736,1407520743,LR 1407520744,1407520751,NG -1407520752,1407520759,A2 +1407520752,1407520759,BF 1407520760,1407520767,CD -1407520768,1407520775,ZW +1407520768,1407520775,TZ 1407520776,1407520783,CD 1407520784,1407520791,SD -1407520792,1407520807,A2 -1407520808,1407520815,CI -1407520816,1407520823,GQ +1407520792,1407520799,ZA +1407520800,1407520807,A2 +1407520808,1407520815,MU +1407520816,1407520823,ZW 1407520824,1407520831,CI -1407520832,1407520839,NG +1407520832,1407520839,SO 1407520840,1407520847,A2 1407520848,1407520855,ZM 1407520856,1407520863,A2 1407520864,1407520871,TZ -1407520872,1407520879,CD -1407520880,1407520887,ZM -1407520888,1407520895,CD +1407520872,1407520887,CD +1407520888,1407520895,TZ 1407520896,1407520903,AO 1407520904,1407520911,NG 1407520912,1407520919,ZW 1407520920,1407520927,IQ 1407520928,1407520935,A2 1407520936,1407520943,CD -1407520944,1407520951,A2 +1407520944,1407520951,TZ 1407520952,1407520959,ZM -1407520960,1407520967,TZ +1407520960,1407520967,NG 1407520968,1407520975,A2 1407520976,1407520991,ZM 1407520992,1407520999,IQ @@ -35667,8 +40938,8 @@ 1407521032,1407521047,A2 1407521048,1407521055,NG 1407521056,1407521063,KE -1407521064,1407521071,A2 -1407521072,1407521079,NG +1407521064,1407521071,NG +1407521072,1407521079,TZ 1407521080,1407521087,UG 1407521088,1407521095,NG 1407521096,1407521103,A2 @@ -35685,74 +40956,104 @@ 1407521184,1407521199,CD 1407521200,1407521207,A2 1407521208,1407521215,IQ -1407521216,1407521223,NG +1407521216,1407521223,MU 1407521224,1407521231,TZ 1407521232,1407521239,LR 1407521240,1407521247,A2 1407521248,1407521279,GH 1407521280,1407521415,A2 1407521416,1407521423,LR -1407521424,1407522319,A2 +1407521424,1407521535,A2 +1407521536,1407521709,NG +1407521710,1407522319,A2 1407522320,1407522327,TG -1407522328,1407522335,NG +1407522328,1407522335,A2 1407522336,1407522351,SO 1407522352,1407522359,CD -1407522360,1407522367,NG -1407522368,1407522383,GQ -1407522384,1407522391,A2 +1407522360,1407522367,FR +1407522368,1407522375,GQ +1407522376,1407522391,A2 1407522392,1407522407,NG 1407522408,1407522415,ZW -1407522416,1407522423,NG +1407522416,1407522423,SD 1407522424,1407522431,A2 -1407522432,1407522439,IQ -1407522440,1407522440,NG -1407522441,1407522447,A2 -1407522448,1407522455,UG +1407522432,1407522439,ZM +1407522440,1407522455,UG 1407522456,1407522463,ML -1407522464,1407522479,NG +1407522464,1407522471,A2 +1407522472,1407522479,LR 1407522480,1407522487,TZ 1407522488,1407522495,ZW -1407522496,1407522503,NG -1407522504,1407522527,A2 +1407522496,1407522503,LR +1407522504,1407522511,ZW +1407522512,1407522519,UG +1407522520,1407522527,A2 1407522528,1407522535,ZM -1407522536,1407522551,NG -1407522552,1407522559,UG +1407522536,1407522543,NG +1407522544,1407522559,UG 1407522560,1407522567,MZ 1407522568,1407522575,NG 1407522576,1407522583,A2 -1407522584,1407522591,NG -1407522592,1407522599,A2 +1407522584,1407522591,GL +1407522592,1407522599,UG 1407522600,1407522607,ZM -1407522608,1407522615,A2 -1407522616,1407522631,NG +1407522608,1407522615,AO +1407522616,1407522623,A2 +1407522624,1407522631,NG 1407522632,1407522639,MW 1407522640,1407522647,GQ 1407522648,1407522655,NG 1407522656,1407522663,CI 1407522664,1407522671,A2 1407522672,1407522679,ZM -1407522680,1407522687,IQ -1407522688,1407522711,NG +1407522680,1407522687,SD +1407522688,1407522695,A2 +1407522696,1407522703,GL +1407522704,1407522711,NG 1407522712,1407522719,BJ 1407522720,1407522727,A2 1407522728,1407522735,ZW -1407522736,1407522751,NG +1407522736,1407522743,LR +1407522744,1407522751,NG 1407522752,1407522767,ZM 1407522768,1407522775,A2 -1407522776,1407522791,NG +1407522776,1407522783,TD +1407522784,1407522791,ZW 1407522792,1407522799,A2 -1407522800,1407522807,ZM -1407522808,1407522815,NG -1407522816,1407522831,A2 -1407522832,1407522839,IQ -1407522840,1407522871,A2 +1407522800,1407522807,NG +1407522808,1407522815,A2 +1407522816,1407522823,CD +1407522824,1407522831,NG +1407522832,1407522839,MZ +1407522840,1407522847,NG +1407522848,1407522855,TZ +1407522856,1407522863,ZW +1407522864,1407522871,TZ 1407522872,1407522879,IQ -1407522880,1407522991,A2 +1407522880,1407522887,MU +1407522888,1407522895,A2 +1407522896,1407522903,UG +1407522904,1407522911,KE +1407522912,1407522919,CG +1407522920,1407522927,A2 +1407522928,1407522935,GR +1407522936,1407522943,A2 +1407522944,1407522951,CD +1407522952,1407522967,ZW +1407522968,1407522975,MU +1407522976,1407522983,CD +1407522984,1407522991,A2 1407522992,1407522999,CD -1407523000,1407523071,A2 -1407523072,1407523088,NG -1407523089,1407523095,A2 -1407523096,1407523103,NG +1407523000,1407523007,A2 +1407523008,1407523015,NG +1407523016,1407523023,KE +1407523024,1407523031,MU +1407523032,1407523055,A2 +1407523056,1407523063,MU +1407523064,1407523071,A2 +1407523072,1407523079,CD +1407523080,1407523088,NG +1407523089,1407523103,A2 1407523104,1407523111,UG 1407523112,1407523119,ZW 1407523120,1407523127,CD @@ -35760,13 +41061,21 @@ 1407523136,1407523143,BJ 1407523144,1407523159,A2 1407523160,1407523167,LR -1407523168,1407523183,UG -1407523184,1407523215,NG +1407523168,1407523175,A2 +1407523176,1407523183,UG +1407523184,1407523191,NG +1407523192,1407523199,A2 +1407523200,1407523207,NG +1407523208,1407523215,SD 1407523216,1407523223,BI 1407523224,1407523247,AO -1407523248,1407523279,NG -1407523280,1407523287,MZ -1407523288,1407523311,NG +1407523248,1407523255,A2 +1407523256,1407523271,NG +1407523272,1407523279,US +1407523280,1407523287,ZW +1407523288,1407523295,NG +1407523296,1407523303,GR +1407523304,1407523311,NG 1407523312,1407523327,BJ 1407523328,1407523335,MW 1407523336,1407523351,A2 @@ -35779,22 +41088,34 @@ 1407523536,1407523551,NG 1407523552,1407523559,CM 1407523560,1407523567,KE -1407523568,1407523839,A2 +1407523568,1407523583,A2 +1407523584,1407523591,IQ +1407523592,1407523607,A2 +1407523608,1407523615,IQ +1407523616,1407523623,A2 +1407523624,1407523655,IQ +1407523656,1407523663,A2 +1407523664,1407523711,IQ +1407523712,1407523839,A2 1407523840,1407524351,MW 1407524352,1407524607,GB 1407524608,1407524615,ZW -1407524616,1407524623,CM -1407524624,1407524631,A2 -1407524632,1407524647,NG +1407524616,1407524623,CD +1407524624,1407524631,ZA +1407524632,1407524639,NG +1407524640,1407524647,KE 1407524648,1407524655,CD -1407524656,1407524671,NG +1407524656,1407524663,ZW +1407524664,1407524671,CD 1407524672,1407524679,A2 1407524680,1407524687,LR 1407524688,1407524703,MZ 1407524704,1407524711,A2 -1407524712,1407524719,CD +1407524712,1407524719,ZW 1407524720,1407524727,A2 -1407524728,1407524751,NG +1407524728,1407524735,NG +1407524736,1407524743,A2 +1407524744,1407524751,ZW 1407524752,1407524759,A2 1407524760,1407524767,CM 1407524768,1407524775,BW @@ -35806,34 +41127,39 @@ 1407524848,1407524855,A2 1407524856,1407524863,CD 1407524864,1407524879,A2 -1407524880,1407524887,NG -1407524888,1407524895,A2 +1407524880,1407524887,ZW +1407524888,1407524895,TZ 1407524896,1407524903,LR -1407524904,1407524927,NG -1407524928,1407524935,A2 -1407524936,1407524951,NG -1407524952,1407524959,CM +1407524904,1407524911,A2 +1407524912,1407524919,ZW +1407524920,1407524935,A2 +1407524936,1407524943,GR +1407524944,1407524951,ZW +1407524952,1407524959,UG 1407524960,1407524967,TZ 1407524968,1407524975,NG -1407524976,1407524991,A2 +1407524976,1407524983,CD +1407524984,1407524991,ZA 1407524992,1407524999,TZ 1407525000,1407525007,A2 1407525008,1407525015,TZ -1407525016,1407525023,BI +1407525016,1407525023,UG 1407525024,1407525031,NG -1407525032,1407525039,A2 +1407525032,1407525039,IL 1407525040,1407525047,ZA 1407525048,1407525055,NG -1407525056,1407525063,A2 -1407525064,1407525079,NG +1407525056,1407525063,ZA +1407525064,1407525071,SO +1407525072,1407525079,NG 1407525080,1407525087,A2 1407525088,1407525095,MW -1407525096,1407525111,NG +1407525096,1407525103,ZW +1407525104,1407525111,NG 1407525112,1407525119,ZA -1407525120,1407525127,NG +1407525120,1407525127,A2 1407525128,1407525135,SD 1407525136,1407525143,CD -1407525144,1407525151,A2 +1407525144,1407525151,TZ 1407525152,1407525167,CD 1407525168,1407525175,A2 1407525176,1407525183,CD @@ -35842,37 +41168,56 @@ 1407525208,1407525215,CD 1407525216,1407525231,A2 1407525232,1407525255,CD -1407525256,1407525263,NG +1407525256,1407525263,A2 1407525264,1407525287,CD 1407525288,1407525303,A2 1407525304,1407525319,CD 1407525320,1407525327,A2 1407525328,1407525343,CD -1407525344,1407525471,A2 +1407525344,1407525383,A2 +1407525384,1407525391,CD +1407525392,1407525399,A2 +1407525400,1407525407,KE +1407525408,1407525415,UG +1407525416,1407525423,A2 +1407525424,1407525431,UG +1407525432,1407525471,A2 1407525472,1407525479,UG -1407525480,1407526711,A2 +1407525480,1407525487,CD +1407525488,1407525503,A2 +1407525504,1407525511,UG +1407525512,1407525543,A2 +1407525544,1407525551,KE +1407525552,1407525575,A2 +1407525576,1407525583,LR +1407525584,1407525607,A2 +1407525608,1407525615,CD +1407525616,1407525623,A2 +1407525624,1407525631,SO +1407525632,1407525639,A2 +1407525640,1407525679,IQ +1407525680,1407525751,A2 +1407525752,1407525759,IQ +1407525760,1407526711,A2 1407526712,1407526719,GN 1407526720,1407529023,A2 1407529024,1407529087,NG -1407529088,1407529095,A2 -1407529096,1407529103,ZW +1407529088,1407529103,A2 1407529104,1407529111,NG -1407529112,1407529127,A2 -1407529128,1407529135,ZW -1407529136,1407529143,A2 +1407529112,1407529143,A2 1407529144,1407529151,ZW -1407529152,1407529183,A2 +1407529152,1407529175,A2 +1407529176,1407529183,SO 1407529184,1407529191,NG -1407529192,1407529199,A2 -1407529200,1407529207,IQ +1407529192,1407529207,A2 1407529208,1407529215,NG 1407529216,1407531007,A2 1407531008,1407531519,NG 1407531520,1407531551,CD 1407531552,1407531559,SD -1407531560,1407531567,NG +1407531560,1407531567,A2 1407531568,1407531575,CD -1407531576,1407531583,UG +1407531576,1407531583,A2 1407531584,1407531591,CD 1407531592,1407531599,A2 1407531600,1407531607,NG @@ -35883,8 +41228,7 @@ 1407531656,1407531663,CD 1407531664,1407531671,MZ 1407531672,1407531687,CD -1407531688,1407531695,A2 -1407531696,1407531703,CD +1407531688,1407531703,A2 1407531704,1407531711,IQ 1407531712,1407531719,A2 1407531720,1407531735,CD @@ -35910,16 +41254,14 @@ 1407533056,1407533311,NG 1407533312,1407533327,AO 1407533328,1407533343,A2 -1407533344,1407533359,NG -1407533360,1407533375,A2 +1407533344,1407533375,NG 1407533376,1407533407,CD 1407533408,1407533423,A2 1407533424,1407533567,GH 1407533568,1407533583,NG 1407533584,1407533607,A2 1407533608,1407533631,NG -1407533632,1407533663,IQ -1407533664,1407533679,A2 +1407533632,1407533679,A2 1407533680,1407533695,NG 1407533696,1407533711,A2 1407533712,1407533719,ZW @@ -35938,7 +41280,7 @@ 1407534336,1407534343,CM 1407534344,1407534359,A2 1407534360,1407534383,NG -1407534384,1407534391,A2 +1407534384,1407534391,GR 1407534392,1407534399,AO 1407534400,1407534407,NG 1407534408,1407534415,CI @@ -35959,25 +41301,31 @@ 1407534848,1407535103,CM 1407535104,1407535615,GA 1407535616,1407535623,CD -1407535624,1407535631,IQ +1407535624,1407535631,A2 1407535632,1407535639,SD -1407535640,1407535647,A2 -1407535648,1407535663,NG -1407535664,1407535671,A2 +1407535640,1407535647,CD +1407535648,1407535655,NG +1407535656,1407535671,A2 1407535672,1407535679,SD 1407535680,1407535687,GN -1407535688,1407535711,A2 +1407535688,1407535695,A2 +1407535696,1407535703,GN +1407535704,1407535711,CD 1407535712,1407535719,GB 1407535720,1407535735,A2 1407535736,1407535743,NG -1407535744,1407535775,A2 +1407535744,1407535751,SD +1407535752,1407535759,GB +1407535760,1407535775,A2 1407535776,1407535783,GN -1407535784,1407535815,A2 +1407535784,1407535799,A2 +1407535800,1407535807,NG +1407535808,1407535815,A2 1407535816,1407535823,NG -1407535824,1407535831,A2 -1407535832,1407535839,GB -1407535840,1407535847,NG -1407535848,1407536127,A2 +1407535824,1407535847,A2 +1407535848,1407535855,CD +1407535856,1407535863,SD +1407535864,1407536127,A2 1407536128,1407536639,GA 1407536640,1407536895,CD 1407536896,1407536903,A2 @@ -36000,43 +41348,40 @@ 1407537112,1407537119,LR 1407537120,1407537135,A2 1407537136,1407537143,NG -1407537144,1407537183,A2 +1407537144,1407537151,A2 +1407537152,1407537159,UG +1407537160,1407537183,A2 1407537184,1407537191,NG -1407537192,1407537199,A2 -1407537200,1407537207,NG +1407537192,1407537207,A2 1407537208,1407537215,BE -1407537216,1407537231,A2 -1407537232,1407537255,NG -1407537256,1407537263,A2 -1407537264,1407537279,NG -1407537280,1407537287,A2 -1407537288,1407537295,NG -1407537296,1407537303,UG -1407537304,1407537335,A2 -1407537336,1407537351,NG +1407537216,1407537239,A2 +1407537240,1407537255,NG +1407537256,1407537287,A2 +1407537288,1407537303,UG +1407537304,1407537311,LR +1407537312,1407537319,A2 +1407537320,1407537327,NG +1407537328,1407537343,A2 +1407537344,1407537351,NG 1407537352,1407537367,A2 1407537368,1407537383,NG 1407537384,1407537399,A2 1407537400,1407537407,BF -1407537408,1407537415,A2 -1407537416,1407537423,GH -1407537424,1407537431,A2 -1407537432,1407537455,NG +1407537408,1407537431,A2 +1407537432,1407537439,NG +1407537440,1407537447,LR +1407537448,1407537455,UG 1407537456,1407537463,AO 1407537464,1407537479,A2 1407537480,1407537487,CM 1407537488,1407537495,GH -1407537496,1407537503,A2 -1407537504,1407537511,NG +1407537496,1407537511,A2 1407537512,1407537519,LR -1407537520,1407537535,A2 -1407537536,1407537543,LR +1407537520,1407537543,A2 1407537544,1407537551,AO -1407537552,1407537559,A2 -1407537560,1407537567,NG -1407537568,1407537575,A2 -1407537576,1407537599,NG -1407537600,1407537607,A2 +1407537552,1407537575,A2 +1407537576,1407537591,NG +1407537592,1407537607,A2 1407537608,1407537615,CM 1407537616,1407537623,A2 1407537624,1407537639,NG @@ -36069,30 +41414,25 @@ 1407538040,1407538047,CD 1407538048,1407538055,NG 1407538056,1407538071,LU -1407538072,1407538079,NG +1407538072,1407538079,A2 1407538080,1407538087,LR 1407538088,1407538095,AO -1407538096,1407538103,CD -1407538104,1407538111,A2 +1407538096,1407538111,A2 1407538112,1407538119,LR -1407538120,1407538135,NG -1407538136,1407538143,A2 +1407538120,1407538127,NG +1407538128,1407538143,A2 1407538144,1407538151,GN 1407538152,1407538167,A2 1407538168,1407538175,IQ -1407538176,1407538183,A2 -1407538184,1407538191,NG -1407538192,1407538199,A2 -1407538200,1407538207,NG -1407538208,1407538208,A2 -1407538209,1407538271,NG +1407538176,1407538199,A2 +1407538200,1407538271,NG 1407538272,1407538279,CO 1407538280,1407538287,A2 1407538288,1407538295,NG 1407538296,1407538303,AO 1407538304,1407538311,NG 1407538312,1407538319,CD -1407538320,1407538327,NG +1407538320,1407538327,A2 1407538328,1407538335,CD 1407538336,1407538343,A2 1407538344,1407538351,CD @@ -36109,9 +41449,7 @@ 1407538472,1407538479,NG 1407538480,1407538663,A2 1407538664,1407538679,NG -1407538680,1407538751,A2 -1407538752,1407538783,NG -1407538784,1407538863,A2 +1407538680,1407538863,A2 1407538864,1407538879,GE 1407538880,1407538887,A2 1407538888,1407538895,NG @@ -36134,27 +41472,87 @@ 1407539152,1407539167,A2 1407539168,1407539175,TD 1407539176,1407539183,GH -1407539184,1407539199,NG +1407539184,1407539191,A2 +1407539192,1407539199,NG 1407539200,1407539455,GE -1407539456,1407539967,A2 +1407539456,1407539711,A2 +1407539712,1407539719,BE +1407539720,1407539727,A2 +1407539728,1407539735,GR +1407539736,1407539743,NG +1407539744,1407539759,A2 +1407539760,1407539767,GH +1407539768,1407539775,GR +1407539776,1407539783,A2 +1407539784,1407539791,GR +1407539792,1407539799,NG +1407539800,1407539823,A2 +1407539824,1407539839,NG +1407539840,1407539847,A2 +1407539848,1407539855,NG +1407539856,1407539863,CD +1407539864,1407539879,NG +1407539880,1407539895,A2 +1407539896,1407539903,CD +1407539904,1407539911,A2 +1407539912,1407539927,NG +1407539928,1407539935,GN +1407539936,1407539943,A2 +1407539944,1407539951,CD +1407539952,1407539959,LR +1407539960,1407539967,A2 1407539968,1407539975,CD -1407539976,1407540007,A2 -1407540008,1407540015,NG -1407540016,1407540055,A2 +1407539976,1407540055,A2 1407540056,1407540063,NG 1407540064,1407540071,A2 1407540072,1407540079,NG 1407540080,1407540111,A2 1407540112,1407540119,TG -1407540120,1407540127,NG -1407540128,1407540135,A2 +1407540120,1407540135,A2 1407540136,1407540143,NG 1407540144,1407540159,A2 1407540160,1407540167,CD -1407540168,1407540183,A2 -1407540184,1407540199,NG +1407540168,1407540199,A2 1407540200,1407540215,CD -1407540216,1407541471,A2 +1407540216,1407540223,A2 +1407540224,1407540231,AO +1407540232,1407540247,NG +1407540248,1407540255,A2 +1407540256,1407540263,CD +1407540264,1407540271,A2 +1407540272,1407540279,LR +1407540280,1407540287,NG +1407540288,1407540295,CD +1407540296,1407540303,A2 +1407540304,1407540311,AO +1407540312,1407540319,A2 +1407540320,1407540327,CD +1407540328,1407540343,A2 +1407540344,1407540351,CF +1407540352,1407540359,TD +1407540360,1407540367,A2 +1407540368,1407540375,LR +1407540376,1407540383,A2 +1407540384,1407540391,NG +1407540392,1407540415,A2 +1407540416,1407540423,NG +1407540424,1407540431,A2 +1407540432,1407540439,CI +1407540440,1407540447,A2 +1407540448,1407540455,LR +1407540456,1407540479,A2 +1407540480,1407540487,CM +1407540488,1407540551,A2 +1407540552,1407540559,NG +1407540560,1407540991,A2 +1407540992,1407540999,CD +1407541000,1407541031,A2 +1407541032,1407541039,NG +1407541040,1407541047,A2 +1407541048,1407541055,NG +1407541056,1407541175,A2 +1407541176,1407541183,NG +1407541184,1407541471,A2 1407541472,1407541495,NG 1407541496,1407541535,A2 1407541536,1407541543,CM @@ -36173,8 +41571,7 @@ 1407542544,1407542551,LR 1407542552,1407542575,A2 1407542576,1407542583,CD -1407542584,1407542591,A2 -1407542592,1407542599,NG +1407542584,1407542599,A2 1407542600,1407542607,TG 1407542608,1407542623,A2 1407542624,1407542631,BJ @@ -36205,7 +41602,28 @@ 1407543256,1407543263,NG 1407543264,1407543279,A2 1407543280,1407543287,NG -1407543288,1407546367,A2 +1407543288,1407545855,A2 +1407545856,1407545863,CI +1407545864,1407545871,A2 +1407545872,1407545879,CD +1407545880,1407545895,A2 +1407545896,1407545903,CD +1407545904,1407545911,A2 +1407545912,1407545927,NG +1407545928,1407545935,A2 +1407545936,1407545943,ZA +1407545944,1407545951,A2 +1407545952,1407545959,NG +1407545960,1407545967,A2 +1407545968,1407545975,GQ +1407545976,1407545983,A2 +1407545984,1407545991,MU +1407545992,1407545999,GN +1407546000,1407546023,A2 +1407546024,1407546047,NG +1407546048,1407546063,A2 +1407546064,1407546071,ML +1407546072,1407546367,A2 1407546368,1407546495,AE 1407546496,1407546799,A2 1407546800,1407546815,GH @@ -36217,17 +41635,15 @@ 1407547152,1407547167,A2 1407547168,1407547175,NG 1407547176,1407547183,GH -1407547184,1407547199,NG +1407547184,1407547191,UG +1407547192,1407547199,NG 1407547200,1407547207,AO 1407547208,1407547215,TD 1407547216,1407547239,A2 1407547240,1407547255,SL 1407547256,1407547263,A2 1407547264,1407547271,SL -1407547272,1407547279,NG -1407547280,1407547287,A2 -1407547288,1407547295,NG -1407547296,1407547303,A2 +1407547272,1407547303,A2 1407547304,1407547311,SL 1407547312,1407547327,NG 1407547328,1407547335,A2 @@ -36253,12 +41669,39 @@ 1407548416,1407548543,GE 1407548544,1407548711,A2 1407548712,1407548719,CD -1407548720,1407549183,A2 +1407548720,1407548927,A2 +1407548928,1407548943,NG +1407548944,1407548951,A2 +1407548952,1407548959,NG +1407548960,1407548967,A2 +1407548968,1407548975,CM +1407548976,1407548983,NG +1407548984,1407548991,CD +1407548992,1407549039,A2 +1407549040,1407549047,NG +1407549048,1407549055,A2 +1407549056,1407549063,NG +1407549064,1407549071,GA +1407549072,1407549079,NG +1407549080,1407549087,A2 +1407549088,1407549095,LR +1407549096,1407549127,A2 +1407549128,1407549135,NG +1407549136,1407549143,A2 +1407549144,1407549159,LR +1407549160,1407549167,A2 +1407549168,1407549183,NG 1407549184,1407549439,GE 1407549440,1407582207,RU 1407582208,1407614975,PL 1407614976,1407680511,ES -1407680512,1407681535,GB +1407680512,1407680679,FR +1407680680,1407681023,GB +1407681024,1407681087,ES +1407681088,1407681279,GB +1407681280,1407681291,ES +1407681292,1407681295,GB +1407681296,1407681535,ES 1407681536,1407681639,FR 1407681640,1407681983,GB 1407681984,1407681999,ES @@ -36277,9 +41720,7 @@ 1407702272,1407702783,GB 1407702784,1407702911,FR 1407702912,1407703039,GB -1407703040,1407703407,FR -1407703408,1407703415,GB -1407703416,1407703455,FR +1407703040,1407703455,FR 1407703456,1407703535,GB 1407703536,1407703871,FR 1407703872,1407703935,GB @@ -36293,16 +41734,16 @@ 1407704448,1407705207,GB 1407705208,1407705215,ES 1407705216,1407705247,GB -1407705248,1407705295,ES -1407705296,1407705599,GB +1407705248,1407705279,ES +1407705280,1407705599,GB 1407705600,1407705727,FR 1407705728,1407705759,GB 1407705760,1407705791,FR 1407705792,1407706367,GB 1407706368,1407706423,FR 1407706424,1407706431,GB -1407706432,1407706463,FR -1407706464,1407707703,GB +1407706432,1407706479,FR +1407706480,1407707703,GB 1407707704,1407707839,CH 1407707840,1407707903,GB 1407707904,1407707935,CH @@ -36318,13 +41759,26 @@ 1407712208,1407712223,FR 1407712224,1407712767,GB 1407712768,1407712831,DE -1407712832,1407712887,GB -1407712888,1407713279,DE +1407712832,1407712895,GB +1407712896,1407712911,DE +1407712912,1407712919,GB +1407712920,1407712927,DE +1407712928,1407712975,GB +1407712976,1407713239,DE +1407713240,1407713247,GB +1407713248,1407713263,DE +1407713264,1407713279,GB 1407713280,1407778815,NL 1407778816,1407844351,SE 1407844352,1407909887,RU 1407909888,1407975423,GR -1407975424,1408040959,DE +1407975424,1408013647,DE +1408013648,1408013655,A2 +1408013656,1408015312,DE +1408015313,1408015313,A2 +1408015314,1408035046,DE +1408035047,1408035047,A2 +1408035048,1408040959,DE 1408040960,1408106495,RU 1408106496,1408172031,PL 1408172032,1408237567,RU @@ -36333,9 +41787,17 @@ 1408303104,1408335871,LV 1408335872,1408336879,SE 1408336880,1408336887,FI -1408336888,1408340047,SE +1408336888,1408337695,SE +1408337696,1408337703,DK +1408337704,1408338807,SE +1408338808,1408338815,DK +1408338816,1408338959,SE +1408338960,1408338967,NO +1408338968,1408340047,SE 1408340048,1408340055,NO -1408340056,1408360935,SE +1408340056,1408353815,SE +1408353816,1408353823,DK +1408353824,1408360935,SE 1408360936,1408360943,DK 1408360944,1408368639,SE 1408368640,1408376831,NO @@ -36390,36 +41852,39 @@ 1409548288,1409810431,FR 1409810432,1409941503,GB 1409941504,1410007039,PL -1410007040,1410007551,DE +1410007040,1410007551,A2 1410007552,1410007807,IR -1410007808,1410008575,DE +1410007808,1410008575,A2 1410008576,1410008607,AE -1410008608,1410008831,DE +1410008608,1410008831,A2 1410008832,1410008911,US -1410008912,1410009343,DE +1410008912,1410009343,A2 1410009344,1410009479,US -1410009480,1410009487,DE +1410009480,1410009487,A2 1410009488,1410009535,GI -1410009536,1410010367,DE +1410009536,1410010367,A2 1410010368,1410010399,IR 1410010400,1410010431,LY -1410010432,1410010543,DE +1410010432,1410010543,A2 1410010544,1410010575,LY -1410010576,1410010599,DE +1410010576,1410010599,A2 1410010600,1410010607,IR 1410010608,1410010623,LY -1410010624,1410010687,DE +1410010624,1410010639,DE +1410010640,1410010687,A2 1410010688,1410010703,IR -1410010704,1410010719,DE +1410010704,1410010719,A2 1410010720,1410010751,LY -1410010752,1410010823,DE +1410010752,1410010823,A2 1410010824,1410010831,IR -1410010832,1410010879,DE +1410010832,1410010879,A2 1410010880,1410011135,IR -1410011136,1410012159,DE +1410011136,1410011647,DE +1410011648,1410012159,A2 1410012160,1410012415,IQ 1410012416,1410012447,AF -1410012448,1410013183,DE +1410012448,1410012671,A2 +1410012672,1410013183,DE 1410013184,1410013439,ES 1410013440,1410013471,IR 1410013472,1410013535,AE @@ -36430,35 +41895,35 @@ 1410013696,1410013727,KW 1410013728,1410013759,AE 1410013760,1410013791,IR -1410013792,1410013823,DE +1410013792,1410013823,A2 1410013824,1410013887,AF -1410013888,1410013919,DE +1410013888,1410013919,A2 1410013920,1410013951,KW 1410013952,1410013983,AE 1410013984,1410014015,IR 1410014016,1410014047,KW 1410014048,1410014079,AE -1410014080,1410014207,DE +1410014080,1410014207,A2 1410014208,1410014239,AE 1410014240,1410014335,IR 1410014336,1410014399,AE 1410014400,1410014463,ES 1410014464,1410014495,KW 1410014496,1410014591,IR -1410014592,1410014885,DE +1410014592,1410014885,A2 1410014886,1410014886,ES -1410014887,1410014895,DE +1410014887,1410014895,A2 1410014896,1410014927,IR 1410014928,1410014935,PA 1410014936,1410014943,IR 1410014944,1410014951,AE -1410014952,1410014966,DE +1410014952,1410014966,A2 1410014967,1410014967,IR -1410014968,1410014968,DE +1410014968,1410014968,A2 1410014969,1410014969,IR -1410014970,1410014972,DE +1410014970,1410014972,A2 1410014973,1410014974,AE -1410014975,1410015007,DE +1410014975,1410015007,A2 1410015008,1410015103,IR 1410015104,1410015135,ES 1410015136,1410015263,IR @@ -36474,142 +41939,146 @@ 1410016384,1410016415,IR 1410016416,1410016447,PA 1410016448,1410016543,IR -1410016544,1410016575,DE +1410016544,1410016575,A2 1410016576,1410016607,AE 1410016608,1410016639,PA 1410016640,1410016671,IR 1410016672,1410016703,PA -1410016704,1410016767,DE +1410016704,1410016767,A2 1410016768,1410016831,IR 1410016832,1410016863,AE 1410016864,1410016895,IR 1410016896,1410017023,AE 1410017024,1410017055,PA 1410017056,1410017119,IR -1410017120,1410017279,DE +1410017120,1410017279,A2 1410017280,1410017407,IR -1410017408,1410017791,DE +1410017408,1410017791,A2 1410017792,1410018047,IR -1410018048,1410018303,DE +1410018048,1410018303,A2 1410018304,1410018559,AE -1410018560,1410018591,DE +1410018560,1410018591,A2 1410018592,1410018607,IR 1410018608,1410018623,LY -1410018624,1410020103,DE +1410018624,1410018815,A2 +1410018816,1410018831,DE +1410018832,1410018847,A2 +1410018848,1410018863,DE +1410018864,1410020103,A2 1410020104,1410020111,US -1410020112,1410020351,DE +1410020112,1410020351,A2 1410020352,1410020863,US -1410020864,1410021375,DE +1410020864,1410021375,A2 1410021376,1410021407,IR -1410021408,1410021631,DE +1410021408,1410021631,A2 1410021632,1410021663,IR -1410021664,1410021791,DE +1410021664,1410021791,A2 1410021792,1410021823,IR -1410021824,1410022527,DE +1410021824,1410022527,A2 1410022528,1410022591,AE 1410022592,1410022655,IR -1410022656,1410022911,DE +1410022656,1410022911,A2 1410022912,1410023423,IR -1410023424,1410024287,DE +1410023424,1410024287,A2 1410024288,1410024319,IR -1410024320,1410024447,DE +1410024320,1410024447,A2 1410024448,1410025087,IR -1410025088,1410025215,DE +1410025088,1410025215,A2 1410025216,1410025247,ES -1410025248,1410025279,DE +1410025248,1410025279,A2 1410025280,1410025311,AE 1410025312,1410025343,ES 1410025344,1410025407,IR 1410025408,1410025439,AE -1410025440,1410025503,DE +1410025440,1410025503,A2 1410025504,1410025519,AE 1410025520,1410025535,IR 1410025536,1410025567,ES -1410025568,1410025599,DE +1410025568,1410025599,A2 1410025600,1410025727,IR 1410025728,1410025759,AE -1410025760,1410025791,DE +1410025760,1410025791,A2 1410025792,1410025823,AE 1410025824,1410025855,IR -1410025856,1410025983,DE +1410025856,1410025983,A2 1410025984,1410026015,IR 1410026016,1410026047,AE 1410026048,1410026111,ES -1410026112,1410026143,DE +1410026112,1410026143,A2 1410026144,1410026175,IR 1410026176,1410026207,AE 1410026208,1410026239,IR 1410026240,1410026367,AE 1410026368,1410026431,IR -1410026432,1410026463,DE +1410026432,1410026463,A2 1410026464,1410026751,IR 1410026752,1410026815,CA -1410026816,1410026847,DE +1410026816,1410026847,A2 1410026848,1410026911,IR -1410026912,1410026943,DE +1410026912,1410026943,A2 1410026944,1410027006,IR -1410027007,1410027007,DE +1410027007,1410027007,A2 1410027008,1410027263,KW 1410027264,1410027519,AF -1410027520,1410027711,DE +1410027520,1410027711,A2 1410027712,1410027775,IR -1410027776,1410028799,DE +1410027776,1410028799,A2 1410028800,1410028831,IR -1410028832,1410035327,DE +1410028832,1410035327,A2 1410035328,1410035343,IR -1410035344,1410035983,DE +1410035344,1410035983,A2 1410035984,1410035999,PA -1410036000,1410036031,DE +1410036000,1410036031,A2 1410036032,1410036063,PA -1410036064,1410036111,DE +1410036064,1410036111,A2 1410036112,1410036127,PA -1410036128,1410036191,DE +1410036128,1410036191,A2 1410036192,1410036207,PA -1410036208,1410036735,DE +1410036208,1410036735,A2 1410036736,1410036751,PA -1410036752,1410036991,DE +1410036752,1410036991,A2 1410036992,1410037247,LB -1410037248,1410037759,DE +1410037248,1410037759,A2 1410037760,1410038015,US -1410038016,1410039807,DE -1410039808,1410041855,AE -1410041856,1410042815,DE +1410038016,1410042815,A2 1410042816,1410042831,US -1410042832,1410043903,DE -1410043904,1410044415,JO -1410044416,1410044927,DE +1410042832,1410044927,A2 1410044928,1410045183,VG -1410045184,1410045439,DE +1410045184,1410045439,IQ 1410045440,1410045695,LB -1410045696,1410072319,DE +1410045696,1410071815,A2 +1410071816,1410071839,DE +1410071840,1410072319,A2 1410072320,1410072575,AE 1410072576,1410203647,GB 1410203648,1410204439,FR 1410204440,1410204455,IT 1410204456,1410204479,FR 1410204480,1410204495,PT -1410204496,1410206543,FR -1410206544,1410206551,ES -1410206552,1410212863,FR +1410204496,1410212863,FR 1410212864,1410213119,GB -1410213120,1410221663,FR -1410221664,1410221671,GB -1410221672,1410234839,FR +1410213120,1410234839,FR 1410234840,1410234847,A2 -1410234848,1410250551,FR -1410250552,1410250559,GB -1410250560,1410261007,FR +1410234848,1410258527,FR +1410258528,1410258535,ES +1410258536,1410261007,FR 1410261008,1410261015,GB 1410261016,1410261663,FR 1410261664,1410261671,GB -1410261672,1410262799,FR +1410261672,1410262023,FR +1410262024,1410262031,BE +1410262032,1410262799,FR 1410262800,1410262815,DE -1410262816,1410267039,FR +1410262816,1410266303,FR +1410266304,1410266311,IE +1410266312,1410267039,FR 1410267040,1410267055,ES 1410267056,1410267071,GB 1410267072,1410267087,IT 1410267088,1410269183,FR -1410269184,1410318335,LT +1410269184,1410278399,LT +1410278400,1410278655,LV +1410278656,1410318335,LT 1410318336,1410319359,LV 1410319360,1410334719,LT 1410334720,1410341887,ES @@ -36653,9 +42122,7 @@ 1410514944,1410523135,GB 1410523136,1410531327,PT 1410531328,1410539519,DE -1410539520,1410542591,GB -1410542592,1410543103,IE -1410543104,1410544415,GB +1410539520,1410544415,GB 1410544416,1410544431,DE 1410544432,1410544447,FR 1410544448,1410547711,GB @@ -36670,10 +42137,12 @@ 1410573696,1410573711,RU 1410573712,1410573759,DE 1410573760,1410573775,BA -1410573776,1410573807,DE -1410573808,1410573815,IT +1410573776,1410573799,DE +1410573800,1410573815,IT 1410573816,1410573823,RU -1410573824,1410574527,DE +1410573824,1410574511,DE +1410574512,1410574519,CH +1410574520,1410574527,DE 1410574528,1410574543,IT 1410574544,1410574559,DE 1410574560,1410574575,RU @@ -36681,8 +42150,7 @@ 1410574584,1410574591,RU 1410574592,1410574719,DE 1410574720,1410574727,RU -1410574728,1410574847,DE -1410574848,1410575103,GB +1410574728,1410575103,DE 1410575104,1410575111,US 1410575112,1410575119,IT 1410575120,1410575135,DE @@ -36703,9 +42171,7 @@ 1410575840,1410575855,IT 1410575856,1410575871,DE 1410575872,1410575999,DK -1410576000,1410576063,DE -1410576064,1410576127,IT -1410576128,1410576255,DE +1410576000,1410576255,DE 1410576256,1410576383,IT 1410576384,1410588671,DE 1410588672,1410596863,GB @@ -36715,7 +42181,9 @@ 1410621440,1410629631,NO 1410629632,1410637823,FI 1410637824,1410646015,AT -1410646016,1410654207,GB +1410646016,1410647807,GB +1410647808,1410648319,IE +1410648320,1410654207,GB 1410654208,1410662399,SI 1410662400,1410670591,HU 1410670592,1410678783,DE @@ -36740,14 +42208,20 @@ 1410748416,1410752511,DE 1410752512,1410752703,AQ 1410752704,1410752763,DE -1410752764,1410752785,AQ -1410752786,1410752799,DE +1410752764,1410752787,AQ +1410752788,1410752799,DE 1410752800,1410752827,AQ -1410752828,1410753023,DE +1410752828,1410752831,DE +1410752832,1410752835,AQ +1410752836,1410753023,DE 1410753024,1410753031,AQ 1410753032,1410753055,BS -1410753056,1410753151,AQ -1410753152,1410753303,DE +1410753056,1410753143,AQ +1410753144,1410753151,SC +1410753152,1410753155,AQ +1410753156,1410753159,DE +1410753160,1410753167,AQ +1410753168,1410753303,DE 1410753304,1410753327,AQ 1410753328,1410753335,DE 1410753336,1410753343,AQ @@ -36755,7 +42229,11 @@ 1410753352,1410753367,AQ 1410753368,1410753391,DE 1410753392,1410753399,NL -1410753400,1410754831,AQ +1410753400,1410753791,AQ +1410753792,1410754303,US +1410754304,1410754559,AQ +1410754560,1410754567,US +1410754568,1410754831,AQ 1410754832,1410754855,DE 1410754856,1410754859,AQ 1410754860,1410754867,DE @@ -36764,23 +42242,19 @@ 1410755064,1410755067,AQ 1410755068,1410755071,DE 1410755072,1410755327,AQ -1410755328,1410756607,DE -1410756608,1410756735,AQ -1410756736,1410756863,DE +1410755328,1410755583,DE +1410755584,1410756863,US 1410756864,1410757119,AQ -1410757120,1410758655,DE -1410758656,1410759423,AQ -1410759424,1410759679,GB -1410759680,1410760191,AQ +1410757120,1410758143,US +1410758144,1410758399,AQ +1410758400,1410758655,US +1410758656,1410759679,AQ +1410759680,1410760191,US 1410760192,1410760455,DE 1410760456,1410760471,AQ -1410760472,1410760479,SC -1410760480,1410760487,DE +1410760472,1410760487,DE 1410760488,1410760503,AQ -1410760504,1410760683,DE -1410760684,1410760687,AQ -1410760688,1410760699,DE -1410760700,1410760703,AQ +1410760504,1410760703,DE 1410760704,1410768895,RU 1410768896,1410777087,GB 1410777088,1410785279,RU @@ -36848,7 +42322,8 @@ 1411837952,1411842047,BG 1411842048,1411907583,PT 1411907584,1411907839,EU -1411907840,1411908351,GB +1411907840,1411908095,GB +1411908096,1411908351,DE 1411908352,1411908399,EU 1411908400,1411908479,GB 1411908480,1411908535,EU @@ -36891,25 +42366,31 @@ 1411919872,1411923967,DE 1411923968,1411940351,BG 1411940352,1411973119,PL -1411973120,1411999743,SI -1411999744,1411999759,BA -1411999760,1411999767,SI -1411999768,1411999783,BA -1411999784,1411999791,SI -1411999792,1411999799,BA -1411999800,1411999807,SI +1411973120,1411999751,SI +1411999752,1411999791,BA +1411999792,1411999807,SI 1411999808,1411999847,BA 1411999848,1411999871,SI -1411999872,1412000767,BA +1411999872,1411999895,BA +1411999896,1411999903,SI +1411999904,1411999911,BA +1411999912,1411999919,SI +1411999920,1411999927,BA +1411999928,1411999951,SI +1411999952,1411999959,BA +1411999960,1411999983,SI +1411999984,1412000767,BA 1412000768,1412000783,SI 1412000784,1412000791,BA 1412000792,1412000863,SI 1412000864,1412000879,BA 1412000880,1412000903,SI 1412000904,1412000911,BA -1412000912,1412001023,SI -1412001024,1412001279,BA -1412001280,1412001311,SI +1412000912,1412000943,SI +1412000944,1412000991,BA +1412000992,1412001007,SI +1412001008,1412001015,BA +1412001016,1412001311,SI 1412001312,1412001319,DE 1412001320,1412001807,SI 1412001808,1412001855,RO @@ -36928,8 +42409,8 @@ 1412003040,1412003055,SI 1412003056,1412003119,BA 1412003120,1412003135,SI -1412003136,1412003143,BA -1412003144,1412003199,SI +1412003136,1412003151,BA +1412003152,1412003199,SI 1412003200,1412003215,BA 1412003216,1412003223,SI 1412003224,1412003231,BA @@ -36938,13 +42419,11 @@ 1412003264,1412003271,SI 1412003272,1412003303,BA 1412003304,1412003327,SI -1412003328,1412003343,BA -1412003344,1412003359,SI -1412003360,1412003375,BA -1412003376,1412003391,SI -1412003392,1412003407,BA -1412003408,1412003423,SI -1412003424,1412003527,BA +1412003328,1412003351,BA +1412003352,1412003375,SI +1412003376,1412003383,BA +1412003384,1412003391,SI +1412003392,1412003527,BA 1412003528,1412003535,SI 1412003536,1412003551,BA 1412003552,1412003583,SI @@ -36952,8 +42431,12 @@ 1412003600,1412003623,SI 1412003624,1412003631,BA 1412003632,1412003639,SI -1412003640,1412003839,BA -1412003840,1412003855,SI +1412003640,1412003647,BA +1412003648,1412003727,SI +1412003728,1412003783,BA +1412003784,1412003791,SI +1412003792,1412003823,BA +1412003824,1412003855,SI 1412003856,1412003903,BG 1412003904,1412003935,SI 1412003936,1412004351,BG @@ -36995,7 +42478,9 @@ 1412686240,1412686335,BB 1412686336,1412686591,IE 1412686592,1412686847,GB -1412686848,1412690191,IE +1412686848,1412689315,IE +1412689316,1412689343,GB +1412689344,1412690191,IE 1412690192,1412690199,GB 1412690200,1412694015,IE 1412694016,1412710399,EE @@ -37046,15 +42531,20 @@ 1422400000,1422400255,IT 1422400256,1422400511,DE 1422400512,1422400767,BR -1422400768,1422406399,DE +1422400768,1422403839,DE +1422403840,1422403903,IT +1422403904,1422406399,DE 1422406400,1422406463,GB -1422406464,1422462207,DE -1422462208,1422462463,TR -1422462464,1422468671,DE +1422406464,1422468207,DE +1422468208,1422468223,IT +1422468224,1422468671,DE 1422468672,1422468735,IT -1422468736,1422479615,DE +1422468736,1422476863,DE +1422476864,1422476895,GB +1422476896,1422479615,DE 1422479616,1422479871,BE 1422479872,1422491647,DE +1422491648,1422508031,RU 1422508032,1422512127,BG 1422512128,1422516223,PL 1422516224,1422520319,BY @@ -37070,24 +42560,23 @@ 1422761984,1422770175,PL 1422770176,1422786559,GR 1422786560,1422852095,HU -1422852096,1422853119,FR -1422853120,1422853631,EU -1422853632,1422853919,FR -1422853920,1422854143,EU -1422854144,1422854151,FR -1422854152,1422856319,EU -1422856320,1422856447,FR -1422856448,1422856511,EU -1422856512,1422856575,FR -1422856576,1422856703,EU -1422856704,1422857855,FR +1422852096,1422856383,EU +1422856384,1422856447,FR +1422856448,1422856703,EU +1422856704,1422856959,FR +1422856960,1422857087,EU +1422857088,1422857151,FR +1422857152,1422857183,EU +1422857184,1422857855,FR 1422857856,1422857919,EU 1422857920,1422858143,FR 1422858144,1422858239,EU 1422858240,1422858623,FR 1422858624,1422909439,EU 1422909440,1422909695,NL -1422909696,1422917375,EU +1422909696,1422911231,EU +1422911232,1422911487,NL +1422911488,1422917375,EU 1422917376,1422917631,GB 1422917632,1423441919,NO 1423441920,1423704063,SE @@ -37101,7 +42590,10 @@ 1424556032,1424588799,EG 1424588800,1424588839,DE 1424588840,1424588847,GB -1424588848,1424588959,DE +1424588848,1424588863,DE +1424588864,1424588927,GB +1424588928,1424588951,DE +1424588952,1424588959,GB 1424588960,1424588963,IT 1424588964,1424589311,DE 1424589312,1424589567,FR @@ -37118,9 +42610,7 @@ 1424591464,1424591471,GB 1424591472,1424591551,SE 1424591552,1424591615,CZ -1424591616,1424591839,GB -1424591840,1424591871,ZA -1424591872,1424592639,GB +1424591616,1424592639,GB 1424592640,1424593151,FR 1424593152,1424593407,NL 1424593408,1424593663,DE @@ -37139,16 +42629,12 @@ 1424594520,1424595455,GB 1424595456,1424595527,IT 1424595528,1424595535,GB -1424595536,1424595551,IT -1424595552,1424595559,GB -1424595560,1424595575,IT -1424595576,1424595583,ES -1424595584,1424595807,IT -1424595808,1424595839,GB -1424595840,1424596479,IT -1424596480,1424596563,FR -1424596564,1424596567,GB -1424596568,1424596991,FR +1424595536,1424595575,IT +1424595576,1424595583,GB +1424595584,1424595819,IT +1424595820,1424595823,GB +1424595824,1424596479,IT +1424596480,1424596991,FR 1424596992,1424597255,CZ 1424597256,1424597263,GB 1424597264,1424597311,CZ @@ -37156,22 +42642,24 @@ 1424597344,1424597351,CH 1424597352,1424597375,GB 1424597376,1424597391,CZ -1424597392,1424597503,GB +1424597392,1424597407,GB +1424597408,1424597423,CZ +1424597424,1424597503,GB 1424597504,1424597759,FR 1424597760,1424598015,IT 1424598016,1424599039,GB 1424599040,1424599279,DK 1424599280,1424599295,GB 1424599296,1424599551,DK -1424599552,1424599839,HU -1424599840,1424599847,GB -1424599848,1424599855,HU +1424599552,1424599855,HU 1424599856,1424599871,GB 1424599872,1424599875,HU 1424599876,1424599879,GB 1424599880,1424599887,HU 1424599888,1424599903,GB -1424599904,1424599951,HU +1424599904,1424599935,HU +1424599936,1424599943,GB +1424599944,1424599951,HU 1424599952,1424599999,GB 1424600000,1424600031,HU 1424600032,1424600063,GB @@ -37184,32 +42672,34 @@ 1424601600,1424601855,CH 1424601856,1424602111,GB 1424602112,1424602623,DE -1424602624,1424602879,GB +1424602624,1424602735,GB +1424602736,1424602743,IT +1424602744,1424602879,GB 1424602880,1424602911,US 1424602912,1424602927,FR 1424602928,1424603007,US -1424603008,1424603023,GB -1424603024,1424603055,US -1424603056,1424603063,NL -1424603064,1424603087,US +1424603008,1424603039,GB +1424603040,1424603087,US 1424603088,1424603095,GB 1424603096,1424603135,US 1424603136,1424603391,SK 1424603392,1424603647,DE 1424603648,1424603903,GB -1424603904,1424604067,ES -1424604068,1424604071,GB -1424604072,1424604159,ES +1424603904,1424604031,ES +1424604032,1424604047,GB +1424604048,1424604159,ES 1424604160,1424604543,NL 1424604544,1424604671,GB 1424604672,1424604799,NL 1424604800,1424604927,GB -1424604928,1424605119,NL +1424604928,1424604959,NL +1424604960,1424604967,GB +1424604968,1424605119,NL 1424605120,1424605135,GB 1424605136,1424605183,NL 1424605184,1424605439,GB 1424605440,1424605567,BG -1424605568,1424605583,GB +1424605568,1424605583,GR 1424605584,1424605599,BE 1424605600,1424605607,GB 1424605608,1424605623,BG @@ -37217,21 +42707,20 @@ 1424605632,1424605695,BG 1424605696,1424605951,NL 1424605952,1424605959,CH -1424605960,1424606023,AT -1424606024,1424606199,GB -1424606200,1424606207,AT -1424606208,1424606455,GB -1424606456,1424606463,AT -1424606464,1424606711,GB -1424606712,1424606719,AT -1424606720,1424606967,GB -1424606968,1424606975,AT +1424605960,1424605967,AT +1424605968,1424605983,GB +1424605984,1424606023,AT +1424606024,1424606207,GB +1424606208,1424606719,IT +1424606720,1424606975,NL 1424606976,1424607167,GB 1424607168,1424607199,SK 1424607200,1424607215,GB 1424607216,1424607223,SK 1424607224,1424607487,GB -1424607488,1424607871,DE +1424607488,1424607743,DE +1424607744,1424607775,GB +1424607776,1424607871,DE 1424607872,1424608031,GB 1424608032,1424608083,FR 1424608084,1424608087,GB @@ -37240,9 +42729,11 @@ 1424608280,1424608383,FR 1424608384,1424608399,ES 1424608400,1424608511,FR -1424608512,1424608687,ES -1424608688,1424608695,GB -1424608696,1424609023,ES +1424608512,1424608543,ES +1424608544,1424608559,GB +1424608560,1424608687,ES +1424608688,1424608691,GB +1424608692,1424609023,ES 1424609024,1424609259,DE 1424609260,1424609271,GB 1424609272,1424609279,DE @@ -37253,9 +42744,7 @@ 1424610304,1424610559,TZ 1424610560,1424610815,PL 1424610816,1424611071,FR -1424611072,1424611095,BE -1424611096,1424611103,GB -1424611104,1424611135,BE +1424611072,1424611135,BE 1424611136,1424611151,GB 1424611152,1424611327,BE 1424611328,1424611583,PL @@ -37269,14 +42758,16 @@ 1424612864,1424613119,FR 1424613120,1424613375,GB 1424613376,1424613631,ES -1424613632,1424614127,IT +1424613632,1424614087,IT +1424614088,1424614095,GB +1424614096,1424614127,IT 1424614128,1424614135,GB 1424614136,1424614143,IT 1424614144,1424614399,GB 1424614400,1424614415,FR -1424614416,1424614559,IT -1424614560,1424614591,GB -1424614592,1424614655,IT +1424614416,1424614431,IT +1424614432,1424614439,GB +1424614440,1424614655,IT 1424614656,1424614911,FR 1424614912,1424615167,RO 1424615168,1424615679,GB @@ -37287,8 +42778,9 @@ 1424616192,1424616447,IT 1424616448,1424616483,ES 1424616484,1424616487,GB -1424616488,1424616607,ES -1424616608,1424616615,PT +1424616488,1424616503,ES +1424616504,1424616511,GB +1424616512,1424616615,ES 1424616616,1424616623,GB 1424616624,1424616655,ES 1424616656,1424616659,GB @@ -37296,7 +42788,8 @@ 1424616696,1424616703,GB 1424616704,1424616959,US 1424616960,1424617215,FR -1424617216,1424617351,IT +1424617216,1424617239,GB +1424617240,1424617351,IT 1424617352,1424617391,GB 1424617392,1424617395,IT 1424617396,1424617399,GB @@ -37304,25 +42797,25 @@ 1424617408,1424617423,ES 1424617424,1424617431,GB 1424617432,1424617439,ES -1424617440,1424617463,IT +1424617440,1424617447,IT +1424617448,1424617455,GB +1424617456,1424617463,IT 1424617464,1424617471,GB 1424617472,1424617727,US -1424617728,1424617983,IT -1424617984,1424618015,GB -1424618016,1424618239,IT +1424617728,1424618039,IT +1424618040,1424618047,GB +1424618048,1424618239,IT 1424618240,1424618495,NL 1424618496,1424618751,GB -1424618752,1424619007,FR +1424618752,1424618927,FR +1424618928,1424618943,IT +1424618944,1424619007,FR 1424619008,1424619775,IT 1424619776,1424619807,BE -1424619808,1424619815,GB -1424619816,1424619823,BE -1424619824,1424619839,GB +1424619808,1424619839,GB 1424619840,1424619915,BE 1424619916,1424619919,GB -1424619920,1424619951,BE -1424619952,1424619967,GB -1424619968,1424620031,BE +1424619920,1424620031,BE 1424620032,1424621055,GB 1424621056,1424621567,IT 1424621568,1424625663,PL @@ -37331,6 +42824,7 @@ 1424633856,1424637951,MD 1424637952,1424642047,FI 1424642048,1424646143,DK +1424646144,1424650239,UA 1424650240,1424654335,PL 1424654336,1424687103,NO 1424687104,1424711679,SA @@ -37394,7 +42888,6 @@ 1424850944,1424883711,LV 1424883712,1424916479,DK 1424916480,1424949247,BG -1424949248,1424982015,GB 1424982016,1425014783,FI 1425014784,1425031167,LT 1425031168,1425047551,FI @@ -37417,7 +42910,9 @@ 1425326080,1425342463,SE 1425342464,1425358847,NL 1425358848,1425375231,SK -1425375232,1425391615,DE +1425375232,1425377339,DE +1425377340,1425377340,A2 +1425377341,1425391615,DE 1425391616,1425407999,LV 1425408000,1425424383,NL 1425424384,1425424543,A2 @@ -37439,7 +42934,9 @@ 1425436672,1425438719,GB 1425438720,1425439271,DE 1425439272,1425439279,CZ -1425439280,1425439535,DE +1425439280,1425439399,DE +1425439400,1425439407,CZ +1425439408,1425439535,DE 1425439536,1425439543,CZ 1425439544,1425439711,DE 1425439712,1425439727,CZ @@ -37455,9 +42952,7 @@ 1425448960,1425451007,CZ 1425451008,1425457855,GB 1425457856,1425457919,US -1425457920,1425458271,GB -1425458272,1425458303,US -1425458304,1425459199,GB +1425457920,1425459199,GB 1425459200,1425460735,IM 1425460736,1425460767,GB 1425460768,1425460863,IM @@ -37470,8 +42965,33 @@ 1425467136,1425467391,ES 1425467392,1425469439,CH 1425469440,1425471487,DK -1425471488,1425473535,DE -1425473536,1425506303,RO +1425471488,1425471791,DE +1425471792,1425471799,CH +1425471800,1425471815,DE +1425471816,1425471823,CH +1425471824,1425471831,GB +1425471832,1425471863,DE +1425471864,1425471871,GB +1425471872,1425471887,IT +1425471888,1425471895,GB +1425471896,1425471919,DE +1425471920,1425471943,GB +1425471944,1425471967,DE +1425471968,1425471975,CH +1425471976,1425472007,DE +1425472008,1425472011,GB +1425472012,1425472015,ES +1425472016,1425472035,DE +1425472036,1425472039,GB +1425472040,1425473535,DE +1425473536,1425474047,GB +1425474048,1425474559,RO +1425474560,1425475583,GB +1425475584,1425478143,RO +1425478144,1425478655,GB +1425478656,1425484799,RO +1425484800,1425485311,GB +1425485312,1425506303,RO 1425506304,1425522687,NO 1425522688,1425539071,IT 1425539072,1425801215,FI @@ -37736,7 +43256,11 @@ 1426731008,1426735103,HR 1426735104,1426751487,BE 1426751488,1426767871,FR -1426767872,1426784255,DE +1426767872,1426778991,DE +1426778992,1426778999,IT +1426779000,1426781655,DE +1426781656,1426781663,IT +1426781664,1426784255,DE 1426784256,1426800639,SE 1426800640,1426817023,PL 1426817024,1426833407,BG @@ -37774,7 +43298,9 @@ 1426915328,1426931711,AT 1426931712,1426948095,CZ 1426948096,1426964479,DE -1426964480,1426967455,GB +1426964480,1426967287,GB +1426967288,1426967295,ES +1426967296,1426967455,GB 1426967456,1426967463,ES 1426967464,1426967567,GB 1426967568,1426967575,ES @@ -37814,11 +43340,7 @@ 1427032736,1427032743,AT 1427032744,1427032959,DE 1427032960,1427032967,NL -1427032968,1427033247,DE -1427033248,1427033263,MZ -1427033264,1427033287,DE -1427033288,1427033295,SE -1427033296,1427035391,DE +1427032968,1427035391,DE 1427035392,1427035519,GB 1427035520,1427046399,DE 1427046400,1427062783,IR @@ -37848,32 +43370,47 @@ 1427668992,1427701759,SE 1427701760,1427723391,DE 1427723392,1427723519,LI -1427723520,1427728479,DE +1427723520,1427728383,DE +1427728384,1427728415,BR +1427728416,1427728479,DE 1427728480,1427728511,CY 1427728512,1427728543,BR -1427728544,1427728671,DE +1427728544,1427728575,DE +1427728576,1427728607,BR +1427728608,1427728639,TW +1427728640,1427728671,DE 1427728672,1427728703,TR -1427728704,1427728799,DE +1427728704,1427728735,RU +1427728736,1427728799,DE 1427728800,1427728831,RU 1427728832,1427728895,CY -1427728896,1427728927,DE +1427728896,1427728927,RU 1427728928,1427728959,IL 1427728960,1427728991,RU 1427728992,1427729055,DE 1427729056,1427729087,CA -1427729088,1427729119,DE -1427729120,1427729151,RO -1427729152,1427729311,DE +1427729088,1427729119,TR +1427729120,1427729311,DE 1427729312,1427729343,GR 1427729344,1427742719,DE 1427742720,1427742751,IO -1427742752,1427743231,DE +1427742752,1427742975,DE +1427742976,1427743007,RU +1427743008,1427743039,US +1427743040,1427743071,DE +1427743072,1427743103,CY +1427743104,1427743135,BR +1427743136,1427743199,DE +1427743200,1427743231,TR 1427743232,1427743263,GR 1427743264,1427743327,DE 1427743328,1427743359,NL -1427743360,1427743455,DE +1427743360,1427743391,DE +1427743392,1427743423,BR +1427743424,1427743455,DE 1427743456,1427743487,CY -1427743488,1427743615,DE +1427743488,1427743583,DE +1427743584,1427743615,LV 1427743616,1427743647,DK 1427743648,1427743775,DE 1427743776,1427743807,ZA @@ -37881,27 +43418,38 @@ 1427743840,1427743871,RU 1427743872,1427743935,DE 1427743936,1427743967,RU -1427743968,1427744159,DE +1427743968,1427743999,DE +1427744000,1427744031,TW +1427744032,1427744127,DE +1427744128,1427744159,PL 1427744160,1427744191,RU 1427744192,1427744255,DE 1427744256,1427744287,US 1427744288,1427744319,TR 1427744320,1427744351,DE 1427744352,1427744383,UA -1427744384,1427744639,DE +1427744384,1427744415,PL +1427744416,1427744447,UA +1427744448,1427744479,US +1427744480,1427744607,DE +1427744608,1427744639,US 1427744640,1427744671,TR -1427744672,1427744703,DE -1427744704,1427744735,CA +1427744672,1427744735,DE 1427744736,1427744767,DK 1427744768,1427744863,DE 1427744864,1427744927,TR -1427744928,1427744991,DE +1427744928,1427744959,HU +1427744960,1427744991,DE 1427744992,1427745023,DK -1427745024,1427745151,DE +1427745024,1427745055,BM +1427745056,1427745151,DE 1427745152,1427745183,RO -1427745184,1427745247,DE -1427745248,1427745279,TR -1427745280,1427745503,DE +1427745184,1427745215,CH +1427745216,1427745375,DE +1427745376,1427745407,TW +1427745408,1427745439,DE +1427745440,1427745471,US +1427745472,1427745503,RO 1427745504,1427745535,RU 1427745536,1427745567,CN 1427745568,1427745599,RU @@ -37909,71 +43457,94 @@ 1427745632,1427745663,BM 1427745664,1427745695,CY 1427745696,1427745727,US -1427745728,1427745791,DE +1427745728,1427745759,DE +1427745760,1427745791,LT 1427745792,1427745823,GB 1427745824,1427745855,US -1427745856,1427746079,DE +1427745856,1427745887,BR +1427745888,1427746047,DE +1427746048,1427746079,SE 1427746080,1427746111,GB -1427746112,1427746239,DE -1427746240,1427746271,NL -1427746272,1427746367,DE -1427746368,1427746399,SE -1427746400,1427747839,DE +1427746112,1427746143,DE +1427746144,1427746175,GR +1427746176,1427746239,DE +1427746240,1427746271,US +1427746272,1427747839,DE 1427747840,1427747871,FI -1427747872,1427748063,DE -1427748064,1427748095,NL -1427748096,1427748479,DE -1427748480,1427748511,TR -1427748512,1427748543,DE +1427747872,1427747935,DE +1427747936,1427747967,US +1427747968,1427748063,DE +1427748064,1427748095,US +1427748096,1427748255,DE +1427748256,1427748287,US +1427748288,1427748447,DE +1427748448,1427748479,RU +1427748480,1427748511,DE +1427748512,1427748543,US 1427748544,1427748575,MX -1427748576,1427749503,DE -1427749504,1427749535,UA -1427749536,1427749567,DE +1427748576,1427748703,DE +1427748704,1427748735,US +1427748736,1427749567,DE 1427749568,1427749599,CY -1427749600,1427749631,DE -1427749632,1427749663,US -1427749664,1427749951,DE +1427749600,1427749695,DE +1427749696,1427749727,BR +1427749728,1427749855,DE +1427749856,1427749887,RU +1427749888,1427749919,BR +1427749920,1427749951,DE 1427749952,1427749983,RU -1427749984,1427750239,DE -1427750240,1427750271,NL -1427750272,1427750303,DE +1427749984,1427750079,DE +1427750080,1427750111,BG +1427750112,1427750175,DE +1427750176,1427750207,TR +1427750208,1427750239,DE +1427750240,1427750271,US +1427750272,1427750303,GR 1427750304,1427750335,GB -1427750336,1427751167,DE +1427750336,1427750367,US +1427750368,1427751167,DE 1427751168,1427751423,NL 1427751424,1427759935,DE 1427759936,1427759967,HR -1427759968,1427760191,DE -1427760192,1427760223,TR -1427760224,1427760255,US +1427759968,1427760031,DE +1427760032,1427760063,US +1427760064,1427760095,DE +1427760096,1427760127,US +1427760128,1427760191,DE +1427760192,1427760255,US 1427760256,1427760319,BR -1427760320,1427760351,DE +1427760320,1427760351,TR 1427760352,1427760383,RU 1427760384,1427760415,TR -1427760416,1427760799,DE -1427760800,1427760831,NL +1427760416,1427760447,US +1427760448,1427760575,DE +1427760576,1427760607,CH +1427760608,1427760639,US +1427760640,1427760799,DE +1427760800,1427760831,US 1427760832,1427760959,DE 1427760960,1427760991,CZ -1427760992,1427761023,DE +1427760992,1427761023,BG 1427761024,1427761055,HR -1427761056,1427761087,DE +1427761056,1427761087,CL 1427761088,1427761119,CH -1427761120,1427761183,DE -1427761184,1427761215,IT -1427761216,1427761247,DE -1427761248,1427761279,BR -1427761280,1427761375,DE +1427761120,1427761151,TR +1427761152,1427761215,DE +1427761216,1427761247,TR +1427761248,1427761279,DE +1427761280,1427761311,RU +1427761312,1427761343,DE +1427761344,1427761375,CY 1427761376,1427761407,TW 1427761408,1427761503,DE 1427761504,1427761535,PL 1427761536,1427761567,US 1427761568,1427761599,RU 1427761600,1427761631,EG -1427761632,1427767295,DE +1427761632,1427761663,TR +1427761664,1427767295,DE 1427767296,1427800063,BE -1427800064,1427823615,RU -1427823616,1427824639,KG -1427824640,1427831807,RU -1427831808,1427832831,MD +1427800064,1427832831,RU 1427832832,1427865599,BE 1427865600,1427898367,DK 1427898368,1427914751,RU @@ -37988,14 +43559,12 @@ 1428045824,1428062207,MK 1428062208,1428078591,SE 1428078592,1428094975,RU -1428094976,1428096031,AT -1428096032,1428096039,CH -1428096040,1428103167,AT +1428094976,1428103167,AT 1428103168,1428111359,GB 1428111360,1428119551,A2 1428119552,1428121599,LV 1428121600,1428123647,FR -1428125696,1428126975,RU +1428123648,1428126975,RU 1428126976,1428127231,TR 1428127232,1428127743,RU 1428127744,1428129791,ES @@ -38008,19 +43577,25 @@ 1428142080,1428143263,DE 1428143264,1428143279,CH 1428143280,1428144127,DE -1428144128,1428147111,FR -1428147112,1428147119,GB -1428147120,1428147595,FR -1428147596,1428147711,GB +1428144128,1428147343,FR +1428147344,1428147351,GB +1428147352,1428147595,FR +1428147596,1428147615,GB +1428147616,1428147639,FR +1428147640,1428147711,GB 1428147712,1428147855,FR 1428147856,1428147871,US -1428147872,1428148039,FR -1428148040,1428148047,GB -1428148048,1428148175,FR +1428147872,1428148175,FR 1428148176,1428148191,CH -1428148192,1428150735,FR +1428148192,1428150487,FR +1428150488,1428150495,GB +1428150496,1428150663,FR +1428150664,1428150687,GB +1428150688,1428150735,FR 1428150736,1428150751,GB -1428150752,1428151007,FR +1428150752,1428150863,FR +1428150864,1428150911,GB +1428150912,1428151007,FR 1428151008,1428151039,GB 1428151040,1428151231,FR 1428151232,1428151295,CH @@ -38047,9 +43622,11 @@ 1431839040,1431846911,BE 1431846912,1431855103,NO 1431855104,1431863295,NL -1431863296,1431864263,PT -1431864264,1431864271,ES -1431864272,1431864935,PT +1431863296,1431864391,PT +1431864392,1431864399,ES +1431864400,1431864879,PT +1431864880,1431864887,ES +1431864888,1431864935,PT 1431864936,1431864943,ES 1431864944,1431865335,PT 1431865336,1431865343,ES @@ -38057,9 +43634,7 @@ 1431865632,1431865647,ES 1431865648,1431865663,PT 1431865664,1431865679,ES -1431865680,1431865711,PT -1431865712,1431865719,ES -1431865720,1431866447,PT +1431865680,1431866447,PT 1431866448,1431866455,NL 1431866456,1431866479,PT 1431866480,1431866495,ES @@ -38081,7 +43656,11 @@ 1431979480,1431979487,GB 1431979488,1431980151,NL 1431980152,1431980159,US -1431980160,1431986175,NL +1431980160,1431980687,NL +1431980688,1431980695,DE +1431980696,1431980719,NL +1431980720,1431980727,SA +1431980728,1431986175,NL 1431986176,1431994367,RU 1431994368,1432002559,AT 1432002560,1432010751,HU @@ -38101,13 +43680,58 @@ 1432100864,1432109055,CZ 1432109056,1432117247,GB 1432117248,1432125439,CY -1432125440,1432131583,NL -1432131584,1432133631,PH +1432125440,1432131607,NL +1432131608,1432131615,PH +1432131616,1432131679,NL +1432131680,1432131695,PH +1432131696,1432131711,NL +1432131712,1432131727,PH +1432131728,1432131743,NL +1432131744,1432131759,PH +1432131760,1432131775,NL +1432131776,1432131783,PH +1432131784,1432131887,NL +1432131888,1432131903,PH +1432131904,1432131919,NL +1432131920,1432131935,PH +1432131936,1432131951,NL +1432131952,1432131967,PH +1432131968,1432131999,NL +1432132000,1432132031,PH +1432132032,1432132271,NL +1432132272,1432132287,PH +1432132288,1432132303,NL +1432132304,1432132319,PH +1432132320,1432132351,NL +1432132352,1432132495,PH +1432132496,1432132511,NL +1432132512,1432132559,PH +1432132560,1432132639,NL +1432132640,1432132655,PH +1432132656,1432132671,NL +1432132672,1432132687,PH +1432132688,1432132815,NL +1432132816,1432132831,PH +1432132832,1432132895,NL +1432132896,1432132911,PH +1432132912,1432132927,NL +1432132928,1432132943,PH +1432132944,1432133039,NL +1432133040,1432133055,PH +1432133056,1432133151,NL +1432133152,1432133167,PH +1432133168,1432133199,NL +1432133200,1432133215,PH +1432133216,1432133327,NL +1432133328,1432133343,PH +1432133344,1432133455,NL +1432133456,1432133503,PH +1432133504,1432133543,NL +1432133544,1432133551,PH +1432133552,1432133631,NL 1432133632,1432150015,GB 1432150016,1432158207,BA -1432158208,1432159042,DE -1432159043,1432159046,US -1432159047,1432159311,DE +1432158208,1432159311,DE 1432159312,1432159321,US 1432159322,1432159743,DE 1432159744,1432159871,PL @@ -38137,9 +43761,7 @@ 1432322048,1432338431,RU 1432338432,1432346623,FR 1432346624,1433403391,TR -1433403392,1433406239,ES -1433406240,1433406271,US -1433406272,1433406431,ES +1433403392,1433406431,ES 1433406432,1433406447,US 1433406448,1433407487,ES 1433407488,1433410047,NL @@ -38149,7 +43771,9 @@ 1433411328,1433411343,ES 1433411344,1433411375,TR 1433411376,1433411407,US -1433411408,1433411455,TR +1433411408,1433411423,TR +1433411424,1433411439,ES +1433411440,1433411455,TR 1433411456,1433411519,US 1433411520,1433411583,ES 1433411584,1433419775,RU @@ -38205,10 +43829,17 @@ 1433739264,1433747455,GE 1433747456,1433755647,RU 1433755648,1433763839,EE +1433763840,1433772031,FR 1433772032,1433788415,SE 1433788416,1433796607,UZ 1433796608,1433804799,GB -1433804800,1433812991,FR +1433804800,1433806591,FR +1433806592,1433806623,GB +1433806624,1433806655,BE +1433806656,1433806687,IT +1433806688,1433806719,NL +1433806720,1433806751,DE +1433806752,1433812991,FR 1433812992,1433821183,BG 1433821184,1433829375,GE 1433829376,1433833471,RU @@ -38231,15 +43862,23 @@ 1433856000,1433858047,GB 1433858048,1433860095,ES 1433860096,1433862143,DE -1433862144,1433862751,CH +1433862144,1433862559,CH +1433862560,1433862575,GB +1433862576,1433862751,CH 1433862752,1433862783,MC 1433862784,1433862975,CH 1433862976,1433862991,GB -1433862992,1433863423,CH +1433862992,1433863055,CH +1433863056,1433863071,GB +1433863072,1433863095,CH +1433863096,1433863103,US +1433863104,1433863423,CH 1433863424,1433863487,US 1433863488,1433864191,CH 1433864192,1433866239,HU -1433866240,1433867263,NL +1433866240,1433866751,NL +1433866752,1433867007,GB +1433867008,1433867263,NL 1433867264,1433867295,GB 1433867296,1433867519,NL 1433867520,1433867647,GB @@ -38290,37 +43929,43 @@ 1434583040,1434615807,BG 1434615808,1434648575,IL 1434648576,1434681343,FI -1434681344,1434681855,DE -1434681856,1434682111,MY +1434681344,1434681983,DE +1434681984,1434682015,CY +1434682016,1434682111,NL 1434682112,1434682303,DE -1434682304,1434682367,NL +1434682304,1434682319,CY +1434682320,1434682367,NL 1434682368,1434683119,DE 1434683120,1434683135,NL 1434683136,1434683327,DE 1434683328,1434683391,MY -1434683392,1434685439,DE -1434685440,1434687231,NL +1434683392,1434685759,DE +1434685760,1434685951,NL +1434685952,1434686719,DE +1434686720,1434687231,NL 1434687232,1434687359,DE 1434687360,1434687487,NL -1434687488,1434688207,DE +1434687488,1434687647,DE +1434687648,1434687679,NL +1434687680,1434688031,DE +1434688032,1434688063,NL +1434688064,1434688207,DE 1434688208,1434688223,NL 1434688224,1434689887,DE 1434689888,1434689919,NL 1434689920,1434692607,DE 1434692608,1434692671,NL -1434692672,1434694655,DE +1434692672,1434693119,DE +1434693120,1434693375,NL +1434693376,1434694655,DE 1434694656,1434694719,NL 1434694720,1434702463,DE 1434702464,1434702591,NL 1434702592,1434702655,DE 1434702656,1434702671,NL -1434702672,1434705663,DE -1434705664,1434705679,NL -1434705680,1434705695,DE -1434705696,1434705919,NL -1434705920,1434710591,DE -1434710592,1434710783,NL -1434710784,1434712063,DE +1434702672,1434705727,DE +1434705728,1434705919,NL +1434705920,1434712063,DE 1434712064,1434712319,NL 1434712320,1434712959,DE 1434712960,1434712975,NL @@ -38381,6 +44026,7 @@ 1436473344,1436475391,RO 1436475392,1436477439,AT 1436477440,1436479487,CH +1436479488,1436481535,RU 1436481536,1436483583,NL 1436483584,1436485631,UA 1436485632,1436487471,DE @@ -38495,7 +44141,7 @@ 1438876416,1438876927,RU 1438876928,1438877183,IQ 1438877184,1438877439,LT -1438877440,1438877695,LB +1438877440,1438877695,RU 1438877696,1438877951,LT 1438877952,1438878975,LB 1438878976,1438879231,IQ @@ -38513,12 +44159,9 @@ 1438890240,1438890495,RU 1438890496,1438890751,IQ 1438890752,1438892031,RU -1438892032,1438892287,US -1438892288,1438900223,IS -1438900224,1438900479,AQ -1438900480,1438904319,IS -1438904320,1438904575,CH -1438904576,1438908415,IS +1438892032,1438895359,CH +1438895360,1438900223,IS +1438900224,1438908415,AQ 1438908416,1438924799,GR 1438924800,1438941183,NO 1438941184,1438957567,BG @@ -38534,24 +44177,30 @@ 1438995040,1438995047,GB 1438995048,1438995067,DE 1438995068,1438995071,SE -1438995072,1438998781,DE +1438995072,1438995647,DE +1438995648,1438995711,GB +1438995712,1438998697,DE +1438998698,1438998730,NL +1438998731,1438998781,DE 1438998782,1438998783,CH 1438998784,1438999098,DE 1438999099,1438999103,CH -1438999104,1438999261,DE -1438999262,1438999295,NL +1438999104,1438999167,DE +1438999168,1438999248,NL +1438999249,1438999252,DE +1438999253,1438999295,NL 1438999296,1438999475,DE 1438999476,1438999487,PT 1438999488,1438999517,DE 1438999518,1438999518,CH 1438999519,1438999533,DE 1438999534,1438999534,CH -1438999535,1438999791,DE -1438999792,1438999807,GB +1438999535,1438999551,DE +1438999552,1438999807,GB 1438999808,1439000575,DE 1439000576,1439000831,NL -1439000832,1439000839,DE -1439000840,1439002623,NL +1439000832,1439002367,DE +1439002368,1439002623,NL 1439002624,1439006567,DE 1439006568,1439006575,AT 1439006576,1439006671,DE @@ -38568,7 +44217,7 @@ 1439154176,1439170559,GB 1439170560,1439236095,NO 1439236096,1439301631,BE -1439301632,1439305727,RU +1439301632,1439305727,CZ 1439305728,1439309823,DK 1439309824,1439318015,PL 1439318016,1439322111,DK @@ -38584,42 +44233,52 @@ 1439367168,1439375359,NL 1439375360,1439383551,DE 1439383552,1439432703,NL -1439432704,1439498239,RO +1439432704,1439440383,RO +1439440384,1439440895,GB +1439440896,1439446527,RO +1439446528,1439447039,GB +1439447040,1439449087,RO +1439449088,1439449855,GB +1439449856,1439451135,RO +1439451136,1439451647,GB +1439451648,1439457279,RO +1439457280,1439457791,GB +1439457792,1439462911,RO +1439462912,1439463167,GB +1439463168,1439463423,RO +1439463424,1439463935,GB +1439463936,1439464447,RO +1439464448,1439464703,GB +1439464704,1439466495,RO +1439466496,1439467007,GB +1439467008,1439482367,RO +1439482368,1439482879,GB +1439482880,1439498239,RO 1439498240,1439503103,DE -1439503104,1439504127,GB -1439504128,1439504383,DE -1439504384,1439514623,GB +1439503104,1439503359,PT +1439503360,1439514111,DE +1439514112,1439514367,GB +1439514368,1439514623,DE 1439514624,1439516671,IT -1439516672,1439517439,DE -1439517440,1439517695,GB -1439517696,1439518207,DE +1439516672,1439518207,DE 1439518208,1439518719,IT -1439518720,1439520767,GB -1439520768,1439522815,DE -1439522816,1439528959,GB -1439528960,1439529215,DE -1439529216,1439529471,GB -1439529472,1439529599,DE -1439529600,1439529983,GB +1439518720,1439529599,DE +1439529600,1439529727,GB +1439529728,1439529983,DE 1439529984,1439530239,EG 1439530240,1439535103,DE 1439535104,1439538175,IT -1439538176,1439538687,GB +1439538176,1439538687,DE 1439538688,1439539199,IT 1439539200,1439549439,DE 1439549440,1439551487,IT -1439551488,1439555839,DE -1439555840,1439556095,GB +1439551488,1439556095,DE 1439556096,1439556607,IT -1439556608,1439557119,DE -1439557120,1439557375,GB -1439557376,1439557887,DE -1439557888,1439558143,GB +1439556608,1439558143,DE 1439558144,1439558911,IT -1439558912,1439559423,GB -1439559424,1439560191,DE +1439558912,1439560191,DE 1439560192,1439560447,IT -1439560448,1439560703,GB +1439560448,1439560703,DE 1439560704,1439561215,IT 1439561216,1439561727,DE 1439561728,1439562239,GB @@ -38631,7 +44290,9 @@ 1439629312,1439694847,CZ 1439694848,1439825919,SA 1439825920,1439956991,GB -1439956992,1440251903,DE +1439956992,1440204799,DE +1440204800,1440215039,EU +1440215040,1440251903,DE 1440251904,1440284671,SK 1440284672,1440317439,FI 1440317440,1440350207,BG @@ -38654,9 +44315,9 @@ 1441300480,1441308671,LT 1441308672,1441316863,SE 1441316864,1441325055,MT -1441325056,1441327519,PL -1441327520,1441327551,SE -1441327552,1441333247,PL +1441325056,1441325759,PL +1441325760,1441325775,US +1441325776,1441333247,PL 1441333248,1441349631,DE 1441349632,1441357823,RU 1441357824,1441366015,AT @@ -38666,9 +44327,7 @@ 1441384512,1441384543,US 1441384544,1441384591,FR 1441384592,1441384599,AU -1441384600,1441384607,FR -1441384608,1441384639,CN -1441384640,1441386111,FR +1441384600,1441386111,FR 1441386112,1441386239,IL 1441386240,1441388671,FR 1441388672,1441388799,CA @@ -38678,7 +44337,9 @@ 1441389224,1441389231,LU 1441389232,1441389567,FR 1441389568,1441389599,LU -1441389600,1441390591,FR +1441389600,1441389967,FR +1441389968,1441389983,CA +1441389984,1441390591,FR 1441390592,1441398783,DK 1441398784,1441415167,RU 1441415168,1441423359,GB @@ -38723,7 +44384,9 @@ 1441570816,1441579007,RU 1441579008,1441582975,DE 1441582976,1441583103,US -1441583104,1441587199,DE +1441583104,1441586431,DE +1441586432,1441586687,US +1441586688,1441587199,DE 1441587200,1441594879,AT 1441594880,1441595135,DE 1441595136,1441603583,AT @@ -38790,7 +44453,6 @@ 1442807808,1442811903,BG 1442811904,1442815999,AT 1442816000,1442820095,BG -1442820096,1442824191,PL 1442824192,1442828287,BE 1442828288,1442832383,NL 1442832384,1442836479,GB @@ -38863,13 +44525,20 @@ 1446576128,1446608895,IR 1446608896,1446641663,BY 1446641664,1446674431,SI -1446674432,1446707175,DK +1446674432,1446694543,DK +1446694544,1446694559,SE +1446694560,1446694591,DK +1446694592,1446694607,NO +1446694608,1446694623,GB +1446694624,1446694639,TH +1446694640,1446694655,BR +1446694656,1446707175,DK 1446707176,1446707179,NO 1446707180,1446707183,FI 1446707184,1446707199,DK -1446707200,1446710687,AT -1446710688,1446710703,ES -1446710704,1446736503,AT +1446707200,1446712783,AT +1446712784,1446712791,DE +1446712792,1446736503,AT 1446736504,1446736511,US 1446736512,1446739967,AT 1446739968,1446772735,RU @@ -38881,751 +44550,563 @@ 1446871040,1446903807,CZ 1446903808,1446904063,A2 1446904064,1446904071,CY -1446904072,1446904079,IQ -1446904080,1446904095,BH +1446904072,1446904079,LY +1446904080,1446904095,A2 1446904096,1446904103,SD -1446904104,1446904111,SA -1446904112,1446904119,LY -1446904120,1446904127,SD -1446904128,1446904135,SA -1446904136,1446904143,IQ +1446904104,1446904111,IQ +1446904112,1446904143,A2 1446904144,1446904151,ER -1446904152,1446904159,IR -1446904160,1446904167,ES -1446904168,1446904175,IQ -1446904176,1446904183,A2 -1446904184,1446904191,IQ -1446904192,1446904215,A2 -1446904216,1446904223,IQ -1446904224,1446904231,LY -1446904232,1446904247,A2 +1446904152,1446904231,A2 +1446904232,1446904239,IQ +1446904240,1446904247,A2 1446904248,1446904255,AF 1446904256,1446904263,CY -1446904264,1446904279,A2 -1446904280,1446904287,IQ -1446904288,1446904295,AF -1446904296,1446904303,IQ -1446904304,1446904311,A2 -1446904312,1446904319,AF +1446904264,1446904319,A2 1446904320,1446904335,AE 1446904336,1446904351,A2 1446904352,1446904367,AE -1446904368,1446904527,A2 -1446904528,1446904543,ZM -1446904544,1446904575,A2 +1446904368,1446904383,IQ +1446904384,1446904399,A2 +1446904400,1446904415,IQ +1446904416,1446904575,A2 1446904576,1446904591,SD -1446904592,1446904599,NG -1446904600,1446904607,A2 +1446904592,1446904607,A2 1446904608,1446904623,SD -1446904624,1446904631,IQ -1446904632,1446904751,A2 +1446904624,1446904639,A2 +1446904640,1446904679,IQ +1446904680,1446904751,A2 1446904752,1446904759,NG 1446904760,1446904799,A2 1446904800,1446904807,SD -1446904808,1446904815,A2 -1446904816,1446904823,ZM -1446904824,1446904831,A2 -1446904832,1446904839,IQ -1446904840,1446904843,A2 +1446904808,1446904831,A2 +1446904832,1446904835,LY +1446904836,1446904843,IQ 1446904844,1446904847,CG -1446904848,1446904851,A2 -1446904852,1446904859,IQ -1446904860,1446904871,A2 -1446904872,1446904875,IQ -1446904876,1446904879,ZM -1446904880,1446904887,IQ -1446904888,1446904895,A2 -1446904896,1446904907,IQ -1446904908,1446904915,A2 -1446904916,1446904919,ZM -1446904920,1446904927,IQ -1446904928,1446904931,A2 -1446904932,1446904935,ZM -1446904936,1446904939,LY +1446904848,1446904851,AF +1446904852,1446904855,LY +1446904856,1446904859,IQ +1446904860,1446904867,LY +1446904868,1446904871,IQ +1446904872,1446904879,A2 +1446904880,1446904883,IQ +1446904884,1446904887,AF +1446904888,1446904891,A2 +1446904892,1446904895,IQ +1446904896,1446904899,LY +1446904900,1446904903,A2 +1446904904,1446904907,AF +1446904908,1446904911,IQ +1446904912,1446904919,A2 +1446904920,1446904923,LY +1446904924,1446904927,AF +1446904928,1446904935,A2 +1446904936,1446904939,AO 1446904940,1446904947,IQ -1446904948,1446904951,A2 +1446904948,1446904951,LY 1446904952,1446904955,AF 1446904956,1446904959,A2 1446904960,1446904963,IQ -1446904964,1446904975,A2 +1446904964,1446904967,TD +1446904968,1446904971,A2 +1446904972,1446904975,LY 1446904976,1446904979,CG -1446904980,1446904987,IQ +1446904980,1446904983,A2 +1446904984,1446904987,LY 1446904988,1446904991,A2 -1446904992,1446905007,IQ +1446904992,1446904995,IQ +1446904996,1446905007,A2 1446905008,1446905011,CG 1446905012,1446905015,A2 1446905016,1446905019,NG -1446905020,1446905023,LY -1446905024,1446905031,IQ +1446905020,1446905027,A2 +1446905028,1446905031,IQ 1446905032,1446905035,A2 1446905036,1446905039,IQ 1446905040,1446905043,AF -1446905044,1446905051,IQ -1446905052,1446905055,LY -1446905056,1446905063,IQ +1446905044,1446905047,IQ +1446905048,1446905051,LY +1446905052,1446905063,A2 1446905064,1446905067,NG -1446905068,1446905071,IQ -1446905072,1446905083,A2 +1446905068,1446905083,A2 1446905084,1446905095,AF -1446905096,1446905103,BJ -1446905104,1446905107,IQ -1446905108,1446905111,A2 -1446905112,1446905115,BJ -1446905116,1446905119,A2 -1446905120,1446905123,GN +1446905096,1446905107,A2 +1446905108,1446905111,LY +1446905112,1446905115,A2 +1446905116,1446905119,SD +1446905120,1446905123,A2 1446905124,1446905127,AF -1446905128,1446905135,A2 -1446905136,1446905143,IQ -1446905144,1446905147,A2 -1446905148,1446905151,LY -1446905152,1446905155,AF -1446905156,1446905167,IQ -1446905168,1446905171,A2 -1446905172,1446905175,IQ +1446905128,1446905131,IQ +1446905132,1446905139,LY +1446905140,1446905143,IQ +1446905144,1446905167,A2 +1446905168,1446905171,LY +1446905172,1446905175,A2 1446905176,1446905179,AF -1446905180,1446905191,LY -1446905192,1446905195,A2 +1446905180,1446905183,LY +1446905184,1446905195,A2 1446905196,1446905199,AF 1446905200,1446905203,NG 1446905204,1446905207,AF 1446905208,1446905211,ER -1446905212,1446905215,IQ -1446905216,1446905223,A2 -1446905224,1446905227,IQ +1446905212,1446905215,A2 +1446905216,1446905219,LY +1446905220,1446905227,A2 1446905228,1446905235,NG -1446905236,1446905251,A2 -1446905252,1446905255,IQ -1446905256,1446905259,A2 -1446905260,1446905263,IQ +1446905236,1446905243,A2 +1446905244,1446905247,AF +1446905248,1446905251,A2 +1446905252,1446905255,LY +1446905256,1446905263,A2 1446905264,1446905267,LY -1446905268,1446905271,NG -1446905272,1446905275,IQ -1446905276,1446905279,A2 -1446905280,1446905283,IQ +1446905268,1446905271,A2 +1446905272,1446905283,IQ 1446905284,1446905287,A2 -1446905288,1446905295,IQ -1446905296,1446905303,ZM +1446905288,1446905295,LY +1446905296,1446905303,A2 1446905304,1446905307,CF -1446905308,1446905315,A2 +1446905308,1446905311,IQ +1446905312,1446905315,A2 1446905316,1446905319,NG -1446905320,1446905323,A2 -1446905324,1446905327,IQ -1446905328,1446905331,A2 -1446905332,1446905339,IQ -1446905340,1446905343,A2 -1446905344,1446905351,LY -1446905352,1446905367,A2 -1446905368,1446905375,LY -1446905376,1446905383,A2 +1446905320,1446905331,IQ +1446905332,1446905335,A2 +1446905336,1446905343,IQ +1446905344,1446905383,A2 1446905384,1446905391,SD 1446905392,1446905583,A2 1446905584,1446905591,AF -1446905592,1446905599,A2 -1446905600,1446905603,ZM -1446905604,1446905615,IQ -1446905616,1446905619,A2 -1446905620,1446905623,ZM -1446905624,1446905627,A2 -1446905628,1446905631,AF -1446905632,1446905635,LY +1446905592,1446905619,A2 +1446905620,1446905623,TD +1446905624,1446905635,A2 1446905636,1446905639,IQ 1446905640,1446905643,A2 -1446905644,1446905655,IQ +1446905644,1446905647,IQ +1446905648,1446905651,A2 +1446905652,1446905655,IQ 1446905656,1446905659,AF 1446905660,1446905663,ER -1446905664,1446905667,LY -1446905668,1446905671,A2 -1446905672,1446905675,AF -1446905676,1446905679,LY -1446905680,1446905683,ZM -1446905684,1446905691,A2 -1446905692,1446905695,ZM -1446905696,1446905699,LY -1446905700,1446905703,ZM -1446905704,1446905719,A2 +1446905664,1446905667,A2 +1446905668,1446905675,AF +1446905676,1446905703,A2 +1446905704,1446905707,IQ +1446905708,1446905715,A2 +1446905716,1446905719,IQ 1446905720,1446905723,AF 1446905724,1446905727,A2 1446905728,1446905731,IQ 1446905732,1446905735,AF -1446905736,1446905743,A2 +1446905736,1446905739,IQ +1446905740,1446905743,A2 1446905744,1446905747,LY -1446905748,1446905751,A2 -1446905752,1446905755,IQ -1446905756,1446905759,A2 +1446905748,1446905759,A2 1446905760,1446905763,ML -1446905764,1446905767,LY -1446905768,1446905779,A2 -1446905780,1446905783,LY -1446905784,1446905787,A2 -1446905788,1446905791,LY +1446905764,1446905767,A2 +1446905768,1446905775,IQ +1446905776,1446905791,A2 1446905792,1446905795,TD -1446905796,1446905803,A2 -1446905804,1446905807,IQ -1446905808,1446905815,A2 -1446905816,1446905823,LY -1446905824,1446905827,A2 -1446905828,1446905831,LY +1446905796,1446905799,A2 +1446905800,1446905803,IQ +1446905804,1446905815,A2 +1446905816,1446905819,LY +1446905820,1446905823,IQ +1446905824,1446905831,A2 1446905832,1446905835,NG -1446905836,1446905839,A2 -1446905840,1446905843,IQ -1446905844,1446905847,A2 -1446905848,1446905851,IQ +1446905836,1446905839,IQ +1446905840,1446905851,A2 1446905852,1446905855,AF -1446905856,1446905856,A2 -1446905857,1446905863,LY +1446905856,1446905863,LY 1446905864,1446905871,SD 1446905872,1446905911,A2 -1446905912,1446905943,SD -1446905944,1446906023,A2 +1446905912,1446905927,SD +1446905928,1446905935,A2 +1446905936,1446905943,SD +1446905944,1446905959,A2 +1446905960,1446905967,AF +1446905968,1446906023,A2 1446906024,1446906031,SD -1446906032,1446906039,A2 -1446906040,1446906047,SD -1446906048,1446906071,A2 +1446906032,1446906071,A2 1446906072,1446906079,CY -1446906080,1446906115,A2 -1446906116,1446906119,ZM -1446906120,1446906123,SD +1446906080,1446906111,A2 +1446906112,1446906119,IQ +1446906120,1446906123,BG 1446906124,1446906131,IQ -1446906132,1446906135,LY -1446906136,1446906139,IQ -1446906140,1446906143,A2 -1446906144,1446906151,ZM -1446906152,1446906167,AF -1446906168,1446906171,A2 +1446906132,1446906151,A2 +1446906152,1446906159,AF +1446906160,1446906167,A2 +1446906168,1446906171,IQ 1446906172,1446906179,AF -1446906180,1446906187,A2 -1446906188,1446906191,AF -1446906192,1446906195,A2 -1446906196,1446906203,IQ -1446906204,1446906211,A2 +1446906180,1446906211,A2 1446906212,1446906215,AF -1446906216,1446906219,A2 +1446906216,1446906219,IQ 1446906220,1446906223,BG -1446906224,1446906231,IQ +1446906224,1446906227,IQ +1446906228,1446906231,A2 1446906232,1446906239,AF 1446906240,1446906243,IQ -1446906244,1446906247,A2 -1446906248,1446906259,IQ +1446906244,1446906251,A2 +1446906252,1446906255,IQ +1446906256,1446906259,A2 1446906260,1446906263,AF -1446906264,1446906283,A2 -1446906284,1446906303,IQ -1446906304,1446906307,ZM -1446906308,1446906311,A2 -1446906312,1446906327,IQ -1446906328,1446906331,A2 -1446906332,1446906335,IQ -1446906336,1446906339,ZM -1446906340,1446906343,A2 +1446906264,1446906287,A2 +1446906288,1446906295,IQ +1446906296,1446906299,A2 +1446906300,1446906303,LY +1446906304,1446906327,A2 +1446906328,1446906331,IQ +1446906332,1446906343,A2 1446906344,1446906347,NG -1446906348,1446906351,ZM -1446906352,1446906359,A2 +1446906348,1446906359,A2 1446906360,1446906363,SD -1446906364,1446906367,IQ -1446906368,1446906391,A2 +1446906364,1446906391,A2 1446906392,1446906399,CY -1446906400,1446906567,A2 -1446906568,1446906591,KW -1446906592,1446906599,IQ -1446906600,1446906615,KW -1446906616,1446906623,A2 -1446906624,1446906631,LY -1446906632,1446906639,A2 -1446906640,1446906655,LY -1446906656,1446906663,NG -1446906664,1446906863,A2 -1446906864,1446906871,ZM -1446906872,1446906879,A2 -1446906880,1446906883,IQ +1446906400,1446906883,A2 1446906884,1446906887,AF -1446906888,1446906891,IQ -1446906892,1446906895,A2 -1446906896,1446906899,IQ -1446906900,1446906907,A2 -1446906908,1446906919,IQ +1446906888,1446906895,A2 +1446906896,1446906899,GN +1446906900,1446906915,A2 +1446906916,1446906919,AF 1446906920,1446906923,A2 1446906924,1446906927,IQ 1446906928,1446906931,SA -1446906932,1446906935,IQ -1446906936,1446906943,LY +1446906932,1446906939,A2 +1446906940,1446906943,LY 1446906944,1446906947,IQ -1446906948,1446906951,A2 -1446906952,1446906955,IQ -1446906956,1446906963,A2 -1446906964,1446906967,AF -1446906968,1446906971,A2 -1446906972,1446906983,IQ +1446906948,1446906967,A2 +1446906968,1446906971,LY +1446906972,1446906975,A2 +1446906976,1446906979,IQ +1446906980,1446906983,LY 1446906984,1446906987,NG -1446906988,1446906995,IQ +1446906988,1446906991,A2 +1446906992,1446906995,IQ 1446906996,1446906999,AF -1446907000,1446907007,A2 +1446907000,1446907003,LY +1446907004,1446907007,A2 1446907008,1446907011,AF -1446907012,1446907015,IQ -1446907016,1446907019,ZM -1446907020,1446907023,AF -1446907024,1446907027,IQ -1446907028,1446907031,ZM -1446907032,1446907039,A2 -1446907040,1446907043,ZM +1446907012,1446907019,A2 +1446907020,1446907023,LY +1446907024,1446907031,A2 +1446907032,1446907035,LY +1446907036,1446907039,IQ +1446907040,1446907043,A2 1446907044,1446907047,CG -1446907048,1446907055,IQ -1446907056,1446907067,A2 +1446907048,1446907051,IQ +1446907052,1446907067,A2 1446907068,1446907071,AF -1446907072,1446907075,A2 -1446907076,1446907079,IQ +1446907072,1446907075,IQ +1446907076,1446907079,A2 1446907080,1446907083,AF -1446907084,1446907087,IQ -1446907088,1446907091,LY -1446907092,1446907095,IQ +1446907084,1446907095,A2 1446907096,1446907099,NG -1446907100,1446907103,IQ -1446907104,1446907123,A2 -1446907124,1446907131,IQ +1446907100,1446907103,A2 +1446907104,1446907107,LY +1446907108,1446907111,A2 +1446907112,1446907115,IQ +1446907116,1446907119,LY +1446907120,1446907131,A2 1446907132,1446907135,AF -1446907136,1446907147,A2 +1446907136,1446907143,A2 +1446907144,1446907147,AF 1446907148,1446907151,IQ 1446907152,1446907155,A2 1446907156,1446907159,LY -1446907160,1446907163,AF -1446907164,1446907167,IQ -1446907168,1446907171,LY +1446907160,1446907163,IQ +1446907164,1446907171,A2 1446907172,1446907175,IQ -1446907176,1446907187,LY +1446907176,1446907187,A2 1446907188,1446907191,CG -1446907192,1446907199,IQ -1446907200,1446907203,A2 -1446907204,1446907207,IQ -1446907208,1446907211,A2 +1446907192,1446907195,A2 +1446907196,1446907199,LY +1446907200,1446907211,A2 1446907212,1446907215,IQ -1446907216,1446907223,A2 -1446907224,1446907227,ZM -1446907228,1446907231,A2 +1446907216,1446907219,A2 +1446907220,1446907223,BJ +1446907224,1446907231,A2 1446907232,1446907243,IQ -1446907244,1446907247,NG -1446907248,1446907255,A2 -1446907256,1446907259,GA -1446907260,1446907279,IQ +1446907244,1446907251,A2 +1446907252,1446907259,IQ +1446907260,1446907263,A2 +1446907264,1446907271,IQ +1446907272,1446907279,A2 1446907280,1446907283,GA 1446907284,1446907287,A2 1446907288,1446907291,AF -1446907292,1446907303,A2 -1446907304,1446907307,IQ +1446907292,1446907307,A2 1446907308,1446907311,AF 1446907312,1446907315,A2 1446907316,1446907319,IQ 1446907320,1446907323,AF -1446907324,1446907327,A2 -1446907328,1446907331,IQ -1446907332,1446907335,A2 -1446907336,1446907339,IQ -1446907340,1446907347,LY -1446907348,1446907355,ZM -1446907356,1446907371,A2 +1446907324,1446907355,A2 +1446907356,1446907359,IQ +1446907360,1446907367,A2 +1446907368,1446907368,IQ +1446907369,1446907371,A2 1446907372,1446907375,AF -1446907376,1446907379,ZM -1446907380,1446907383,IQ +1446907376,1446907383,A2 1446907384,1446907387,CI -1446907388,1446907391,A2 -1446907392,1446907395,AF +1446907388,1446907395,A2 1446907396,1446907399,IQ 1446907400,1446907403,A2 1446907404,1446907407,IQ -1446907408,1446907411,A2 -1446907412,1446907419,IQ -1446907420,1446907423,A2 -1446907424,1446907427,ZM -1446907428,1446907439,A2 +1446907408,1446907415,A2 +1446907416,1446907423,IQ +1446907424,1446907431,A2 +1446907432,1446907435,IQ +1446907436,1446907439,A2 1446907440,1446907443,AF -1446907444,1446907451,A2 -1446907452,1446907463,IQ -1446907464,1446907475,A2 -1446907476,1446907479,LY -1446907480,1446907483,A2 -1446907484,1446907487,IQ -1446907488,1446907491,A2 +1446907444,1446907447,IQ +1446907448,1446907487,A2 +1446907488,1446907491,IQ 1446907492,1446907495,TD -1446907496,1446907503,IQ -1446907504,1446907507,LY -1446907508,1446907511,IQ -1446907512,1446907523,A2 -1446907524,1446907527,LY -1446907528,1446907531,A2 -1446907532,1446907539,IQ -1446907540,1446907543,LY -1446907544,1446907547,IQ +1446907496,1446907499,IQ +1446907500,1446907519,A2 +1446907520,1446907523,LY +1446907524,1446907531,A2 +1446907532,1446907535,CI +1446907536,1446907543,A2 +1446907544,1446907547,LY 1446907548,1446907551,A2 -1446907552,1446907559,IQ -1446907560,1446907571,A2 +1446907552,1446907555,LY +1446907556,1446907559,A2 +1446907560,1446907563,AF +1446907564,1446907571,A2 1446907572,1446907575,AF -1446907576,1446907579,A2 -1446907580,1446907583,GH -1446907584,1446907615,A2 +1446907576,1446907579,IQ +1446907580,1446907583,A2 +1446907584,1446907587,IQ +1446907588,1446907595,A2 +1446907596,1446907599,IQ +1446907600,1446907611,A2 +1446907612,1446907615,IQ 1446907616,1446907619,TD -1446907620,1446907631,A2 -1446907632,1446907635,LY -1446907636,1446907647,IQ -1446907648,1446907659,A2 -1446907660,1446907663,ZM +1446907620,1446907635,A2 +1446907636,1446907639,IQ +1446907640,1446907663,A2 1446907664,1446907667,NG -1446907668,1446907671,A2 -1446907672,1446907675,IQ -1446907676,1446907679,LY -1446907680,1446907691,A2 +1446907668,1446907671,IQ +1446907672,1446907679,A2 +1446907680,1446907683,LY +1446907684,1446907687,IQ +1446907688,1446907691,A2 1446907692,1446907695,IQ -1446907696,1446907699,LY -1446907700,1446907703,IQ -1446907704,1446907715,A2 +1446907696,1446907711,A2 +1446907712,1446907715,IQ 1446907716,1446907719,AF -1446907720,1446907723,A2 -1446907724,1446907731,IQ -1446907732,1446907735,LY -1446907736,1446907739,A2 -1446907740,1446907743,IQ -1446907744,1446907747,A2 -1446907748,1446907755,AF -1446907756,1446907759,A2 -1446907760,1446907763,IQ -1446907764,1446907767,A2 -1446907768,1446907771,IQ -1446907772,1446907775,A2 -1446907776,1446907779,LY -1446907780,1446907783,IQ -1446907784,1446907787,A2 +1446907720,1446907735,A2 +1446907736,1446907739,IQ +1446907740,1446907743,A2 +1446907744,1446907747,IQ +1446907748,1446907751,A2 +1446907752,1446907755,AF +1446907756,1446907767,A2 +1446907768,1446907775,IQ +1446907776,1446907787,A2 1446907788,1446907791,IQ -1446907792,1446907799,A2 -1446907800,1446907803,ZM -1446907804,1446907807,IQ -1446907808,1446907823,A2 -1446907824,1446907827,LY -1446907828,1446907831,A2 -1446907832,1446907839,LY -1446907840,1446907855,A2 +1446907792,1446907811,A2 +1446907812,1446907819,IQ +1446907820,1446907823,AF +1446907824,1446907827,A2 +1446907828,1446907831,TD +1446907832,1446907855,A2 1446907856,1446907859,AF -1446907860,1446907863,A2 -1446907864,1446907871,LY -1446907872,1446907875,A2 -1446907876,1446907883,IQ -1446907884,1446907887,A2 -1446907888,1446907891,SD +1446907860,1446907871,A2 +1446907872,1446907875,IQ +1446907876,1446907891,A2 1446907892,1446907895,AF -1446907896,1446907899,IQ -1446907900,1446907903,LY -1446907904,1446907911,IQ -1446907912,1446907919,A2 -1446907920,1446907927,LY -1446907928,1446908103,A2 -1446908104,1446908111,NG -1446908112,1446908143,A2 +1446907896,1446907899,A2 +1446907900,1446907903,EG +1446907904,1446907911,A2 +1446907912,1446907919,SD +1446907920,1446908143,A2 1446908144,1446908151,AE 1446908152,1446908159,SD 1446908160,1446908163,AF -1446908164,1446908167,A2 -1446908168,1446908175,IQ -1446908176,1446908187,A2 +1446908164,1446908187,A2 1446908188,1446908191,GH -1446908192,1446908235,A2 -1446908236,1446908243,IQ -1446908244,1446908247,A2 +1446908192,1446908195,A2 +1446908196,1446908199,IQ +1446908200,1446908211,A2 +1446908212,1446908215,SD +1446908216,1446908231,A2 +1446908232,1446908235,LY +1446908236,1446908247,A2 1446908248,1446908251,AF -1446908252,1446908255,A2 -1446908256,1446908259,SZ -1446908260,1446908267,A2 +1446908252,1446908259,A2 +1446908260,1446908263,IQ +1446908264,1446908267,A2 1446908268,1446908271,AF -1446908272,1446908275,LY -1446908276,1446908279,A2 -1446908280,1446908283,IQ +1446908272,1446908283,A2 1446908284,1446908287,AF 1446908288,1446908299,A2 1446908300,1446908303,IQ -1446908304,1446908307,AF -1446908308,1446908311,A2 -1446908312,1446908315,LY -1446908316,1446908323,A2 -1446908324,1446908327,ZM -1446908328,1446908331,A2 +1446908304,1446908331,A2 1446908332,1446908335,NG -1446908336,1446908359,A2 +1446908336,1446908343,A2 +1446908344,1446908347,IQ +1446908348,1446908351,TD +1446908352,1446908355,IQ +1446908356,1446908359,A2 1446908360,1446908363,LY -1446908364,1446908367,A2 -1446908368,1446908371,IQ -1446908372,1446908383,A2 -1446908384,1446908391,IQ -1446908392,1446908419,A2 -1446908420,1446908423,IQ -1446908424,1446908427,A2 -1446908428,1446908431,IQ -1446908432,1446908435,A2 +1446908364,1446908379,A2 +1446908380,1446908383,IQ +1446908384,1446908387,A2 +1446908388,1446908391,IQ +1446908392,1446908423,A2 +1446908424,1446908427,AF +1446908428,1446908435,A2 1446908436,1446908443,AF -1446908444,1446908447,A2 -1446908448,1446908451,ZM -1446908452,1446908455,A2 +1446908444,1446908455,A2 1446908456,1446908459,LB 1446908460,1446908479,A2 1446908480,1446908483,IQ -1446908484,1446908487,A2 -1446908488,1446908491,IQ -1446908492,1446908515,A2 -1446908516,1446908519,IQ -1446908520,1446908531,A2 -1446908532,1446908535,IQ -1446908536,1446908539,A2 +1446908484,1446908539,A2 1446908540,1446908543,ZM -1446908544,1446908591,A2 -1446908592,1446908595,IQ -1446908596,1446908599,A2 -1446908600,1446908603,ZM +1446908544,1446908603,A2 1446908604,1446908607,CG 1446908608,1446908631,A2 1446908632,1446908635,IQ -1446908636,1446908651,A2 -1446908652,1446908663,IQ -1446908664,1446908683,A2 +1446908636,1446908655,A2 +1446908656,1446908667,IQ +1446908668,1446908683,A2 1446908684,1446908687,SD 1446908688,1446908691,IQ -1446908692,1446908707,A2 -1446908708,1446908711,IQ -1446908712,1446908715,A2 -1446908716,1446908719,CM -1446908720,1446908727,A2 -1446908728,1446908731,AF -1446908732,1446908735,A2 -1446908736,1446908739,IQ -1446908740,1446908743,A2 -1446908744,1446908747,GN -1446908748,1446908751,A2 -1446908752,1446908759,IQ -1446908760,1446908775,A2 -1446908776,1446908779,IQ -1446908780,1446908787,A2 +1446908692,1446908755,A2 +1446908756,1446908759,IQ +1446908760,1446908787,A2 1446908788,1446908791,NG -1446908792,1446908811,A2 -1446908812,1446908815,IQ -1446908816,1446908835,A2 -1446908836,1446908843,IQ -1446908844,1446908855,A2 -1446908856,1446908859,ZM -1446908860,1446908863,A2 +1446908792,1446908863,A2 1446908864,1446908871,AF 1446908872,1446908875,A2 1446908876,1446908879,AF -1446908880,1446908907,A2 -1446908908,1446908911,IQ -1446908912,1446908919,A2 +1446908880,1446908919,A2 1446908920,1446908923,IQ 1446908924,1446908927,A2 1446908928,1446908931,IQ 1446908932,1446908935,ZM -1446908936,1446908951,A2 -1446908952,1446908955,IQ -1446908956,1446908959,LY -1446908960,1446908971,A2 +1446908936,1446908947,A2 +1446908948,1446908951,LY +1446908952,1446908971,A2 1446908972,1446908975,AF 1446908976,1446908979,GA 1446908980,1446908983,AF -1446908984,1446908987,LY -1446908988,1446908999,A2 -1446909000,1446909003,IQ -1446909004,1446909007,LY -1446909008,1446909019,IQ -1446909020,1446909083,A2 +1446908984,1446908991,A2 +1446908992,1446908995,IQ +1446908996,1446909007,A2 +1446909008,1446909011,IQ +1446909012,1446909083,A2 1446909084,1446909087,CG -1446909088,1446909091,IQ -1446909092,1446909095,A2 +1446909088,1446909095,A2 1446909096,1446909099,TD 1446909100,1446909111,A2 1446909112,1446909115,IQ 1446909116,1446909163,A2 1446909164,1446909167,IQ -1446909168,1446909171,A2 -1446909172,1446909173,IQ -1446909174,1446909195,A2 -1446909196,1446909199,IQ -1446909200,1446909203,A2 +1446909168,1446909187,A2 +1446909188,1446909191,IQ +1446909192,1446909203,A2 1446909204,1446909207,IQ -1446909208,1446909211,LY -1446909212,1446909215,A2 -1446909216,1446909219,LY -1446909220,1446909223,IQ -1446909224,1446909271,A2 -1446909272,1446909275,IQ -1446909276,1446909295,A2 +1446909208,1446909239,A2 +1446909240,1446909243,LY +1446909244,1446909295,A2 1446909296,1446909299,IQ -1446909300,1446909303,A2 -1446909304,1446909319,IQ -1446909320,1446909327,A2 -1446909328,1446909331,IQ -1446909332,1446909335,A2 -1446909336,1446909339,GH -1446909340,1446909351,A2 -1446909352,1446909359,IQ -1446909360,1446909363,A2 +1446909300,1446909363,A2 1446909364,1446909367,IQ -1446909368,1446909391,A2 -1446909392,1446909395,ZM -1446909396,1446909401,NG -1446909402,1446909423,A2 +1446909368,1446909399,A2 +1446909400,1446909403,AF +1446909404,1446909423,A2 1446909424,1446909435,AF -1446909436,1446909443,A2 +1446909436,1446909443,IQ 1446909444,1446909447,NG -1446909448,1446909471,A2 -1446909472,1446909475,IQ -1446909476,1446909491,A2 -1446909492,1446909495,IQ -1446909496,1446909499,A2 -1446909500,1446909507,IQ -1446909508,1446909519,A2 +1446909448,1446909499,A2 +1446909500,1446909503,IQ +1446909504,1446909507,LY +1446909508,1446909511,IQ +1446909512,1446909519,A2 1446909520,1446909523,CG -1446909524,1446909539,A2 -1446909540,1446909543,IQ -1446909544,1446909555,A2 -1446909556,1446909559,IQ -1446909560,1446909563,A2 -1446909564,1446909567,NG -1446909568,1446909575,A2 +1446909524,1446909527,A2 +1446909528,1446909531,EG +1446909532,1446909535,A2 +1446909536,1446909539,AF +1446909540,1446909547,IQ +1446909548,1446909575,A2 1446909576,1446909579,AF 1446909580,1446909599,A2 1446909600,1446909603,AF -1446909604,1446909615,A2 -1446909616,1446909623,IQ -1446909624,1446909647,A2 -1446909648,1446909651,NG -1446909652,1446909655,A2 -1446909656,1446909659,AF -1446909660,1446909667,A2 -1446909668,1446909671,IQ -1446909672,1446909683,A2 -1446909684,1446909687,IQ +1446909604,1446909639,A2 +1446909640,1446909643,NG +1446909644,1446909687,A2 1446909688,1446909691,AF -1446909692,1446909699,A2 -1446909700,1446909703,IQ -1446909704,1446909731,A2 -1446909732,1446909735,IQ -1446909736,1446909739,ZM +1446909692,1446909739,A2 1446909740,1446909743,AF -1446909744,1446909755,A2 -1446909756,1446909763,ZM -1446909764,1446909787,A2 -1446909788,1446909791,IQ -1446909792,1446909803,A2 +1446909744,1446909803,A2 1446909804,1446909807,AF 1446909808,1446909815,A2 1446909816,1446909819,AF 1446909820,1446909827,IQ -1446909828,1446909851,A2 -1446909852,1446909855,LY -1446909856,1446909859,A2 -1446909860,1446909863,IQ -1446909864,1446909867,A2 -1446909868,1446909871,LY -1446909872,1446909879,A2 -1446909880,1446909883,LY -1446909884,1446909887,A2 -1446909888,1446909891,LY -1446909892,1446909907,A2 -1446909908,1446909911,IQ -1446909912,1446909955,A2 -1446909956,1446909959,IQ -1446909960,1446909967,A2 -1446909968,1446909971,LY -1446909972,1446909975,A2 -1446909976,1446909991,LY -1446909992,1446909999,IQ +1446909828,1446909903,A2 +1446909904,1446909907,IQ +1446909908,1446909999,A2 1446910000,1446910003,AF -1446910004,1446910011,A2 -1446910012,1446910015,IQ -1446910016,1446910019,A2 -1446910020,1446910027,IQ -1446910028,1446910031,A2 -1446910032,1446910035,LY -1446910036,1446910039,A2 -1446910040,1446910043,IQ -1446910044,1446910055,A2 +1446910004,1446910019,A2 +1446910020,1446910023,IQ +1446910024,1446910035,A2 +1446910036,1446910039,NG +1446910040,1446910055,A2 1446910056,1446910059,ZM -1446910060,1446910063,IQ -1446910064,1446910071,A2 -1446910072,1446910075,IQ -1446910076,1446910083,A2 -1446910084,1446910095,IQ -1446910096,1446910103,A2 -1446910104,1446910107,IQ -1446910108,1446910111,A2 -1446910112,1446910115,IQ -1446910116,1446910119,A2 -1446910120,1446910123,IQ -1446910124,1446910159,A2 -1446910160,1446910163,ZM +1446910060,1446910111,A2 +1446910112,1446910115,NG +1446910116,1446910139,A2 +1446910140,1446910143,NG +1446910144,1446910163,A2 1446910164,1446910167,NG -1446910168,1446910175,A2 -1446910176,1446910179,ZM -1446910180,1446910191,IQ +1446910168,1446910187,A2 +1446910188,1446910191,IQ 1446910192,1446910195,A2 1446910196,1446910199,AF -1446910200,1446910203,A2 -1446910204,1446910207,ZM -1446910208,1446910211,A2 -1446910212,1446910220,IQ -1446910221,1446910223,A2 +1446910200,1446910215,A2 +1446910216,1446910219,IQ +1446910220,1446910223,A2 1446910224,1446910227,IQ -1446910228,1446910231,A2 -1446910232,1446910239,IQ -1446910240,1446910247,A2 -1446910248,1446910251,LY +1446910228,1446910251,A2 1446910252,1446910255,IQ -1446910256,1446910263,A2 -1446910264,1446910267,IQ -1446910268,1446910271,AF -1446910272,1446910275,A2 +1446910256,1446910275,A2 1446910276,1446910279,IQ 1446910280,1446910283,A2 -1446910284,1446910291,IQ -1446910292,1446910295,A2 -1446910296,1446910307,IQ +1446910284,1446910287,IQ +1446910288,1446910303,A2 +1446910304,1446910307,IQ 1446910308,1446910311,AF -1446910312,1446910323,A2 -1446910324,1446910327,IQ -1446910328,1446910331,A2 -1446910332,1446910335,IQ +1446910312,1446910335,A2 1446910336,1446910339,AF -1446910340,1446910343,IQ -1446910344,1446910347,LY +1446910340,1446910347,A2 1446910348,1446910351,GA -1446910352,1446910355,A2 -1446910356,1446910359,IQ -1446910360,1446910363,AF -1446910364,1446910371,A2 -1446910372,1446910379,AF -1446910380,1446910427,A2 -1446910428,1446910431,IQ -1446910432,1446910439,A2 -1446910440,1446910443,IQ -1446910444,1446910455,A2 -1446910456,1446910459,IQ -1446910460,1446910463,A2 -1446910464,1446910479,LY -1446910480,1446910495,A2 +1446910352,1446910359,A2 +1446910360,1446910363,IQ +1446910364,1446910375,A2 +1446910376,1446910379,AF +1446910380,1446910459,A2 +1446910460,1446910463,LY +1446910464,1446910471,A2 +1446910472,1446910479,LY +1446910480,1446910487,EG +1446910488,1446910495,A2 1446910496,1446910503,NG -1446910504,1446910527,A2 -1446910528,1446910535,AF -1446910536,1446910599,A2 -1446910600,1446910615,NG -1446910616,1446910623,A2 +1446910504,1446910599,A2 +1446910600,1446910607,NG +1446910608,1446910623,A2 1446910624,1446910631,AF 1446910632,1446910695,A2 1446910696,1446910711,SD -1446910712,1446910719,AE -1446910720,1446910723,A2 -1446910724,1446910727,IQ +1446910712,1446910727,A2 1446910728,1446910731,AF 1446910732,1446910739,A2 1446910740,1446910747,AF -1446910748,1446910751,A2 -1446910752,1446910755,LY -1446910756,1446910767,IQ -1446910768,1446910771,A2 +1446910748,1446910755,A2 +1446910756,1446910759,IQ +1446910760,1446910771,A2 1446910772,1446910775,AF -1446910776,1446910779,IQ -1446910780,1446910787,A2 -1446910788,1446910791,IQ -1446910792,1446910799,A2 +1446910776,1446910791,A2 +1446910792,1446910795,LY +1446910796,1446910799,A2 1446910800,1446910807,IQ 1446910808,1446910815,A2 1446910816,1446910819,IQ @@ -39634,253 +45115,193 @@ 1446910836,1446910839,AF 1446910840,1446910843,A2 1446910844,1446910847,NG -1446910848,1446910855,IQ -1446910856,1446910883,A2 -1446910884,1446910887,IQ -1446910888,1446910899,A2 -1446910900,1446910903,IQ -1446910904,1446910907,A2 -1446910908,1446910911,IQ -1446910912,1446910927,A2 -1446910928,1446910931,NG -1446910932,1446910935,A2 -1446910936,1446910943,IQ -1446910944,1446910947,A2 -1446910948,1446910955,IQ +1446910848,1446910851,IQ +1446910852,1446910887,A2 +1446910888,1446910891,LY +1446910892,1446910911,A2 +1446910912,1446910915,IQ +1446910916,1446910919,A2 +1446910920,1446910923,AF +1446910924,1446910931,A2 +1446910932,1446910939,IQ +1446910940,1446910951,A2 +1446910952,1446910955,IQ 1446910956,1446910963,A2 1446910964,1446910967,AF -1446910968,1446910971,IQ +1446910968,1446910971,A2 1446910972,1446910975,AF 1446910976,1446910979,IQ -1446910980,1446910991,AF -1446910992,1446910999,IQ +1446910980,1446910983,A2 +1446910984,1446910991,AF +1446910992,1446910995,A2 +1446910996,1446910999,IQ 1446911000,1446911003,A2 1446911004,1446911007,IQ -1446911008,1446911011,LY -1446911012,1446911015,A2 +1446911008,1446911015,A2 1446911016,1446911023,IQ 1446911024,1446911027,LY -1446911028,1446911035,AF -1446911036,1446911039,LY -1446911040,1446911043,A2 -1446911044,1446911047,IQ -1446911048,1446911051,LY -1446911052,1446911055,AF -1446911056,1446911059,A2 -1446911060,1446911067,IQ -1446911068,1446911075,A2 -1446911076,1446911079,IQ -1446911080,1446911087,LY -1446911088,1446911091,A2 -1446911092,1446911095,IQ +1446911028,1446911031,AF +1446911032,1446911083,A2 +1446911084,1446911087,LY +1446911088,1446911095,A2 1446911096,1446911099,NG -1446911100,1446911103,IQ -1446911104,1446911111,SD -1446911112,1446911115,A2 -1446911116,1446911135,SD -1446911136,1446911143,A2 +1446911100,1446911111,A2 +1446911112,1446911115,SD +1446911116,1446911123,A2 +1446911124,1446911143,LY 1446911144,1446911147,TD 1446911148,1446911163,A2 1446911164,1446911171,IQ -1446911172,1446911175,A2 -1446911176,1446911179,IQ -1446911180,1446911191,A2 -1446911192,1446911203,IQ -1446911204,1446911207,A2 -1446911208,1446911219,IQ -1446911220,1446911223,A2 +1446911172,1446911183,A2 +1446911184,1446911187,AF +1446911188,1446911195,A2 +1446911196,1446911199,IQ +1446911200,1446911207,A2 +1446911208,1446911215,IQ +1446911216,1446911223,A2 1446911224,1446911227,AF -1446911228,1446911231,LY -1446911232,1446911239,IQ -1446911240,1446911243,A2 -1446911244,1446911247,LY -1446911248,1446911251,A2 -1446911252,1446911255,IQ -1446911256,1446911259,A2 +1446911228,1446911235,A2 +1446911236,1446911239,IQ +1446911240,1446911255,A2 +1446911256,1446911259,LY 1446911260,1446911263,AF 1446911264,1446911267,IQ 1446911268,1446911271,AF -1446911272,1446911283,A2 -1446911284,1446911287,IQ -1446911288,1446911291,LY -1446911292,1446911295,IQ +1446911272,1446911295,A2 1446911296,1446911299,GH -1446911300,1446911303,IQ -1446911304,1446911311,A2 -1446911312,1446911315,LY -1446911316,1446911319,IQ -1446911320,1446911323,A2 -1446911324,1446911327,IQ -1446911328,1446911331,NG -1446911332,1446911335,ZM -1446911336,1446911339,IQ -1446911340,1446911343,AF -1446911344,1446911347,A2 +1446911300,1446911303,A2 +1446911304,1446911307,IQ +1446911308,1446911319,A2 +1446911320,1446911323,AF +1446911324,1446911343,A2 +1446911344,1446911347,IQ 1446911348,1446911351,LY -1446911352,1446911355,IQ -1446911356,1446911359,A2 -1446911360,1446911363,IQ -1446911364,1446911367,A2 -1446911368,1446911371,LY -1446911372,1446911375,A2 -1446911376,1446911379,LY -1446911380,1446911387,A2 -1446911388,1446911395,LY -1446911396,1446911399,A2 -1446911400,1446911403,LY +1446911352,1446911363,A2 +1446911364,1446911367,LY +1446911368,1446911395,A2 +1446911396,1446911399,AF +1446911400,1446911403,A2 1446911404,1446911407,AF -1446911408,1446911415,A2 -1446911416,1446911423,IQ +1446911408,1446911411,LY +1446911412,1446911423,A2 1446911424,1446911427,AF 1446911428,1446911435,A2 1446911436,1446911439,SD -1446911440,1446911447,A2 -1446911448,1446911459,IQ -1446911460,1446911463,A2 -1446911464,1446911467,IQ -1446911468,1446911475,A2 +1446911440,1446911443,A2 +1446911444,1446911447,IQ +1446911448,1446911459,A2 +1446911460,1446911463,LY +1446911464,1446911475,A2 1446911476,1446911479,ER 1446911480,1446911483,CG -1446911484,1446911503,A2 -1446911504,1446911507,IQ -1446911508,1446911515,A2 -1446911516,1446911523,IQ -1446911524,1446911527,A2 -1446911528,1446911531,IQ -1446911532,1446911539,A2 -1446911540,1446911543,IQ +1446911484,1446911487,A2 +1446911488,1446911491,LY +1446911492,1446911507,A2 +1446911508,1446911511,AF +1446911512,1446911515,EG +1446911516,1446911535,A2 +1446911536,1446911539,SD +1446911540,1446911543,LY 1446911544,1446911547,AF -1446911548,1446911551,LY -1446911552,1446911559,AF -1446911560,1446911567,A2 +1446911548,1446911559,A2 +1446911560,1446911563,LY +1446911564,1446911567,A2 1446911568,1446911571,IQ -1446911572,1446911575,LY -1446911576,1446911579,IQ -1446911580,1446911587,A2 -1446911588,1446911591,IQ -1446911592,1446911595,A2 -1446911596,1446911597,LY -1446911598,1446911615,A2 +1446911572,1446911579,A2 +1446911580,1446911583,CG +1446911584,1446911587,A2 +1446911588,1446911591,LY +1446911592,1446911595,AF +1446911596,1446911599,A2 +1446911600,1446911603,LY +1446911604,1446911615,A2 1446911616,1446911619,LY -1446911620,1446911623,GH +1446911620,1446911623,A2 1446911624,1446911627,IQ 1446911628,1446911631,AF -1446911632,1446911635,A2 -1446911636,1446911639,IQ -1446911640,1446911647,A2 -1446911648,1446911651,ZM -1446911652,1446911655,A2 -1446911656,1446911659,IQ -1446911660,1446911671,A2 -1446911672,1446911675,LY -1446911676,1446911679,IQ +1446911632,1446911635,IQ +1446911636,1446911643,A2 +1446911644,1446911647,AF +1446911648,1446911679,A2 1446911680,1446911683,SD -1446911684,1446911687,A2 -1446911688,1446911691,LY -1446911692,1446911695,AF -1446911696,1446911699,A2 -1446911700,1446911707,LY -1446911708,1446911711,IQ -1446911712,1446911715,LY -1446911716,1446911719,IQ -1446911720,1446911723,LY -1446911724,1446911727,IQ -1446911728,1446911739,LY -1446911740,1446911747,A2 -1446911748,1446911751,IQ -1446911752,1446911759,LY -1446911760,1446911763,IQ -1446911764,1446911767,A2 -1446911768,1446911771,AF -1446911772,1446911779,IQ +1446911684,1446911691,A2 +1446911692,1446911701,LY +1446911702,1446911739,A2 +1446911740,1446911743,LY +1446911744,1446911751,IQ +1446911752,1446911763,A2 +1446911764,1446911767,LY +1446911768,1446911771,A2 +1446911772,1446911775,AF +1446911776,1446911779,A2 1446911780,1446911783,AF -1446911784,1446911787,LY +1446911784,1446911787,A2 1446911788,1446911791,AF -1446911792,1446911795,LY -1446911796,1446911803,A2 -1446911804,1446911811,LY -1446911812,1446911815,IQ -1446911816,1446911819,LY -1446911820,1446911827,IQ -1446911828,1446911835,A2 +1446911792,1446911795,A2 +1446911796,1446911799,IQ +1446911800,1446911803,NG +1446911804,1446911819,A2 +1446911820,1446911823,IQ +1446911824,1446911827,A2 +1446911828,1446911831,IQ +1446911832,1446911835,A2 1446911836,1446911843,IQ 1446911844,1446911847,A2 -1446911848,1446911851,IQ -1446911852,1446911855,A2 +1446911848,1446911855,IQ 1446911856,1446911859,AF -1446911860,1446911863,A2 -1446911864,1446911867,IQ +1446911860,1446911867,A2 1446911868,1446911871,LY -1446911872,1446911879,A2 -1446911880,1446911883,IQ -1446911884,1446911887,NG -1446911888,1446911891,IQ -1446911892,1446911895,A2 -1446911896,1446911899,IQ -1446911900,1446911903,A2 +1446911872,1446911875,AF +1446911876,1446911903,A2 1446911904,1446911907,AF -1446911908,1446911911,IQ -1446911912,1446911923,A2 -1446911924,1446911927,IQ -1446911928,1446911935,A2 -1446911936,1446911939,IQ -1446911940,1446911943,A2 -1446911944,1446911955,IQ -1446911956,1446911959,A2 -1446911960,1446911967,IQ -1446911968,1446911975,A2 -1446911976,1446911987,IQ -1446911988,1446911991,AF -1446911992,1446911995,A2 -1446911996,1446911999,IQ -1446912000,1446912003,BJ +1446911908,1446911947,A2 +1446911948,1446911951,IQ +1446911952,1446911955,A2 +1446911956,1446911959,IQ +1446911960,1446911963,A2 +1446911964,1446911967,IQ +1446911968,1446911987,A2 +1446911988,1446911995,AF +1446911996,1446912003,A2 1446912004,1446912007,AF -1446912008,1446912011,IQ -1446912012,1446912015,A2 -1446912016,1446912019,BJ -1446912020,1446912023,ZM -1446912024,1446912027,A2 +1446912008,1446912011,A2 +1446912012,1446912015,IQ +1446912016,1446912027,A2 1446912028,1446912031,AF -1446912032,1446912035,IQ +1446912032,1446912035,A2 1446912036,1446912039,AF -1446912040,1446912047,A2 -1446912048,1446912051,IQ +1446912040,1446912043,IQ +1446912044,1446912047,CG +1446912048,1446912051,AF 1446912052,1446912055,ER 1446912056,1446912059,A2 1446912060,1446912063,NG 1446912064,1446912067,AF -1446912068,1446912071,IQ +1446912068,1446912071,A2 1446912072,1446912075,AE 1446912076,1446912079,A2 1446912080,1446912083,IQ -1446912084,1446912087,A2 -1446912088,1446912091,IQ -1446912092,1446912095,LY -1446912096,1446912099,AF -1446912100,1446912107,IQ -1446912108,1446912111,A2 -1446912112,1446912115,IQ +1446912084,1446912087,AF +1446912088,1446912095,A2 +1446912096,1446912103,AF +1446912104,1446912107,IQ +1446912108,1446912115,A2 1446912116,1446912119,LY -1446912120,1446912123,A2 -1446912124,1446912127,LY -1446912128,1446912139,A2 -1446912140,1446912143,IQ -1446912144,1446912147,AF -1446912148,1446912151,IQ -1446912152,1446912163,A2 +1446912120,1446912151,A2 +1446912152,1446912155,CF +1446912156,1446912163,A2 1446912164,1446912167,IQ -1446912168,1446912179,A2 -1446912180,1446912183,ZM +1446912168,1446912183,A2 1446912184,1446912187,AF -1446912188,1446912195,IQ -1446912196,1446912211,A2 -1446912212,1446912219,IQ -1446912220,1446912223,LY -1446912224,1446912235,IQ -1446912236,1446912243,A2 -1446912244,1446912247,IQ +1446912188,1446912191,IQ +1446912192,1446912195,A2 +1446912196,1446912203,IQ +1446912204,1446912215,A2 +1446912216,1446912219,IQ +1446912220,1446912239,A2 +1446912240,1446912247,IQ 1446912248,1446912251,AF -1446912252,1446912255,A2 +1446912252,1446912255,IQ 1446912256,1446912263,AF 1446912264,1446912295,IQ 1446912296,1446912303,AF @@ -39910,11 +45331,83 @@ 1449459712,1449525247,HU 1449525248,1449590783,RU 1449590784,1449656319,DE -1449656320,1449808639,RO +1449656320,1449657087,GB +1449657088,1449658623,RO +1449658624,1449659135,GB +1449659136,1449685759,RO +1449685760,1449686271,GB +1449686272,1449686527,RO +1449686528,1449687039,GB +1449687040,1449687295,RO +1449687296,1449688063,GB +1449688064,1449690111,RO +1449690112,1449690623,GB +1449690624,1449705471,RO +1449705472,1449705727,GB +1449705728,1449706239,RO +1449706240,1449706495,GB +1449706496,1449710591,RO +1449710592,1449711103,GB +1449711104,1449711359,RO +1449711360,1449711615,GB +1449711616,1449717759,RO +1449717760,1449718783,GB +1449718784,1449719039,RO +1449719040,1449719807,GB +1449719808,1449756671,RO +1449756672,1449758719,GB +1449758720,1449767423,RO +1449767424,1449767679,GB +1449767680,1449771775,RO +1449771776,1449772031,GB +1449772032,1449773055,RO +1449773056,1449774079,GB +1449774080,1449776383,RO +1449776384,1449776639,GB +1449776640,1449779967,RO +1449779968,1449780223,GB +1449780224,1449780735,RO +1449780736,1449780991,GB +1449780992,1449783807,RO +1449783808,1449784319,GB +1449784320,1449785343,RO +1449785344,1449786367,GB +1449786368,1449787391,RO +1449787392,1449791487,GB +1449791488,1449795327,RO +1449795328,1449795583,GB +1449795584,1449808639,RO 1449808640,1449808895,UA -1449808896,1449840639,RO +1449808896,1449823231,RO +1449823232,1449826303,GB +1449826304,1449827839,RO +1449827840,1449828095,GB +1449828096,1449830655,RO +1449830656,1449830911,GB +1449830912,1449840639,RO 1449840640,1449852927,MD -1449852928,1449918463,RO +1449852928,1449854975,GB +1449854976,1449859071,RO +1449859072,1449859583,GB +1449859584,1449859839,RO +1449859840,1449860095,GB +1449860096,1449869311,RO +1449869312,1449870335,GB +1449870336,1449870847,RO +1449870848,1449871615,GB +1449871616,1449879551,RO +1449879552,1449881599,GB +1449881600,1449895935,RO +1449895936,1449896191,GB +1449896192,1449896703,RO +1449896704,1449896959,GB +1449896960,1449899007,RO +1449899008,1449899263,GB +1449899264,1449899519,RO +1449899520,1449899775,GB +1449899776,1449908223,RO +1449908224,1449910271,GB +1449910272,1449918463,RO 1449918464,1449951231,JO 1449951232,1449983999,TR 1449984000,1449992191,NL @@ -39938,7 +45431,6 @@ 1450123264,1450131455,AT 1450131456,1450139647,UA 1450139648,1450147839,PL -1450147840,1450156031,RU 1450156032,1450164223,GB 1450164224,1450166271,SA 1450166272,1450168319,PL @@ -39963,7 +45455,10 @@ 1464074240,1464336383,IL 1464336384,1464467455,DK 1464467456,1464598527,GB -1464598528,1464860671,DE +1464598528,1464602623,RU +1464606720,1464614911,KZ +1464614912,1464631295,UA +1464664064,1464860671,DE 1464860672,1465384959,GB 1465384960,1465647103,FR 1465647104,1465909247,FI @@ -40007,12 +45502,16 @@ 1466590208,1466592255,GB 1466592256,1466592511,FR 1466592512,1466592767,GB -1466592768,1466593279,FR +1466592768,1466592895,FR +1466592896,1466593023,DE +1466593024,1466593279,GB 1466593280,1466604799,DE 1466604800,1466605055,ES 1466605056,1466606847,DE 1466606848,1466607103,FR -1466607104,1466613759,DE +1466607104,1466608895,DE +1466608896,1466609151,ES +1466609152,1466613759,DE 1466613760,1466615807,ES 1466615808,1466616575,GB 1466616576,1466617343,ES @@ -40039,9 +45538,7 @@ 1467340960,1467340991,TR 1467340992,1467344639,GB 1467344640,1467344895,ZA -1467344896,1467347903,GB -1467347904,1467347935,SE -1467347936,1467351039,GB +1467344896,1467351039,GB 1467351040,1467367423,NO 1467367424,1467367615,DE 1467367616,1467367647,SE @@ -40059,14 +45556,15 @@ 1467369520,1467369535,RU 1467369536,1467369599,DE 1467369600,1467369663,IT -1467369664,1467369727,AT -1467369728,1467369759,DE +1467369664,1467369759,DE 1467369760,1467369791,HR 1467369792,1467369855,SE 1467369856,1467369871,RU 1467369872,1467369887,DE 1467369888,1467369903,RU -1467369904,1467383807,DE +1467369904,1467369919,DE +1467369920,1467369951,SG +1467369952,1467383807,DE 1467383808,1467400191,BG 1467400192,1467416575,RU 1467416576,1467432959,PL @@ -40079,26 +45577,21 @@ 1467465800,1467465807,AT 1467465808,1467465823,NL 1467465824,1467465855,AT -1467465856,1467466015,NL +1467465856,1467465983,DE +1467465984,1467466015,NL 1467466016,1467466023,DE 1467466024,1467466031,AT 1467466032,1467466111,NL 1467466112,1467466143,DE 1467466144,1467466175,NL -1467466176,1467466191,DE -1467466192,1467466207,NL -1467466208,1467466215,DE +1467466176,1467466215,DE 1467466216,1467466223,VG 1467466224,1467466239,NL 1467466240,1467466271,DE 1467466272,1467466495,NL 1467466496,1467467071,DE 1467467072,1467467103,CH -1467467104,1467467903,DE -1467467904,1467468031,CH -1467468032,1467468111,DE -1467468112,1467468119,BR -1467468120,1467473919,DE +1467467104,1467473919,DE 1467473920,1467482111,RU 1467482112,1467613183,BG 1467613184,1467744255,DE @@ -40115,7 +45608,13 @@ 1472259256,1472264799,IE 1472264800,1472264807,GB 1472264808,1472266239,IE -1472266240,1472331775,DE +1472266240,1472304610,DE +1472304611,1472304611,A2 +1472304612,1472314335,DE +1472314336,1472314343,A2 +1472314344,1472330699,DE +1472330700,1472330700,A2 +1472330701,1472331775,DE 1472331776,1472397311,GB 1472397312,1472462847,NL 1472462848,1472528383,PT @@ -40149,7 +45648,11 @@ 1474944536,1474953215,NL 1474953216,1474966473,DE 1474966474,1474966474,A2 -1474966475,1475018751,DE +1474966475,1474968895,DE +1474968896,1474968903,A2 +1474968904,1475009582,DE +1475009583,1475009583,A2 +1475009584,1475018751,DE 1475018752,1475084287,ES 1475084288,1475086335,NL 1475086336,1475092479,RU @@ -40168,9 +45671,7 @@ 1475115008,1475117055,KW 1475117056,1475119103,GB 1475119104,1475121151,BH -1475121152,1475121919,GB -1475121920,1475122175,US -1475122176,1475123199,GB +1475121152,1475123199,GB 1475123200,1475125247,FI 1475125248,1475127295,IT 1475127296,1475129343,FI @@ -40178,8 +45679,7 @@ 1475131392,1475133439,RU 1475133440,1475135487,CZ 1475135488,1475137535,CH -1475137536,1475139583,SE -1475139584,1475141631,BE +1475139584,1475141631,ES 1475141632,1475143679,FI 1475143680,1475145727,JO 1475145728,1475147775,ES @@ -40204,10 +45704,13 @@ 1475181456,1475181471,SC 1475181472,1475181519,DE 1475181520,1475181535,GB -1475181536,1475181551,ES -1475181552,1475184639,DE +1475181536,1475181551,NL +1475181552,1475181855,DE +1475181856,1475181887,LU +1475181888,1475182079,DE +1475182080,1475182335,RO +1475182336,1475184639,DE 1475184640,1475186687,RU -1475186688,1475188735,ES 1475188736,1475190783,SE 1475190784,1475192831,GB 1475192832,1475194879,CH @@ -40249,13 +45752,21 @@ 1475208192,1475209215,AE 1475209216,1475211263,UZ 1475211264,1475213311,DE -1475213312,1475215359,FR +1475213312,1475214335,FR +1475214336,1475214399,GB +1475214400,1475214847,FR +1475214848,1475214975,GB +1475214976,1475215103,FR +1475215104,1475215167,GB +1475215168,1475215359,FR 1475215360,1475223551,IT 1475223552,1475229695,NO 1475229696,1475229759,SE 1475229760,1475229951,NO -1475229952,1475230071,SE -1475230072,1475233791,NO +1475229952,1475230175,SE +1475230176,1475230191,NO +1475230192,1475230207,SE +1475230208,1475233791,NO 1475233792,1475234303,GB 1475234304,1475234559,IE 1475234560,1475235839,GB @@ -40268,9 +45779,7 @@ 1475244032,1475245055,DE 1475245056,1475245183,IE 1475245184,1475245311,SD -1475245312,1475245567,DE -1475245568,1475246078,SA -1475246079,1475246079,DE +1475245312,1475246079,DE 1475246080,1475248127,CH 1475248128,1475250175,JO 1475250176,1475252223,DE @@ -40315,7 +45824,7 @@ 1475287040,1475291135,RU 1475291136,1475293183,PL 1475293184,1475295231,GB -1475295232,1475299327,DK +1475297280,1475299327,DK 1475299328,1475301375,PL 1475301376,1475303423,LT 1475303424,1475305471,PL @@ -40323,7 +45832,8 @@ 1475307520,1475309567,RU 1475309568,1475311615,LT 1475311616,1475313663,FI -1475313664,1475317759,DE +1475313664,1475315711,DE +1475315712,1475317759,US 1475317760,1475319807,RU 1475319808,1475321855,BG 1475321856,1475323903,RO @@ -40341,9 +45851,9 @@ 1475362816,1475379199,FR 1475379200,1475395583,RU 1475395584,1475411967,LU -1475411968,1475412471,IT -1475412472,1475412479,ES -1475412480,1475417975,IT +1475411968,1475412383,IT +1475412384,1475412391,ES +1475412392,1475417975,IT 1475417976,1475417983,A2 1475417984,1475428351,IT 1475428352,1475444735,SE @@ -40353,7 +45863,11 @@ 1475493888,1475510271,RU 1475510272,1475543039,GB 1475543040,1475559423,RO -1475559424,1475575807,GR +1475559424,1475562751,GR +1475562752,1475563007,BG +1475563008,1475571711,GR +1475571712,1475572735,BG +1475572736,1475575807,GR 1475575808,1475592191,AT 1475592192,1475608575,GB 1475608576,1475624959,RU @@ -40378,7 +45892,9 @@ 1475636400,1475636415,JE 1475636416,1475636431,GB 1475636432,1475636447,JE -1475636448,1475637479,GB +1475636448,1475636479,GB +1475636480,1475636735,JE +1475636736,1475637479,GB 1475637480,1475637487,JE 1475637488,1475637503,GB 1475637504,1475638783,JE @@ -40399,22 +45915,18 @@ 1475639528,1475639543,JE 1475639544,1475639595,GB 1475639596,1475639599,JE -1475639600,1475639727,GB -1475639728,1475639735,JE -1475639736,1475639775,GB -1475639776,1475639783,JE -1475639784,1475639807,GB +1475639600,1475639807,GB 1475639808,1475641343,JE 1475641344,1475657727,UA -1475657728,1475664263,SK -1475664264,1475664271,UA -1475664272,1475674111,SK +1475657728,1475674111,SK 1475674112,1475690495,DE 1475690496,1475706879,CH 1475706880,1475723263,RU 1475723264,1475725311,CY 1475725312,1475725951,RU -1475725952,1475726591,GB +1475725952,1475726463,GB +1475726464,1475726527,RU +1475726528,1475726591,GB 1475726592,1475726719,RU 1475726720,1475727103,GB 1475727104,1475727167,RU @@ -40433,7 +45945,7 @@ 1475837952,1475846143,GB 1475846144,1475854335,IR 1475854336,1475862527,AT -1475862528,1475866623,IT +1475864576,1475866623,IT 1475866624,1475868671,GB 1475868672,1475870719,BG 1475870720,1475878911,NO @@ -40529,7 +46041,8 @@ 1476304896,1476313087,BG 1476313088,1476315135,FI 1476315136,1476316159,US -1476316160,1476321279,FI +1476316160,1476316671,SG +1476316672,1476321279,FI 1476321280,1476329471,MC 1476329472,1476337663,RU 1476337664,1476345855,NL @@ -40598,7 +46111,9 @@ 1481984512,1481984639,CY 1481984640,1481985023,NL 1481985024,1481985279,MT -1481985280,1481987967,NL +1481985280,1481987327,NL +1481987328,1481987583,GB +1481987584,1481987967,NL 1481987968,1481988031,PA 1481988032,1481988095,NL 1481988096,1481988159,GI @@ -40717,7 +46232,6 @@ 1486323448,1486323455,GB 1486323456,1486323711,EU 1486323712,1486325759,GB -1486325760,1486327807,SA 1486327808,1486329855,CH 1486329856,1486331903,FR 1486331904,1486333951,NO @@ -40746,7 +46260,13 @@ 1489338368,1489371135,BE 1489371136,1489402239,DE 1489402240,1489402367,TR -1489402368,1489436671,DE +1489402368,1489404767,DE +1489404768,1489404775,IT +1489404776,1489404839,DE +1489404840,1489404847,ES +1489404848,1489404855,DE +1489404856,1489404863,ES +1489404864,1489436671,DE 1489436672,1489502207,PL 1489502208,1489534975,SI 1489534976,1489567743,RU @@ -40777,8 +46297,122 @@ 1489650688,1489651199,A2 1489651200,1489653759,IT 1489653760,1489657855,A2 -1489657856,1489661951,IT -1489661952,1489662719,A2 +1489657856,1489659919,IT +1489659920,1489659935,FR +1489659936,1489659951,DE +1489659952,1489659967,CY +1489659968,1489659983,FI +1489659984,1489659999,GR +1489660000,1489660015,IE +1489660016,1489660031,ES +1489660032,1489660047,PL +1489660048,1489660063,GB +1489660064,1489660079,AD +1489660080,1489660095,AE +1489660096,1489660111,AL +1489660112,1489660127,AM +1489660128,1489660143,AT +1489660144,1489660159,BA +1489660160,1489660175,BE +1489660176,1489660191,BG +1489660192,1489660207,BH +1489660208,1489660223,BY +1489660224,1489660239,CH +1489660240,1489660255,CZ +1489660256,1489660271,DK +1489660272,1489660287,DZ +1489660288,1489660303,EE +1489660304,1489660319,EG +1489660320,1489660335,HR +1489660336,1489660351,HU +1489660352,1489660367,KW +1489660368,1489660383,LI +1489660384,1489660399,LT +1489660400,1489660415,LU +1489660416,1489660431,LV +1489660432,1489660447,LY +1489660448,1489660463,MA +1489660464,1489660479,MC +1489660480,1489660495,MD +1489660496,1489660511,ME +1489660512,1489660527,MK +1489660528,1489660543,MT +1489660544,1489660559,NL +1489660560,1489660575,NO +1489660576,1489660591,OM +1489660592,1489660607,PT +1489660608,1489660623,QA +1489660624,1489660639,RO +1489660640,1489660655,RS +1489660656,1489660671,RU +1489660672,1489660687,SA +1489660688,1489660703,SE +1489660704,1489660719,SI +1489660720,1489660735,SK +1489660736,1489660751,SM +1489660752,1489660767,TN +1489660768,1489660783,TR +1489660784,1489660799,UA +1489660800,1489660815,VA +1489660816,1489660927,A2 +1489660928,1489660943,IT +1489660944,1489660959,FR +1489660960,1489660975,DE +1489660976,1489660991,CY +1489660992,1489661007,FI +1489661008,1489661023,GR +1489661024,1489661039,IE +1489661040,1489661055,ES +1489661056,1489661071,PL +1489661072,1489661087,GB +1489661088,1489661103,AD +1489661104,1489661119,AE +1489661120,1489661135,AL +1489661136,1489661151,AM +1489661152,1489661167,AT +1489661168,1489661183,BA +1489661184,1489661199,BE +1489661200,1489661215,BG +1489661216,1489661231,BH +1489661232,1489661247,BY +1489661248,1489661263,CH +1489661264,1489661279,CZ +1489661280,1489661295,DK +1489661296,1489661311,DZ +1489661312,1489661327,EE +1489661328,1489661343,EG +1489661344,1489661359,HR +1489661360,1489661375,HU +1489661376,1489661391,KW +1489661392,1489661407,LI +1489661408,1489661423,LT +1489661424,1489661439,LU +1489661440,1489661455,LV +1489661456,1489661471,LY +1489661472,1489661487,MA +1489661488,1489661503,MC +1489661504,1489661519,MD +1489661520,1489661535,ME +1489661536,1489661551,MK +1489661552,1489661567,MT +1489661568,1489661583,NL +1489661584,1489661599,NO +1489661600,1489661615,OM +1489661616,1489661631,PT +1489661632,1489661647,QA +1489661648,1489661663,RO +1489661664,1489661679,RS +1489661680,1489661695,RU +1489661696,1489661711,SA +1489661712,1489661727,SE +1489661728,1489661743,SI +1489661744,1489661759,SK +1489661760,1489661775,SM +1489661776,1489661791,TN +1489661792,1489661807,TR +1489661808,1489661823,UA +1489661824,1489661839,VA +1489661840,1489662719,A2 1489662720,1489662975,ZA 1489662976,1489663487,FR 1489663488,1489663999,ES @@ -40791,16 +46425,24 @@ 1489731584,1489764351,BG 1489764352,1489797119,RU 1489797120,1489829887,KZ -1489829888,1489862655,DE -1489862656,1489928191,RU +1489829888,1489855503,DE +1489855504,1489855519,RU +1489855520,1489855535,PL +1489855536,1489855543,DE +1489855544,1489855551,PL +1489855552,1489855999,DE +1489856000,1489856031,PL +1489856032,1489856063,RU +1489856064,1489862655,DE +1489862656,1489895423,RU 1489928192,1489960959,SE 1489960960,1489993727,HR 1489993728,1490026495,LU 1490026496,1490028543,US 1490028544,1490029055,UA -1490029056,1490040839,NL -1490040840,1490041855,UA -1490041856,1490042879,NL +1490029056,1490040847,NL +1490040848,1490041599,UA +1490041600,1490042879,NL 1490042880,1490049879,CZ 1490049880,1490049887,AT 1490049888,1490049919,CZ @@ -40832,9 +46474,7 @@ 1490196960,1490197247,IE 1490197248,1490206719,GB 1490206720,1490223103,GE -1490223104,1490230719,GB -1490230720,1490230751,FR -1490230752,1490255871,GB +1490223104,1490255871,GB 1490255872,1490272255,NL 1490272256,1490288639,GB 1490288640,1490305023,SK @@ -40852,15 +46492,19 @@ 1490472704,1490473983,GB 1490473984,1490474239,US 1490474240,1490478591,GB -1490478592,1490478847,RU -1490478848,1490484223,GB +1490478592,1490479103,RU +1490479104,1490484223,GB 1490484224,1490484479,US 1490484480,1490501631,GB 1490501632,1490518015,DE 1490518016,1490534399,RU 1490534400,1490550783,DE 1490550784,1490616319,LT -1490616320,1490681855,DE +1490616320,1490680643,DE +1490680644,1490680647,A2 +1490680648,1490680663,DE +1490680664,1490680667,A2 +1490680668,1490681855,DE 1490681856,1490747391,GR 1490747392,1490812927,FR 1490812928,1490878463,PL @@ -40899,12 +46543,13 @@ 1494253568,1494261759,DE 1494261760,1494269951,GB 1494269952,1494278143,AT -1494278144,1494286335,GB +1494278144,1494282751,GB +1494282752,1494283007,FR +1494283008,1494286335,GB 1494286336,1494294527,HR 1494294528,1494302719,RU 1494302720,1494310911,FI 1494310912,1494319103,LB -1494319104,1494327295,MT 1494327296,1494335487,IT 1494335488,1494343679,ES 1494343680,1494351871,PL @@ -40937,7 +46582,9 @@ 1494548480,1494556671,GB 1494556672,1494564863,DE 1494564864,1494573055,UA -1494573056,1494581247,RO +1494573056,1494580479,RO +1494580480,1494580735,HU +1494580736,1494581247,RO 1494581248,1494589439,RU 1494589440,1494594559,NL 1494594560,1494595071,US @@ -40994,8 +46641,12 @@ 1495146496,1495150591,FR 1495150592,1495151103,GB 1495151104,1495151359,NL -1495151360,1495154687,FR -1495154688,1495161599,EU +1495151360,1495153919,FR +1495153920,1495154175,TR +1495154176,1495154687,FR +1495154688,1495160063,EU +1495160064,1495160095,NL +1495160096,1495161599,EU 1495161600,1495161855,FR 1495161856,1495162367,EU 1495162368,1495162879,US @@ -41022,8 +46673,8 @@ 1495170160,1495170175,FR 1495170176,1495170303,EU 1495170304,1495170335,FR -1495170336,1495170559,EU -1495170560,1495170815,FR +1495170336,1495170431,EU +1495170432,1495170815,FR 1495170816,1495171071,GB 1495171072,1495174399,NL 1495174400,1495174655,US @@ -41034,7 +46685,6 @@ 1495209984,1495212031,KZ 1495212032,1495214079,RU 1495214080,1495216127,CZ -1495216128,1495218175,GB 1495218176,1495220223,IT 1495220224,1495222271,PL 1495222272,1495224319,IT @@ -41063,7 +46713,15 @@ 1495240704,1495240751,FR 1495240752,1495240759,BE 1495240760,1495240767,CH -1495240768,1495242751,FR +1495240768,1495242111,FR +1495242112,1495242119,NL +1495242120,1495242127,LU +1495242128,1495242135,DE +1495242136,1495242143,AT +1495242144,1495242151,ES +1495242152,1495242159,IT +1495242160,1495242167,PL +1495242168,1495242751,FR 1495242752,1495244799,MK 1495244800,1495246847,CZ 1495246848,1495248895,IE @@ -41084,13 +46742,18 @@ 1495334912,1495335935,MD 1495335936,1495339007,RO 1495339008,1495343103,MD -1495343104,1495399935,RO +1495343104,1495346175,GB +1495346176,1495347199,RO +1495347200,1495349247,GB +1495349248,1495399935,RO 1495399936,1495400191,MD -1495400192,1495623679,RO +1495400192,1495429119,RO +1495429120,1495431167,GB +1495431168,1495513087,RO +1495513088,1495515135,GB +1495515136,1495623679,RO 1495623680,1495623935,MD -1495623936,1495647743,RO -1495647744,1495648255,MD -1495648256,1495752703,RO +1495623936,1495752703,RO 1495752704,1495754751,ES 1495754752,1495801855,RO 1495801856,1495802879,GB @@ -41100,9 +46763,13 @@ 1495927296,1495927551,AE 1495927552,1495937023,RO 1495937024,1495937535,ES -1495937536,1496078335,RO +1495937536,1495990271,RO +1495990272,1495994367,GB +1495994368,1496078335,RO 1496078336,1496079359,MD -1496079360,1496121343,RO +1496079360,1496086527,RO +1496086528,1496088575,GB +1496088576,1496121343,RO 1496121344,1496122367,MD 1496122368,1496178943,RO 1496178944,1496179199,AE @@ -41138,7 +46805,15 @@ 1500107776,1500107903,DE 1500107904,1500107943,NL 1500107944,1500107951,DE -1500107952,1500110847,NL +1500107952,1500107999,NL +1500108000,1500108007,BE +1500108008,1500108095,NL +1500108096,1500108287,DE +1500108288,1500108319,NL +1500108320,1500108351,DE +1500108352,1500108367,NL +1500108368,1500108375,DE +1500108376,1500110847,NL 1500110848,1500119039,UA 1500119040,1500127231,TR 1500127232,1500135423,FI @@ -41165,9 +46840,7 @@ 1500174336,1500176383,DE 1500176384,1500178431,GB 1500178432,1500180479,KZ -1500180480,1500180619,NL -1500180620,1500181503,BE -1500181504,1500182527,NL +1500180480,1500182527,BE 1500182528,1500184575,RU 1500184576,1500184831,GB 1500184832,1500184895,IM @@ -41264,15 +46937,23 @@ 1502478336,1502605311,SI 1502605312,1502606335,HR 1502606336,1502609407,SI -1502609408,1502625791,DE +1502609408,1502624030,DE +1502624031,1502624047,IR +1502624048,1502624063,DE +1502624064,1502624127,IR +1502624128,1502625791,DE 1502625792,1502642175,SA 1502642176,1502658559,IR 1502658560,1502674943,AT 1502674944,1502691327,DE -1502691328,1502692415,GB -1502692416,1502692479,ES -1502692480,1502707711,GB -1502707712,1502724095,RU +1502691328,1502691679,GB +1502691680,1502691711,SE +1502691712,1502702835,GB +1502702836,1502702839,IE +1502702840,1502706623,GB +1502706624,1502706687,CY +1502706688,1502707711,GB +1502717952,1502719999,RU 1502724096,1502740479,GB 1502740480,1502756863,NL 1502756864,1502773247,UZ @@ -41302,8 +46983,8 @@ 1502975264,1502975311,FR 1502975312,1502975319,IE 1502975320,1502975327,FR -1502975328,1502975375,IE -1502975376,1502975383,FR +1502975328,1502975367,IE +1502975368,1502975383,FR 1502975384,1502975391,ES 1502975392,1502975423,FR 1502975424,1502975455,GB @@ -41330,8 +47011,8 @@ 1502981120,1502981887,US 1502981888,1502982143,NL 1502982144,1502982911,DE -1502982912,1502983679,FR -1502983680,1502986255,DE +1502982912,1502983423,FR +1502983424,1502986255,DE 1502986256,1502986495,TR 1502986496,1502986511,DE 1502986512,1502986751,PL @@ -41351,7 +47032,9 @@ 1502996736,1502997247,PL 1502997248,1502997503,LT 1502997504,1502997759,HK -1502997760,1503000063,DE +1502997760,1502999855,DE +1502999856,1502999871,MK +1502999872,1503000063,DE 1503000064,1503000319,PL 1503000320,1503000831,DE 1503000832,1503001343,PL @@ -41373,13 +47056,20 @@ 1503789056,1503821823,NO 1503821824,1503854591,UA 1503854592,1503887359,RU -1503887360,1503895631,DE +1503887360,1503895599,DE +1503895600,1503895607,BE +1503895608,1503895631,DE 1503895632,1503895639,AT 1503895640,1503895647,GR -1503895648,1503895671,DE +1503895648,1503895663,DE +1503895664,1503895671,FR 1503895672,1503895679,PL 1503895680,1503895687,IT -1503895688,1503895767,DE +1503895688,1503895695,DE +1503895696,1503895703,GB +1503895704,1503895751,DE +1503895752,1503895759,IT +1503895760,1503895767,DE 1503895768,1503895783,IT 1503895784,1503895799,DE 1503895800,1503895807,CA @@ -41396,7 +47086,9 @@ 1503896544,1503896551,FR 1503896552,1503897303,DE 1503897304,1503897311,BE -1503897312,1503897367,DE +1503897312,1503897335,DE +1503897336,1503897343,PT +1503897344,1503897367,DE 1503897368,1503897375,BE 1503897376,1503897383,GR 1503897384,1503897407,DE @@ -41406,8 +47098,10 @@ 1503897440,1503897463,DE 1503897464,1503897471,GR 1503897472,1503897479,AT -1503897480,1503897575,DE -1503897576,1503897591,GB +1503897480,1503897519,DE +1503897520,1503897527,IT +1503897528,1503897583,DE +1503897584,1503897591,GB 1503897592,1503898119,DE 1503898120,1503898135,TH 1503898136,1503898167,DE @@ -41417,22 +47111,60 @@ 1503898192,1503898199,GR 1503898200,1503898207,US 1503898208,1503898215,BE -1503898216,1503898223,DE -1503898224,1503898231,CH -1503898232,1503898239,GR +1503898216,1503898239,DE 1503898240,1503898303,IT 1503898304,1503898311,BE -1503898312,1503898327,DE -1503898328,1503898335,AT -1503898336,1503898343,CH -1503898344,1503898351,DE +1503898312,1503898351,DE 1503898352,1503898359,CH 1503898360,1503898415,DE 1503898416,1503898423,BE 1503898424,1503898431,CH -1503898432,1503898567,DE +1503898432,1503898503,DE +1503898504,1503898511,GR +1503898512,1503898567,DE 1503898568,1503898575,NL -1503898576,1503908351,DE +1503898576,1503898599,DE +1503898600,1503898607,IT +1503898608,1503898615,GR +1503898616,1503898631,DE +1503898632,1503898647,GR +1503898648,1503898679,DE +1503898680,1503898687,IT +1503898688,1503898791,DE +1503898792,1503898799,US +1503898800,1503898815,DE +1503898816,1503898831,GB +1503898832,1503898847,DE +1503898848,1503898855,MX +1503898856,1503898887,DE +1503898888,1503898895,IT +1503898896,1503898935,DE +1503898936,1503898943,IT +1503898944,1503898959,DE +1503898960,1503898967,IT +1503898968,1503898991,DE +1503898992,1503898999,GB +1503899000,1503899007,AT +1503899008,1503899015,CH +1503899016,1503899063,DE +1503899064,1503899079,AT +1503899080,1503899119,DE +1503899120,1503899127,NL +1503899128,1503899143,DE +1503899144,1503899151,IT +1503899152,1503899159,DE +1503899160,1503899167,GB +1503899168,1503899183,DE +1503899184,1503899191,GR +1503899192,1503899199,CH +1503899200,1503899263,DE +1503899264,1503899271,AT +1503899272,1503899287,BE +1503899288,1503899295,CH +1503899296,1503899303,GR +1503899304,1503899311,NL +1503899312,1503899319,RU +1503899320,1503908351,DE 1503908352,1503909375,IT 1503909376,1503920127,DE 1503920128,1503985663,HR @@ -41445,9 +47177,7 @@ 1504152128,1504152191,IE 1504152192,1504152415,GB 1504152416,1504152431,IE -1504152432,1504152447,GB -1504152448,1504152575,IE -1504152576,1504154623,GB +1504152432,1504154623,GB 1504154624,1504155647,IE 1504155648,1504156927,GB 1504156928,1504157183,IE @@ -41489,11 +47219,7 @@ 1505271808,1505273087,NL 1505273088,1505273095,NZ 1505273096,1505279999,NL -1505280000,1505280007,IR -1505280008,1505284095,AE -1505284096,1505284607,IR -1505284608,1505284863,AE -1505284864,1505288191,IR +1505280000,1505288191,IR 1505288192,1505296383,RU 1505296384,1505304575,UA 1505304576,1505305351,FR @@ -41506,14 +47232,7 @@ 1505305400,1505305407,PT 1505305408,1505305415,US 1505305416,1505305423,CH -1505305424,1505305878,FR -1505305879,1505305879,US -1505305880,1505305880,ES -1505305881,1505305899,FR -1505305900,1505305900,GB -1505305901,1505305901,DE -1505305902,1505305902,IT -1505305903,1505305908,FR +1505305424,1505305908,FR 1505305909,1505305909,LU 1505305910,1505306303,FR 1505306304,1505306319,ES @@ -41522,12 +47241,12 @@ 1505306352,1505306367,IT 1505306368,1505312767,FR 1505312768,1505320959,RU -1505320960,1505321151,AT -1505321152,1505321183,DE -1505321184,1505321343,AT -1505321344,1505321471,DE -1505321472,1505321631,AT -1505321632,1505321823,DE +1505320960,1505321103,AT +1505321104,1505321135,DE +1505321136,1505321423,AT +1505321424,1505321439,DE +1505321440,1505321663,AT +1505321664,1505321823,DE 1505321824,1505321831,AT 1505321832,1505321983,DE 1505321984,1505322287,AT @@ -41544,7 +47263,9 @@ 1505329376,1505329407,GB 1505329408,1505332991,IE 1505332992,1505332999,GB -1505333000,1505333623,IE +1505333000,1505333471,IE +1505333472,1505333487,GB +1505333488,1505333623,IE 1505333624,1505333631,GB 1505333632,1505333887,IE 1505333888,1505333951,GB @@ -41552,12 +47273,16 @@ 1505336064,1505336071,GB 1505336072,1505336576,IE 1505336577,1505336639,GB -1505336640,1505336831,IE -1505336832,1505336863,GB +1505336640,1505336823,IE +1505336824,1505336863,GB 1505336864,1505336864,IE 1505336865,1505336879,GB -1505336880,1505337087,IE -1505337088,1505337215,GB +1505336880,1505336959,IE +1505336960,1505336975,GB +1505336976,1505337023,IE +1505337024,1505337055,GB +1505337056,1505337071,IE +1505337072,1505337215,GB 1505337216,1505337343,IE 1505337344,1505345535,FR 1505345536,1505353727,MK @@ -41578,9 +47303,16 @@ 1505419264,1505427455,RU 1505427456,1505435647,UA 1505435648,1505443839,MD -1505443840,1505452327,GB +1505443840,1505452103,GB +1505452104,1505452111,US +1505452112,1505452327,GB 1505452328,1505452335,NO -1505452336,1505454367,GB +1505452336,1505453167,GB +1505453168,1505453175,SE +1505453176,1505453183,US +1505453184,1505453439,GB +1505453440,1505453567,US +1505453568,1505454367,GB 1505454368,1505454375,US 1505454376,1505454383,GB 1505454384,1505454391,US @@ -41597,7 +47329,20 @@ 1505454976,1505455103,US 1505455104,1505455503,GB 1505455504,1505455519,NL -1505455520,1505456127,GB +1505455520,1505455683,GB +1505455684,1505455687,US +1505455688,1505455695,GB +1505455696,1505455699,NZ +1505455700,1505455711,US +1505455712,1505455719,GB +1505455720,1505455727,US +1505455728,1505455759,GB +1505455760,1505455767,DE +1505455768,1505455791,GB +1505455792,1505455799,US +1505455800,1505455999,GB +1505456000,1505456079,US +1505456080,1505456127,GB 1505456128,1505456255,US 1505456256,1505456639,GB 1505456640,1505456895,US @@ -41606,13 +47351,18 @@ 1505456936,1505456983,GB 1505456984,1505456987,IL 1505456988,1505456991,US -1505456992,1505458175,GB +1505456992,1505457011,GB +1505457012,1505457015,US +1505457016,1505458175,GB 1505458176,1505458431,US -1505458432,1505458463,GB -1505458464,1505458495,US -1505458496,1505460223,GB +1505458432,1505458451,GB +1505458452,1505458495,US +1505458496,1505458519,GB +1505458520,1505458527,US +1505458528,1505458543,GB +1505458544,1505458559,US +1505458560,1505460223,GB 1505460224,1505476607,CZ -1505476608,1505484799,RU 1505484800,1505492991,PL 1505492992,1505501183,NL 1505501184,1505509375,ME @@ -41628,7 +47378,9 @@ 1505607680,1505615871,SE 1505615872,1505624063,SA 1505624064,1505632255,FI -1505632256,1505648639,CZ +1505632256,1505646847,CZ +1505646848,1505647103,PL +1505647104,1505648639,CZ 1505648640,1505656831,LT 1505656832,1505665023,BH 1505665024,1505668263,IT @@ -41647,7 +47399,9 @@ 1505709056,1505714175,DE 1505714176,1505722367,LV 1505722368,1505738751,PL -1505738752,1505745839,GB +1505738752,1505745135,GB +1505745136,1505745151,ES +1505745152,1505745839,GB 1505745840,1505745855,IL 1505745856,1505746943,GB 1505746944,1505755135,RU @@ -41670,31 +47424,38 @@ 1506377728,1506410495,HR 1506410496,1506418687,DE 1506418688,1506418695,CY -1506418696,1506418703,DE +1506418696,1506418703,GB 1506418704,1506418719,CA -1506418720,1506422655,DE +1506418720,1506418975,DE +1506418976,1506418983,CA +1506418984,1506422655,DE 1506422656,1506422687,CY 1506422688,1506422703,CA -1506422704,1506427663,DE +1506422704,1506422711,GB +1506422712,1506422719,DE +1506422720,1506422751,US +1506422752,1506427663,DE 1506427664,1506427679,GB 1506427680,1506428223,DE 1506428224,1506428239,US -1506428240,1506437375,DE -1506437376,1506437503,US -1506437504,1506437631,DE +1506428240,1506437119,DE +1506437120,1506437503,US +1506437504,1506437551,DE +1506437552,1506437567,BG +1506437568,1506437631,DE 1506437632,1506437887,MU 1506437888,1506437903,CA -1506437904,1506437951,US +1506437904,1506437919,US +1506437920,1506437951,IN 1506437952,1506437983,DE 1506437984,1506437991,US 1506437992,1506437999,DE 1506438000,1506438015,CA -1506438016,1506438019,US -1506438020,1506438143,DE +1506438016,1506438143,DE 1506438144,1506438271,HK 1506438272,1506438367,GB -1506438368,1506438384,IL -1506438385,1506438399,DE +1506438368,1506438383,IL +1506438384,1506438399,GB 1506438400,1506438527,US 1506438528,1506438783,DE 1506438784,1506438799,KR @@ -41703,7 +47464,8 @@ 1506438864,1506438871,DE 1506438872,1506438879,FR 1506438880,1506438883,US -1506438884,1506438895,DE +1506438884,1506438887,DE +1506438888,1506438895,NL 1506438896,1506438911,CH 1506438912,1506439039,US 1506439040,1506439463,DE @@ -41789,20 +47551,20 @@ 1506445768,1506445815,FR 1506445816,1506445823,GB 1506445824,1506446335,FR -1506446336,1506447359,NL +1506446336,1506446719,NL +1506446720,1506446735,GB +1506446736,1506447359,NL 1506447360,1506447423,IT 1506447424,1506447455,GB 1506447456,1506448255,IT -1506448256,1506448287,GB -1506448288,1506448383,IT +1506448256,1506448319,GB +1506448320,1506448383,IT 1506448384,1506448639,AT 1506448640,1506448647,GB 1506448648,1506448663,AT 1506448664,1506448671,GB 1506448672,1506448703,AT -1506448704,1506448727,GB -1506448728,1506448735,AT -1506448736,1506448895,GB +1506448704,1506448895,GB 1506448896,1506449159,BE 1506449160,1506449171,GB 1506449172,1506449407,BE @@ -41810,21 +47572,35 @@ 1506449664,1506449919,SK 1506449920,1506449927,CH 1506449928,1506449935,GB -1506449936,1506450431,CH +1506449936,1506449999,CH +1506450000,1506450015,GB +1506450016,1506450431,CH 1506450432,1506450767,CZ 1506450768,1506450847,GB 1506450848,1506450863,CZ 1506450864,1506450879,GB 1506450880,1506450943,CZ -1506450944,1506451023,DK -1506451024,1506451199,GB -1506451200,1506451895,ES +1506450944,1506450958,DK +1506450959,1506450959,GB +1506450960,1506450967,DK +1506450968,1506451007,GB +1506451008,1506451023,DK +1506451024,1506451031,FI +1506451032,1506451039,DK +1506451040,1506451055,NO +1506451056,1506451059,DK +1506451060,1506451199,GB +1506451200,1506451791,ES +1506451792,1506451799,GB +1506451800,1506451895,ES 1506451896,1506451903,GB -1506451904,1506452223,ES +1506451904,1506452143,ES +1506452144,1506452159,GB +1506452160,1506452223,ES 1506452224,1506452479,GB 1506452480,1506452735,US -1506452736,1506452743,RO -1506452744,1506452991,GB +1506452736,1506452751,RO +1506452752,1506452991,GB 1506452992,1506453247,AT 1506453248,1506453391,SE 1506453392,1506453399,ES @@ -41853,7 +47629,9 @@ 1506456960,1506456991,GB 1506456992,1506457087,IT 1506457088,1506458239,GB -1506458240,1506458623,CH +1506458240,1506458287,CH +1506458288,1506458303,GB +1506458304,1506458623,CH 1506458624,1506459135,GB 1506459136,1506459647,BE 1506459648,1506460047,FR @@ -41862,7 +47640,9 @@ 1506460064,1506460079,GB 1506460080,1506460126,FR 1506460127,1506460127,GB -1506460128,1506460335,FR +1506460128,1506460315,FR +1506460316,1506460319,GB +1506460320,1506460335,FR 1506460336,1506460343,GB 1506460344,1506460671,FR 1506460672,1506460927,AT @@ -41870,26 +47650,35 @@ 1506461312,1506461315,GB 1506461316,1506461319,IT 1506461320,1506461327,GB -1506461328,1506461351,IT +1506461328,1506461343,IT +1506461344,1506461351,GB 1506461352,1506461359,FR 1506461360,1506461695,IT 1506461696,1506461863,FR 1506461864,1506461887,GB 1506461888,1506462207,FR 1506462208,1506462463,ES -1506462464,1506462607,FR +1506462464,1506462527,FR +1506462528,1506462583,GB +1506462584,1506462599,FR +1506462600,1506462607,GB 1506462608,1506462623,A2 1506462624,1506462719,FR 1506462720,1506463231,IT 1506463232,1506463487,SE -1506463488,1506463999,DE +1506463488,1506463671,DE +1506463672,1506463679,GB +1506463680,1506463999,DE 1506464000,1506464767,GB 1506464768,1506465279,NL 1506465280,1506465791,GB 1506465792,1506466047,DE 1506466048,1506466303,BE -1506466304,1506466559,DE -1506466560,1506467071,GB +1506466304,1506466319,GB +1506466320,1506466559,DE +1506466560,1506466627,GB +1506466628,1506466631,NL +1506466632,1506467071,GB 1506467072,1506467327,DE 1506467328,1506467583,GB 1506467584,1506468351,IT @@ -41904,22 +47693,21 @@ 1506471976,1506471979,GB 1506471980,1506471999,NL 1506472000,1506472031,BE -1506472032,1506472191,NL +1506472032,1506472159,NL +1506472160,1506472175,GB +1506472176,1506472191,NL 1506472192,1506472447,IT 1506472448,1506472703,GB 1506472704,1506473215,IT 1506473216,1506473471,GB -1506473472,1506473783,IT -1506473784,1506473791,GB -1506473792,1506474271,IT -1506474272,1506474303,SE -1506474304,1506474495,IT +1506473472,1506474247,IT +1506474248,1506474255,GB +1506474256,1506474495,IT 1506474496,1506474751,FR -1506474752,1506474887,IT -1506474888,1506474911,GB -1506474912,1506475519,IT -1506475520,1506475527,AT -1506475528,1506476031,GB +1506474752,1506475519,IT +1506475520,1506475559,AT +1506475560,1506475775,GB +1506475776,1506476031,DE 1506476032,1506508799,KW 1506508800,1506541567,CZ 1506541568,1506574335,RU @@ -41945,10 +47733,25 @@ 1506758656,1506760703,IT 1506760704,1506764799,RU 1506764800,1506766847,IT -1506766848,1506766903,NO -1506766904,1506768895,GE +1506766848,1506767103,NO +1506767104,1506767615,GE +1506767616,1506767679,NO +1506767680,1506768895,GE 1506768896,1506770943,AT -1506770944,1506772991,NL +1506770944,1506772017,NL +1506772018,1506772018,US +1506772019,1506772143,NL +1506772144,1506772145,TR +1506772146,1506772147,NL +1506772148,1506772176,TR +1506772177,1506772323,NL +1506772324,1506772325,IR +1506772326,1506772327,RO +1506772328,1506772361,NL +1506772362,1506772364,IR +1506772365,1506772938,NL +1506772939,1506772939,IR +1506772940,1506772991,NL 1506772992,1506775039,GB 1506775040,1506777087,AT 1506777088,1506781695,GB @@ -41968,7 +47771,9 @@ 1506799616,1506801663,LV 1506801664,1506802767,DE 1506802768,1506802775,DK -1506802776,1506803135,DE +1506802776,1506802831,DE +1506802832,1506802839,CH +1506802840,1506803135,DE 1506803136,1506803151,CH 1506803152,1506803711,DE 1506803712,1506869247,RU @@ -41994,7 +47799,9 @@ 1507664768,1507664895,US 1507664896,1507665407,GR 1507665408,1507665663,IT -1507665664,1507666431,US +1507665664,1507665791,TZ +1507665792,1507665919,IT +1507665920,1507666431,US 1507666432,1507666559,GR 1507666560,1507666591,FR 1507666592,1507666639,GR @@ -42059,11 +47866,13 @@ 1508646912,1508646927,DK 1508646928,1508646935,SE 1508646936,1508647039,DK -1508647040,1508648447,SE +1508647040,1508647679,SE +1508647680,1508647807,DK +1508647808,1508648447,SE 1508648448,1508648703,DK 1508648704,1508650751,SE -1508650752,1508650823,DK -1508650824,1508650879,SE +1508650752,1508650855,DK +1508650856,1508650879,SE 1508650880,1508651263,DK 1508651264,1508652543,SE 1508652544,1508654079,DK @@ -42080,7 +47889,9 @@ 1508787200,1508787455,ES 1508787456,1508788031,DE 1508788032,1508788063,BE -1508788064,1508802559,DE +1508788064,1508792063,DE +1508792064,1508792318,GB +1508792319,1508802559,DE 1508802560,1508804783,GB 1508804784,1508804791,DE 1508804792,1508805119,GB @@ -42119,7 +47930,9 @@ 1509467520,1509467583,BE 1509467584,1509467839,NL 1509467840,1509467871,PL -1509467872,1509469439,NL +1509467872,1509469055,NL +1509469056,1509469183,PL +1509469184,1509469439,NL 1509469440,1509469567,SE 1509469568,1509469887,NL 1509469888,1509469919,MY @@ -42142,9 +47955,7 @@ 1509507072,1509511167,GB 1509511168,1509515263,LT 1509515264,1509519359,HR -1509519360,1509531647,RU -1509531648,1509535743,GB -1509535744,1509539839,RU +1509519360,1509539839,RU 1509539840,1509543935,AM 1509543936,1509543975,LB 1509543976,1509543983,DE @@ -42226,7 +48037,11 @@ 1518503936,1518508799,LT 1518508800,1518510079,SE 1518510080,1518516479,LV -1518516480,1518665727,SE +1518516480,1518517247,SE +1518517248,1518518271,LV +1518518272,1518551039,SE +1518551040,1518565375,NL +1518565376,1518665727,SE 1518665728,1518727167,RU 1518727168,1518731263,SE 1518731264,1518927871,DE @@ -42238,8 +48053,8 @@ 1518962688,1518964735,NO 1518964736,1518966783,HR 1518966784,1518967807,SE -1518967808,1518970367,HR -1518970368,1518993407,SE +1518967808,1518977023,HR +1518977024,1518993407,SE 1518993408,1519190015,RU 1519190016,1519321087,SE 1519321088,1519386623,RU @@ -42466,17 +48281,10 @@ 1533413376,1533415423,DE 1533415424,1533417471,SA 1533417472,1533419519,NO -1533419520,1533419775,KW -1533419776,1533420031,SA -1533420032,1533420287,KW -1533420288,1533420543,AE -1533420544,1533421567,KW +1533419520,1533421567,KW 1533421568,1533423615,NL 1533423616,1533425663,IT -1533425664,1533428479,GB -1533428480,1533428735,US -1533428736,1533429759,GB -1533429760,1533431807,IT +1533425664,1533429759,GB 1533431808,1533433855,IE 1533433856,1533435903,DK 1533435904,1533437951,CZ @@ -42526,9 +48334,10 @@ 1533505536,1533507583,DE 1533507584,1533509631,UA 1533509632,1533511679,GB -1533511680,1533512383,FR -1533512384,1533512447,DE -1533512448,1533513215,FR +1533511680,1533511935,IT +1533511936,1533513023,FR +1533513024,1533513087,ES +1533513088,1533513215,FR 1533513216,1533513471,GB 1533513472,1533513727,DE 1533513728,1533515775,KW @@ -42546,7 +48355,9 @@ 1534129152,1534129407,A2 1534129408,1534328831,AT 1534328832,1534459903,ES -1534459904,1534590975,AT +1534459904,1534482091,AT +1534482092,1534482095,GB +1534482096,1534590975,AT 1534590976,1534656511,HU 1534656512,1534711807,FR 1534711808,1534712831,BE @@ -42574,9 +48385,10 @@ 1534714064,1534714079,ES 1534714080,1534714095,FR 1534714096,1534714111,BE -1534714112,1534714119,GB -1534714120,1534714123,BE -1534714124,1534714127,NL +1534714112,1534714115,ES +1534714116,1534714119,DE +1534714120,1534714123,FI +1534714124,1534714127,ES 1534714128,1534714143,BE 1534714144,1534714159,GB 1534714160,1534714259,FR @@ -42590,12 +48402,14 @@ 1534714328,1534714331,FR 1534714332,1534714335,PL 1534714336,1534714351,FR -1534714352,1534714367,CH +1534714352,1534714359,DE +1534714360,1534714367,NL 1534714368,1534714383,GB 1534714384,1534714399,FR 1534714400,1534714403,GB 1534714404,1534714407,PL -1534714408,1534714431,GB +1534714408,1534714415,DE +1534714416,1534714431,GB 1534714432,1534714463,FR 1534714464,1534714495,GB 1534714496,1534714511,FR @@ -42603,7 +48417,8 @@ 1534714528,1534714531,FR 1534714532,1534714535,PL 1534714536,1534714539,GB -1534714540,1534714547,FR +1534714540,1534714543,PL +1534714544,1534714547,FR 1534714548,1534714551,ES 1534714552,1534714559,GB 1534714560,1534714575,NL @@ -42613,7 +48428,9 @@ 1534714752,1534714767,DE 1534714768,1534714783,FR 1534714784,1534714799,PL -1534714800,1534714831,FR +1534714800,1534714815,FR +1534714816,1534714819,BE +1534714820,1534714831,FR 1534714832,1534714847,BE 1534714848,1534714855,GB 1534714856,1534714863,CH @@ -42633,12 +48450,14 @@ 1534715144,1534715167,FR 1534715168,1534715183,NL 1534715184,1534715199,FR -1534715200,1534715203,GB +1534715200,1534715203,IT 1534715204,1534715207,FR 1534715208,1534715215,BE 1534715216,1534715263,FR 1534715264,1534715279,ES -1534715280,1534715295,FR +1534715280,1534715283,PL +1534715284,1534715287,FR +1534715288,1534715295,PL 1534715296,1534715299,ES 1534715300,1534715303,FR 1534715304,1534715307,ES @@ -42649,23 +48468,27 @@ 1534715328,1534715359,FR 1534715360,1534715367,PL 1534715368,1534715371,FR -1534715372,1534715375,GB +1534715372,1534715375,CH 1534715376,1534715391,ES 1534715392,1534715407,PL -1534715408,1534715423,DE +1534715408,1534715419,DE +1534715420,1534715423,IT 1534715424,1534715439,PL 1534715440,1534715447,ES 1534715448,1534715451,FR 1534715452,1534715487,PL -1534715488,1534715495,IT -1534715496,1534715503,CZ +1534715488,1534715503,FR 1534715504,1534715519,CH 1534715520,1534715551,FR 1534715552,1534715583,ES 1534715584,1534715599,GB -1534715600,1534715615,BE +1534715600,1534715603,PL +1534715604,1534715607,GB +1534715608,1534715611,CH +1534715612,1534715615,FI 1534715616,1534715639,FR -1534715640,1534715647,DE +1534715640,1534715643,PL +1534715644,1534715647,DE 1534715648,1534715663,PL 1534715664,1534715667,FR 1534715668,1534715675,PL @@ -42679,9 +48502,9 @@ 1534715776,1534715783,PL 1534715784,1534715791,BE 1534715792,1534715807,ES -1534715808,1534715871,FR -1534715872,1534715879,FI -1534715880,1534715883,CH +1534715808,1534715875,FR +1534715876,1534715879,NL +1534715880,1534715883,PT 1534715884,1534715887,PL 1534715888,1534715919,FR 1534715920,1534715935,ES @@ -42722,7 +48545,7 @@ 1534716704,1534716735,ES 1534716736,1534716751,FR 1534716752,1534716759,PL -1534716760,1534716763,FR +1534716760,1534716763,DE 1534716764,1534716767,ES 1534716768,1534716823,FR 1534716824,1534716831,GB @@ -42744,7 +48567,10 @@ 1534717140,1534717143,BE 1534717144,1534717147,FR 1534717148,1534717151,IT -1534717152,1534717263,FR +1534717152,1534717247,FR +1534717248,1534717251,CZ +1534717252,1534717255,NL +1534717256,1534717263,FR 1534717264,1534717267,PL 1534717268,1534717315,FR 1534717316,1534717319,IE @@ -42752,17 +48578,27 @@ 1534717324,1534717343,FR 1534717344,1534717359,GB 1534717360,1534717375,PL -1534717376,1534717503,FR -1534717504,1534717535,DE +1534717376,1534717411,FR +1534717412,1534717415,CH +1534717416,1534717419,CZ +1534717420,1534717431,PL +1534717432,1534717435,GB +1534717436,1534717439,NL +1534717440,1534717503,FR +1534717504,1534717519,BE +1534717520,1534717535,DE 1534717536,1534717551,PL 1534717552,1534717567,CZ -1534717568,1534717583,PL -1534717584,1534717647,FR -1534717648,1534717655,BE -1534717656,1534717659,ES +1534717568,1534717583,IE +1534717584,1534717587,CZ +1534717588,1534717591,NL +1534717592,1534717599,IT +1534717600,1534717647,FR +1534717648,1534717659,PL 1534717660,1534717663,FR 1534717664,1534717679,GB -1534717680,1534717711,ES +1534717680,1534717695,ES +1534717696,1534717711,IE 1534717712,1534717727,FR 1534717728,1534717731,GB 1534717732,1534717735,FR @@ -42770,7 +48606,10 @@ 1534717740,1534717743,DE 1534717744,1534717751,FR 1534717752,1534717759,BE -1534717760,1534717823,ES +1534717760,1534717783,FR +1534717784,1534717787,GB +1534717788,1534717791,DE +1534717792,1534717823,FR 1534717824,1534717855,BE 1534717856,1534717871,NL 1534717872,1534717903,FR @@ -42793,7 +48632,7 @@ 1534718088,1534718091,DE 1534718092,1534718095,ES 1534718096,1534718111,PL -1534718112,1534718127,IT +1534718112,1534718127,GB 1534718128,1534718143,ES 1534718144,1534718159,FR 1534718160,1534718175,DE @@ -42801,11 +48640,16 @@ 1534718208,1534718271,ES 1534718272,1534718399,FR 1534718400,1534718415,DE -1534718416,1534718431,FR +1534718416,1534718423,CZ +1534718424,1534718431,ES 1534718432,1534718447,PL 1534718448,1534718463,FR -1534718464,1534718479,DE -1534718480,1534718531,FR +1534718464,1534718467,DE +1534718468,1534718471,PT +1534718472,1534718479,FR +1534718480,1534718487,PL +1534718488,1534718495,DE +1534718496,1534718531,FR 1534718532,1534718535,PL 1534718536,1534718539,DE 1534718540,1534718543,ES @@ -42814,7 +48658,8 @@ 1534718576,1534718687,FR 1534718688,1534718703,PL 1534718704,1534718711,FR -1534718712,1534718735,GB +1534718712,1534718719,ES +1534718720,1534718735,GB 1534718736,1534718751,FR 1534718752,1534718767,PL 1534718768,1534718799,FR @@ -42827,7 +48672,8 @@ 1534718960,1534718975,ES 1534718976,1534719039,FR 1534719040,1534719167,BE -1534719168,1534719215,PL +1534719168,1534719199,FR +1534719200,1534719215,PL 1534719216,1534719295,FR 1534719296,1534719311,DE 1534719312,1534719335,FR @@ -42840,15 +48686,16 @@ 1534719400,1534719403,IT 1534719404,1534719423,FR 1534719424,1534719439,DE -1534719440,1534719455,PL -1534719456,1534719471,FR +1534719440,1534719459,PL +1534719460,1534719463,FR +1534719464,1534719471,PL 1534719472,1534719487,IE 1534719488,1534719631,FR 1534719632,1534719639,ES -1534719640,1534719643,GB -1534719644,1534719647,FR +1534719640,1534719647,FR 1534719648,1534719655,ES -1534719656,1534719679,FR +1534719656,1534719663,FR +1534719664,1534719679,IE 1534719680,1534719695,GB 1534719696,1534719699,IT 1534719700,1534719703,DE @@ -42858,8 +48705,13 @@ 1534719776,1534719799,FR 1534719800,1534719803,ES 1534719804,1534719807,GB -1534719808,1534719823,FR -1534719824,1534719839,CH +1534719808,1534719811,PL +1534719812,1534719815,FR +1534719816,1534719819,CH +1534719820,1534719823,CZ +1534719824,1534719827,PT +1534719828,1534719831,FR +1534719832,1534719839,PL 1534719840,1534719871,FR 1534719872,1534719887,PL 1534719888,1534719951,FR @@ -42868,8 +48720,10 @@ 1534719984,1534720003,FR 1534720004,1534720007,ES 1534720008,1534720015,PL -1534720016,1534720031,GB -1534720032,1534720047,DE +1534720016,1534720023,ES +1534720024,1534720027,PL +1534720028,1534720031,ES +1534720032,1534720047,FR 1534720048,1534720063,ES 1534720064,1534720079,IT 1534720080,1534720095,GB @@ -42877,11 +48731,16 @@ 1534720112,1534720127,ES 1534720128,1534720211,FR 1534720212,1534720215,PL -1534720216,1534720223,FR +1534720216,1534720219,FR +1534720220,1534720223,GB 1534720224,1534720239,DE 1534720240,1534720255,BE -1534720256,1534720287,PL -1534720288,1534720351,FR +1534720256,1534720271,FR +1534720272,1534720287,PL +1534720288,1534720291,IT +1534720292,1534720295,PL +1534720296,1534720299,GB +1534720300,1534720351,FR 1534720352,1534720367,ES 1534720368,1534720383,PL 1534720384,1534720431,FR @@ -42897,22 +48756,23 @@ 1534720472,1534720479,DE 1534720480,1534720495,GB 1534720496,1534720511,PL -1534720512,1534720527,DE -1534720528,1534720535,FR +1534720512,1534720535,FR 1534720536,1534720539,PL 1534720540,1534720543,FI 1534720544,1534720559,FR 1534720560,1534720583,IT 1534720584,1534720591,BE -1534720592,1534720607,FR -1534720608,1534720623,GB +1534720592,1534720611,FR +1534720612,1534720615,BE +1534720616,1534720619,DE +1534720620,1534720623,PT 1534720624,1534720639,FR -1534720640,1534720671,PL +1534720640,1534720655,PL +1534720656,1534720671,ES 1534720672,1534720739,FR 1534720740,1534720743,PL 1534720744,1534720747,NL -1534720748,1534720751,FR -1534720752,1534720767,GB +1534720748,1534720767,FR 1534720768,1534720783,ES 1534720784,1534720791,PL 1534720792,1534720795,IT @@ -42923,8 +48783,10 @@ 1534720864,1534720879,ES 1534720880,1534720895,FR 1534720896,1534720899,ES -1534720900,1534720903,GB -1534720904,1534720959,FR +1534720900,1534720903,LT +1534720904,1534720943,FR +1534720944,1534720951,ES +1534720952,1534720959,PL 1534720960,1534720967,IT 1534720968,1534720971,DE 1534720972,1534720975,FR @@ -42944,7 +48806,7 @@ 1534721116,1534721119,BE 1534721120,1534721135,IT 1534721136,1534721159,FR -1534721160,1534721163,GB +1534721160,1534721163,ES 1534721164,1534721183,FR 1534721184,1534721191,LT 1534721192,1534721195,FR @@ -42962,7 +48824,7 @@ 1534721320,1534721327,PT 1534721328,1534721343,NL 1534721344,1534721359,PL -1534721360,1534721375,FR +1534721360,1534721375,GB 1534721376,1534721391,ES 1534721392,1534721407,PL 1534721408,1534721439,DE @@ -42972,31 +48834,30 @@ 1534721496,1534721519,PL 1534721520,1534721527,FR 1534721528,1534721531,ES -1534721532,1534721535,FR -1534721536,1534721583,GB +1534721532,1534721567,FR +1534721568,1534721583,GB 1534721584,1534721599,FR 1534721600,1534721619,ES 1534721620,1534721627,PL 1534721628,1534721631,NL 1534721632,1534721663,FR 1534721664,1534721679,ES -1534721680,1534721711,FR -1534721712,1534721727,ES -1534721728,1534721743,FR +1534721680,1534721743,FR 1534721744,1534721747,PL 1534721748,1534721751,GB 1534721752,1534721755,DE 1534721756,1534721823,FR 1534721824,1534721827,PL 1534721828,1534721831,FR -1534721832,1534721835,PL +1534721832,1534721835,DE 1534721836,1534721839,BE 1534721840,1534721855,PL 1534721856,1534721887,ES 1534721888,1534721903,FR 1534721904,1534721919,DE 1534721920,1534721935,FR -1534721936,1534721951,PL +1534721936,1534721943,IT +1534721944,1534721951,IE 1534721952,1534721955,FR 1534721956,1534721959,PL 1534721960,1534721963,IE @@ -43004,8 +48865,7 @@ 1534721968,1534721971,DE 1534721972,1534721975,PL 1534721976,1534721979,ES -1534721980,1534721983,GB -1534721984,1534722007,PL +1534721980,1534722007,PL 1534722008,1534722011,PT 1534722012,1534722015,ES 1534722016,1534722039,FR @@ -43028,7 +48888,9 @@ 1534849024,1534853119,NL 1534853120,1534918655,UA 1534918656,1534984191,GB -1534984192,1534989855,SE +1534984192,1534984703,SE +1534984704,1534985215,ES +1534985216,1534989855,SE 1534989856,1534990063,ES 1534990064,1534990079,SE 1534990080,1534990335,ES @@ -43064,7 +48926,15 @@ 1535635456,1535639551,AZ 1535639552,1535672319,GB 1535672320,1535705087,DE -1535705088,1535721471,CH +1535705088,1535720447,CH +1535720448,1535720575,DE +1535720576,1535720703,CH +1535720704,1535720831,DE +1535720832,1535720959,CH +1535720960,1535721087,DE +1535721088,1535721215,CH +1535721216,1535721343,DE +1535721344,1535721471,CH 1535721472,1535721726,DE 1535721727,1535737855,CH 1535737856,1535769855,HU @@ -43146,7 +49016,7 @@ 1536245760,1536262143,FI 1536262144,1536278527,PL 1536278528,1536294911,UA -1536294912,1536327679,RU +1536294912,1536311295,RU 1536327680,1536344063,HU 1536344064,1536360447,PL 1536360448,1536376831,RU @@ -43177,44 +49047,40 @@ 1536647436,1536651263,ES 1536651264,1536655359,FR 1536655360,1536659455,GE -1536659456,1536659759,DE -1536659760,1536659775,BI -1536659776,1536659791,DE +1536659456,1536659775,DE +1536659776,1536659791,AO 1536659792,1536659823,SD -1536659824,1536659943,DE -1536659944,1536659951,SD -1536659952,1536659991,DE +1536659824,1536659991,DE 1536659992,1536659999,EG -1536660000,1536660003,DE -1536660004,1536660007,SO -1536660008,1536660031,DE -1536660032,1536660039,DJ -1536660040,1536660735,DE -1536660736,1536660991,SA -1536660992,1536661247,DE +1536660000,1536660007,SO +1536660008,1536660015,DE +1536660016,1536660019,CG +1536660020,1536660023,DE +1536660024,1536660031,CG +1536660032,1536660063,DE +1536660064,1536660079,SO +1536660080,1536661247,DE 1536661248,1536661759,GQ -1536661760,1536662015,BJ -1536662016,1536662271,DE +1536661760,1536662271,DE 1536662272,1536662303,SO -1536662304,1536662319,DE -1536662320,1536662335,LB -1536662336,1536662351,DE -1536662352,1536662359,TD -1536662360,1536662415,DE +1536662304,1536662335,LB +1536662336,1536662367,DE +1536662368,1536662399,SO +1536662400,1536662407,DE +1536662408,1536662415,SO 1536662416,1536662431,GN 1536662432,1536662463,IQ -1536662464,1536662783,DE -1536662784,1536663039,SA -1536663040,1536663295,DE +1536662464,1536662527,SO +1536662528,1536663295,DE 1536663296,1536663311,LB 1536663312,1536663319,DE 1536663320,1536663327,LB 1536663328,1536663343,DE -1536663344,1536663391,IQ -1536663392,1536663423,DE +1536663344,1536663359,IQ +1536663360,1536663423,DE 1536663424,1536663551,KW 1536663552,1536667647,SA -1536667648,1536675839,RU +1536671744,1536675839,RU 1536675840,1536679935,GB 1536679936,1536684031,LB 1536684032,1536688127,GB @@ -43222,10 +49088,8 @@ 1537212416,1538260991,FR 1538260992,1538785279,BE 1538785280,1538793471,NL -1538793472,1538797567,DE -1538797568,1538799551,NL -1538799552,1538799615,DE -1538799616,1538801663,NL +1538793472,1538797055,DE +1538797056,1538801663,NL 1538801664,1538809855,IR 1538809856,1538818047,GE 1538818048,1538826239,NO @@ -43236,7 +49100,17 @@ 1538859008,1538875391,RU 1538875392,1538883583,RS 1538883584,1538891775,BE -1538891776,1538898175,DE +1538891776,1538897671,DE +1538897672,1538897679,IT +1538897680,1538897687,ES +1538897688,1538897695,RU +1538897696,1538897703,PL +1538897704,1538897711,GR +1538897712,1538897719,PT +1538897720,1538897727,GB +1538897728,1538897735,NL +1538897736,1538897919,FR +1538897920,1538898175,DE 1538898176,1538899967,FR 1538899968,1538904031,SI 1538904032,1538904039,BH @@ -43259,11 +49133,7 @@ 1538981888,1538990079,BY 1538990080,1538998271,CZ 1538998272,1539006463,AD -1539006464,1539006719,AL -1539006720,1539006735,RS -1539006736,1539008511,AL -1539008512,1539009023,RS -1539009024,1539014655,AL +1539006464,1539014655,AL 1539014656,1539022847,RS 1539022848,1539031039,LT 1539031040,1539039231,IT @@ -43292,13 +49162,13 @@ 1539049216,1539049223,LY 1539049224,1539049255,IT 1539049256,1539049263,LY -1539049264,1539049279,IT -1539049280,1539049287,LY -1539049288,1539049311,IT +1539049264,1539049311,IT 1539049312,1539049327,LY 1539049328,1539049335,IT 1539049336,1539049343,LY -1539049344,1539050367,IT +1539049344,1539050263,IT +1539050264,1539050271,TR +1539050272,1539050367,IT 1539050368,1539050375,FR 1539050376,1539050383,IT 1539050384,1539050399,FR @@ -43308,9 +49178,7 @@ 1539055472,1539055487,FR 1539055488,1539055511,IT 1539055512,1539055519,DE -1539055520,1539055567,IT -1539055568,1539055575,FR -1539055576,1539055615,IT +1539055520,1539055615,IT 1539055616,1539063807,LV 1539063808,1539071999,FR 1539072000,1539080191,PL @@ -43350,33 +49218,30 @@ 1539194880,1539203071,RU 1539203072,1539207167,NL 1539207168,1539211263,RU -1539211264,1539211527,CZ -1539211528,1539211531,GB -1539211532,1539211775,CZ +1539211264,1539211775,CZ 1539211776,1539212031,DE 1539212032,1539212287,CZ 1539212288,1539212543,DE 1539212544,1539213311,CZ 1539213312,1539215359,SE 1539215360,1539219455,DE -1539219456,1539221503,GG +1539219456,1539219711,GB +1539219712,1539221503,GG 1539221504,1539222527,FR 1539222528,1539222783,HK -1539222784,1539223551,FR +1539222784,1539223039,CN +1539223040,1539223551,FR 1539223552,1539225599,DE 1539225600,1539227647,HU 1539227648,1539229695,FI 1539229696,1539231743,DE 1539231744,1539233791,BE -1539233792,1539235839,GR 1539235840,1539237887,DE 1539237888,1539239935,RU 1539239936,1539244031,DE 1539244032,1539260415,BA 1539260416,1539276799,SK -1539276800,1539280135,SE -1539280136,1539280143,FI -1539280144,1539280895,SE +1539276800,1539280895,SE 1539280896,1539284991,FR 1539284992,1539287039,DE 1539287040,1539289087,TR @@ -43392,7 +49257,6 @@ 1539314688,1539315711,RU 1539315712,1539316735,UA 1539316736,1539317759,SE -1539317760,1539318783,RU 1539318784,1539319807,NL 1539319808,1539320831,DE 1539320832,1539321855,UA @@ -43447,7 +49311,6 @@ 1539379200,1539380223,EU 1539380224,1539381247,CH 1539381248,1539382271,RS -1539382272,1539383295,PL 1539383296,1539384319,UA 1539384320,1539385343,RU 1539385344,1539385855,PL @@ -43575,7 +49438,6 @@ 1539482112,1539482623,UA 1539482624,1539483135,RU 1539483136,1539483647,ES -1539483648,1539484159,NL 1539484160,1539484671,GB 1539484672,1539485695,RU 1539485696,1539486207,RO @@ -43671,7 +49533,8 @@ 1539536384,1539536895,NL 1539536896,1539537407,UA 1539537408,1539537919,GB -1539537920,1539540479,RU +1539537920,1539539455,RU +1539539968,1539540479,RU 1539540480,1539540991,PL 1539540992,1539541503,RU 1539541504,1539542015,TR @@ -43747,11 +49610,8 @@ 1539589120,1539590143,GB 1539590144,1539591167,RU 1539591168,1539592191,UZ -1539592192,1539593215,UA -1539593216,1539594239,IL -1539594240,1539598335,UA +1539592192,1539598335,UA 1539598336,1539599359,NL -1539599360,1539600383,PL 1539600384,1539601407,HU 1539601408,1539602431,GB 1539602432,1539603455,UA @@ -43821,7 +49681,7 @@ 1539680256,1539681279,UA 1539681280,1539684351,RU 1539684352,1539685375,UA -1539686400,1539688447,RU +1539685376,1539688447,RU 1539688448,1539689471,SA 1539689472,1539690495,RU 1539690496,1539691519,FI @@ -43861,7 +49721,7 @@ 1539709184,1539709439,AT 1539709440,1539709695,BE 1539709696,1539709951,NL -1539709952,1539710207,DE +1539709952,1539710207,TR 1539710208,1539710463,GB 1539710464,1539710719,FR 1539710720,1539710975,UA @@ -43898,8 +49758,7 @@ 1539718912,1539719167,KZ 1539719168,1539719423,IE 1539719424,1539719679,PL -1539719680,1539719935,IE -1539719936,1539720191,DE +1539719680,1539720191,DE 1539720192,1539720703,RU 1539720704,1539720959,IL 1539720960,1539721215,RU @@ -44013,7 +49872,6 @@ 1539750400,1539750655,PL 1539750656,1539750911,DE 1539750912,1539751167,UA -1539751168,1539751423,TR 1539751424,1539751679,SI 1539751680,1539751935,FR 1539751936,1539752191,DE @@ -44068,7 +49926,6 @@ 1539764992,1539765247,BE 1539765248,1539765503,GB 1539765504,1539766015,PL -1539766016,1539766271,AM 1539766272,1539766527,PL 1539766528,1539766783,UA 1539766784,1539767039,DE @@ -44127,7 +49984,6 @@ 1539780608,1539780863,PL 1539780864,1539781119,RO 1539781120,1539781375,NL -1539781376,1539781631,DE 1539781632,1539781887,HU 1539781888,1539782143,IL 1539782144,1539782399,UA @@ -44150,7 +50006,6 @@ 1539786752,1539787007,HU 1539787008,1539787263,TR 1539787264,1539787519,IE -1539787520,1539787775,UA 1539787776,1539788031,CH 1539788032,1539788287,HR 1539788288,1539788543,GB @@ -44292,7 +50147,7 @@ 1539826176,1539826431,AM 1539826432,1539826687,BE 1539826688,1539826943,CH -1539827200,1539827455,RU +1539826944,1539827455,RU 1539827456,1539827711,MK 1539827712,1539827967,RU 1539827968,1539828479,FR @@ -44339,6 +50194,7 @@ 1539860480,1539861503,UA 1539861504,1539862527,DE 1539862528,1539863551,UA +1539863552,1539864575,ES 1539864576,1539865599,RO 1539865600,1539866623,UA 1539866624,1539867647,IT @@ -44355,6 +50211,7 @@ 1539879936,1539880959,UA 1539880960,1539881983,PL 1539881984,1539883007,UA +1539883008,1539884031,RS 1539884032,1539885055,MT 1539885056,1539886079,UA 1539886080,1539887103,FR @@ -44412,6 +50269,7 @@ 1539948544,1539949567,RO 1539949568,1539950591,MD 1539950592,1539951103,KZ +1539951104,1539951615,UA 1539951616,1539953663,RU 1539953664,1539954687,UA 1539954688,1539956735,RO @@ -44428,7 +50286,7 @@ 1539975168,1539976191,DE 1539976192,1539977215,RU 1539977216,1539978239,DE -1539978240,1539980287,UA +1539979264,1539980287,UA 1539980288,1539981311,VG 1539981312,1539982335,SI 1539982336,1539983359,RU @@ -44469,7 +50327,6 @@ 1540026368,1540028415,UA 1540028416,1540029439,ES 1540029440,1540030463,RU -1540030464,1540031487,DE 1540031488,1540032511,UA 1540032512,1540033535,RU 1540033536,1540034559,UA @@ -44524,7 +50381,6 @@ 1540085760,1540087807,PL 1540087808,1540092927,RU 1540092928,1540094975,PL -1540094976,1540095999,EU 1540096000,1540097023,SE 1540097024,1540099071,DE 1540099072,1540100095,UA @@ -44541,7 +50397,6 @@ 1540118528,1540119551,PL 1540119552,1540120575,UA 1540120576,1540124671,RU -1540124672,1540125695,NO 1540125696,1540126719,FR 1540126720,1540127743,UA 1540127744,1540128767,GB @@ -44616,7 +50471,6 @@ 1540206592,1540208639,RU 1540208640,1540209663,NO 1540209664,1540211711,RU -1540211712,1540212735,DE 1540212736,1540213759,RU 1540213760,1540214783,UA 1540214784,1540215807,RU @@ -44783,6 +50637,7 @@ 1540318720,1540319231,RO 1540319232,1540320255,UA 1540320256,1540320767,RU +1540320768,1540321279,GB 1540321280,1540321791,SE 1540321792,1540322303,RU 1540322304,1540322815,UA @@ -45154,6 +51009,7 @@ 1540442624,1540442879,IE 1540442880,1540443135,AT 1540443136,1540443647,RU +1540443648,1540443903,FR 1540443904,1540444159,GB 1540444160,1540444415,RU 1540444416,1540444671,DE @@ -45294,7 +51150,6 @@ 1540483840,1540484095,UA 1540484096,1540484351,DK 1540484352,1540484607,SI -1540484608,1540484863,EU 1540484864,1540485119,UA 1540485120,1540485375,SE 1540485376,1540485631,RO @@ -45312,7 +51167,7 @@ 1540488704,1540488959,DE 1540488960,1540489215,RO 1540489216,1540491263,RU -1540491264,1540493311,UA +1540491264,1540492287,UA 1540493312,1540494335,CZ 1540494336,1540495359,UA 1540495360,1540496383,RU @@ -45323,14 +51178,13 @@ 1540502528,1540503551,RU 1540503552,1540504575,NL 1540504576,1540505599,SE -1540505600,1540506623,RU 1540506624,1540507647,GB 1540507648,1540508671,RU 1540508672,1540509695,UA 1540509696,1540510719,RO 1540510720,1540511743,RU 1540511744,1540512767,BG -1540512768,1540514815,UA +1540513792,1540514815,UA 1540514816,1540515839,GB 1540515840,1540516863,RU 1540516864,1540517887,UA @@ -45388,7 +51242,7 @@ 1540589568,1540593663,RU 1540593664,1540594687,GB 1540594688,1540595711,IT -1540595712,1540596735,KZ +1540595712,1540596735,UZ 1540596736,1540597759,FR 1540597760,1540598783,SE 1540598784,1540600831,UA @@ -45418,7 +51272,6 @@ 1540621824,1540622335,RU 1540622336,1540622591,KW 1540622592,1540622847,PL -1540622848,1540623103,LV 1540623104,1540623359,SE 1540623360,1540623615,GB 1540623616,1540623871,BG @@ -45527,7 +51380,6 @@ 1540651520,1540651775,MK 1540651776,1540652031,RU 1540652032,1540652543,UA -1540652544,1540652799,TR 1540652800,1540653055,EU 1540653056,1540653311,FR 1540653312,1540653567,DK @@ -45673,6 +51525,7 @@ 1540693504,1540693759,ES 1540693760,1540694015,UZ 1540694016,1540694271,CH +1540694272,1540694527,UA 1540694528,1540695039,RO 1540695040,1540695295,DE 1540695296,1540695551,NL @@ -45703,6 +51556,7 @@ 1540701952,1540702207,GB 1540702208,1540702463,PL 1540702464,1540702719,PT +1540702720,1540702975,DK 1540702976,1540703231,RU 1540703232,1540703487,MH 1540703488,1540703743,NL @@ -45754,8 +51608,8 @@ 1540716800,1540717055,UA 1540717056,1540717311,CZ 1540717312,1540717823,PL -1540717824,1540718335,UA -1540718336,1540718591,DE +1540717824,1540718079,UA +1540718080,1540718335,RU 1540718592,1540718847,CH 1540718848,1540719103,IT 1540719104,1540719359,RU @@ -45844,6 +51698,7 @@ 1540742912,1540743167,RU 1540743168,1540743423,NO 1540743424,1540743679,RU +1540743680,1540743935,PL 1540743936,1540744191,CH 1540744192,1540744447,GR 1540744448,1540744703,UA @@ -45925,7 +51780,6 @@ 1540818944,1540819967,UA 1540819968,1540820991,CZ 1540820992,1540822015,RU -1540822016,1540823039,FR 1540823040,1540824063,UA 1540824064,1540825087,RU 1540825088,1540826111,PL @@ -46017,7 +51871,6 @@ 1540893952,1540894207,DE 1540894208,1540894463,RU 1540894464,1540894719,RO -1540894720,1540894975,RS 1540894976,1540895487,RU 1540895488,1540895743,PL 1540895744,1540895999,RO @@ -46040,7 +51893,7 @@ 1540900352,1540900607,HU 1540900608,1540900863,BG 1540900864,1540901119,RU -1540901120,1540901375,EU +1540901120,1540901375,LV 1540901376,1540901631,DE 1540901632,1540901887,RO 1540901888,1540902143,GR @@ -46078,7 +51931,7 @@ 1540910848,1540911103,SE 1540911104,1540911359,GB 1540911360,1540911615,NL -1540911616,1540912127,RU +1540911616,1540911871,RU 1540912128,1540912383,GB 1540912384,1540912639,PT 1540912640,1540912895,DK @@ -46148,7 +52001,6 @@ 1540930816,1540931071,KZ 1540931072,1540931327,EU 1540931328,1540931583,PL -1540931584,1540931839,RU 1540931840,1540932095,GB 1540932096,1540932351,PL 1540932352,1540932607,FR @@ -46171,6 +52023,7 @@ 1540936960,1540937471,PL 1540937472,1540937727,RU 1540937728,1540937983,DE +1540937984,1540938239,RU 1540938240,1540938751,ES 1540938752,1540939007,KZ 1540939008,1540939263,FR @@ -46232,11 +52085,12 @@ 1540960256,1540960767,PL 1540960768,1540961279,RU 1540961280,1540961791,CZ +1540961792,1540962303,AT 1540962304,1540962815,NL 1540962816,1540963839,UA 1540963840,1540964351,RU 1540964352,1540964863,IR -1540964864,1540965375,UA +1540964864,1540965887,UA 1540965888,1540966399,RU 1540966400,1540966911,GB 1540966912,1540967935,RU @@ -46299,7 +52153,7 @@ 1540989696,1540989951,PL 1540989952,1540990207,FR 1540990208,1540990463,DE -1540990720,1540990975,UA +1540990464,1540990975,UA 1540990976,1540991231,FR 1540991232,1540991487,HU 1540991488,1540991743,CH @@ -46362,6 +52216,7 @@ 1541007616,1541007871,RU 1541007872,1541008127,FR 1541008128,1541008383,NL +1541008384,1541008639,RU 1541008640,1541008895,GB 1541008896,1541009151,TR 1541009152,1541009407,RU @@ -46392,7 +52247,6 @@ 1541027840,1541028863,RU 1541028864,1541029887,PL 1541029888,1541030911,UA -1541030912,1541031935,DE 1541031936,1541032959,UA 1541032960,1541033983,PL 1541033984,1541035007,BG @@ -46412,6 +52266,7 @@ 1541052416,1541053439,RO 1541053440,1541054463,PL 1541054464,1541055487,RU +1541055488,1541056511,PL 1541056512,1541057535,TJ 1541057536,1541058559,RS 1541058560,1541059583,RU @@ -46463,11 +52318,12 @@ 1541110784,1541111807,RU 1541111808,1541112831,PL 1541112832,1541113855,SK -1541113856,1541115903,RU -1541115904,1541116927,UA +1541113856,1541114879,RU +1541114880,1541116927,UA 1541116928,1541117951,RU 1541117952,1541118975,DK 1541118976,1541122047,RU +1541122048,1541123071,UA 1541123072,1541124095,FI 1541124096,1541126143,RU 1541126144,1541127167,PL @@ -46496,8 +52352,7 @@ 1541146880,1541147135,IL 1541147136,1541147391,PL 1541147392,1541147903,RU -1541147904,1541148159,EU -1541148160,1541148415,RO +1541147904,1541148415,RO 1541148416,1541148671,GB 1541148672,1541148927,RU 1541148928,1541149439,PL @@ -46572,14 +52427,14 @@ 1541167360,1541167615,AT 1541167616,1541167871,RU 1541167872,1541168127,UA -1541168128,1541168383,RU +1541168128,1541168639,RU 1541168640,1541168895,MD 1541168896,1541169151,MK 1541169152,1541169407,RO 1541169408,1541169663,PL 1541169664,1541169919,SE 1541169920,1541170431,CH -1541170432,1541170687,UA +1541170432,1541170687,NL 1541170688,1541170943,BE 1541170944,1541171199,PL 1541171200,1541171455,UA @@ -46652,7 +52507,7 @@ 1541188864,1541189119,RU 1541189120,1541189375,UA 1541189376,1541189631,GB -1541189632,1541189887,BG +1541189632,1541189887,SC 1541189888,1541190143,PL 1541190144,1541190399,GB 1541190400,1541190655,AT @@ -46661,10 +52516,75 @@ 1541191168,1541191423,TR 1541191424,1541191679,RO 1541191680,1541192191,NL +1541192192,1541192447,RU +1541192448,1541192703,ME +1541192704,1541192959,RU +1541192960,1541193215,BG +1541193216,1541193471,UA +1541193472,1541193727,BE +1541193728,1541193983,SE +1541193984,1541194239,IL +1541194240,1541194495,SI +1541194496,1541194751,JO +1541194752,1541195007,NO +1541195008,1541195263,FR +1541195264,1541195519,UA +1541195520,1541195775,GB +1541195776,1541196031,FR +1541196032,1541196287,NL +1541196288,1541196543,RU +1541196544,1541197055,UA +1541197056,1541197311,PL +1541197312,1541197567,RU +1541197568,1541197823,MD +1541197824,1541198079,GR +1541198080,1541198335,LT +1541198336,1541198591,AT +1541198592,1541198847,RU +1541198848,1541199103,GB +1541199104,1541199359,SI +1541199360,1541199615,GB +1541199616,1541199871,RU +1541199872,1541200127,GB +1541200128,1541200383,NO +1541200384,1541201151,RU +1541201152,1541201407,SI +1541201408,1541201663,PL +1541201664,1541201919,RU +1541201920,1541202175,IE +1541202176,1541202431,PL +1541202432,1541202687,ES +1541202688,1541202943,SE +1541202944,1541203199,DE +1541203200,1541203455,ES +1541203456,1541203711,UA +1541203712,1541203967,GB +1541203968,1541204223,RO +1541204224,1541204479,RU +1541204480,1541204735,GB +1541204736,1541204991,UA +1541204992,1541205247,GR +1541205248,1541205503,SK +1541205504,1541205759,PL +1541205760,1541206015,AT +1541206016,1541206271,SI +1541206272,1541206527,FI +1541206528,1541206783,TR +1541206784,1541207039,NO +1541207040,1541207295,DE +1541207296,1541207807,FR +1541207808,1541208063,HU +1541208064,1541208319,FR +1541208320,1541208575,NL +1541208576,1541208831,BY +1541208832,1541209087,HU +1541209088,1541209599,UA +1541209600,1541209855,SE +1541209856,1541210111,UA 1541210112,1541210623,RU 1541210624,1541211135,CZ 1541211136,1541211647,SK -1541211648,1541212159,RU +1541211648,1541212159,UA 1541212160,1541212671,DE 1541212672,1541213183,MT 1541213184,1541213695,DE @@ -46711,7 +52631,6 @@ 1541236736,1541237247,DE 1541237248,1541237759,RU 1541237760,1541238271,CZ -1541238272,1541238783,ES 1541238784,1541239295,SK 1541239296,1541239807,PL 1541239808,1541240319,RU @@ -46724,9 +52643,64 @@ 1541243392,1541243903,NO 1541243904,1541244415,UA 1541244416,1541244927,RS +1541244928,1541245439,UA +1541245440,1541245951,AT +1541245952,1541246463,RU +1541246464,1541246975,DK +1541246976,1541247487,PL +1541247488,1541247999,FR +1541248000,1541248511,CZ +1541248512,1541249023,NL +1541249024,1541249535,GB +1541249536,1541250047,UA +1541250048,1541250559,RU +1541250560,1541251071,PL +1541251072,1541251583,NL +1541251584,1541252607,RU +1541252608,1541253119,UA +1541253120,1541253631,GB +1541253632,1541254143,SI +1541254144,1541254655,PL +1541254656,1541255679,RU +1541255680,1541256191,UA +1541256192,1541256703,RU +1541256704,1541257215,DE +1541257216,1541257727,SA +1541257728,1541258239,EE +1541258240,1541258751,RU +1541258752,1541259263,UA +1541259264,1541259775,CH +1541259776,1541260287,RU +1541260288,1541260799,DK +1541260800,1541261823,RU +1541261824,1541262335,SA +1541262336,1541262847,DE +1541262848,1541263359,DK +1541263360,1541263871,NL +1541263872,1541264383,UA +1541264384,1541264895,CZ +1541264896,1541265407,PL +1541265408,1541265919,RS +1541265920,1541266431,UA +1541266432,1541266943,KW +1541266944,1541267455,US +1541267456,1541267967,FR +1541267968,1541268479,DE +1541268480,1541268991,AM +1541268992,1541269503,NL +1541269504,1541270015,RU +1541270016,1541270527,UA +1541270528,1541271039,IT +1541271040,1541271551,FI +1541271552,1541272063,RO +1541272064,1541272575,RU +1541272576,1541273087,FR +1541273088,1541274111,RU +1541274112,1541274623,DE +1541274624,1541275135,UA +1541275136,1541275647,FR 1541275648,1541276671,UA 1541276672,1541277695,RS -1541277696,1541278719,ES 1541278720,1541280767,UA 1541280768,1541281791,BG 1541281792,1541282815,PL @@ -46734,8 +52708,918 @@ 1541283840,1541286911,UA 1541286912,1541287935,DE 1541287936,1541288959,UA +1541288960,1541289983,CZ +1541289984,1541291007,PL +1541291008,1541293055,UA +1541293056,1541295103,PL +1541295104,1541297151,UA +1541297152,1541298175,CH +1541298176,1541299199,KZ +1541299200,1541300223,RO +1541300224,1541301247,DE +1541301248,1541302271,PL +1541302272,1541303295,SK +1541303296,1541304319,PL +1541304320,1541305343,UA +1541305344,1541306367,PL +1541306368,1541307391,RU +1541307392,1541308415,PL +1541308416,1541309439,RU +1541309440,1541310463,CH +1541310464,1541311487,UA +1541311488,1541314559,PL +1541314560,1541315583,UA +1541315584,1541316607,RU +1541316608,1541317631,PL +1541317632,1541318655,RU +1541318656,1541320703,UA +1541320704,1541321727,DE +1541321728,1541322751,UA +1541322752,1541323775,PL +1541323776,1541324799,FI +1541324800,1541325823,PL +1541325824,1541326847,IR +1541326848,1541327871,SA +1541327872,1541328895,CZ +1541328896,1541329919,RU +1541329920,1541330943,PL +1541330944,1541331967,RU +1541331968,1541332991,UA +1541332992,1541334015,PL +1541334016,1541335039,RU +1541335040,1541336063,DE +1541336064,1541338111,RU +1541338112,1541341183,UA +1541341184,1541341439,TR +1541341440,1541341695,RU +1541341696,1541341951,DE +1541341952,1541342463,PL +1541342464,1541342719,FR +1541342720,1541342975,PL +1541342976,1541343231,RU +1541343232,1541343487,TR +1541343488,1541343743,IE +1541343744,1541343999,GB +1541344000,1541344255,IL +1541344256,1541344511,IT +1541344512,1541345023,PL +1541345024,1541345279,RU +1541345280,1541345535,GB +1541345536,1541345791,CH +1541345792,1541346047,DE +1541346048,1541346303,UA +1541346304,1541346559,DE +1541346560,1541346815,BE +1541346816,1541347071,FR +1541347072,1541347327,PL +1541347328,1541347583,HR +1541347584,1541347839,RU +1541347840,1541348095,SI +1541348096,1541348351,UA +1541348352,1541348607,RU +1541348608,1541348863,HR +1541348864,1541349119,UA +1541349120,1541349375,PL +1541349376,1541349631,ES +1541349632,1541349887,PL +1541349888,1541350143,RU +1541350144,1541350399,FR +1541350400,1541350655,NO +1541350656,1541350911,RU +1541350912,1541351167,AT +1541351168,1541351423,SI +1541351424,1541351679,FR +1541351680,1541351935,DE +1541351936,1541352191,GR +1541352192,1541352447,SI +1541352448,1541352703,RU +1541352704,1541352959,RO +1541352960,1541353215,GB +1541353216,1541353471,SE +1541353472,1541353727,UA +1541353728,1541353983,SI +1541353984,1541354239,RO +1541354240,1541354495,SE +1541354496,1541354751,PL +1541354752,1541355007,UA +1541355008,1541355263,IL +1541355264,1541355519,PL +1541355520,1541355775,NL +1541355776,1541356031,PL +1541356032,1541356287,GB +1541356288,1541356543,UA +1541356544,1541356799,RU +1541356800,1541357055,ES +1541357056,1541357311,FR +1541357312,1541357567,RU +1541357568,1541357823,PL +1541357824,1541358079,HR +1541358080,1541358335,BG +1541358336,1541358591,GB +1541358592,1541358847,PL +1541358848,1541359103,SK +1541359104,1541359359,LV +1541359360,1541359615,FR +1541359616,1541359871,PL +1541359872,1541360127,FR +1541360128,1541360383,CZ +1541360384,1541360639,RU +1541360640,1541360895,FR +1541360896,1541361151,UA +1541361152,1541361407,PL +1541361408,1541361663,CH +1541361664,1541361919,SI +1541361920,1541362175,PL +1541362176,1541362431,NL +1541362432,1541362687,PL +1541362688,1541362943,FR +1541362944,1541363199,DK +1541363200,1541363455,UA +1541363456,1541363711,IE +1541363712,1541364223,UA +1541364224,1541364479,RU +1541364480,1541364735,AT +1541364736,1541364991,SE +1541364992,1541365247,RU +1541365248,1541365503,GB +1541365504,1541365759,NL +1541365760,1541366015,DE +1541366016,1541366271,UA +1541366272,1541366527,RU +1541366528,1541366783,RO +1541366784,1541367039,NO +1541367040,1541367295,AT +1541367296,1541367807,UA +1541367808,1541368063,GR +1541368064,1541368319,RU +1541368320,1541368575,IL +1541368576,1541368831,FI +1541368832,1541369343,RU +1541369344,1541369599,UA +1541369600,1541369855,GB +1541369856,1541370111,UA +1541370112,1541370367,SI +1541370368,1541370623,DE +1541370624,1541370879,SI +1541370880,1541371135,FI +1541371136,1541371391,RO +1541371392,1541371647,RU +1541371648,1541371903,GB +1541371904,1541372159,RU +1541372160,1541372415,CH +1541372416,1541372671,UA +1541372672,1541372927,ES +1541372928,1541373183,NL +1541373184,1541373439,FR +1541373440,1541373695,GB +1541373696,1541373951,UA +1541373952,1541374207,RU +1541374208,1541374463,DE +1541374464,1541374719,PL +1541374720,1541374975,NL +1541374976,1541375231,GR +1541375232,1541375487,UA +1541375488,1541375999,PL +1541376000,1541376255,UA +1541376256,1541376767,RU +1541376768,1541377023,FR +1541377024,1541377279,NL +1541377280,1541377535,DE +1541377536,1541377791,PL +1541377792,1541378047,ES +1541378048,1541378303,RU +1541378304,1541378559,DE +1541378560,1541378815,GB +1541378816,1541379071,AT +1541379072,1541379327,RO +1541379328,1541379583,UA +1541379584,1541379839,FR +1541379840,1541380095,DE +1541380096,1541380351,UA +1541380352,1541380607,RU +1541380608,1541380863,CH +1541380864,1541381119,IT +1541381120,1541381375,RO +1541381376,1541381631,TR +1541381632,1541381887,RO +1541381888,1541382143,FR +1541382144,1541382399,PL +1541382400,1541382655,IM +1541382656,1541382911,RS +1541382912,1541383167,RO +1541383168,1541383423,CY +1541383424,1541383679,LV +1541383680,1541383935,SI +1541383936,1541384447,PL +1541384448,1541384703,LV +1541384704,1541384959,RU +1541384960,1541385215,PL +1541385216,1541385471,NL +1541385472,1541385727,RU +1541385728,1541385983,SI +1541385984,1541386239,PL +1541386240,1541386495,RU +1541386496,1541386751,UA +1541386752,1541387007,RU +1541387008,1541387263,CH +1541387264,1541387519,UA +1541387520,1541387775,RU +1541387776,1541388031,SI +1541388032,1541388287,RO +1541388288,1541388543,PL +1541388544,1541388799,RO +1541388800,1541389055,CH +1541389056,1541389311,NL +1541389312,1541389567,RU +1541389568,1541389823,SI +1541389824,1541390079,RO +1541390080,1541390335,US +1541390336,1541390591,DK +1541390592,1541390847,SI +1541390848,1541391103,RU +1541391104,1541391359,BE +1541391360,1541391615,PL +1541391616,1541391871,SI +1541391872,1541392127,DE +1541392128,1541392383,RU +1541392384,1541392639,RO +1541392640,1541392895,TR +1541392896,1541393151,DE +1541393152,1541393407,GB +1541393408,1541393663,DE +1541393664,1541393919,UA +1541393920,1541394175,ES +1541394176,1541394431,FR +1541394432,1541394687,CY +1541394688,1541394943,SK +1541394944,1541395199,SA +1541395200,1541395455,DE +1541395456,1541395711,PL +1541395712,1541395967,NO +1541395968,1541396223,UA +1541396224,1541396479,LB +1541396480,1541396735,UA +1541396736,1541396991,RU +1541396992,1541397247,GB +1541397248,1541397503,FR +1541397504,1541397759,NL +1541397760,1541398015,PL +1541398016,1541398271,HU +1541398272,1541398527,UA +1541398528,1541398783,RU +1541398784,1541399039,PL +1541399040,1541399295,RU +1541399296,1541399551,UA +1541399552,1541399807,DE +1541399808,1541400063,RU +1541400064,1541400319,SI +1541400320,1541400831,SE +1541400832,1541401087,NL +1541401088,1541401343,UA +1541401344,1541401599,DK +1541401600,1541401855,LV +1541401856,1541402111,HR +1541402112,1541402367,SI +1541402368,1541402623,RU +1541402624,1541402879,FR +1541402880,1541403135,PL +1541403136,1541403391,RU +1541403392,1541403647,EE +1541403648,1541403903,RU +1541403904,1541404159,GE +1541404160,1541404415,RU +1541404416,1541404671,DE +1541404672,1541404927,AT +1541404928,1541405183,HR +1541405184,1541405439,PL +1541405440,1541405951,RU +1541405952,1541406207,FR +1541406208,1541406463,RU +1541406464,1541406719,AT +1541406720,1541407231,LV +1541407232,1541407743,UA +1541407744,1541408255,FI +1541408256,1541408767,FR +1541408768,1541409791,UA +1541409792,1541410303,LV +1541410304,1541410815,RU +1541410816,1541411327,UA +1541411328,1541412863,RU +1541412864,1541413375,UA +1541413376,1541413887,GB +1541413888,1541414399,PL +1541414400,1541414911,UA +1541414912,1541415935,RU +1541415936,1541416447,SE +1541416448,1541416959,PL +1541416960,1541417471,RO +1541417472,1541417983,SK +1541417984,1541418495,UA +1541418496,1541419007,PL +1541419008,1541419519,CZ +1541419520,1541420031,RO +1541420032,1541420543,RU +1541420544,1541421055,NL +1541421056,1541421567,PL +1541421568,1541422079,GB +1541422080,1541422591,PL +1541422592,1541423103,RU +1541423104,1541423615,UA +1541423616,1541424127,AT +1541424128,1541424639,UA +1541424640,1541425151,AT +1541425152,1541425663,IT +1541425664,1541426175,UA +1541426176,1541426687,RU +1541426688,1541427199,UA +1541427200,1541428223,RU +1541428224,1541429247,UA +1541429248,1541429759,FI +1541429760,1541430271,CZ +1541430272,1541430783,LT +1541430784,1541431295,CH +1541431296,1541431807,UA +1541431808,1541432319,RU +1541432320,1541432831,RO +1541432832,1541433343,RU +1541433344,1541433855,PL +1541433856,1541434367,RU +1541434368,1541434879,GB +1541434880,1541435391,IR +1541435392,1541435903,UA +1541435904,1541436415,RU +1541436416,1541437951,PL +1541437952,1541438463,NL +1541438464,1541439487,RU +1541439488,1541439999,PL +1541440000,1541441023,RU +1541441024,1541441535,LT +1541441536,1541442559,RU +1541442560,1541443071,NL +1541443072,1541444607,PL +1541444608,1541445119,FR +1541445120,1541445631,ES +1541445632,1541446143,GB +1541446144,1541446655,RU +1541446656,1541447167,UA +1541447168,1541447679,RU +1541447680,1541448191,NL +1541448192,1541448703,FR +1541448704,1541449215,NL +1541449216,1541449727,RU +1541449728,1541450239,UA +1541450240,1541450751,RU +1541450752,1541451263,SI +1541451264,1541451775,DK +1541451776,1541452287,IR +1541452288,1541452799,UA +1541452800,1541453311,PL +1541453312,1541453823,RU +1541453824,1541454335,PL +1541454336,1541454847,GB +1541454848,1541455359,EE +1541455360,1541455871,GB +1541455872,1541456383,PL +1541456384,1541456895,RU +1541456896,1541457919,PL +1541457920,1541458943,UA +1541458944,1541459455,RO +1541459456,1541460479,RU +1541460480,1541460991,DK +1541460992,1541461503,RO +1541461504,1541462527,PL +1541462528,1541463039,RU +1541463040,1541463551,PL +1541463552,1541464063,UA +1541464064,1541464575,PL +1541464576,1541465087,DE +1541465088,1541465599,RU +1541465600,1541466111,FR +1541466112,1541467135,RU +1541467136,1541467647,PL +1541467648,1541468159,SI +1541468160,1541468671,ES +1541469184,1541469695,SE +1541469696,1541470207,LV +1541470208,1541470719,NL +1541470720,1541471231,RS +1541471232,1541472255,UA +1541472256,1541473279,GB +1541473280,1541474303,UA +1541474304,1541475327,PL +1541475328,1541476351,RO +1541476352,1541477375,GB +1541477376,1541479423,RU +1541479424,1541480447,PL +1541480448,1541481471,RO +1541481472,1541485567,UA +1541485568,1541486591,IR +1541486592,1541487615,UA +1541487616,1541488639,NO +1541488640,1541489663,PL +1541489664,1541490687,FI +1541490688,1541491711,UA +1541491712,1541492735,RU +1541492736,1541493759,UA +1541493760,1541494783,CZ +1541494784,1541496831,UA +1541496832,1541497855,SI +1541497856,1541498879,RU +1541498880,1541499903,LT +1541499904,1541500927,UA +1541500928,1541501951,RU +1541501952,1541503999,UA +1541504000,1541506047,RU +1541506048,1541507071,PL +1541507072,1541510143,UA +1541510144,1541511167,RU +1541511168,1541512191,UA +1541512192,1541513215,PL +1541513216,1541517311,UA +1541517312,1541518335,PL +1541518336,1541519359,IT +1541519360,1541521407,PL +1541521408,1541522431,RU +1541522432,1541524479,UA +1541524480,1541525503,RO +1541525504,1541528575,RU +1541528576,1541532671,UA +1541532672,1541533695,RU +1541533696,1541534719,PL +1541534720,1541535743,IT +1541535744,1541536767,US +1541536768,1541537791,RU +1541537792,1541538303,GB +1541538304,1541538815,RO +1541538816,1541539327,UA +1541539328,1541539839,PL +1541539840,1541540351,HR +1541540352,1541541375,RU +1541541376,1541541887,UA +1541541888,1541542399,PL +1541542400,1541542911,FR +1541542912,1541543423,MK +1541543424,1541543935,PL +1541543936,1541544447,GB +1541544448,1541544959,PL +1541544960,1541545471,FR +1541545472,1541545983,NL +1541545984,1541546495,LV +1541546496,1541547007,UA +1541547008,1541547519,SE +1541547520,1541548543,PL +1541548544,1541549567,UA +1541549568,1541550079,DE +1541550592,1541551103,PL +1541551104,1541552127,RO +1541552128,1541553151,UA +1541553152,1541555199,RU +1541555200,1541556223,PL +1541556224,1541556479,UA +1541556480,1541556735,RU +1541556736,1541557247,IT +1541557248,1541557503,RU +1541557504,1541557759,SI +1541557760,1541558015,RU +1541558016,1541558271,HU +1541558272,1541559295,RU +1541559296,1541560319,RO +1541560320,1541561343,DE +1541561344,1541562879,RU +1541562880,1541563135,FR +1541563136,1541563391,NL +1541563392,1541564415,PL +1541564416,1541565439,RU +1541565440,1541565951,IT +1541565952,1541566463,PL +1541566464,1541567487,SK +1541567488,1541567743,RU +1541567744,1541567999,PL +1541568000,1541568511,SE +1541568512,1541569535,RU +1541569536,1541570559,CZ +1541570560,1541571583,RU +1541571584,1541572607,UA +1541572608,1541574655,RU +1541574656,1541575167,DK +1541575168,1541575423,PL +1541575424,1541575679,IT +1541575680,1541577727,RU +1541577728,1541578751,AT +1541578752,1541579007,GB +1541579008,1541579263,RU +1541579264,1541579775,DE +1541579776,1541580799,RU +1541580800,1541581311,KZ +1541581312,1541581567,HR +1541581568,1541582847,RU +1541582848,1541583359,ES +1541583360,1541583615,RU +1541583616,1541583871,GE +1541583872,1541584127,SE +1541584384,1541584895,BE +1541584896,1541585151,DE +1541585152,1541585663,RU +1541585664,1541585919,UA +1541585920,1541586431,RU +1541586432,1541587199,UA +1541587200,1541587455,FR +1541587456,1541588991,PL +1541588992,1541589247,RU +1541589248,1541589503,UA +1541589504,1541590015,CH +1541590016,1541590527,RU +1541590784,1541591039,UA +1541591040,1541592063,RU +1541592064,1541592575,UA +1541592576,1541593087,FR +1541593088,1541594111,CZ +1541594112,1541594367,EU +1541594368,1541595135,RU +1541595136,1541595647,IR +1541595648,1541596159,BG +1541596160,1541597695,PL +1541597696,1541597951,RU +1541598208,1541599231,PL +1541599232,1541600255,RS +1541600256,1541600511,HR +1541600512,1541600767,IL +1541600768,1541601023,SI +1541601024,1541601279,RU +1541601280,1541601791,DE +1541601792,1541602047,RU +1541602048,1541602303,PL +1541602304,1541603327,UA +1541603328,1541604351,PL +1541604352,1541605119,TR +1541605120,1541605375,CZ +1541605376,1541606911,RU +1541606912,1541607423,UZ +1541607424,1541608447,RU +1541608448,1541608703,DE +1541608704,1541608959,PL +1541608960,1541609215,SA +1541609216,1541609471,RU +1541609472,1541609983,SA +1541609984,1541610239,GB +1541610240,1541610495,NL +1541610496,1541611775,RU +1541611776,1541612031,RO +1541612032,1541612543,RU +1541612544,1541614079,PL +1541614080,1541614335,UA +1541614336,1541614591,SI +1541614592,1541615615,RU +1541615616,1541615871,CH +1541615872,1541616127,SE +1541616128,1541617663,RU +1541617664,1541619199,PL +1541619200,1541619455,GB +1541619456,1541620735,PL +1541620736,1541620991,RU +1541620992,1541621247,UA +1541621248,1541621759,IL +1541621760,1541622271,RO +1541622272,1541622527,RU +1541622528,1541622783,NL +1541622784,1541623295,PL +1541623296,1541623551,GB +1541623552,1541623679,RU +1541623808,1541624831,PL +1541624832,1541625855,RU +1541625856,1541626367,PL +1541626368,1541626623,RO +1541626624,1541627903,RU +1541627904,1541628415,CZ +1541628416,1541628927,DE +1541628928,1541629183,PT +1541629184,1541629439,LV +1541629440,1541630975,PL +1541630976,1541631231,GR +1541631232,1541631487,IT +1541631488,1541631999,SI +1541632000,1541632511,RU +1541632512,1541632767,NL +1541632768,1541633023,SK +1541633024,1541634303,PL +1541634304,1541634559,MD +1541634560,1541635071,PL +1541636096,1541636863,AT +1541636864,1541637119,RO +1541637120,1541637631,PL +1541637632,1541638143,CZ +1541638144,1541638399,RU +1541638400,1541638655,FR +1541638656,1541639167,HU +1541639168,1541640191,RU +1541640192,1541641215,KZ +1541641216,1541641727,RU +1541641728,1541642239,UA +1541642240,1541643263,RU +1541643264,1541644287,PL +1541644288,1541645311,RU +1541645312,1541645823,IL +1541646080,1541646335,PL +1541646336,1541646847,RU +1541646848,1541647359,NO +1541647360,1541648383,RU +1541648384,1541648639,PL +1541648640,1541648895,DK +1541648896,1541649151,GB +1541649152,1541649407,NL +1541649408,1541650431,UA +1541650432,1541650687,RU +1541650688,1541650943,MD +1541650944,1541651199,SE +1541651200,1541651455,FI +1541651456,1541652479,RU +1541652480,1541652991,FI +1541652992,1541653247,FR +1541653248,1541653503,CZ +1541653504,1541654015,PL +1541654016,1541654271,RU +1541654272,1541655551,PL +1541655552,1541656063,AT +1541656064,1541656575,UA +1541656576,1541656831,SE +1541656832,1541657087,BE +1541657088,1541657599,RU +1541657600,1541659647,PL +1541659648,1541660671,GB +1541660672,1541661695,SK +1541661696,1541661951,RU +1541661952,1541662207,NL +1541662208,1541662719,RO +1541662720,1541663743,CZ +1541663744,1541664767,RO +1541664768,1541666047,RU +1541666048,1541666815,GB +1541666816,1541667839,NO +1541667840,1541668095,CH +1541668096,1541668351,GB +1541668352,1541668607,UA +1541668608,1541668863,GE +1541668864,1541669887,GB +1541669888,1541670911,LV +1541670912,1541671423,PL +1541671424,1541671679,RU +1541671680,1541671935,PL +1541671936,1541672959,UA +1541672960,1541674495,RS +1541674496,1541675007,KG +1541675008,1541675519,IE +1541675520,1541676031,RU +1541676288,1541676543,RO +1541676544,1541677055,RU +1541677056,1541678079,PL +1541678080,1541678591,RO +1541678592,1541678847,BG +1541678848,1541679615,RU +1541679616,1541680127,PL +1541680128,1541681151,CZ +1541681152,1541682175,RU +1541682176,1541682687,DE +1541682688,1541683199,RU +1541683200,1541683455,PL +1541683456,1541683711,RU +1541683712,1541684223,UA +1541684224,1541684735,CH +1541684736,1541686271,RU +1541686272,1541687295,UA +1541687296,1541688319,GB +1541688320,1541688831,RU +1541688832,1541689343,GB +1541689344,1541690367,PL +1541690368,1541691391,LT +1541691392,1541691903,PL +1541691904,1541692159,SE +1541692160,1541692415,ES +1541692416,1541693439,PL +1541693440,1541694463,RU +1541694464,1541694719,CZ +1541694720,1541694975,CH +1541694976,1541695487,RU +1541695488,1541696511,DE +1541696512,1541697535,MD +1541697536,1541698047,PL +1541698048,1541698303,DK +1541698304,1541698559,GB +1541698560,1541699327,RU +1541699328,1541699583,RO +1541699584,1541700095,RU +1541700096,1541700607,UA +1541700608,1541700863,RU +1541700864,1541701119,PL +1541701120,1541701631,IL +1541701632,1541702655,RO +1541702656,1541703679,RU +1541703680,1541704703,PL +1541704704,1541706239,RO +1541706240,1541706751,UA +1541706752,1541707263,RU +1541707520,1541707775,NL +1541707776,1541708799,RU +1541708800,1541709823,PL +1541709824,1541710335,RU +1541710336,1541710847,IL +1541710848,1541711871,SK +1541711872,1541712127,FR +1541712128,1541712383,TR +1541712384,1541712895,DE +1541712896,1541713919,RU +1541713920,1541714175,NL +1541714176,1541716223,RU +1541716224,1541716479,PL +1541716480,1541716991,UA +1541716992,1541717247,FR +1541717248,1541717503,IR +1541717504,1541718015,DE +1541718016,1541718271,KZ +1541718272,1541719039,NO +1541719040,1541720063,PL +1541720064,1541721087,RU +1541721088,1541721343,PL +1541721344,1541721599,RU +1541721600,1541721855,GB +1541721856,1541722111,SI +1541722112,1541723135,RU +1541723136,1541723647,HU +1541723648,1541723903,NO +1541723904,1541724159,BE +1541724160,1541725183,CZ +1541725184,1541727231,RU +1541727232,1541727743,UA +1541727744,1541727999,RU +1541728000,1541728255,UA +1541728256,1541729023,GB +1541729024,1541729279,DE +1541729536,1541729791,PL +1541729792,1541730303,RU +1541730304,1541730815,ES +1541731072,1541731327,DE +1541731328,1541731839,SK +1541731840,1541732351,RU +1541732352,1541732607,IL +1541732608,1541732863,RO +1541732864,1541733119,RU +1541733120,1541733375,GB +1541733376,1541734143,RS +1541734144,1541734399,TR +1541734400,1541734911,RO +1541734912,1541735167,RU +1541735168,1541735423,DE +1541735424,1541735679,GB +1541735680,1541735935,RU +1541735936,1541736447,RO +1541736448,1541737471,RU +1541737472,1541739519,RO +1541739520,1541739775,FR +1541739776,1541740031,NO +1541740032,1541740287,PL +1541740288,1541740543,NL +1541740544,1541740799,SK +1541740800,1541741055,RU +1541741056,1541741567,PL +1541741568,1541742079,SK +1541742080,1541742591,RO +1541742592,1541743103,SA +1541743104,1541743615,TR +1541743616,1541744639,SK +1541744640,1541745663,PL +1541745664,1541746175,TR +1541746176,1541746687,UA +1541746688,1541746943,RU +1541746944,1541747199,NL +1541747200,1541747711,RU +1541747712,1541748735,UA +1541748736,1541748991,RU +1541748992,1541749247,AT +1541749248,1541749503,ES +1541749504,1541749759,RU +1541749760,1541750783,NL +1541750784,1541751295,AE +1541751296,1541751807,UA +1541751808,1541752831,PL +1541752832,1541753087,SI +1541753088,1541753343,GB +1541753344,1541753855,RU +1541753856,1541754879,UA +1541754880,1541755391,IT +1541755392,1541757439,PL +1541757440,1541757951,UA +1541757952,1541758207,GB +1541758208,1541758463,HU +1541758464,1541758719,RU +1541758720,1541758975,FR +1541758976,1541760255,RU +1541760256,1541760511,UA +1541760512,1541761023,CH +1541761024,1541761535,KG +1541761536,1541762047,PL +1541762048,1541763583,RU +1541763584,1541763839,SE +1541763840,1541764095,UA +1541764096,1541765119,RU +1541765120,1541766143,UA +1541766144,1541767167,GB +1541767168,1541767679,UA +1541767680,1541768191,FR +1541768192,1541769215,RO +1541769216,1541769471,FR +1541769472,1541770239,FI +1541770240,1541770495,CH +1541770496,1541770751,SE +1541770752,1541771263,NO +1541771264,1541771775,NL +1541771776,1541772031,RU +1541772032,1541772287,RO +1541772288,1541773311,KZ +1541773312,1541773823,NL +1541773824,1541774079,RU +1541774080,1541774335,TR +1541774336,1541775359,RO +1541775360,1541776895,UZ +1541776896,1541777151,GB +1541777152,1541777407,UA +1541777408,1541778431,DE +1541778432,1541778687,FR +1541778688,1541779455,GB +1541779456,1541779967,RU +1541779968,1541780479,DE +1541780480,1541780735,ES +1541780736,1541780991,GB +1541780992,1541781247,RO +1541781504,1541781759,TR +1541781760,1541782015,RU +1541782016,1541782271,RO +1541782272,1541782527,GB +1541782528,1541783551,RU +1541783552,1541783807,IE +1541783808,1541784063,PL +1541784064,1541784575,DE +1541784576,1541785855,RU +1541785856,1541786111,GB +1541786112,1541786623,RU +1541786624,1541787647,UA +1541787648,1541788159,RU +1541788160,1541788415,UA +1541788416,1541788671,RU +1541789184,1541789695,IR +1541789696,1541790719,UA +1541790720,1541790975,SA +1541790976,1541791231,RU +1541791232,1541791743,GB +1541791744,1541792255,KG +1541792256,1541792511,UA +1541792512,1541792767,FR +1541792768,1541793023,RO +1541793024,1541793279,HR +1541793280,1541793791,FR +1541793792,1541794047,NL +1541794048,1541794815,RU +1541794816,1541795071,CH +1541795072,1541795327,RU +1541795328,1541795583,PL +1541795584,1541795839,ES +1541795840,1541796863,UA +1541796864,1541797375,RU +1541797376,1541797887,GB +1541797888,1541798143,UA +1541798400,1541798911,RO +1541798912,1541799935,CZ +1541799936,1541800447,FR +1541800448,1541800959,AT +1541800960,1541801471,FI +1541801472,1541801983,BG +1541801984,1541802495,PL +1541803008,1541804031,LT +1541804032,1541804287,GB +1541804288,1541804543,PL +1541804544,1541805567,RU +1541805568,1541805823,DE +1541805824,1541806079,RU +1541806080,1541806335,PL +1541806336,1541806591,UA +1541806592,1541807103,RU +1541807104,1541808127,UA +1541808128,1541808383,IR +1541808384,1541809151,NL +1541809152,1541809663,PL +1541809664,1541810175,GB +1541810176,1541810431,PT +1541810432,1541810687,AE +1541810688,1541811199,PL +1541811200,1541811711,SK +1541811712,1541811967,NL +1541811968,1541813247,RU 1543503872,1545601023,GB -1545601024,1545863167,SE +1545601024,1545673167,SE +1545673168,1545673175,FI +1545673176,1545673183,SE +1545673184,1545673215,FI +1545673216,1545674495,SE +1545674496,1545674751,FI +1545674752,1545863167,SE 1545863168,1545895935,RU 1545895936,1545928703,BA 1545928704,1545961471,SI @@ -46817,15 +53701,12 @@ 1546313728,1546315775,DE 1546315776,1546317823,NL 1546317824,1546319871,CH -1546319872,1546320383,RS -1546320384,1546320387,SR -1546320388,1546321919,RS +1546319872,1546321919,RS 1546321920,1546323967,RU -1546323968,1546324479,GE -1546324480,1546326015,NO -1546326016,1546327295,ES -1546327296,1546327551,FR -1546327552,1546328063,ES +1546323968,1546325503,GE +1546325504,1546325759,SE +1546325760,1546326015,NO +1546326016,1546328063,ES 1546328064,1546330111,CZ 1546330112,1546332159,SE 1546332160,1546334207,GB @@ -46855,21 +53736,17 @@ 1546379264,1546381311,ES 1546381312,1546383359,DK 1546383360,1546385407,IT -1546385408,1546387455,FR -1546387456,1546518527,TR +1546385408,1546385535,FR +1546385536,1546385599,US +1546385600,1546387455,FR +1546387456,1546460960,TR +1546460961,1546460967,NL +1546460968,1546518527,TR 1546518528,1546649599,KZ 1546649600,1546665983,SA 1546665984,1546673823,GB 1546673824,1546673839,RS -1546673840,1546677535,GB -1546677536,1546677551,IN -1546677552,1546677555,GB -1546677556,1546677557,IN -1546677558,1546677559,GB -1546677560,1546677561,IN -1546677562,1546677679,GB -1546677680,1546677695,IN -1546677696,1546678863,GB +1546673840,1546678863,GB 1546678864,1546678871,RS 1546678872,1546680831,GB 1546680832,1546680895,RS @@ -46921,7 +53798,8 @@ 1547485184,1547489279,IE 1547489280,1547493375,DE 1547493376,1547497471,RS -1547497472,1547501567,GB +1547497472,1547498495,NL +1547498496,1547501567,GB 1547501568,1547505663,TR 1547505664,1547509759,RU 1547509760,1547513855,LT @@ -46966,8 +53844,8 @@ 1547620352,1547620359,A2 1547620360,1547620367,NG 1547620368,1547620375,A2 -1547620376,1547620383,NG -1547620384,1547620399,A2 +1547620376,1547620391,NG +1547620392,1547620399,A2 1547620400,1547620407,NG 1547620408,1547620415,A2 1547620416,1547620423,NG @@ -46988,17 +53866,15 @@ 1547620936,1547620951,A2 1547620952,1547620959,NG 1547620960,1547620967,A2 -1547620968,1547620983,NG -1547620984,1547620999,A2 +1547620968,1547620991,NG +1547620992,1547620999,A2 1547621000,1547621031,NG 1547621032,1547621039,A2 1547621040,1547621063,NG 1547621064,1547621071,A2 1547621072,1547621087,NG 1547621088,1547621095,A2 -1547621096,1547621119,NG -1547621120,1547621127,A2 -1547621128,1547621135,NG +1547621096,1547621135,NG 1547621136,1547621143,A2 1547621144,1547621151,NG 1547621152,1547621167,A2 @@ -47015,9 +53891,77 @@ 1547621304,1547621335,NG 1547621336,1547621351,A2 1547621352,1547621375,NG -1547621376,1547622463,A2 -1547622464,1547622471,NG -1547622472,1547624447,A2 +1547621376,1547621447,A2 +1547621448,1547621455,NG +1547621456,1547621463,A2 +1547621464,1547621471,NG +1547621472,1547621575,A2 +1547621576,1547621583,NG +1547621584,1547621615,A2 +1547621616,1547621623,NG +1547621624,1547621687,A2 +1547621688,1547621711,NG +1547621712,1547622407,A2 +1547622408,1547622415,NG +1547622416,1547622455,A2 +1547622456,1547622471,NG +1547622472,1547622511,A2 +1547622512,1547622527,NG +1547622528,1547622559,A2 +1547622560,1547622575,NG +1547622576,1547622583,A2 +1547622584,1547622615,NG +1547622616,1547622623,A2 +1547622624,1547622631,NG +1547622632,1547622911,A2 +1547622912,1547622935,NG +1547622936,1547622951,A2 +1547622952,1547622959,NG +1547622960,1547622967,A2 +1547622968,1547622983,NG +1547622984,1547622991,A2 +1547622992,1547623015,NG +1547623016,1547623031,A2 +1547623032,1547623039,NG +1547623040,1547623047,A2 +1547623048,1547623071,NG +1547623072,1547623103,A2 +1547623104,1547623159,NG +1547623160,1547623167,A2 +1547623168,1547623175,NG +1547623176,1547623183,A2 +1547623184,1547623191,NG +1547623192,1547623199,A2 +1547623200,1547623207,NG +1547623208,1547623215,A2 +1547623216,1547623247,NG +1547623248,1547623255,A2 +1547623256,1547623263,NG +1547623264,1547623287,A2 +1547623288,1547623295,NG +1547623296,1547623319,A2 +1547623320,1547623327,NG +1547623328,1547623335,A2 +1547623336,1547623343,NG +1547623344,1547623359,A2 +1547623360,1547623367,NG +1547623368,1547623383,A2 +1547623384,1547623391,NG +1547623392,1547623399,A2 +1547623400,1547623415,NG +1547623416,1547623455,A2 +1547623456,1547623463,NG +1547623464,1547623479,A2 +1547623480,1547623487,NG +1547623488,1547623495,A2 +1547623496,1547623519,NG +1547623520,1547623527,A2 +1547623528,1547623559,NG +1547623560,1547623567,A2 +1547623568,1547623615,NG +1547623616,1547623727,A2 +1547623728,1547623735,NG +1547623736,1547624447,A2 1547624448,1547628543,CZ 1547628544,1547632639,BG 1547632640,1547636735,TR @@ -47059,7 +54003,33 @@ 1551007744,1551106047,MD 1551106048,1551237119,DE 1551237120,1551368191,GR -1551368192,1551499263,NL +1551368192,1551385151,NL +1551385152,1551385215,TR +1551385216,1551385343,DE +1551385344,1551385471,CH +1551385472,1551390719,NL +1551390720,1551392767,DE +1551392768,1551396863,NL +1551396864,1551397375,GB +1551397376,1551397887,NL +1551397888,1551398271,GB +1551398272,1551398399,NL +1551398400,1551398911,IL +1551398912,1551399935,NL +1551399936,1551400959,IN +1551400960,1551401983,NL +1551401984,1551403007,SG +1551403008,1551413247,NL +1551413248,1551417343,CN +1551417344,1551417855,NL +1551417856,1551418879,CN +1551418880,1551419391,NL +1551419392,1551421439,CN +1551421440,1551425535,PH +1551425536,1551427583,TH +1551427584,1551429631,HK +1551429632,1551433727,TH +1551433728,1551499263,NL 1551499264,1551503359,EU 1551503360,1551504383,GB 1551504384,1551505407,FR @@ -47077,17 +54047,28 @@ 1551548416,1551551487,DE 1551551488,1551556607,EU 1551556608,1551558655,FR -1551558656,1551564799,EU +1551558656,1551560703,EU +1551560704,1551561727,DE +1551561728,1551562751,FR +1551562752,1551564799,EU 1551564800,1551572991,FR 1551572992,1551576063,NL 1551576064,1551577087,EU 1551577088,1551580159,NL -1551580160,1551630335,EU +1551580160,1551604479,EU +1551604480,1551604735,SE +1551604736,1551630335,EU 1551630336,1551892479,RU 1551892480,1556086783,FR -1556086784,1556486729,DE -1556486730,1556486730,A2 -1556486731,1558708223,DE +1556086784,1556486924,DE +1556486925,1556486925,A2 +1556486926,1556490839,DE +1556490840,1556490847,A2 +1556490848,1556493903,DE +1556493904,1556493911,A2 +1556493912,1556497655,DE +1556497656,1556497663,A2 +1556497664,1558708223,DE 1558708224,1559232511,GB 1559232512,1559240703,IL 1559240704,1559248895,BA @@ -47102,7 +54083,9 @@ 1559314432,1559322623,GE 1559322624,1559330815,RU 1559330816,1559339007,BA -1559339008,1559339743,RU +1559339008,1559339647,RU +1559339648,1559339679,MY +1559339680,1559339743,RU 1559339744,1559339775,MH 1559339776,1559341695,RU 1559341696,1559341703,ES @@ -47156,7 +54139,9 @@ 1560018944,1560051711,DE 1560051712,1560084479,RU 1560084480,1560117247,JO -1560117248,1560150015,CZ +1560117248,1560119295,CZ +1560119296,1560121343,UA +1560121344,1560150015,CZ 1560150016,1560182783,NL 1560182784,1560215551,SE 1560215552,1560281087,RU @@ -47178,7 +54163,7 @@ 1566081024,1566085119,RU 1566085120,1566089215,NL 1566089216,1566097407,RU -1566097408,1566101503,GB +1566097408,1566101503,HU 1566101504,1566105599,RU 1566105600,1566109695,DE 1566109696,1566111231,CH @@ -47239,7 +54224,7 @@ 1566314496,1566316543,BE 1566316544,1566318591,NO 1566318592,1566320639,RU -1566320640,1566321151,GB +1566320640,1566321151,DE 1566321152,1566321407,NL 1566321408,1566321663,UA 1566321664,1566321919,BZ @@ -47266,6 +54251,7 @@ 1566363648,1566365695,GB 1566365696,1566367743,RU 1566367744,1566371839,ES +1566371840,1566373887,IT 1566373888,1566375935,RS 1566375936,1566377983,DE 1566377984,1566380031,BG @@ -47273,7 +54259,8 @@ 1566382080,1566384127,TR 1566384128,1566386175,RU 1566386176,1566388223,FR -1566388224,1566388991,HU +1566388224,1566388479,HK +1566388480,1566388991,HU 1566388992,1566389247,SC 1566389248,1566389503,HU 1566389504,1566389759,SC @@ -47289,8 +54276,7 @@ 1566400640,1566400671,NO 1566400672,1566400703,DE 1566400704,1566400735,NL -1566400736,1566400767,DE -1566400768,1566400832,NO +1566400736,1566400832,NO 1566400833,1566400895,GB 1566400896,1566401023,NO 1566401024,1566401055,US @@ -47307,7 +54293,6 @@ 1566401920,1566401983,NO 1566401984,1566402047,AU 1566402048,1566402559,NO -1566402560,1566404607,IT 1566404608,1566406655,ES 1566406656,1566408703,NL 1566408704,1566410751,GB @@ -47347,17 +54332,23 @@ 1566470344,1566470351,IE 1566470352,1566470367,GB 1566470368,1566470511,IE -1566470512,1566470655,GB +1566470512,1566470527,GB +1566470528,1566470559,IE +1566470560,1566470563,GB +1566470564,1566470623,IE +1566470624,1566470655,GB 1566470656,1566470719,IE 1566470720,1566470727,GB 1566470728,1566470739,IE 1566470740,1566470743,GB 1566470744,1566470847,IE 1566470848,1566470879,GB -1566470880,1566470895,IR +1566470880,1566470895,IE 1566470896,1566470911,GB -1566470912,1566472191,IE -1566472192,1566474239,GB +1566470912,1566471051,IE +1566471052,1566471191,GB +1566471192,1566471229,IE +1566471230,1566474239,GB 1566474240,1566476287,DE 1566476288,1566478335,BG 1566478336,1566482431,RU @@ -47403,7 +54394,9 @@ 1566568448,1566570495,KZ 1566570496,1566570943,NL 1566570944,1566570951,DE -1566570952,1566572543,NL +1566570952,1566571479,NL +1566571480,1566571483,DE +1566571484,1566572543,NL 1566572544,1566703615,GB 1566703616,1566769151,SA 1566769152,1566773759,CZ @@ -47429,7 +54422,9 @@ 1567696384,1567696895,MD 1567696896,1567705087,RO 1567705088,1567707135,MD -1567707136,1567715327,RO +1567707136,1567712767,RO +1567712768,1567713279,DE +1567713280,1567715327,RO 1567715328,1567717375,MD 1567717376,1567752191,RO 1567752192,1567756287,MD @@ -47439,7 +54434,9 @@ 1567830016,1567831039,MD 1567831040,1567883263,RO 1567883264,1567948799,MD -1567948800,1568083967,RO +1567948800,1568026623,RO +1568026624,1568030719,MD +1568030720,1568083967,RO 1568083968,1568086015,MD 1568086016,1568178175,RO 1568178176,1568243711,RU @@ -47460,7 +54457,9 @@ 1568309248,1568342015,RO 1568342016,1568374783,BG 1568374784,1568440319,RU -1568440320,1568473087,NO +1568440320,1568443919,NO +1568443920,1568443927,SE +1568443928,1568473087,NO 1568473088,1568505855,BY 1568505856,1568538623,NL 1568538624,1568555007,IR @@ -47475,12 +54474,14 @@ 1570242560,1570275327,GB 1570275328,1570308095,BG 1570308096,1570340863,CZ -1570340864,1570406399,RU +1570340864,1570373631,RU 1570406400,1570439167,PL 1570439168,1570471935,TR 1570471936,1570480895,BG 1570480896,1570481151,MK -1570481152,1570504703,BG +1570481152,1570492159,BG +1570492160,1570492415,ES +1570492416,1570504703,BG 1570504704,1570570239,ES 1570570240,1570572287,NL 1570572288,1570574335,UA @@ -47505,10 +54506,18 @@ 1570621440,1570625535,RU 1570625536,1570627583,GB 1570627584,1570635775,RU -1570635776,1570644991,FR -1570644992,1570645039,GB -1570645040,1570652159,FR -1570652160,1570652543,SE +1570635776,1570644767,FR +1570644768,1570644775,GB +1570644776,1570644991,FR +1570644992,1570645055,GB +1570645056,1570645231,FR +1570645232,1570645247,GB +1570645248,1570652159,FR +1570652160,1570652287,SE +1570652288,1570652291,MY +1570652292,1570652295,GB +1570652296,1570652299,DE +1570652300,1570652543,SE 1570652544,1570652551,FR 1570652552,1570652891,SE 1570652892,1570652895,DE @@ -47523,7 +54532,9 @@ 1570660360,1570660367,SE 1570660368,1570660383,FR 1570660384,1570660387,RU -1570660388,1570660543,SE +1570660388,1570660407,SE +1570660408,1570660411,DE +1570660412,1570660543,SE 1570660544,1570660575,FI 1570660576,1570660591,GB 1570660592,1570660595,RU @@ -47533,14 +54544,14 @@ 1570660616,1570660619,RU 1570660620,1570660623,SE 1570660624,1570660639,FR -1570660640,1570660863,SE +1570660640,1570660675,DE +1570660676,1570660863,SE 1570660864,1570661375,NO 1570661376,1570661631,GB 1570661632,1570662143,SE 1570662144,1570662399,DE 1570662400,1570663423,SE -1570663424,1570663679,US -1570663680,1570663935,GB +1570663424,1570663935,GB 1570663936,1570665343,SE 1570665344,1570665351,GB 1570665352,1570665407,SE @@ -47552,7 +54563,9 @@ 1570665920,1570665935,GB 1570665936,1570665951,IT 1570665952,1570665967,FR -1570665968,1570666175,SE +1570665968,1570666143,SE +1570666144,1570666147,DE +1570666148,1570666175,SE 1570666176,1570666191,GB 1570666192,1570666223,FR 1570666224,1570666227,SE @@ -47561,7 +54574,9 @@ 1570666368,1570666383,FR 1570666384,1570666387,SE 1570666388,1570666391,NL -1570666392,1570666431,SE +1570666392,1570666395,SE +1570666396,1570666399,DE +1570666400,1570666431,SE 1570666432,1570666447,GB 1570666448,1570666463,DE 1570666464,1570666495,SE @@ -47576,16 +54591,20 @@ 1570666752,1570666755,ES 1570666756,1570666759,SE 1570666760,1570666767,GB -1570666768,1570666943,SE +1570666768,1570666887,SE +1570666888,1570666891,DE +1570666892,1570666943,SE 1570666944,1570666959,FR 1570666960,1570666975,SE 1570666976,1570666991,FR 1570666992,1570667007,SE 1570667008,1570667011,ES 1570667012,1570667015,SE -1570667016,1570667023,GB +1570667016,1570667023,FI 1570667024,1570667039,ES -1570667040,1570667199,SE +1570667040,1570667167,SE +1570667168,1570667171,DE +1570667172,1570667199,SE 1570667200,1570667215,FR 1570667216,1570667231,SE 1570667232,1570667247,FR @@ -47594,7 +54613,11 @@ 1570667268,1570667279,SE 1570667280,1570667295,ES 1570667296,1570667327,GB -1570667328,1570667455,SE +1570667328,1570667335,SE +1570667336,1570667339,GB +1570667340,1570667343,NL +1570667344,1570667347,DE +1570667348,1570667455,SE 1570667456,1570667471,FR 1570667472,1570667487,SE 1570667488,1570667503,FR @@ -47603,10 +54626,12 @@ 1570667520,1570667523,NL 1570667524,1570667527,IT 1570667528,1570667531,NO -1570667532,1570667535,GB +1570667532,1570667535,IT 1570667536,1570667587,SE 1570667588,1570667591,US -1570667592,1570667711,SE +1570667592,1570667599,SE +1570667600,1570667603,DE +1570667604,1570667711,SE 1570667712,1570667727,FR 1570667728,1570667743,NL 1570667744,1570667775,SE @@ -47617,11 +54642,17 @@ 1570667840,1570667903,FR 1570667904,1570667907,SE 1570667908,1570667911,RU -1570667912,1570667967,SE +1570667912,1570667915,US +1570667916,1570667919,SE +1570667920,1570667923,DE +1570667924,1570667967,SE 1570667968,1570667983,FR 1570667984,1570668031,SE 1570668032,1570668035,NL -1570668036,1570668287,SE +1570668036,1570668047,SE +1570668048,1570668055,ES +1570668056,1570668063,NL +1570668064,1570668287,SE 1570668288,1570668291,NL 1570668292,1570668351,SE 1570668352,1570668415,NO @@ -47641,11 +54672,26 @@ 1571422208,1571426303,RU 1571426304,1571428351,CZ 1571428352,1571428863,UA -1571428864,1571430399,CZ -1571430400,1571435519,UA -1571435520,1571446783,CZ -1571446784,1571448831,KZ -1571448832,1571553279,CZ +1571428864,1571429119,KZ +1571429120,1571429375,RU +1571429376,1571432447,UA +1571432448,1571434495,CZ +1571434496,1571435519,UA +1571435520,1571436031,NL +1571436032,1571438591,RU +1571438592,1571441663,UA +1571441664,1571442175,KZ +1571442176,1571442687,NL +1571442688,1571446783,CZ +1571446784,1571447807,KZ +1571447808,1571448831,CZ +1571448832,1571450879,US +1571450880,1571451903,UA +1571451904,1571453951,CZ +1571453952,1571454975,GB +1571454976,1571487743,CZ +1571487744,1571495935,SK +1571495936,1571553279,CZ 1571553280,1571684351,IL 1571684352,1571686399,ES 1571686400,1571688447,GB @@ -47731,7 +54777,9 @@ 1572225024,1572241407,TR 1572241408,1572257791,SE 1572257792,1572274175,FR -1572274176,1572282111,SG +1572274176,1572276223,SG +1572276224,1572277247,US +1572277248,1572282111,SG 1572282112,1572282367,PT 1572282368,1572290559,SG 1572290560,1572306943,RU @@ -47783,7 +54831,9 @@ 1572504576,1572504703,RO 1572504704,1572504831,TR 1572504832,1572505087,SG -1572505088,1572507199,IT +1572505088,1572505983,IT +1572505984,1572506111,GR +1572506112,1572507199,IT 1572507200,1572507207,GB 1572507208,1572507647,IT 1572507648,1572511743,GB @@ -47795,9 +54845,15 @@ 1572524032,1572528127,GE 1572528128,1572532223,RU 1572532224,1572536319,IT -1572536320,1572538367,GB +1572536320,1572536831,JE +1572536832,1572537087,GB +1572537088,1572538111,JE +1572538112,1572538175,GB +1572538176,1572538367,JE 1572538368,1572540415,NL -1572540416,1572541439,GB +1572540416,1572540511,GB +1572540512,1572540519,DE +1572540520,1572541439,GB 1572541440,1572541447,FR 1572541448,1572541455,GB 1572541456,1572541463,FR @@ -47806,21 +54862,25 @@ 1572541536,1572541951,GB 1572541952,1572541983,DE 1572541984,1572541999,ES -1572542000,1572542207,GB +1572542000,1572542015,GB +1572542016,1572542031,HU +1572542032,1572542207,GB 1572542208,1572542463,FR 1572542464,1572544511,IT +1572544512,1572546559,IQ 1572546560,1572548607,FR -1572548608,1572550655,GB +1572548608,1572550655,NL 1572550656,1572552703,DE 1572552704,1572554751,TR -1572554752,1572556799,CH 1572556800,1572558847,NO 1572558848,1572560895,IT 1572560896,1572562943,RU 1572562944,1572564991,CZ 1572564992,1572567039,DE 1572567040,1572569087,RU -1572569088,1572571135,NL +1572569088,1572569343,NL +1572569344,1572569599,GB +1572569600,1572571135,NL 1572571136,1572573183,RO 1572573184,1572574975,GG 1572574976,1572575167,GB @@ -47845,7 +54905,6 @@ 1572612096,1572614143,RU 1572614144,1572616191,ES 1572616192,1572618239,CH -1572618240,1572620287,RS 1572620288,1572620415,CH 1572620416,1572620431,CZ 1572620432,1572620559,CH @@ -47853,6 +54912,7 @@ 1572620568,1572622335,CH 1572622336,1572624383,RU 1572624384,1572626431,NO +1572626432,1572628479,IT 1572628480,1572630527,DE 1572630528,1572632575,IT 1572632576,1572634623,RU @@ -47871,13 +54931,21 @@ 1572661248,1572663295,NO 1572663296,1572665343,DE 1572665344,1572667391,NL -1572667392,1572668303,GB +1572667392,1572667903,GB +1572667904,1572667927,SA +1572667928,1572668303,GB 1572668304,1572668311,SA 1572668312,1572668415,GB 1572668416,1572668431,SA 1572668432,1572668463,GB 1572668464,1572668471,SA -1572668472,1572669439,GB +1572668472,1572668639,GB +1572668640,1572668647,SA +1572668648,1572668655,GB +1572668656,1572668671,CY +1572668672,1572668703,GB +1572668704,1572668711,CY +1572668712,1572669439,GB 1572669440,1572673535,RU 1572673536,1572675583,AT 1572675584,1572677631,ES @@ -47910,7 +54978,9 @@ 1572720640,1572722687,IT 1572722688,1572726783,RU 1572726784,1572728831,CH -1572728832,1572730879,SE +1572728832,1572730239,SE +1572730240,1572730303,MY +1572730304,1572730879,SE 1572730880,1572732927,RU 1572732928,1572734975,HU 1572734976,1572739071,RU @@ -47918,7 +54988,9 @@ 1572741120,1572743167,FI 1572743168,1572745215,UA 1572745216,1572749311,CZ -1572749312,1572751359,DE +1572749312,1572751111,DE +1572751112,1572751119,GB +1572751120,1572751359,DE 1572751360,1572753407,CH 1572753408,1572755455,NO 1572755456,1572757503,DE @@ -47950,7 +55022,9 @@ 1572800512,1572804607,RU 1572804608,1572808703,GB 1572808704,1572810751,FR -1572810752,1572812799,DE +1572810752,1572812031,DE +1572812032,1572812543,RO +1572812544,1572812799,DE 1572812800,1572814847,RU 1572814848,1572816895,KW 1572816896,1572818943,RU @@ -47975,11 +55049,29 @@ 1572847616,1572849663,GI 1572849664,1572851711,GB 1572851712,1572853759,DE -1572853760,1572854015,BE +1572853760,1572853760,EU +1572853761,1572853767,BE +1572853768,1572853769,EU +1572853770,1572853770,DK +1572853771,1572853775,EU +1572853776,1572854015,BE 1572854016,1572854271,LU -1572854272,1572854527,BE -1572854528,1572855551,EU -1572855552,1572855807,BE +1572854272,1572854272,EU +1572854273,1572854284,BE +1572854285,1572854285,NL +1572854286,1572854286,CH +1572854287,1572854287,LU +1572854288,1572854527,BE +1572854528,1572855039,EU +1572855040,1572855071,BE +1572855072,1572855295,EU +1572855296,1572855551,CH +1572855552,1572855552,EU +1572855553,1572855558,BE +1572855559,1572855561,EU +1572855562,1572855562,DK +1572855563,1572855567,EU +1572855568,1572855807,BE 1572855808,1572857855,KZ 1572857856,1572859903,SE 1572859904,1572861951,IT @@ -47998,7 +55090,10 @@ 1578584576,1578586111,PT 1578586112,1578588159,ES 1578588160,1578590207,PL -1578590208,1578590271,FR +1578590208,1578590223,FR +1578590224,1578590231,ES +1578590232,1578590239,IT +1578590240,1578590271,FR 1578590272,1578590275,NL 1578590276,1578590279,PT 1578590280,1578590283,PL @@ -48016,12 +55111,15 @@ 1578590472,1578590479,DE 1578590480,1578590495,IT 1578590496,1578590527,PL -1578590528,1578590543,FR +1578590528,1578590535,ES +1578590536,1578590543,FR 1578590544,1578590559,GB 1578590560,1578590575,ES -1578590576,1578590603,FR +1578590576,1578590599,FR +1578590600,1578590603,LT 1578590604,1578590607,PL -1578590608,1578590619,FR +1578590608,1578590615,FR +1578590616,1578590619,DE 1578590620,1578590623,IT 1578590624,1578590639,FR 1578590640,1578590647,CZ @@ -48029,19 +55127,23 @@ 1578590656,1578590659,FR 1578590660,1578590663,CZ 1578590664,1578590667,FR -1578590668,1578590687,PL -1578590688,1578590699,FR -1578590700,1578590719,PL -1578590720,1578590799,FR -1578590800,1578590831,GB -1578590832,1578590847,ES +1578590668,1578590671,NL +1578590672,1578590687,PL +1578590688,1578590691,GB +1578590692,1578590695,DE +1578590696,1578590699,FR +1578590700,1578590735,PL +1578590736,1578590799,FR +1578590800,1578590815,ES +1578590816,1578590831,GB +1578590832,1578590839,FR +1578590840,1578590847,PL 1578590848,1578590879,FR 1578590880,1578590911,PL 1578590912,1578590927,GB 1578590928,1578590935,DE 1578590936,1578590943,ES -1578590944,1578590959,CH -1578590960,1578590975,FR +1578590944,1578590975,FR 1578590976,1578590991,GB 1578590992,1578590999,IT 1578591000,1578591007,FR @@ -48056,8 +55158,9 @@ 1578591136,1578591143,FR 1578591144,1578591151,GB 1578591152,1578591183,FR -1578591184,1578591199,ES -1578591200,1578591247,FR +1578591184,1578591187,CH +1578591188,1578591195,GB +1578591196,1578591247,FR 1578591248,1578591263,PL 1578591264,1578591279,FR 1578591280,1578591287,ES @@ -48066,13 +55169,16 @@ 1578591296,1578591327,FR 1578591328,1578591343,PL 1578591344,1578591391,FR -1578591392,1578591407,CH +1578591392,1578591395,IT +1578591396,1578591407,PL 1578591408,1578591411,ES 1578591412,1578591415,FR 1578591416,1578591423,ES 1578591424,1578591431,PL 1578591432,1578591439,ES -1578591440,1578591463,FR +1578591440,1578591455,FR +1578591456,1578591459,GB +1578591460,1578591463,FR 1578591464,1578591487,PL 1578591488,1578591503,FR 1578591504,1578591519,CH @@ -48084,20 +55190,20 @@ 1578591576,1578591579,DE 1578591580,1578591583,ES 1578591584,1578591599,IT -1578591600,1578591663,FR -1578591664,1578591695,PL +1578591600,1578591679,FR +1578591680,1578591695,PL 1578591696,1578591699,DE -1578591700,1578591707,FR -1578591708,1578591711,CZ +1578591700,1578591703,FR +1578591704,1578591707,DE +1578591708,1578591711,FR 1578591712,1578591743,PL 1578591744,1578591759,ES 1578591760,1578591791,FR 1578591792,1578591807,PL -1578591808,1578591823,DE -1578591824,1578591887,FR +1578591808,1578591887,FR 1578591888,1578591891,DE 1578591892,1578591899,FR -1578591900,1578591903,GB +1578591900,1578591903,NL 1578591904,1578591919,PL 1578591920,1578591939,ES 1578591940,1578591951,FR @@ -48121,17 +55227,18 @@ 1578592200,1578592207,CH 1578592208,1578592223,FR 1578592224,1578592239,ES -1578592240,1578592275,FR -1578592276,1578592279,FI +1578592240,1578592271,FR +1578592272,1578592279,PL 1578592280,1578592283,BE 1578592284,1578592287,NL -1578592288,1578592303,DE +1578592288,1578592295,PL +1578592296,1578592303,PT 1578592304,1578592319,FR 1578592320,1578592335,ES 1578592336,1578592351,FR 1578592352,1578592367,PL -1578592368,1578592383,FR -1578592384,1578592399,IE +1578592368,1578592395,FR +1578592396,1578592399,ES 1578592400,1578592415,GB 1578592416,1578592423,IT 1578592424,1578592431,IE @@ -48142,7 +55249,8 @@ 1578592516,1578592519,PL 1578592520,1578592531,FR 1578592532,1578592535,GB -1578592536,1578592543,NL +1578592536,1578592539,PL +1578592540,1578592543,ES 1578592544,1578592559,FR 1578592560,1578592575,NL 1578592576,1578592591,GB @@ -48150,16 +55258,20 @@ 1578592688,1578592695,DE 1578592696,1578592719,ES 1578592720,1578592735,CH -1578592736,1578592751,FR -1578592752,1578592783,DE +1578592736,1578592743,PL +1578592744,1578592747,PT +1578592748,1578592751,DE +1578592752,1578592767,IE +1578592768,1578592783,DE 1578592784,1578592799,FR -1578592800,1578592815,GB -1578592816,1578592823,PL -1578592824,1578592831,FR +1578592800,1578592807,GB +1578592808,1578592811,FR +1578592812,1578592815,PL +1578592816,1578592831,FR 1578592832,1578592847,PL 1578592848,1578592851,BE 1578592852,1578592855,DE -1578592856,1578592859,FR +1578592856,1578592859,CH 1578592860,1578592879,PL 1578592880,1578592883,FR 1578592884,1578592891,GB @@ -48174,16 +55286,28 @@ 1578593308,1578593327,FR 1578593328,1578593343,IT 1578593344,1578593359,FR -1578593360,1578593407,GB -1578593408,1578593415,FR +1578593360,1578593375,PL +1578593376,1578593407,GB +1578593408,1578593411,IT +1578593412,1578593415,FR 1578593416,1578593423,PL 1578593424,1578593439,FR 1578593440,1578593455,PL -1578593456,1578593487,FR +1578593456,1578593471,FR +1578593472,1578593479,GB +1578593480,1578593483,PL +1578593484,1578593487,FR 1578593488,1578593495,ES 1578593496,1578593503,FR -1578593504,1578593535,PL -1578593536,1578593599,GB +1578593504,1578593519,PL +1578593520,1578593543,FR +1578593544,1578593547,ES +1578593548,1578593551,FI +1578593552,1578593559,PL +1578593560,1578593567,FR +1578593568,1578593583,CZ +1578593584,1578593587,FR +1578593588,1578593599,DE 1578593600,1578593631,FR 1578593632,1578593647,NL 1578593648,1578593659,PL @@ -48202,9 +55326,14 @@ 1578593872,1578593875,ES 1578593876,1578593879,FR 1578593880,1578593887,DE -1578593888,1578593919,FR -1578593920,1578593951,PL -1578593952,1578593955,FR +1578593888,1578593895,ES +1578593896,1578593899,GB +1578593900,1578593903,DE +1578593904,1578593919,FR +1578593920,1578593935,PL +1578593936,1578593943,FR +1578593944,1578593947,IT +1578593948,1578593955,FR 1578593956,1578593967,PL 1578593968,1578593983,FR 1578593984,1578593999,PL @@ -48212,20 +55341,26 @@ 1578594016,1578594031,BE 1578594032,1578594039,ES 1578594040,1578594047,IT -1578594048,1578594063,FR +1578594048,1578594055,FR +1578594056,1578594059,ES +1578594060,1578594063,FR 1578594064,1578594079,PL 1578594080,1578594087,CH 1578594088,1578594095,CZ 1578594096,1578594111,FR 1578594112,1578594127,PL -1578594128,1578594159,FR -1578594160,1578594175,DE -1578594176,1578594191,FR +1578594128,1578594143,FR +1578594144,1578594147,PL +1578594148,1578594151,ES +1578594152,1578594159,IT +1578594160,1578594163,PT +1578594164,1578594167,ES +1578594168,1578594171,DE +1578594172,1578594191,FR 1578594192,1578594207,IT 1578594208,1578594211,DE 1578594212,1578594223,PL -1578594224,1578594239,ES -1578594240,1578594255,FR +1578594224,1578594255,FR 1578594256,1578594271,GB 1578594272,1578594303,PL 1578594304,1578594307,GB @@ -48249,7 +55384,10 @@ 1578594512,1578594515,PL 1578594516,1578594519,FR 1578594520,1578594523,PL -1578594524,1578594543,FR +1578594524,1578594527,FR +1578594528,1578594535,GB +1578594536,1578594539,DE +1578594540,1578594543,FR 1578594544,1578594551,ES 1578594552,1578594555,PL 1578594556,1578594559,LT @@ -48268,7 +55406,11 @@ 1578594776,1578594783,ES 1578594784,1578594799,FR 1578594800,1578594815,DE -1578594816,1578595039,FR +1578594816,1578594847,FR +1578594848,1578594863,IT +1578594864,1578594867,PL +1578594868,1578594871,BE +1578594872,1578595039,FR 1578595040,1578595055,GB 1578595056,1578595103,FR 1578595104,1578595119,GB @@ -48292,24 +55434,31 @@ 1578595328,1578595343,IT 1578595344,1578595363,FR 1578595364,1578595367,DE -1578595368,1578595371,FR -1578595372,1578595375,BE -1578595376,1578595379,FR +1578595368,1578595379,FR 1578595380,1578595383,CH 1578595384,1578595387,ES -1578595388,1578595391,PL -1578595392,1578595423,CH -1578595424,1578595455,LT +1578595388,1578595407,PL +1578595408,1578595411,IE +1578595412,1578595419,PL +1578595420,1578595423,FR +1578595424,1578595439,PL +1578595440,1578595447,FR +1578595448,1578595455,ES 1578595456,1578595459,DE -1578595460,1578595487,FR +1578595460,1578595463,PL +1578595464,1578595487,FR 1578595488,1578595503,DE 1578595504,1578595519,PL -1578595520,1578595607,FR +1578595520,1578595535,FR +1578595536,1578595539,BE +1578595540,1578595543,CH +1578595544,1578595547,GB +1578595548,1578595607,FR 1578595608,1578595611,GB 1578595612,1578595615,ES 1578595616,1578595647,PL 1578595648,1578595679,FR -1578595680,1578595695,BE +1578595680,1578595695,PL 1578595696,1578595711,FR 1578595712,1578595743,GB 1578595744,1578595747,IT @@ -48318,7 +55467,13 @@ 1578595760,1578595763,FR 1578595764,1578595775,ES 1578595776,1578595807,CH -1578595808,1578595983,FR +1578595808,1578595855,FR +1578595856,1578595871,GB +1578595872,1578595907,PL +1578595908,1578595911,BE +1578595912,1578595935,FR +1578595936,1578595967,DE +1578595968,1578595983,IE 1578595984,1578595991,NL 1578595992,1578595995,IT 1578595996,1578596095,FR @@ -48326,7 +55481,8 @@ 1578596100,1578596103,GB 1578596104,1578596111,FR 1578596112,1578596115,DE -1578596116,1578596123,PT +1578596116,1578596119,FR +1578596120,1578596123,PT 1578596124,1578596127,ES 1578596128,1578596143,PL 1578596144,1578596147,DE @@ -48352,7 +55508,25 @@ 1578604544,1578606591,GB 1578606592,1578608639,DE 1578608640,1578610687,CZ -1578610688,1578610943,FR +1578610688,1578610767,FR +1578610768,1578610771,CH +1578610772,1578610775,GB +1578610776,1578610779,DE +1578610780,1578610783,FR +1578610784,1578610799,DE +1578610800,1578610803,PL +1578610804,1578610807,GB +1578610808,1578610815,FR +1578610816,1578610831,LT +1578610832,1578610847,CH +1578610848,1578610851,GB +1578610852,1578610855,IE +1578610856,1578610859,IT +1578610860,1578610863,PL +1578610864,1578610867,BE +1578610868,1578610871,FR +1578610872,1578610879,PL +1578610880,1578610943,FR 1578610944,1578610975,ES 1578610976,1578611039,PL 1578611040,1578611043,ES @@ -48368,59 +55542,85 @@ 1578611136,1578611151,CH 1578611152,1578611167,DE 1578611168,1578611183,ES -1578611184,1578611199,FR +1578611184,1578611191,BE +1578611192,1578611195,FR +1578611196,1578611199,ES 1578611200,1578611215,NL -1578611216,1578611231,PL +1578611216,1578611219,GB +1578611220,1578611223,DE +1578611224,1578611227,ES +1578611228,1578611231,PL 1578611232,1578611247,FR 1578611248,1578611251,ES 1578611252,1578611255,IT 1578611256,1578611263,PL 1578611264,1578611279,IT -1578611280,1578611295,FR +1578611280,1578611287,FR +1578611288,1578611291,PL +1578611292,1578611295,DE 1578611296,1578611303,GB 1578611304,1578611327,PL 1578611328,1578611343,BE 1578611344,1578611359,FR 1578611360,1578611375,CH -1578611376,1578611399,FR -1578611400,1578611403,BE -1578611404,1578611407,ES +1578611376,1578611391,FR +1578611392,1578611399,GB +1578611400,1578611407,ES 1578611408,1578611423,IT 1578611424,1578611439,GB -1578611440,1578611455,IT +1578611440,1578611443,ES +1578611444,1578611447,NL +1578611448,1578611455,ES 1578611456,1578611711,FR 1578611712,1578611775,CH 1578611776,1578611783,DE 1578611784,1578611807,FR 1578611808,1578611839,CH -1578611840,1578611919,FR +1578611840,1578611855,BE +1578611856,1578611919,FR 1578611920,1578611935,BE 1578611936,1578611943,PL 1578611944,1578611947,FR 1578611948,1578611951,GB 1578611952,1578611967,FR -1578611968,1578612159,GB -1578612160,1578612223,PL -1578612224,1578612239,GB +1578611968,1578612031,GB +1578612032,1578612039,DE +1578612040,1578612047,CH +1578612048,1578612051,NL +1578612052,1578612055,DE +1578612056,1578612059,PL +1578612060,1578612063,ES +1578612064,1578612115,FR +1578612116,1578612119,PL +1578612120,1578612123,IE +1578612124,1578612127,DE +1578612128,1578612135,ES +1578612136,1578612139,IE +1578612140,1578612143,ES +1578612144,1578612223,PL +1578612224,1578612239,IT 1578612240,1578612255,FR 1578612256,1578612259,PL 1578612260,1578612263,IT -1578612264,1578612287,FR -1578612288,1578612303,BE +1578612264,1578612303,FR 1578612304,1578612319,DE 1578612320,1578612383,FR 1578612384,1578612415,PL 1578612416,1578612623,FR 1578612624,1578612639,CH 1578612640,1578612671,PL -1578612672,1578612687,FR +1578612672,1578612687,ES 1578612688,1578612703,DE 1578612704,1578612863,FR 1578612864,1578612895,NL -1578612896,1578612911,PL +1578612896,1578612899,FR +1578612900,1578612903,PL +1578612904,1578612907,DE +1578612908,1578612911,FR 1578612912,1578612959,ES -1578612960,1578612975,GB -1578612976,1578612991,FR +1578612960,1578612975,DE +1578612976,1578612983,IT +1578612984,1578612991,FR 1578612992,1578613247,DE 1578613248,1578613503,FR 1578613504,1578613567,DE @@ -48432,17 +55632,25 @@ 1578613712,1578613719,BE 1578613720,1578613723,ES 1578613724,1578613727,IT -1578613728,1578613743,CZ +1578613728,1578613743,FR 1578613744,1578613751,ES 1578613752,1578613759,NL -1578613760,1578613791,DE +1578613760,1578613775,DE +1578613776,1578613779,FR +1578613780,1578613783,PL +1578613784,1578613787,BE +1578613788,1578613791,PL 1578613792,1578613823,ES 1578613824,1578613887,IT 1578613888,1578613951,ES -1578613952,1578614015,IE +1578613952,1578613983,FR +1578613984,1578613999,PL +1578614000,1578614007,IT +1578614008,1578614015,DE 1578614016,1578614031,FR 1578614032,1578614047,BE -1578614048,1578614071,FR +1578614048,1578614055,FI +1578614056,1578614071,FR 1578614072,1578614079,ES 1578614080,1578614175,FR 1578614176,1578614191,ES @@ -48450,7 +55658,14 @@ 1578614196,1578614207,GB 1578614208,1578614271,PL 1578614272,1578614527,ES -1578614528,1578631167,FR +1578614528,1578614543,GB +1578614544,1578614559,PL +1578614560,1578614575,FR +1578614576,1578614583,DE +1578614584,1578614591,GB +1578614592,1578614623,CZ +1578614624,1578614655,BE +1578614656,1578631167,FR 1578631168,1578663935,RO 1578663936,1578762239,RU 1578762240,1578795007,BG @@ -48461,10 +55676,9 @@ 1578991616,1579024383,KW 1579024384,1579057151,GB 1579057152,1579089919,LV -1579089920,1579090575,NL -1579090576,1579090687,GB -1579090688,1579090943,NL -1579090944,1579091759,GB +1579089920,1579090431,GB +1579090432,1579090463,NL +1579090464,1579091759,GB 1579091760,1579091775,IL 1579091776,1579091839,GB 1579091840,1579091855,US @@ -48472,13 +55686,16 @@ 1579091968,1579092223,DE 1579092224,1579093759,GB 1579093760,1579094015,NL -1579094016,1579104511,GB -1579104512,1579104767,NL -1579104768,1579105023,GB -1579105024,1579105151,NL -1579105152,1579105279,GB -1579105280,1579105343,NL -1579105344,1579105535,GB +1579094016,1579094271,GB +1579094272,1579094527,NL +1579094528,1579094783,GB +1579094784,1579095039,NL +1579095040,1579098367,GB +1579098368,1579098623,NL +1579098624,1579105023,GB +1579105024,1579105087,NL +1579105088,1579105119,DE +1579105120,1579105535,GB 1579105536,1579105599,NL 1579105600,1579106303,GB 1579106304,1579122687,DE @@ -48493,9 +55710,9 @@ 1580015616,1580048383,UA 1580048384,1580064767,RU 1580064768,1580072959,DE -1580072960,1580085247,PT -1580085248,1580089343,MZ -1580089344,1580134399,PT +1580072960,1580104959,PT +1580104960,1580105215,CH +1580105216,1580134399,PT 1580134400,1580136447,ES 1580136448,1580138495,PT 1580138496,1580204031,IT @@ -48512,7 +55729,9 @@ 1581826048,1581842431,GB 1581842432,1581858815,BG 1581858816,1581875199,IT -1581875200,1581891583,TR +1581875200,1581881343,TR +1581881344,1581881599,GB +1581881600,1581891583,TR 1581891584,1581907967,RU 1581907968,1581924351,IT 1581924352,1581940735,UA @@ -48522,7 +55741,6 @@ 1581989888,1582006271,PL 1582006272,1582022655,RU 1582022656,1582039039,NL -1582039040,1582055423,RU 1582055424,1582071807,UA 1582071808,1582088191,ES 1582088192,1582104575,GB @@ -48556,14 +55774,14 @@ 1583669248,1583673343,GE 1583673344,1583673991,DE 1583673992,1583673999,GB -1583674000,1583674031,DE -1583674032,1583674039,NL -1583674040,1583677439,DE +1583674000,1583677439,DE 1583677440,1583681535,FI 1583681536,1583685631,PL 1583685632,1583689727,DE 1583689728,1583693823,IT -1583693824,1583697919,RU +1583693824,1583693871,RU +1583693872,1583693879,A2 +1583693880,1583697919,RU 1583697920,1583702015,TR 1583702016,1583706111,RU 1583706112,1583710207,GI @@ -48589,7 +55807,9 @@ 1583742976,1583747071,TR 1583747072,1583751167,RU 1583751168,1583755263,NO -1583755264,1583759359,NL +1583755264,1583755414,NL +1583755415,1583755424,RU +1583755425,1583759359,NL 1583759360,1583763455,TR 1583763456,1583767551,RU 1583767552,1583771647,AT @@ -48603,7 +55823,14 @@ 1583800320,1583804415,ME 1583804416,1583808511,GB 1583808512,1583812607,MD -1583812608,1583813663,NL +1583812608,1583813139,NL +1583813140,1583813143,DE +1583813144,1583813171,NL +1583813172,1583813183,US +1583813184,1583813199,NL +1583813200,1583813215,RU +1583813216,1583813231,US +1583813232,1583813663,NL 1583813664,1583813671,US 1583813672,1583813679,NL 1583813680,1583813683,GB @@ -48613,10 +55840,20 @@ 1583813736,1583813743,DE 1583813744,1583813808,NL 1583813809,1583813815,US -1583813816,1583815167,NL -1583815168,1583815199,US -1583815200,1583816703,NL -1583816704,1583820799,TR +1583813816,1583814655,NL +1583814656,1583814783,US +1583814784,1583815167,NL +1583815168,1583815215,US +1583815216,1583815343,NL +1583815344,1583815351,US +1583815352,1583815679,NL +1583815680,1583815711,DE +1583815712,1583815807,NL +1583815808,1583815935,US +1583815936,1583816703,NL +1583816704,1583819007,TR +1583819008,1583819136,GB +1583819137,1583820799,TR 1583820800,1583824895,LV 1583824896,1583828991,SI 1583828992,1583833087,RU @@ -48665,13 +55902,13 @@ 1585214464,1585217535,NL 1585217536,1585219583,FR 1585219584,1585221631,NL -1585221632,1585221759,SK -1585221760,1585223679,CZ +1585221632,1585223679,SK 1585223680,1585225727,FR 1585225728,1585227775,UA -1585227776,1585231871,RU +1585227776,1585231359,RU +1585231360,1585231615,NL +1585231616,1585231871,RU 1585231872,1585233919,CZ -1585233920,1585235967,LB 1585235968,1585238015,RU 1585238016,1585240063,DE 1585240064,1585241087,FR @@ -48693,7 +55930,8 @@ 1585265776,1585265919,FR 1585265920,1585265935,IM 1585265936,1585266111,FR -1585266112,1585266687,IM +1585266112,1585266175,IM +1585266176,1585266687,MT 1585266688,1585270783,DE 1585270784,1585272831,IT 1585272832,1585274879,RU @@ -48751,8 +55989,8 @@ 1585375232,1585377279,GB 1585377280,1585379327,ES 1585379328,1585381375,CH -1585381376,1585381887,RS -1585381888,1585383423,GB +1585381376,1585382399,RS +1585382400,1585383423,GB 1585383424,1585385471,FR 1585385472,1585387519,DE 1585387520,1585389567,SI @@ -48764,7 +56002,11 @@ 1585399808,1585400063,NL 1585400064,1585400319,IL 1585400320,1585400575,GB -1585400576,1585401855,US +1585400576,1585400831,FR +1585400832,1585401087,DE +1585401088,1585401343,NL +1585401344,1585401599,DE +1585401600,1585401855,GB 1585401856,1585403903,IT 1585403904,1585405951,RU 1585405952,1585407999,GB @@ -48800,17 +56042,22 @@ 1585991168,1585991171,US 1585991172,1585991683,SE 1585991684,1585991687,US -1585991688,1585991935,SE +1585991688,1585991727,SE +1585991728,1585991731,RU +1585991732,1585991935,SE 1585991936,1585991939,US -1585991940,1585994499,SE -1585994500,1585994503,RU -1585994504,1585995775,SE +1585991940,1585994543,SE +1585994544,1585994547,MY +1585994548,1585995647,SE +1585995648,1585995651,US +1585995652,1585995775,SE 1585995776,1586003967,AT 1586003968,1586012159,SK 1586012160,1586020351,DE 1586020352,1586028543,RU 1586028544,1586036735,GB -1586036736,1586069503,RU +1586036736,1586061311,RU +1586061312,1586069503,SE 1586069504,1586077695,DE 1586077696,1586085887,GE 1586085888,1586110463,RU @@ -48832,7 +56079,9 @@ 1586216960,1586225151,BG 1586225152,1586233343,RU 1586233344,1586241535,FR -1586241536,1586249727,SE +1586241536,1586243779,SE +1586243780,1586243787,NO +1586243788,1586249727,SE 1586249728,1586257919,SI 1586257920,1586266111,EU 1586266112,1586274303,RU @@ -48901,7 +56150,16 @@ 1586493440,1586495487,GB 1586495488,1587019775,DK 1587019776,1587085311,PL -1587085312,1587183615,UA +1587085312,1587150847,UA +1587150848,1587154943,RU +1587154944,1587159039,PL +1587159040,1587163135,UA +1587163136,1587165183,DE +1587165184,1587167231,PL +1587167232,1587175423,RU +1587175424,1587177471,PL +1587177472,1587179519,RS +1587179520,1587183615,UA 1587183616,1587199999,RU 1587200000,1587216383,UA 1587216384,1587347455,BG @@ -48924,11 +56182,12 @@ 1588621312,1588625407,MD 1588625408,1588670463,RO 1588670464,1588674559,MD -1588674560,1588723711,RO +1588674560,1588689407,RO +1588689408,1588689919,DE +1588689920,1588723711,RO 1588723712,1588854783,UA 1588854784,1588985855,RU 1588985856,1589182463,IR -1589182464,1589215231,RU 1589215232,1589247999,GB 1589248000,1589280767,NO 1589280768,1589313535,DE @@ -48999,7 +56258,6 @@ 1590132992,1590134783,GB 1590134784,1590136831,ES 1590136832,1590138879,GB -1590138880,1590140927,CZ 1590140928,1590142975,UA 1590142976,1590145023,AT 1590145024,1590147071,HU @@ -49007,8 +56265,10 @@ 1590149120,1590151167,CZ 1590151168,1590153215,TR 1590153216,1590157311,RU -1590157312,1590159359,IE -1590159360,1590161407,GB +1590157312,1590157471,IE +1590157472,1590157823,GB +1590157824,1590157951,IE +1590157952,1590161407,GB 1590161408,1590163455,DE 1590163456,1590165503,NL 1590165504,1590176831,AE @@ -49034,33 +56294,37 @@ 1592054272,1592054527,AE 1592054528,1592054783,NL 1592054784,1592055295,AE -1592055296,1592055935,NL -1592055936,1592055999,SG -1592056000,1592056959,NL -1592056960,1592057023,SG -1592057024,1592057855,NL +1592055296,1592057855,NL 1592057856,1592061951,RS 1592061952,1592066047,RU 1592066048,1592067583,US 1592067584,1592067711,NO -1592067712,1592069375,CY +1592067712,1592067839,CY +1592067840,1592068095,NL +1592068096,1592069119,CY +1592069120,1592069135,RU +1592069136,1592069247,CY +1592069248,1592069375,RU 1592069376,1592069407,US 1592069408,1592069631,CY -1592069632,1592069695,NL -1592069696,1592069855,CY -1592069856,1592069887,NL +1592069632,1592069711,NL +1592069712,1592069727,CY +1592069728,1592069759,NL +1592069760,1592069839,CY +1592069840,1592069887,NL 1592069888,1592074239,RU 1592074240,1592078335,SK 1592078336,1592082431,NL -1592082432,1592085023,GB -1592085024,1592085039,ES -1592085040,1592086527,GB -1592086528,1592087295,CZ -1592087296,1592088063,PL -1592088064,1592090623,CZ +1592082432,1592086527,GB +1592086528,1592087079,CZ +1592087080,1592087087,PL +1592087088,1592087295,CZ +1592087296,1592088191,PL +1592088192,1592090623,CZ 1592090624,1592094719,RU 1592094720,1592098815,RS 1592098816,1592102911,GB +1592102912,1592107007,DE 1592107008,1592111103,GB 1592111104,1592115199,DE 1592115200,1592119295,ES @@ -49098,7 +56362,6 @@ 1592281088,1592283135,UA 1592283136,1592285183,GR 1592285184,1592287231,RU -1592287232,1592289279,RO 1592289280,1592291327,RU 1592291328,1592293375,NL 1592293376,1592295423,LT @@ -49118,11 +56381,12 @@ 1592326144,1592328191,UA 1592328192,1592393727,RU 1592393728,1592459263,SE -1592459264,1592524799,GE 1592524800,1592540415,GB 1592540416,1592540423,A2 1592540424,1592557567,GB -1592557568,1592590335,BG +1592557568,1592584447,BG +1592584448,1592584703,GB +1592584704,1592590335,BG 1592590336,1592623103,FI 1592623104,1592655871,RU 1592655872,1592786943,FR @@ -49156,7 +56420,9 @@ 1593202688,1593202815,NO 1593202816,1593203455,SE 1593203456,1593203487,NO -1593203488,1593204159,SE +1593203488,1593204087,SE +1593204088,1593204095,FI +1593204096,1593204159,SE 1593204160,1593204223,DK 1593204224,1593205567,SE 1593205568,1593205631,DK @@ -49164,7 +56430,9 @@ 1593206084,1593206095,DK 1593206096,1593206103,FI 1593206104,1593206111,GB -1593206112,1593209151,SE +1593206112,1593206223,SE +1593206224,1593206231,FI +1593206232,1593209151,SE 1593209152,1593209155,GR 1593209156,1593209159,HU 1593209160,1593209163,FI @@ -49211,9 +56479,7 @@ 1593311232,1593343999,UA 1593344000,1593376767,HU 1593376768,1593409535,JO -1593409536,1593416231,DE -1593416232,1593416239,CH -1593416240,1593442303,DE +1593409536,1593442303,DE 1593442304,1593475071,BA 1593475072,1593540607,RU 1593540608,1593573375,PL @@ -49264,16 +56530,20 @@ 1599078400,1599094783,SE 1599094784,1599111167,RU 1599111168,1599127551,IR -1599127552,1599133695,CZ +1599127552,1599129007,CZ +1599129008,1599129011,EE +1599129012,1599133695,CZ 1599133696,1599133823,SK -1599133824,1599134207,CZ -1599134208,1599134463,AT -1599134464,1599143935,CZ +1599133824,1599137055,CZ +1599137056,1599137071,SK +1599137072,1599143935,CZ 1599143936,1599160319,UA 1599160320,1599176703,IR 1599176704,1599188991,FR 1599188992,1599189263,DE -1599189264,1599193087,FR +1599189264,1599189311,FR +1599189312,1599189375,DE +1599189376,1599193087,FR 1599193088,1599209471,RU 1599209472,1599242239,IR 1599242240,1599258623,CZ @@ -49289,7 +56559,6 @@ 1599504384,1599520767,AZ 1599520768,1599537151,RU 1599537152,1599553535,BG -1599553536,1599569919,RU 1599569920,1599586303,SI 1599586304,1599602687,BG 1599602688,1599864831,DE @@ -49297,7 +56566,13 @@ 1600126976,1600389119,NL 1600389120,1600397311,EU 1600397312,1600401407,DE -1600401408,1600520191,EU +1600401408,1600442367,EU +1600442368,1600446463,DE +1600446464,1600453119,EU +1600453120,1600453631,IT +1600453632,1600456703,EU +1600456704,1600457727,DE +1600457728,1600520191,EU 1600520192,1600651263,SK 1600651264,1600684031,GE 1600684032,1600749567,RU @@ -49321,7 +56596,8 @@ 1601699840,1602224127,ES 1602224128,1602226175,NL 1602226176,1602228223,GB -1602228224,1602230271,DE +1602228224,1602230270,FR +1602230271,1602230271,DE 1602230272,1602232319,DK 1602232320,1602234367,CH 1602234368,1602234591,FR @@ -49348,23 +56624,30 @@ 1602252800,1602254847,SE 1602254848,1602255359,HU 1602255360,1602255615,US -1602255616,1602256895,HU +1602255616,1602255871,PT +1602255872,1602256895,HU 1602256896,1602258943,GB 1602258944,1602260991,RU 1602260992,1602263039,FR 1602263040,1602265087,ES 1602265088,1602267135,RU -1602267136,1602269183,RO +1602267136,1602267199,DE +1602267200,1602267263,FR +1602267264,1602267327,GB +1602267328,1602267391,ES +1602267392,1602269183,RO 1602269184,1602271231,RU 1602271232,1602273279,MK 1602273280,1602273535,FR 1602273536,1602273791,GB 1602273792,1602274559,IN 1602274560,1602274815,IE -1602274816,1602275327,FR +1602274816,1602275327,IN 1602275328,1602275615,DE 1602275616,1602275647,CY -1602275648,1602279423,DE +1602275648,1602275679,DE +1602275680,1602275695,CA +1602275696,1602279423,DE 1602279424,1602281471,GB 1602281472,1602283519,RU 1602283520,1602285567,HR @@ -49378,7 +56661,7 @@ 1602298368,1602298431,MT 1602298432,1602298879,IL 1602298880,1602299391,MT -1602299392,1602299903,IL +1602299392,1602299903,GB 1602299904,1602301951,DK 1602301952,1602303999,DE 1602304000,1602306047,RU @@ -49403,7 +56686,6 @@ 1602347008,1602349055,PL 1602349056,1602351103,RU 1602351104,1602353151,CZ -1602353152,1602355199,RU 1602355200,1602357247,GB 1602357248,1602359295,FR 1602359296,1602361343,DE @@ -49428,10 +56710,10 @@ 1602392064,1602394111,GB 1602394112,1602396159,FR 1602396160,1602398207,DE -1602398208,1602398400,TR -1602398401,1602398406,US -1602398407,1602399231,TR -1602399232,1602399487,US +1602398208,1602399231,TR +1602399232,1602399359,US +1602399360,1602399360,TR +1602399361,1602399487,US 1602399488,1602400255,TR 1602400256,1602402303,RU 1602402304,1602404351,LU @@ -49465,8 +56747,14 @@ 1602451456,1602453503,DE 1602453504,1602455551,SK 1602455552,1602456015,FR -1602456016,1602456023,ES -1602456024,1602456175,FR +1602456016,1602456025,ES +1602456026,1602456026,DE +1602456027,1602456027,NL +1602456028,1602456028,IT +1602456029,1602456029,ES +1602456030,1602456030,PT +1602456031,1602456031,ES +1602456032,1602456175,FR 1602456176,1602456183,ES 1602456184,1602457599,FR 1602457600,1602459647,RU @@ -49506,8 +56794,16 @@ 1603067904,1603071999,GB 1603072000,1603076095,CZ 1603076096,1603080191,RU -1603080192,1603084287,DE -1603084288,1603088383,IT +1603080192,1603083007,DE +1603083008,1603083263,UA +1603083264,1603084287,DE +1603084288,1603085871,IT +1603085872,1603085879,CH +1603085880,1603087515,IT +1603087516,1603087517,CH +1603087518,1603087544,IT +1603087545,1603087546,CH +1603087547,1603088383,IT 1603088384,1603092479,LB 1603092480,1603100671,NO 1603100672,1603108863,FR @@ -49530,7 +56826,20 @@ 1603149568,1603149823,US 1603149824,1603153919,RU 1603153920,1603158015,NL -1603158016,1603162111,DE +1603158016,1603159167,DE +1603159168,1603159183,NL +1603159184,1603159487,DE +1603159488,1603159519,AT +1603159520,1603159535,DE +1603159536,1603159551,GB +1603159552,1603161007,DE +1603161008,1603161023,GB +1603161024,1603161103,DE +1603161104,1603161119,GB +1603161120,1603161135,AT +1603161136,1603161567,DE +1603161568,1603161599,FR +1603161600,1603162111,DE 1603162112,1603166207,TJ 1603166208,1603166751,NL 1603166752,1603166767,MT @@ -49572,11 +56881,25 @@ 1603223712,1603223936,FR 1603223937,1603223951,GB 1603223952,1603224319,FR -1603224320,1603224575,GB +1603224320,1603224335,GB +1603224336,1603224351,BE +1603224352,1603224367,NL +1603224368,1603224383,DE +1603224384,1603224399,CH +1603224400,1603224415,IT +1603224416,1603224431,ES +1603224432,1603224447,US +1603224448,1603224463,MX +1603224464,1603224575,GB 1603224576,1603224775,FR 1603224776,1603224783,GB -1603224784,1603224799,FR -1603224800,1603225599,GB +1603224784,1603224831,FR +1603224832,1603224847,ES +1603224848,1603224895,FR +1603224896,1603225007,GB +1603225008,1603225023,MX +1603225024,1603225087,GB +1603225088,1603225599,FR 1603225600,1603225607,ES 1603225608,1603225615,GB 1603225616,1603225623,DE @@ -49585,8 +56908,7 @@ 1603225640,1603225647,CN 1603225648,1603225855,FR 1603225856,1603226623,GB -1603226624,1603227391,FR -1603227392,1603227647,GB +1603226624,1603227647,FR 1603227648,1603231743,AT 1603231744,1603235839,IT 1603235840,1603239935,RU @@ -49608,18 +56930,24 @@ 1603895296,1603928063,RU 1603928064,1603944447,DK 1603944448,1603977215,RU -1603977216,1603980463,GB +1603977216,1603979295,GB +1603979296,1603979327,ID +1603979328,1603980463,GB 1603980464,1603980479,CH -1603980480,1603981823,GB +1603980480,1603980863,GB +1603980864,1603980927,ID +1603980928,1603981823,GB 1603981824,1603982079,IE 1603982080,1603982655,GB 1603982656,1603982687,DK 1603982688,1603982719,AN -1603982720,1603982783,US +1603982720,1603982783,GB 1603982784,1603982847,AN 1603982848,1603984895,GB 1603984896,1603985151,PT -1603985152,1603990271,GB +1603985152,1603985279,GB +1603985280,1603985407,BR +1603985408,1603990271,GB 1603990272,1603990527,SA 1603990528,1603993599,GB 1603993600,1604009983,ME @@ -49654,7 +56982,8 @@ 1604853760,1604861951,HU 1604861952,1604870143,RS 1604870144,1604878335,HR -1604878336,1604886655,DE +1604878336,1604886591,DE +1604886592,1604886655,US 1604886656,1604886783,RU 1604886784,1604887039,DE 1604887040,1604887295,GB @@ -49667,11 +56996,7 @@ 1604891968,1604892159,RU 1604892160,1604892927,DE 1604892928,1604893183,HK -1604893184,1604893311,RU -1604893312,1604893375,TR -1604893376,1604893439,DE -1604893440,1604893695,TR -1604893696,1604893951,DE +1604893184,1604893951,DE 1604893952,1604894463,TR 1604894464,1604894719,DE 1604894720,1604895487,CZ @@ -49680,7 +57005,14 @@ 1604895608,1604895611,SK 1604895612,1604900351,CZ 1604900352,1604900383,SC -1604900384,1604902911,CZ +1604900384,1604901311,CZ +1604901312,1604901375,SC +1604901376,1604901631,CZ +1604901632,1604901887,SK +1604901888,1604901983,CZ +1604901984,1604902142,SK +1604902143,1604902399,CZ +1604902400,1604902911,SK 1604902912,1604911103,BG 1604911104,1604919295,UA 1604919296,1604927487,NO @@ -49708,21 +57040,35 @@ 1605107712,1605115903,GB 1605115904,1605124095,RU 1605124096,1605124607,US -1605124608,1605124671,GB -1605124672,1605124735,US -1605124736,1605125263,GB -1605125264,1605125287,US -1605125288,1605125311,GB -1605125312,1605125319,US -1605125320,1605125327,GB -1605125328,1605125343,US +1605124608,1605124639,GB +1605124640,1605124735,US +1605124736,1605124863,GB +1605124864,1605124895,US +1605124896,1605124927,GB +1605124928,1605124959,US +1605124960,1605125119,GB +1605125120,1605125247,US +1605125248,1605125263,GB +1605125264,1605125279,US +1605125280,1605125335,GB +1605125336,1605125343,US 1605125344,1605125375,GB -1605125376,1605125631,US -1605125632,1605126143,DE +1605125376,1605125903,US +1605125904,1605126143,GB 1605126144,1605127679,US -1605127680,1605130239,GB +1605127680,1605127935,GB +1605127936,1605128703,US +1605128704,1605129215,GB +1605129216,1605129727,US +1605129728,1605130239,GB 1605130240,1605130271,US -1605130272,1605132287,GB +1605130272,1605130295,GB +1605130296,1605130335,US +1605130336,1605130495,GB +1605130496,1605131007,US +1605131008,1605131263,GB +1605131264,1605132031,US +1605132032,1605132287,GB 1605132288,1605148671,RU 1605148672,1605156863,PT 1605156864,1605165055,JO @@ -49740,7 +57086,6 @@ 1605230592,1605238783,TR 1605238784,1605246975,IT 1605246976,1605255167,PL -1605255168,1605263359,HU 1605263360,1605271551,RU 1605271552,1605279743,DE 1605279744,1605287935,FR @@ -49782,13 +57127,19 @@ 1607614464,1607616511,GR 1607616512,1607630847,A2 1607630848,1607633919,IE -1607633920,1607663615,A2 +1607633920,1607636991,A2 +1607636992,1607639039,IE +1607639040,1607663615,A2 1607663616,1607729151,NL 1607729152,1607761919,EG 1607761920,1607766015,SY 1607766016,1607794687,EG 1607794688,1607860223,RU -1607860224,1607925759,ES +1607860224,1607892992,ES +1607892993,1607892994,DE +1607892995,1607893055,ES +1607893056,1607893119,DE +1607893120,1607925759,ES 1607925760,1607926783,RU 1607926784,1607927807,NL 1607927808,1607929855,RU @@ -49821,19 +57172,15 @@ 1607966720,1607967743,RU 1607967744,1607968767,UA 1607968768,1607969791,SE -1607969792,1607971839,RU 1607972864,1607974911,NL -1607974912,1607975935,LV 1607976960,1607977983,KZ 1607979008,1607980031,RU 1607980032,1607981055,DE 1607981056,1607982079,UA -1607982080,1607983103,RU 1607983104,1607984127,GB 1607984128,1607985151,RU 1607985152,1607986175,PL 1607986176,1607987199,UA -1607987200,1607988223,ES 1607988224,1607989247,KG 1607990272,1607991295,RU 1607991296,1608122367,UA @@ -49893,7 +57240,9 @@ 1613546680,1613546695,US 1613546696,1613546703,CA 1613546704,1613546719,US -1613546720,1613547919,CA +1613546720,1613547503,CA +1613547504,1613547519,US +1613547520,1613547919,CA 1613547920,1613547943,US 1613547944,1613548479,CA 1613548480,1613548487,US @@ -49911,13 +57260,20 @@ 1613549208,1613549319,US 1613549320,1613550735,CA 1613550736,1613550743,US -1613550744,1613565951,CA +1613550744,1613554743,CA +1613554744,1613554751,US +1613554752,1613557007,CA +1613557008,1613557015,US +1613557016,1613557087,CA +1613557088,1613557095,US +1613557096,1613558359,CA +1613558360,1613558375,NL +1613558376,1613565951,CA 1613565952,1613570047,US 1613570048,1613574143,CA -1613574144,1613586431,US -1613586432,1613590527,CA -1613590528,1613602815,US -1613606912,1613607423,CA +1613574144,1613606911,US +1613606912,1613607167,CA +1613607168,1613607423,US 1613607424,1613607679,GB 1613607680,1613607935,US 1613607936,1613615103,CA @@ -49941,8 +57297,16 @@ 1614282752,1614741503,US 1614741504,1614757887,CA 1614757888,1614774271,US -1614774272,1614790655,CA -1614790656,1632305151,US +1614774272,1614786559,CA +1614786560,1618837503,US +1618837504,1618841599,CA +1618841600,1618849791,US +1618849792,1618862079,CA +1618862080,1618866175,US +1618866176,1618870271,CA +1618870272,1618984959,US +1618984960,1619001343,CA +1619001344,1632305151,US 1632305152,1632321535,CA 1632321536,1632354303,US 1632354304,1632354607,CA @@ -49955,9 +57319,11 @@ 1632355512,1632355519,US 1632355520,1632355583,CA 1632355584,1632355599,US -1632355600,1632357439,CA -1632357440,1632357447,US -1632357448,1632362495,CA +1632355600,1632358647,CA +1632358648,1632358655,US +1632358656,1632358775,CA +1632358776,1632358783,US +1632358784,1632362495,CA 1632362496,1634414591,US 1634414592,1634418687,CA 1634418688,1634447359,US @@ -50573,12 +57939,15 @@ 1654546432,1654550527,VG 1654550528,1654554623,US 1654554624,1654558719,CA -1654558720,1654583071,US -1654583072,1654583103,TR +1654558720,1654583103,US 1654583104,1654583135,CA -1654583136,1654599455,US +1654583136,1654597823,US +1654597824,1654597887,GB +1654597888,1654599455,US 1654599456,1654599471,CA -1654599472,1654648831,US +1654599472,1654599487,US +1654599488,1654599519,BA +1654599520,1654648831,US 1654648832,1654652927,CA 1654652928,1665833175,US 1665833176,1665833183,A2 @@ -50603,8 +57972,7 @@ 1673562896,1673562911,CA 1673562912,1673562975,US 1673562976,1673563007,NL -1673563008,1673563071,US -1673563072,1673563135,NL +1673563008,1673563135,US 1673563136,1673563167,CA 1673563168,1673563407,US 1673563408,1673563423,CA @@ -50618,8 +57986,7 @@ 1673563776,1673563903,GB 1673563904,1673563967,US 1673563968,1673563983,CA -1673563984,1673566463,US -1673566464,1673566719,NL +1673563984,1673566719,US 1673566720,1673566735,CA 1673566736,1673566767,US 1673566768,1673566783,NO @@ -50627,11 +57994,9 @@ 1673566848,1673566911,CA 1673566912,1673566975,US 1673566976,1673567007,CA -1673567008,1673567103,US -1673567104,1673567167,GB -1673567168,1673567231,US -1673567232,1673567247,CA -1673567248,1673567263,US +1673567008,1673567087,US +1673567088,1673567167,GB +1673567168,1673567263,US 1673567264,1673567279,AT 1673567280,1673567311,US 1673567312,1673567327,GB @@ -50667,18 +58032,14 @@ 1673569904,1673569967,US 1673569968,1673569983,GB 1673569984,1673570559,US -1673570560,1673570831,LT -1673570832,1673571071,US -1673571072,1673571263,LT -1673571264,1673571679,US +1673570560,1673570815,LT +1673570816,1673571679,US 1673571680,1673571711,CA 1673571712,1673572095,US 1673572096,1673572351,LT 1673572352,1673572383,US 1673572384,1673572399,EC -1673572400,1673572415,US -1673572416,1673572431,CA -1673572432,1673572895,US +1673572400,1673572895,US 1673572896,1673572911,CA 1673572912,1673573183,US 1673573184,1673573247,CA @@ -50686,33 +58047,464 @@ 1673573504,1673573567,NL 1673573568,1673573759,US 1673573760,1673573823,CA -1673573824,1673576447,US -1673576448,1673576703,NL -1673576704,1673577727,US +1673573824,1673577727,US 1673577728,1673577983,LT 1673577984,1673578239,A1 -1673578240,1673986047,US +1673578240,1673578287,US +1673578288,1673578303,CA +1673578304,1673585343,US +1673585344,1673585407,SC +1673585408,1673590783,US +1673590784,1673590911,EC +1673590912,1673986047,US 1673986048,1674051583,CA 1674051584,1674575871,US 1674575872,1677721599,CA -1694498816,1694499071,AP -1694499072,1694499327,AU -1697775616,1697776639,AP -1700790272,1702887679,AU -1711210496,1711276031,AP +1677721600,1681915903,US +1694498816,1694499839,CN +1694499840,1694500863,ID +1694500864,1694507007,JP +1694507008,1694515199,IN +1694515200,1694531583,AU +1694531584,1694564351,TW +1694564352,1694565375,CN +1694565376,1694566399,HK +1694566400,1694568447,KR +1694568448,1694572543,HK +1694572544,1694580735,KR +1694580736,1694629887,JP +1694629888,1694662655,IN +1694662656,1694670847,JP +1694670848,1694672895,BD +1694672896,1694673919,AU +1694673920,1694674943,CN +1694674944,1694679039,LK +1694679040,1694695423,AU +1694695424,1694760959,TW +1694760960,1695023103,CN +1695023104,1695547391,TW +1695547392,1697775615,CN +1697775616,1697776639,ID +1697776640,1697779711,JP +1697779712,1697783807,ID +1697783808,1697789951,JP +1697789952,1697790975,CN +1697790976,1697791999,JP +1697792000,1697808383,PK +1697808384,1697841151,JP +1697841152,1697906687,TH +1697906688,1697972223,CN +1697972224,1697988607,VN +1697988608,1697996799,KR +1697996800,1697997823,JP +1697997824,1697998847,CN +1697998848,1698004991,JP +1698004992,1698037759,AU +1698037760,1698103295,CN +1698103296,1698136063,KR +1698136064,1698160639,JP +1698160640,1698162687,CN +1698162688,1698168831,JP +1698168832,1698693119,IN +1698693120,1699611647,CN +1699611648,1699612671,JP +1699612672,1699614719,LA +1699614720,1699618815,PH +1699618816,1699627007,CN +1699627008,1699643391,SG +1699643392,1699676159,HK +1699676160,1699741695,KR +1699741696,1700793343,CN +1700793344,1700794367,VN +1700794368,1700798463,CN +1700798464,1700806655,JP +1700806656,1700823039,VN +1700823040,1700855807,CN +1700855808,1700921343,JP +1700921344,1700986879,NZ +1700986880,1701003263,VN +1701003264,1701011455,MY +1701011456,1701019647,CN +1701019648,1701052415,GU +1701052416,1701117951,NZ +1701117952,1701134335,NC +1701134336,1701142527,CN +1701142528,1701143551,HK +1701143552,1701150719,CN +1701150720,1701183487,KR +1701183488,1701199871,JP +1701199872,1701208063,CN +1701208064,1701209087,JP +1701209088,1701216255,CN +1701216256,1701249023,JP +1701249024,1701314559,AU +1701314560,1701576703,CN +1701576704,1701707775,TH +1701707776,1701724159,JP +1701724160,1701736447,CN +1701736448,1701737471,NZ +1701737472,1701740543,CN +1701740544,1701838847,JP +1701838848,1702363135,AU +1702363136,1702821887,CN +1702821888,1702887423,HK +1702887424,1702888447,CN +1702888448,1702889471,AU +1702889472,1702903807,CN +1702903808,1702920191,ID +1702920192,1702952959,JP +1702952960,1703411711,CN +1703411712,1703673855,TW +1703673856,1703935999,JP +1703936000,1704984575,CN +1704984576,1707081727,AU +1707081728,1707737087,CN +1707737088,1707802623,KR +1707802624,1707835391,JP +1707835392,1707845631,CN +1707845632,1707846655,ID +1707846656,1707851775,CN +1707851776,1707868159,JP +1707868160,1708130303,CN +1708130304,1709178879,IN +1709178880,1709834239,CN +1709834240,1709850623,SG +1709850624,1709852671,CN +1709852672,1709853695,AU +1709853696,1709867007,CN +1709867008,1709899775,AU +1709899776,1709965311,KR +1709965312,1710882815,CN +1710882816,1710948351,KR +1710948352,1710949375,CN +1710949376,1710950399,NP +1710950400,1711210495,CN +1711210496,1711276031,ID +1728053248,1728120063,AU +1728120064,1728120319,SG +1728120320,1728120575,IN +1728120576,1728120831,AU +1728120832,1728121855,CN +1728121856,1728123903,HK +1728123904,1728125951,CN +1728125952,1728126975,LA +1728126976,1728132095,HK +1728132096,1728135167,AU +1728135168,1728136191,HK +1728136192,1728137215,MY +1728137216,1728138239,CN +1728138240,1728139263,AU +1728139264,1728140287,IN +1728140288,1728141311,SG +1728141312,1728142335,CN +1728142336,1728143359,NP +1728143360,1728144383,MP +1728144384,1728145407,IN +1728145408,1728146431,MY +1728146432,1728147455,AU +1728147456,1728148479,IN +1728148480,1728149503,PH +1728149504,1728150527,JP +1728150528,1728152575,IN +1728152576,1728153599,MY +1728153600,1728154623,SG +1728154624,1728155647,JP +1728155648,1728158719,MY +1728158720,1728159743,HK +1728159744,1728161791,TH +1728161792,1728162815,CN +1728162816,1728163839,SG +1728163840,1728164863,LK +1728164864,1728165887,FJ +1728165888,1728168959,AU +1728168960,1728169983,IN +1728169984,1728171007,VN +1728171008,1728172031,AU +1728172032,1728173055,VN +1728173056,1728175103,AU +1728175104,1728177151,HK +1728177152,1728178175,AU +1728178176,1728179199,LA +1728179200,1728180223,VN +1728180224,1728181247,AU +1728181248,1728203775,JP +1728203776,1728204799,KR +1728204800,1728205823,IN +1728205824,1728206847,KR +1728206848,1728207871,SB +1728207872,1728210943,JP +1728210944,1728211967,SG +1728211968,1728212991,CN +1728212992,1728214015,TH +1728214016,1728215039,AU +1728215040,1728216063,NZ +1728216064,1728218111,JP +1728218112,1728219135,IN +1728219136,1728220159,JP +1728220160,1728221183,NZ +1728221184,1728222207,ID +1728222208,1728224255,LK +1728224256,1728225279,CN +1728225280,1728226303,JP +1728226304,1728227327,CN +1728227328,1728230399,AU +1728230400,1728231423,SG +1728231424,1728232447,NC +1728232448,1728235519,AU +1728235520,1728239615,CN +1728239616,1728240639,TW +1728240640,1728243711,VN +1728243712,1728246783,IN +1728246784,1728254975,JP +1728254976,1728255999,MY +1728256000,1728257023,HK +1728257024,1728258047,MN +1728258048,1728259071,IN +1728259072,1728260095,KR +1728260096,1728261119,IN +1728261120,1728262143,ID +1728262144,1728264191,JP +1728264192,1728265215,ID +1728265216,1728266239,SG +1728266240,1728267263,TH +1728267264,1728268287,ID +1728268288,1728269311,MY +1728269312,1728270335,ID +1728270336,1728271359,PH +1728271360,1728286719,CN +1728286720,1728287743,AU +1728287744,1728290815,CN +1728290816,1728291839,AU +1728291840,1728292863,SG +1728292864,1728293887,PG +1728293888,1728294911,MY +1728294912,1728295935,TH +1728295936,1728299007,JP +1728299008,1728300031,TW +1728300032,1728301055,AU +1728301056,1728302079,SG +1728302080,1728303103,IN +1728303104,1728305151,ID +1728305152,1728306175,AU +1728306176,1728307199,ID +1728307200,1728308223,BD +1728308224,1728309247,IN +1728309248,1728310271,NZ +1728310272,1728311295,AU +1728311296,1728312319,GU +1728312320,1728315391,VN +1728315392,1728316415,ID +1728316416,1728317439,MY +1728317440,1728318463,JP +1728318464,1728319487,SG +1728319488,1728320511,AU +1728320512,1728321535,PH +1728321536,1728322559,JP +1728322560,1728323583,MY +1728323584,1728324607,JP +1728324608,1728325631,SG +1728325632,1728326655,JP +1728326656,1728327679,MY +1728327680,1728328703,KR +1728328704,1728329727,ID +1728329728,1728330751,CN +1728330752,1728331775,AU +1728331776,1728332799,BD +1728332800,1728333823,JP +1728333824,1728334847,PF +1728334848,1728336895,JP +1728336896,1728337919,AU +1728337920,1728338943,MY +1728338944,1728339967,PK +1728339968,1728340991,SG +1728340992,1728342015,AU +1728342016,1728343039,TW +1728343040,1728344063,SG +1728344064,1728344575,HK +1728344576,1728345087,SG +1728345088,1728346111,BD +1728346112,1728346367,AU +1728346368,1728346623,NZ +1728346624,1728347135,AU +1728347136,1728348159,SG +1728708608,1728709631,CN +1728709632,1728710655,TW +1728710656,1728710911,AU +1728710912,1728711167,IN +1728711424,1728711679,AU +1728711680,1728712703,HK +1728712704,1728713727,CN +1728713728,1728714751,MN +1728714752,1728715775,IN +1728715776,1728716799,NP +1728716800,1728717823,AU +1728717824,1728718847,JP +1728718848,1728719871,MY +1728719872,1728720895,NZ +1728720896,1728721919,AU +1728721920,1728722943,BD +1728722944,1728723199,ID +1728723200,1728723455,AU +1728723456,1728726015,ID +1728726016,1728727039,JP +1728727040,1728728063,AU +1728728064,1728729087,BD +1728729088,1728729599,ID +1728729600,1728730111,AU +1728730112,1728731135,CN +1728731136,1728732159,VN +1728732160,1728733183,KR +1728733184,1728734207,ID +1728734208,1728735231,SG +1728735232,1728736255,ID +1728736256,1728736511,HK +1728736512,1728736767,IN +1728736768,1728737023,ID +1728737024,1728737279,CN +1728737280,1728738303,JP +1728738304,1728739327,IN +1728739328,1728740351,ID +1728740352,1728740863,HK +1728740864,1728741119,AU +1728741120,1728741375,IN +1729527808,1729528831,SG +1729528832,1729530879,ID +1729530880,1729531903,MY +1729531904,1729532927,AU +1729532928,1729533951,MY +1729533952,1729534975,JP +1729534976,1729535999,TW +1729536000,1729537023,HK +1729537024,1729537791,ID +1729537792,1729538047,JP +1729538048,1729539071,SG +1729539072,1729540095,IN +1729540096,1729541119,AU +1729541120,1729542143,TH +1729542144,1729543167,AU +1729543168,1729544191,CN +1729544192,1729545215,IN +1729545216,1729546239,AU +1729546240,1729547263,HK +1729547264,1729548287,IN +1729548288,1729549311,AU +1729549312,1729550335,JP +1729550336,1729551359,MY +1729551360,1729552383,KR +1729552384,1729553407,AU +1729553408,1729554431,CN +1729554432,1729554943,ID +1729554944,1729555455,NZ +1729555456,1729556479,IN +1729556480,1729557503,ID +1729557504,1729558527,HK +1729558528,1729559551,ID +1729559552,1729560575,CN +1729953792,1729954815,MY +1729954816,1729955839,ID +1729955840,1729956863,BD +1729956864,1729957887,HK +1729957888,1729958911,CN +1729958912,1729959935,PH +1729959936,1729960959,SG +1729960960,1729961471,IN +1729961472,1729961983,NZ +1729961984,1729964031,IN +1729964032,1729965055,AU +1729965056,1729966079,IN +1729966080,1729967103,JP +1729967104,1729968127,AU +1729968128,1729969151,MY +1729969152,1729970175,LK +1729970176,1729971199,AU +1729971200,1729972223,JP +1729972224,1729973247,HK +1729973248,1729974271,AU +1729974272,1729975295,PH +1729975296,1729976831,AU +1729976832,1729977343,NZ +1729977344,1729978367,HK +1729978368,1729979391,IN +1729979392,1729980415,AU +1729980416,1729980927,BD +1729980928,1729982463,SG +1729982464,1729982719,AU +1729982720,1729982975,JP +1729983488,1729984511,IN +1729984512,1729985535,ID +1729985536,1729986559,BD +1744175104,1744176127,ID +1744176128,1744177151,AU +1744177152,1744179199,CN +1744179200,1744180223,TH +1744180224,1744181247,PH +1744181248,1744182271,TH +1744182272,1744183295,AU +1744191488,1744192511,IN +1744192512,1744194559,JP +1744194560,1744194815,ID +1744194816,1744195071,HK +1744195072,1744195583,SG +1744195584,1744196607,JP +1744196608,1744197631,IN +1744197632,1744198655,MY +1744198656,1744199679,SG +1744199680,1744201727,AU +1744201728,1744201983,VN +1744202240,1744202495,IN +1744202496,1744202751,ID +1744202752,1744203775,PK +1744203776,1744204799,MY +1744204800,1744205823,ID +1744205824,1744207871,CN +1769996288,1772093439,MA +1778384896,1778385151,CN +1778385152,1778385407,AU +1778385408,1778393087,CN +1778401280,1778417663,CN +1778417664,1778450431,TH +1778450432,1778515967,TW +1778515968,1779040255,CN +1779040256,1779073023,KR +1779073024,1779105791,SG +1779105792,1781727231,CN +1781727232,1781792767,IN +1781792768,1782579199,CN +1782579200,1782710271,TW +1782710272,1782841343,IN +1782841344,1783103487,AU +1783103488,1783234559,JP +1783234560,1783365631,CN +1783365632,1783627775,IN +1783627776,1784676351,CN +1784676352,1785200639,KR +1785200640,1785462783,TW +1785462784,1786773503,CN +1786773504,1790967807,JP +1790967808,1793064959,IN +1793064960,1794113535,CN +1794113536,1795162111,KR 1795162112,1815822335,US 1815822336,1815826431,CA -1815826432,1815846911,US +1815826432,1815871487,US 1815871488,1815879679,CA -1816133632,1822425087,US +1815879680,1815912447,US +1815912448,1815920639,CA +1815920640,1815928831,US +1815928832,1815937023,BS +1815937024,1816024319,US +1816024320,1816024575,CA +1816024576,1816068095,US +1816068096,1816133631,CA +1816133632,1828716543,US 1828716544,1830813695,FR 1830813696,1831337983,NL 1831337984,1831862271,DE 1831862272,1832124415,PT 1832124416,1832386559,IT 1832386560,1832517631,DK -1832517632,1832615935,SE -1832615936,1832648703,DK +1832517632,1832583167,SE +1832583168,1832648703,DK 1832648704,1832681471,HR 1832681472,1832714239,RU 1832714240,1832747007,HU @@ -50758,7 +58550,7 @@ 1833248768,1833250815,MK 1833250816,1833254911,GB 1833254912,1833256959,DE -1833256960,1833261055,GB +1833259008,1833261055,GB 1833261056,1833263103,PL 1833263104,1833265151,DE 1833265152,1833267199,GB @@ -50766,7 +58558,6 @@ 1833269248,1833271295,FI 1833271296,1833273343,IT 1833273344,1833275391,EU -1833275392,1833277439,GB 1833277440,1833279487,CH 1833279488,1833281535,AL 1833281536,1833283583,AT @@ -50774,7 +58565,9 @@ 1833285632,1833289727,FR 1833289728,1833291775,IT 1833291776,1833293823,CZ -1833293824,1833295871,BE +1833293824,1833294557,BE +1833294558,1833294591,FR +1833294592,1833295871,BE 1833295872,1833297919,NL 1833297920,1833299967,GB 1833299968,1833302015,LU @@ -50784,7 +58577,15 @@ 1833308752,1833308759,NL 1833308760,1833308763,FR 1833308764,1833308767,NL -1833308768,1833310207,FR +1833308768,1833308807,FR +1833308808,1833308815,NL +1833308816,1833308819,FR +1833308820,1833308823,NL +1833308824,1833308831,FR +1833308832,1833308839,NL +1833308840,1833308855,FR +1833308856,1833308859,NL +1833308860,1833310207,FR 1833310208,1833312255,RU 1833312256,1833314303,ES 1833314304,1833315903,IM @@ -50802,8 +58603,8 @@ 1833332736,1833334783,CH 1833334784,1833336831,IT 1833336832,1833336959,ES -1833336960,1833336975,FR -1833336976,1833338879,ES +1833336960,1833337071,FR +1833337072,1833338879,ES 1833338880,1833342975,GB 1833342976,1833345023,CH 1833345024,1833347071,FI @@ -50875,7 +58676,10 @@ 1833468288,1833468575,CH 1833468576,1833468591,RU 1833468592,1833471999,CH -1833472000,1833476095,EU +1833472000,1833474047,EU +1833474048,1833474559,UA +1833474560,1833474815,RU +1833474816,1833476095,EU 1833476096,1833477375,NL 1833477376,1833477503,GB 1833477504,1833477631,DE @@ -50888,6 +58692,7 @@ 1833504768,1833508863,DE 1833508864,1833512959,RU 1833512960,1833517055,DE +1833517056,1833521151,GB 1833521152,1833525247,IT 1833525248,1833529343,LV 1833529344,1833533439,GB @@ -50896,7 +58701,9 @@ 1833541632,1833542143,IL 1833542144,1833542655,GB 1833542656,1833542911,IN -1833542912,1833545727,GB +1833542912,1833543168,GB +1833543169,1833543423,IN +1833543424,1833545727,GB 1833545728,1833549823,IT 1833549824,1833553919,RU 1833553920,1833558015,CZ @@ -50911,7 +58718,9 @@ 1833586688,1833590783,FR 1833590784,1833594879,PL 1833594880,1833603071,RU -1833603072,1833607167,SK +1833603072,1833606399,SK +1833606400,1833606655,CZ +1833606656,1833607167,SK 1833607168,1833611263,RU 1833611264,1833615359,NO 1833615360,1833619455,GB @@ -50928,19 +58737,15 @@ 1833644288,1833644319,TJ 1833644320,1833648127,RU 1833648128,1833652223,LB -1833652224,1833659023,DE -1833659024,1833659039,BZ -1833659040,1833659903,DE -1833659904,1833659919,NA -1833659920,1833660159,DE -1833660160,1833660223,CH -1833660224,1833660351,DE +1833652224,1833660351,DE 1833660352,1833660415,US 1833660416,1833664511,IT 1833664512,1833668607,RU 1833668608,1833672703,CZ 1833672704,1833676799,GB -1833676800,1833680895,DE +1833676800,1833677567,DE +1833677568,1833677599,CH +1833677600,1833680895,DE 1833680896,1833684991,UA 1833684992,1833689087,DE 1833689088,1833693183,FI @@ -50972,7 +58777,7 @@ 1834960896,1834964991,RU 1834964992,1834967039,PL 1834967040,1834971135,RU -1834971136,1834973183,UA +1834971136,1834973183,PL 1834973184,1834975231,RU 1834975232,1834977279,IL 1834977280,1834983423,PL @@ -50990,7 +58795,9 @@ 1835540480,1835548671,DE 1835548672,1835549695,GB 1835549696,1835550207,ES -1835550208,1835565055,GB +1835550208,1835561351,GB +1835561352,1835561359,A2 +1835561360,1835565055,GB 1835565056,1835573247,AL 1835573248,1835581439,UA 1835581440,1835589631,BG @@ -51046,7 +58853,11 @@ 1835892736,1835909119,GB 1835909120,1835913215,RS 1835913216,1835917311,RU -1835917312,1835925503,GB +1835917312,1835920135,GB +1835920136,1835920191,PT +1835920192,1835920255,GB +1835920256,1835920319,PT +1835920320,1835925503,GB 1835925504,1835933695,LV 1835933696,1835941887,RU 1835941888,1835950079,UA @@ -51061,12 +58872,14 @@ 1836015616,1836023807,AD 1836023808,1836040191,RU 1836040192,1836048383,GB -1836048384,1836056575,RS +1836048384,1836048467,RS +1836048468,1836048471,SR +1836048472,1836056575,RS 1836056576,1836580863,IT 1836580864,1836597247,RU -1836597248,1836598015,LU -1836598016,1836604159,DE -1836604160,1836613631,LU +1836597248,1836597759,LU +1836597760,1836606463,DE +1836606464,1836613631,LU 1836613632,1836630015,RU 1836630016,1836646399,BG 1836646400,1836679167,RS @@ -51103,7 +58916,6 @@ 1839333376,1839366143,UA 1839366144,1839398911,IR 1839398912,1839431679,NO -1839431680,1839464447,RU 1839464448,1839497215,CZ 1839497216,1839529983,CH 1839529984,1839562751,RU @@ -51111,21 +58923,21 @@ 1839595520,1839661055,RO 1839661056,1839693823,UA 1839693824,1839726591,RU -1839726592,1839759359,IT +1839726592,1839756327,IT +1839756328,1839756335,FR +1839756336,1839759359,IT 1839759360,1839792127,RU 1839792128,1839794687,GB 1839794688,1839794943,US -1839794944,1839795071,GB -1839795072,1839795087,US -1839795088,1839795151,GB +1839794944,1839795151,GB 1839795152,1839795167,US 1839795168,1839796607,GB 1839796608,1839796671,US -1839796672,1839796735,GB -1839796736,1839796991,TR -1839796992,1839797759,GB +1839796672,1839797759,GB 1839797760,1839798015,GR -1839798016,1839798527,GB +1839798016,1839798271,GB +1839798272,1839798399,DE +1839798400,1839798527,GB 1839798528,1839798559,US 1839798560,1839800447,GB 1839800448,1839800479,SG @@ -51138,13 +58950,13 @@ 1839801344,1839801471,CN 1839801472,1839801551,GB 1839801552,1839801567,US -1839801568,1839801599,GB -1839801600,1839801855,US -1839801856,1839802111,GB +1839801568,1839802111,GB 1839802112,1839802239,RO 1839802240,1839806463,GB -1839806464,1839809535,US -1839809536,1839816703,GB +1839806464,1839811071,US +1839811072,1839811455,GB +1839811456,1839811583,IE +1839811584,1839816703,GB 1839816704,1839824895,NO 1839824896,1839890431,RU 1839890432,1839923199,GB @@ -51169,7 +58981,7 @@ 1840906240,1840971775,IL 1840971776,1841102847,RU 1841102848,1841168383,NO -1841168384,1841299455,RU +1841233920,1841299455,RU 1841299456,1841430527,DE 1841430528,1841561599,RU 1841561600,1841565695,PL @@ -51219,25 +59031,16 @@ 1841799168,1841807359,DE 1841807360,1841815551,NO 1841815552,1841823743,BG -1841823744,1841827079,GB -1841827080,1841827087,ES -1841827088,1841827231,GB -1841827232,1841827263,BR -1841827264,1841827279,BD -1841827280,1841827463,GB -1841827464,1841827471,BD -1841827472,1841827479,ES -1841827480,1841827695,GB -1841827696,1841827703,ES -1841827704,1841828879,GB -1841828880,1841828895,MT -1841828896,1841831935,GB +1841823744,1841831935,GB 1841831936,1841840127,MT 1841840128,1841848319,PL 1841848320,1841856511,RU 1841856512,1841864703,UA 1841864704,1841872895,YE -1841872896,1841879807,NL +1841872896,1841878015,NL +1841878016,1841879039,AU +1841879040,1841879551,NL +1841879552,1841879807,US 1841879808,1841880063,GB 1841880064,1841881087,JP 1841881088,1841889279,UA @@ -51250,7 +59053,7 @@ 1841946624,1841954815,UA 1841954816,1841971199,RU 1841971200,1841979391,CZ -1841979392,1841987583,NL +1841979392,1841983487,NL 1841987584,1841995775,DK 1841995776,1842003967,RU 1842003968,1842012159,CH @@ -51290,9 +59093,7 @@ 1842188288,1842190335,RU 1842190336,1842192383,GB 1842192384,1842194431,AZ -1842194432,1842196319,CH -1842196320,1842196351,NL -1842196352,1842196479,CH +1842194432,1842196479,CH 1842196480,1842198527,DE 1842198528,1842200575,GB 1842200576,1842202623,NL @@ -51301,8 +59102,8 @@ 1842206720,1842208767,SE 1842208768,1842210815,GB 1842210816,1842212863,LT -1842212864,1842214911,CZ -1842214912,1842216959,RU +1842212864,1842214655,CZ +1842214656,1842216959,RU 1842216960,1842225151,RO 1842225152,1842233343,UA 1842233344,1842241535,RO @@ -51398,24 +59199,26 @@ 1843990528,1843992575,LB 1843992576,1843994623,AT 1843994624,1844000767,GB -1844000768,1844002047,NL -1844002048,1844002815,NO +1844000768,1844002559,NL +1844002560,1844002815,NO 1844002816,1844006911,CZ 1844006912,1844008959,SM 1844008960,1844011007,PL 1844011008,1844013055,IT 1844013056,1844015103,PL 1844015104,1844017151,GB -1844017152,1844019199,IT -1844019200,1844021247,RU +1844017152,1844021247,IT 1844021248,1844027391,DE 1844027392,1844029439,CZ 1844029440,1844031487,RU 1844031488,1844031743,EU -1844031744,1844031999,CH -1844032000,1844032255,GB -1844032256,1844032511,CH -1844032512,1844033535,EU +1844031744,1844031775,CH +1844031776,1844031999,EU +1844032000,1844032031,GB +1844032032,1844032255,EU +1844032256,1844032831,CH +1844032832,1844033271,EU +1844033272,1844033535,CH 1844033536,1844035583,RS 1844035584,1844037631,MD 1844037632,1844041727,RU @@ -51429,10 +59232,11 @@ 1844058112,1844062207,RU 1844062208,1844064255,CZ 1844064256,1844068351,IT -1844068352,1844072447,GB +1844070400,1844072447,GB 1844072448,1844076543,ES 1844076544,1844078591,IE -1844078592,1844080639,DE +1844078592,1844080127,DE +1844080128,1844080639,PL 1844080640,1844082687,GE 1844082688,1844084735,DE 1844084736,1844086783,RU @@ -51456,7 +59260,12 @@ 1844123648,1844125695,RU 1844125696,1844127743,NL 1844127744,1844129791,DE -1844129792,1844131839,NL +1844129792,1844131583,NL +1844131584,1844131711,SC +1844131712,1844131743,NL +1844131744,1844131775,RU +1844131776,1844131807,AE +1844131808,1844131839,US 1844131840,1844133887,DE 1844133888,1844135935,LT 1844135936,1844137983,NL @@ -51468,21 +59277,38 @@ 1844148224,1844150271,GB 1844150272,1844152319,ES 1844152320,1844154367,DE -1844154368,1844154879,GB -1844154880,1844155135,FR -1844155136,1844155391,US -1844155392,1844156415,GB +1844154368,1844156415,GB 1844156416,1844158463,IT 1844158464,1844160511,RU 1844160512,1844162559,SE 1844162560,1844164607,CZ 1844164608,1844166655,RU 1844166656,1844168703,AZ -1844168704,1844169487,SE -1844169488,1844169503,IQ -1844169504,1844169983,SE -1844169984,1844170387,DE -1844170388,1844170751,SE +1844168704,1844169471,SE +1844169472,1844169487,AF +1844169488,1844169519,US +1844169520,1844169599,SE +1844169600,1844169647,US +1844169648,1844169655,AF +1844169656,1844169663,SE +1844169664,1844169679,US +1844169680,1844169687,ZM +1844169688,1844169695,IQ +1844169696,1844169727,SE +1844169728,1844169767,DE +1844169768,1844169951,US +1844169952,1844169983,DE +1844169984,1844169987,AF +1844169988,1844169991,DE +1844169992,1844169995,AF +1844169996,1844169999,TM +1844170000,1844170015,AF +1844170016,1844170019,NG +1844170020,1844170027,AF +1844170028,1844170031,IQ +1844170032,1844170239,DE +1844170240,1844170247,AF +1844170248,1844170751,DE 1844170752,1844174847,RU 1844174848,1844178943,DE 1844178944,1844180991,EE @@ -51494,8 +59320,8 @@ 1844181953,1844181958,GB 1844181959,1844181984,TR 1844181985,1844181990,GB -1844181991,1844182271,TR -1844182272,1844182302,US +1844181991,1844182272,TR +1844182273,1844182302,US 1844182303,1844182309,TR 1844182310,1844182329,US 1844182330,1844182343,TR @@ -51505,9 +59331,7 @@ 1844182418,1844182424,TR 1844182425,1844182426,US 1844182427,1844182432,TR -1844182433,1844182442,US -1844182443,1844182459,TR -1844182460,1844182480,US +1844182433,1844182480,US 1844182481,1844182485,TR 1844182486,1844182489,US 1844182490,1844182501,TR @@ -51520,10 +59344,21 @@ 1844207616,1844211711,RU 1844211712,1844215807,SK 1844215808,1844219903,BE -1844219904,1844220159,KE -1844220160,1844223999,DE +1844219904,1844219919,A2 +1844219920,1844219959,LB +1844219960,1844220159,A2 +1844220160,1844220191,IQ +1844220192,1844220287,DE +1844220288,1844220415,LB +1844220416,1844220431,A2 +1844220432,1844223743,DE +1844223744,1844223999,A2 1844224000,1844228095,GB -1844228096,1844232191,DK +1844228096,1844228479,DK +1844228480,1844228511,SE +1844228512,1844230159,DK +1844230160,1844230175,SE +1844230176,1844232191,DK 1844232192,1844235775,ES 1844235776,1844236031,GB 1844236032,1844236287,FR @@ -51545,9 +59380,10 @@ 1844310016,1844318207,FR 1844318208,1844322303,IT 1844322304,1844326399,CZ -1844326400,1844330495,DK +1844326400,1844329983,DK +1844329984,1844330495,LU 1844330496,1844334591,GB -1844338688,1844342783,RU +1844334592,1844342783,RU 1844342784,1844346879,IT 1844346880,1844347007,US 1844347008,1844347135,GB @@ -51623,23 +59459,27 @@ 1847721984,1847730175,NP 1847730176,1847732223,PK 1847734272,1847735295,NZ -1847736320,1847738367,AP +1847735296,1847736319,AU +1847736320,1847738367,HK 1847738368,1847754751,KR -1847754752,1847787519,AP +1847754752,1847787519,TH 1847787520,1847803903,KR 1847803904,1847807999,VN 1847808000,1847810047,ID +1847810048,1847812095,FJ 1847812096,1847853055,KR 1847853056,1848115199,PK 1848115200,1848377343,CN 1848381440,1848382463,NZ +1848382464,1848383487,JP 1848383488,1848385535,AU 1848385536,1848393727,KR 1848393728,1848401919,JP 1848401920,1848406015,PH 1848406016,1848410111,NP 1848410112,1848414207,PH -1848418304,1848419327,AU +1848414208,1848418303,CN +1848418304,1848420351,AU 1848420352,1848422399,ID 1848422400,1848424447,JP 1848424448,1848426495,VN @@ -51648,6 +59488,7 @@ 1848705024,1848770559,TH 1848770560,1848774655,JP 1848774656,1848776703,AU +1848776704,1848778751,JP 1848778752,1848786943,IN 1848786944,1848791039,JP 1848791040,1848793087,ID @@ -51669,11 +59510,15 @@ 1850400768,1850408959,JP 1850408960,1850490879,CN 1850490880,1850507263,KR -1850507264,1850511359,AU +1850507264,1850509311,AU +1850510336,1850511359,KR 1850511360,1850513407,ID 1850513408,1850514431,TH +1850514432,1850515455,CN 1850515456,1850519551,IN 1850519552,1850520575,AU +1850520576,1850521599,JP +1850521600,1850522623,CN 1850522624,1850523647,HK 1850523648,1850572799,CN 1850572800,1850671103,TH @@ -51681,6 +59526,7 @@ 1850736640,1851523071,CN 1851523072,1851527167,JP 1851527168,1851528191,NZ +1851528192,1851529215,KR 1851529216,1851531263,PH 1851531264,1851539455,JP 1851541504,1851542527,ID @@ -51690,8 +59536,10 @@ 1851555840,1851588607,KR 1851588608,1851590655,JP 1851590656,1851591679,AU +1851591680,1851592703,ID 1851592704,1851594751,AU 1851594752,1851596799,KR +1851596800,1851604991,CN 1851604992,1851613183,PH 1851613184,1851617279,JP 1851617280,1851637759,KR @@ -51720,9 +59568,10 @@ 1856798720,1856815103,IN 1856815104,1856843775,CN 1856843776,1856847871,HK -1856856064,1856864255,CN +1856847872,1856864255,CN 1856864256,1856872447,AU 1856872448,1856876543,NZ +1856876544,1856880639,IN 1856880640,1856888831,CN 1856888832,1856892927,AU 1856892928,1856897023,JP @@ -51734,14 +59583,20 @@ 1860706304,1860714495,CN 1860714496,1860722687,ID 1860722688,1860726783,KR -1860726784,1860727807,AU -1860728832,1860734975,JP +1860726784,1860728831,AU +1860728832,1860733951,JP +1860733952,1860734975,AU 1860734976,1860735999,NZ +1860736000,1860737023,AU 1860737024,1860739071,JP 1860739072,1860743167,PH -1860743168,1860747263,AU +1860743168,1860744191,AU +1860744192,1860745215,IN +1860745216,1860746239,AU +1860746240,1860747263,PK 1860747264,1860759551,JP 1860759552,1860761599,AU +1860761600,1860763647,IN 1860763648,1860829183,JP 1860829184,1860960255,IN 1860960256,1861091327,CN @@ -51752,6 +59607,7 @@ 1866563584,1866579967,KR 1866579968,1866588159,JP 1866588160,1866592255,NZ +1866592256,1866596351,VN 1866596352,1866661887,CN 1866661888,1866670079,AU 1866670080,1866674175,MY @@ -51794,7 +59650,9 @@ 1868333056,1868341247,PK 1868341248,1868345343,ID 1868345344,1868346367,GU +1868346368,1868347391,TH 1868347392,1868348415,AU +1868348416,1868349439,KR 1868349440,1868357631,SG 1868357632,1868361727,HK 1868361728,1868362751,KH @@ -51808,8 +59666,14 @@ 1870036992,1870045183,KH 1870045184,1870049279,AU 1870049280,1870053375,IN -1870053376,1870069759,AU -1870069760,1870077951,AP +1870053376,1870055423,AU +1870055424,1870057471,CN +1870057472,1870058495,AU +1870058496,1870059519,IN +1870059520,1870065663,AU +1870065664,1870069759,IN +1870069760,1870077951,JP +1870077952,1870086143,NP 1870086144,1870110719,CN 1870110720,1870118911,PK 1870118912,1870135295,IN @@ -51820,7 +59684,7 @@ 1870497792,1870499839,IN 1870499840,1870501887,JP 1870501888,1870503935,AF -1870503936,1870508031,AU +1870503936,1870512127,AU 1870512128,1870528511,IN 1870528512,1873281023,CN 1873281024,1873412095,JP @@ -51864,10 +59728,12 @@ 1877692416,1877696511,PH 1877696512,1877704703,CN 1877704704,1877705727,AU +1877705728,1877706751,MY 1877706752,1877707775,SG 1877707776,1877709823,AU -1877710848,1877711871,AP -1877712896,1877721087,CN +1877709824,1877710847,IN +1877710848,1877711871,HK +1877711872,1877721087,CN 1877721088,1877737471,TW 1877737472,1877999615,JP 1877999616,1879048191,TW @@ -51901,8 +59767,11 @@ 1885995008,1886191615,KR 1886191616,1886195711,PH 1886195712,1886197759,ID +1886197760,1886199807,JP 1886199808,1886207999,KR -1886208000,1886216191,NZ +1886208000,1886214143,NZ +1886214144,1886216191,VN +1886216192,1886224383,IN 1886224384,1886257151,CN 1886257152,1886322687,IN 1886322688,1886781439,CN @@ -51922,7 +59791,9 @@ 1887993856,1888026623,KR 1888026624,1888030719,BD 1888030720,1888034815,HK -1888034816,1888059391,JP +1888034816,1888038911,JP +1888038912,1888040959,CN +1888040960,1888059391,JP 1888059392,1888063487,VN 1888063488,1888067583,JP 1888067584,1888071679,MY @@ -51935,7 +59806,6 @@ 1888266240,1888268287,JP 1888268288,1888270335,AU 1888270336,1888271359,SG -1888271360,1888272383,TH 1888272384,1888288767,KR 1888288768,1888354303,AU 1888354304,1888485375,TH @@ -51950,6 +59820,7 @@ 1892155392,1892941823,PH 1892941824,1893015551,KR 1893015552,1893019647,AU +1893019648,1893023743,TW 1893023744,1893027839,HK 1893027840,1893031935,VN 1893031936,1893040127,HK @@ -51966,21 +59837,27 @@ 1896587264,1896591359,SG 1896591360,1896593407,ID 1896593408,1896594431,AU +1896594432,1896595455,MY 1896595456,1896603647,CN 1896603648,1896605695,IN 1896605696,1896606719,AU +1896606720,1896607743,MY 1896607744,1896609791,VU +1896609792,1896611839,SG 1896611840,1897070591,CN 1897070592,1897136127,IN 1897136128,1897140223,AU 1897140224,1897141247,IN 1897141248,1897142271,HK 1897142272,1897143295,AU +1897143296,1897144319,ID 1897144320,1897152511,NC 1897152512,1897160703,FJ +1897160704,1897168895,VN 1897168896,1897169919,AU +1897169920,1897170943,HK 1897170944,1897172991,ID -1897172992,1897175039,SG +1897172992,1897175039,PH 1897175040,1897176063,JP 1897176064,1897177087,SG 1897177088,1897185279,PH @@ -52003,12 +59880,12 @@ 1897365504,1897398271,MY 1897398272,1897660415,CN 1897660416,1897725951,HK -1897725952,1897758719,AP +1897725952,1897758719,JP 1897758720,1897779199,KR 1897779200,1897781247,AU 1897781248,1897783295,JP 1897783296,1897787391,SG -1897787392,1897788415,AU +1897787392,1897789439,AU 1897789440,1897790463,KH 1897790464,1897791487,HK 1897791488,1897824255,KR @@ -52017,20 +59894,25 @@ 1897922560,1898708991,JP 1898708992,1899233279,CN 1899233280,1899237375,AU +1899237376,1899241471,JP 1899241472,1899249663,VN 1899249664,1899266047,MO 1899266048,1899267071,AU +1899267072,1899268095,HK 1899268096,1899270143,KR 1899270144,1899271167,AU +1899271168,1899272191,ID 1899272192,1899273215,SG 1899273216,1899274239,JP 1899274240,1899282431,CN 1899282432,1899290623,KR 1899290624,1899294719,AU +1899294720,1899298815,JP 1899298816,1899364351,TH 1899364352,1899724799,CN 1899724800,1899741183,KR 1899741184,1899749375,LK +1899749376,1899750399,CN 1899750400,1899751423,JP 1899751424,1899753471,ID 1899753472,1899757567,HK @@ -52046,29 +59928,38 @@ 1904361472,1904369663,KR 1904369664,1904375807,CN 1904375808,1904376831,NZ +1904376832,1904377855,KH 1904377856,1904476159,KR 1904476160,1905262591,CN 1905262592,1906311167,JP 1906311168,1908408319,VN 1908408320,1908424703,AU +1908424704,1908441087,KR 1908441088,1908473855,JP 1908473856,1908539391,IN 1908539392,1908670463,CN 1908670464,1908735999,TW 1908736000,1908740095,AU -1908744192,1908748287,JP +1908740096,1908744191,JP +1908744192,1908746239,SG +1908746240,1908748287,JP 1908748288,1908750335,PK +1908750336,1908752383,JP 1908752384,1908753407,NZ +1908753408,1908754431,PF 1908754432,1908756479,PH 1908756480,1908760575,KR 1908760576,1908761599,NZ +1908761600,1908762623,CN 1908762624,1908763647,IN -1908764672,1908768767,AP +1908763648,1908764671,ID +1908764672,1908768767,AU 1908768768,1908801535,JP 1908801536,1908899839,KR 1908899840,1908932607,NP 1908932608,1909129215,CN 1909129216,1909161983,AU +1909161984,1909194751,PK 1909194752,1909456895,CN 1909456896,1909473279,JP 1909473280,1909481471,HK @@ -52077,6 +59968,7 @@ 1909719040,1909735423,CN 1909735424,1909743615,IN 1909743616,1909744639,AU +1909744640,1909745663,CN 1909745664,1909746687,JP 1909746688,1909747711,MY 1909747712,1909751807,ID @@ -52084,6 +59976,7 @@ 1909760000,1909762047,ID 1909762048,1909764095,AU 1909764096,1909766143,PH +1909766144,1909768191,CN 1909768192,1909784575,HK 1909784576,1909817343,CN 1909817344,1909850111,JP @@ -52092,7 +59985,8 @@ 1910112256,1912340479,CN 1912340480,1912602623,HK 1912602624,1913651199,ID -1913651200,1914175487,JP +1913651200,1914109951,JP +1914109952,1914175487,NZ 1914175488,1914437631,TW 1914437632,1914503167,CN 1914503168,1914552319,KR @@ -52112,10 +60006,11 @@ 1914652672,1914654719,AU 1914654720,1914658815,JP 1914658816,1914660863,AU +1914660864,1914662911,JP 1914662912,1914667007,KR 1914667008,1914683391,IN 1914683392,1914687487,AU -1914687488,1914688511,NZ +1914687488,1914689535,NZ 1914689536,1914691583,JP 1914691584,1914695679,IN 1914695680,1914697727,ID @@ -52132,6 +60027,7 @@ 1917190144,1917321215,KR 1917321216,1917779967,AU 1917779968,1917796351,ID +1917796352,1917812735,CN 1917812736,1917845503,IN 1917845504,1919680511,CN 1919680512,1919729663,KR @@ -52141,8 +60037,10 @@ 1919815680,1919817727,ID 1919817728,1919819775,KR 1919819776,1919821823,NZ +1919821824,1919823871,ID 1919823872,1919827967,JP 1919827968,1919844351,CN +1919844352,1919877119,KR 1919877120,1919885311,CN 1919885312,1919893503,KR 1919893504,1919909887,JP @@ -52162,15 +60060,18 @@ 1921089536,1921105919,AU 1921105920,1921122303,KR 1921122304,1921187839,BD +1921187840,1921253375,TH 1921253376,1921318911,CN 1921318912,1921384447,MY 1921384448,1921388543,NZ +1921388544,1921392639,PG 1921392640,1921400831,JP 1921400832,1921404927,ID 1921404928,1921406975,HK 1921406976,1921409023,BD 1921409024,1921425407,JP -1921425408,1921433599,NZ +1921425408,1921431551,NZ +1921431552,1921433599,KH 1921433600,1921449983,JP 1921449984,1921515519,CN 1921515520,1921646591,TW @@ -52185,6 +60086,7 @@ 1921863680,1921865727,BD 1921865728,1921867775,ID 1921867776,1921871871,AU +1921871872,1921875967,NZ 1921875968,1921892351,CN 1921892352,1921896447,AU 1921896448,1921898495,SG @@ -52236,6 +60138,7 @@ 1932001280,1932132351,KR 1932132352,1932148735,AU 1932148736,1932152831,PK +1932152832,1932156927,TW 1932156928,1932161023,JP 1932161024,1932163071,TW 1932163072,1932165119,PH @@ -52259,6 +60162,7 @@ 1933959168,1933963263,JP 1933963264,1933967359,IN 1933967360,1934032895,AU +1934032896,1934098431,KR 1934098432,1934622719,VN 1934622720,1934884863,TW 1934884864,1934901247,CN @@ -52273,6 +60177,7 @@ 1934966784,1934974975,ID 1934974976,1934983167,JP 1934983168,1934985215,AU +1934985216,1934987263,JP 1934987264,1934991359,TW 1934991360,1934999551,KR 1934999552,1935015935,CN @@ -52283,9 +60188,11 @@ 1935933440,1936457727,CN 1936457728,1937244159,IN 1937244160,1937506303,CN -1937506304,1937508351,AU +1937506304,1937510399,AU 1937510400,1937514495,CN 1937514496,1937516543,AU +1937516544,1937518591,IN +1937518592,1937522687,JP 1937522688,1937530879,ID 1937530880,1937532927,US 1937532928,1937534463,IN @@ -52295,7 +60202,7 @@ 1937539072,1937637375,JP 1937637376,1937670143,HK 1937670144,1937672191,NZ -1937674240,1937678335,JP +1937672192,1937678335,JP 1937678336,1937686527,NC 1937686528,1937702911,KR 1937702912,1937768447,BD @@ -52303,7 +60210,7 @@ 1938030592,1938292735,MY 1938292736,1938948095,KR 1938948096,1938964479,JP -1938964480,1938968575,AU +1938964480,1938972671,AU 1938972672,1938976767,MY 1938976768,1938978815,SG 1938978816,1938980863,VN @@ -52357,7 +60264,7 @@ 1941659648,1941667839,NZ 1941667840,1941700607,AU 1941700608,1941831679,NZ -1941962752,1945108479,CN +1941831680,1945108479,CN 1945108480,1946157055,IN 1946157056,1946159103,ID 1946159104,1946161151,MY @@ -52388,6 +60295,7 @@ 1946951680,1946953727,BD 1946953728,1946955775,ID 1946955776,1946957823,SG +1946957824,1946959871,NZ 1946959872,1946976255,LK 1946976256,1947009023,SG 1947009024,1947074559,CN @@ -52422,14 +60330,17 @@ 1950518784,1950519295,NL 1950519296,1950523391,IN 1950523392,1950527487,AU +1950527488,1950531583,JP 1950531584,1950533631,NP 1950533632,1950535679,ID 1950535680,1950539775,HK 1950539776,1950541823,AU +1950541824,1950543871,HK 1950543872,1950545919,NZ 1950545920,1950547967,PH 1950547968,1950580735,KR -1950613504,1950617599,GU +1950580736,1950613503,JP +1950613504,1950621695,GU 1950621696,1950629887,KR 1950629888,1950646271,IN 1950646272,1950648319,VN @@ -52437,7 +60348,7 @@ 1950650368,1950654463,TH 1950654464,1950658559,ID 1950658560,1950660607,PH -1950660608,1950662655,AP +1950660608,1950662655,HK 1950662656,1950666751,BD 1950666752,1950668799,NP 1950668800,1950670847,JP @@ -52446,18 +60357,20 @@ 1950674944,1950676991,IN 1950676992,1950679039,ID 1950679040,1950777343,CN -1950777344,1950793727,JP +1950777344,1950810111,JP 1950810112,1950875647,PK 1950875648,1951137791,IN 1951137792,1951399935,CN 1951399936,1951662079,JP 1951662080,1951727615,KR +1951727616,1951793151,CN 1951793152,1952022527,SG 1952022528,1952026623,TW 1952026624,1952030719,CN 1952030720,1952038911,KR 1952038912,1952047103,JP 1952047104,1952051199,NZ +1952051200,1952055295,JP 1952055296,1952071679,AU 1952071680,1952073727,HK 1952073728,1952074751,AU @@ -52477,7 +60390,8 @@ 1952186368,1952251903,HK 1952251904,1952284671,PH 1952284672,1952288767,NZ -1952301056,1952317439,KR +1952288768,1952292863,JP +1952292864,1952317439,KR 1952317440,1952382975,JP 1952382976,1952448511,CN 1952448512,1953497087,VN @@ -52497,14 +60411,20 @@ 1958830080,1958838271,JP 1958838272,1958842367,IN 1958842368,1958844415,NZ +1958845440,1958846463,HK 1958846464,1958848511,IN 1958848512,1958850559,BD -1958850560,1958862847,AU +1958850560,1958853631,AU +1958853632,1958854655,ID +1958854656,1958860799,AU +1958860800,1958862847,BD +1958862848,1958871039,JP 1958871040,1959067647,CN 1959067648,1959100415,MY 1959100416,1959102463,ID 1959102464,1959104511,JP 1959104512,1959106559,AU +1959106560,1959108607,JP 1959108608,1959110655,NP 1959110656,1959112703,JP 1959112704,1959116799,HK @@ -52516,11 +60436,14 @@ 1959247872,1959251967,ID 1959251968,1959256063,NZ 1959256064,1959260159,AU +1959260160,1959264255,JP 1959264256,1959395327,KR +1959395328,1959526399,IN 1959526400,1959657471,CN 1959657472,1959723007,MY 1959723008,1960050687,CN 1960050688,1960058879,KR +1960058880,1960067071,VN 1960067072,1960069119,AU 1960069120,1960071167,ID 1960071168,1960075263,TW @@ -52533,7 +60456,10 @@ 1960091648,1960095743,CN 1960095744,1960097791,IN 1960097792,1960099839,BD -1960099840,1960128511,AU +1960099840,1960121343,AU +1960121344,1960122367,JP +1960122368,1960124415,ID +1960124416,1960128511,AU 1960128512,1960132607,ID 1960132608,1960181759,CN 1960181760,1960185855,TW @@ -52552,8 +60478,14 @@ 1960574976,1960837119,JP 1960837120,1961885695,CN 1961885696,1961951231,AU +1961951232,1962016767,TW 1962016768,1962541055,CN -1962541056,1962672127,AU +1962541056,1962622975,AU +1962622976,1962639359,CN +1962639360,1962658815,NZ +1962658816,1962659839,HK +1962659840,1962663935,SG +1962663936,1962672127,HK 1962672128,1962803199,CN 1962803200,1962827775,JP 1962827776,1962829823,ID @@ -52561,6 +60493,7 @@ 1962831872,1962835967,ID 1962835968,1962868735,CN 1962868736,1962885119,AU +1962885120,1962901503,KR 1962901504,1962934271,CN 1962934272,1963458559,VN 1963458560,1963982847,CN @@ -52573,6 +60506,7 @@ 1964126464,1964130303,SG 1964130304,1964134399,HK 1964134400,1964136447,NZ +1964136448,1964138495,JP 1964138496,1964146687,HK 1964146688,1964171263,JP 1964171264,1964173311,BD @@ -52587,6 +60521,7 @@ 1964261376,1964263423,AU 1964263424,1964265471,JP 1964265472,1964269567,KR +1964269568,1964273663,JP 1964273664,1964275711,KH 1964275712,1964277759,GU 1964277760,1964294143,SG @@ -52595,7 +60530,9 @@ 1965948928,1966014463,JP 1966014464,1966079999,TH 1966080000,1966342143,CN +1966342144,1966407679,KR 1966407680,1966417919,JP +1966417920,1966419967,IN 1966419968,1966424063,CN 1966424064,1966440447,KR 1966440448,1966444543,AU @@ -52646,6 +60583,7 @@ 1969707008,1969709055,MH 1969709056,1969713151,TW 1969713152,1969715199,AU +1969715200,1969717247,IN 1969717248,1969721343,CN 1969721344,1969725439,HK 1969725440,1969727487,JP @@ -52671,6 +60609,7 @@ 1970800640,1970804735,AU 1970804736,1970806783,KH 1970806784,1970808831,NZ +1970808832,1970810879,AU 1970810880,1970812927,JP 1970812928,1970814975,LK 1970814976,1970915327,CN @@ -52697,6 +60636,7 @@ 1984118784,1984131071,JP 1984131072,1984135167,CN 1984135168,1984151551,KR +1984151552,1984153599,NZ 1984153600,1984155647,KH 1984155648,1984159743,AU 1984159744,1984167935,IN @@ -52704,14 +60644,14 @@ 1984430080,1985085439,CN 1985085440,1985093631,ID 1985093632,1985097727,AU -1985101824,1985118207,JP +1985097728,1985118207,JP 1985118208,1985150975,NZ 1985150976,1985216511,JP 1985216512,1985347583,CN 1985347584,1985478655,JP 1985478656,1985480703,IN 1985480704,1985482751,PH -1985482752,1985484799,AU +1985482752,1985486847,AU 1985486848,1985609727,CN 1985609728,1985675263,NZ 1985675264,1985708031,KR @@ -52747,8 +60687,10 @@ 1986525184,1986527231,BN 1986527232,1986723839,JP 1986723840,1986740223,AU +1986740224,1986756607,VN 1986756608,1986760703,PK 1986760704,1986762751,AU +1986762752,1986764799,JP 1986764800,1986768895,KR 1986768896,1986772991,AU 1986772992,1986789375,MY @@ -52758,7 +60700,9 @@ 1988083712,1988362239,KR 1988362240,1988624383,CN 1988624384,1988755455,ID -1988755456,1988886527,AU +1988755456,1988861951,AU +1988861952,1988870143,SG +1988870144,1988886527,KR 1988886528,1989148671,HK 1989148672,1989410815,CN 1989410816,1989541887,NZ @@ -52774,7 +60718,8 @@ 1991245824,1991311359,KR 1991311360,1991376895,JP 1991376896,1991442431,CN -1991442432,1991507967,BD +1991442432,1991499775,BD +1991499776,1991507967,NC 1991507968,1993342975,CN 1993342976,1993605119,AU 1993605120,1993736191,CN @@ -52796,6 +60741,7 @@ 1996644352,1996652543,BT 1996652544,1997176831,CN 1997176832,1997180927,AU +1997180928,1997185023,HK 1997185024,1997187071,JP 1997187072,1997189119,HK 1997189120,1997191167,ID @@ -52805,9 +60751,11 @@ 1997275136,1997406207,AU 1997406208,1997471743,TW 1997471744,1997479935,NZ -1997488128,1997490175,AU +1997479936,1997488127,JP +1997488128,1997492223,AU 1997492224,1997496319,KH 1997496320,1997500415,AU +1997500416,1997504511,JP 1997504512,1997506559,ID 1997506560,1997508607,CN 1997508608,1997510655,JP @@ -52815,10 +60763,14 @@ 1997512704,1997520895,VN 1997520896,1997537279,TW 1997537280,1997602815,CN -1997602816,1997635583,KR -1997635584,1997643775,AU +1997602816,1997611007,KR +1997611008,1997619199,AU +1997619200,1997635583,KR +1997635584,1997651967,AU 1997651968,1997668351,VN -1997668352,1997684735,AU +1997668352,1997680639,AU +1997680640,1997684735,IN +1997684736,1997701119,KR 1997701120,1997705215,VN 1997705216,1997707263,BD 1997707264,1997709311,ID @@ -52833,6 +60785,7 @@ 1998290944,1998299135,PH 1998299136,1998454783,CN 1998454784,1998456831,AU +1998456832,1998458879,JP 1998458880,1998462975,TW 1998462976,1998467071,BD 1998467072,1998471167,CN @@ -52845,6 +60798,7 @@ 1998565376,1998569471,TW 1998569472,1998577663,CN 1998577664,1998579711,AU +1998579712,1998581759,SG 1998581760,1998585855,KR 1998585856,1999130623,CN 1999130624,1999134719,BD @@ -52852,6 +60806,7 @@ 1999136768,1999138815,AU 1999138816,1999142911,MY 1999142912,1999249407,CN +1999249408,1999257599,PH 1999257600,1999276031,TH 1999276032,1999278079,CN 1999278080,1999280127,HK @@ -52870,12 +60825,14 @@ 1999601664,1999634431,JP 1999634432,2000158719,CN 2000158720,2000191487,SG +2000191488,2000224255,KR 2000224256,2000355327,CN 2000355328,2000371711,KR 2000371712,2000373759,JP 2000373760,2000375807,HK 2000375808,2000377855,AF 2000377856,2000379903,JP +2000379904,2000388095,TH 2000388096,2000617471,CN 2000617472,2000621567,PH 2000621568,2000625663,JP @@ -52884,7 +60841,7 @@ 2000642048,2000646143,HK 2000646144,2000650239,JP 2000650240,2000654335,PK -2000658432,2000668671,JP +2000654336,2000668671,JP 2000668672,2000674815,AU 2000674816,2001207295,KR 2001207296,2001272831,JP @@ -52901,12 +60858,12 @@ 2001567744,2001600511,TW 2001600512,2001862655,CN 2001862656,2001864703,AU -2001866752,2001870847,JP +2001864704,2001870847,JP 2001870848,2001879039,KR 2001879040,2001895423,IN 2001895424,2001899519,VN 2001899520,2001901567,AU -2001903616,2001915903,JP +2001901568,2001915903,JP 2001915904,2001919999,BD 2001920000,2001926143,ID 2001926144,2001928191,KH @@ -52943,8 +60900,7 @@ 2007031808,2007035903,AU 2007035904,2007039999,TW 2007040000,2007048191,KR -2007048192,2007052287,AU -2007056384,2007064575,AU +2007048192,2007064575,AU 2007064576,2007066623,MY 2007066624,2007070719,JP 2007070720,2007072767,US @@ -52952,7 +60908,9 @@ 2007498752,2008023039,JP 2008023040,2009071615,CN 2009071616,2011168767,KR -2011168768,2011234303,NZ +2011168768,2011205631,NZ +2011205632,2011209727,AU +2011209728,2011234303,JP 2011234304,2011299839,AU 2011299840,2011430911,IN 2011430912,2011693055,JP @@ -52963,7 +60921,8 @@ 2011897856,2011899903,NZ 2011899904,2011901951,HK 2011901952,2011906047,IN -2011906048,2011922431,FJ +2011906048,2011916287,FJ +2011916288,2011922431,JP 2011922432,2011938815,CN 2011938816,2011942911,KR 2011942912,2011947007,ID @@ -52975,22 +60934,24 @@ 2012610560,2012741631,HK 2012741632,2013003775,CN 2013003776,2013011967,AU +2013011968,2013020159,JP 2013020160,2013028351,AU -2013028352,2013030399,TH +2013028352,2013030399,CN 2013030400,2013032447,ID 2013032448,2013036543,FM 2013036544,2013038591,ID 2013038592,2013040639,HK 2013040640,2013044735,IN 2013044736,2013048831,ID -2013048832,2013050879,AU +2013048832,2013052927,AU 2013052928,2013061119,IN 2013061120,2013065215,PG -2013069312,2014314495,CN +2013065216,2014314495,CN 2014314496,2014838783,AU 2014838784,2015100927,CN 2015100928,2015166463,PH 2015166464,2015182847,AU +2015182848,2015199231,PH 2015199232,2015203327,KR 2015203328,2015205375,JP 2015205376,2015207423,ID @@ -53004,13 +60965,13 @@ 2015223760,2015223807,CA 2015223808,2015225855,ID 2015225856,2015227903,IN -2015227904,2015229951,AU +2015227904,2015231999,AU 2015232000,2016542719,CN 2016542720,2016550911,BD 2016550912,2016555007,SG 2016555008,2016559103,MY 2016559104,2016583679,KR -2016583680,2016585727,JP +2016583680,2016587775,JP 2016587776,2016589823,BD 2016589824,2016591871,VN 2016591872,2016673791,JP @@ -53032,12 +60993,15 @@ 2019035136,2019037183,CN 2019037184,2019041279,JP 2019041280,2019045375,IN -2019049472,2019057663,AU -2019065856,2019082239,AU +2019045376,2019049471,JP +2019049472,2019078143,AU +2019078144,2019082239,IN +2019082240,2019098623,HK 2019098624,2019115007,PH 2019115008,2019117055,US 2019117056,2019119103,IN 2019119104,2019121151,NZ +2019121152,2019123199,ID 2019123200,2019131391,NP 2019131392,2019164159,JP 2019164160,2019360767,CN @@ -53046,6 +61010,7 @@ 2019557376,2021654527,TW 2021654528,2022178815,CN 2022178816,2022180863,NZ +2022180864,2022182911,JP 2022182912,2022184959,ID 2022184960,2022187007,KH 2022187008,2022187071,US @@ -53110,6 +61075,7 @@ 2033623040,2033625087,PH 2033625088,2033627135,HK 2033627136,2033629183,NZ +2033629184,2033631231,JP 2033631232,2033647615,KR 2033647616,2033663999,CN 2033664000,2033696767,KR @@ -53150,6 +61116,7 @@ 2036600832,2036604927,ID 2036604928,2036609023,SG 2036609024,2036611071,AF +2036611072,2036613119,JP 2036613120,2036629503,KR 2036629504,2036662271,CN 2036662272,2036678655,AU @@ -53182,7 +61149,9 @@ 2043199488,2043201535,BD 2043201536,2043203583,JP 2043203584,2043205631,AU +2043205632,2043207679,JP 2043207680,2043211775,AU +2043211776,2043215871,SG 2043215872,2043281407,CN 2043281408,2043412479,HK 2043412480,2043674623,CN @@ -53229,15 +61198,16 @@ 2053340160,2053341183,IN 2053341184,2053373951,KR 2053373952,2053378047,AU -2053378048,2053380095,JP +2053378048,2053382143,JP 2053382144,2053390335,KR 2053390336,2053406719,TW 2053406720,2053439487,MO 2053439488,2053505023,KR 2053505024,2053509119,CN 2053509120,2053511167,AU +2053511168,2053513215,IN 2053513216,2053515263,BD -2053517312,2053519359,ID +2053515264,2053519359,ID 2053519360,2053521407,BD 2053521408,2053529599,CN 2053529600,2053533695,AU @@ -53261,10 +61231,13 @@ 2055241728,2055274495,KR 2055274496,2055290879,AU 2055290880,2055299071,PK -2055299072,2055307263,ID +2055299072,2055305215,ID +2055305216,2055307263,MY 2055307264,2055315455,AU +2055315456,2055323647,JP 2055323648,2055327743,ID 2055327744,2055329791,KR +2055329792,2055331839,AU 2055331840,2055335935,JP 2055335936,2055340031,KR 2055340032,2055733247,JP @@ -53281,7 +61254,8 @@ 2056519680,2056781823,AU 2056781824,2056794111,JP 2056794112,2056796159,BD -2056798208,2056806399,JP +2056796160,2056806399,JP +2056806400,2056814591,KR 2056814592,2056815167,JP 2056815168,2056815195,HK 2056815196,2056815215,JP @@ -53328,8 +61302,8 @@ 2056847360,2056912895,KR 2056912896,2057043967,TH 2057043968,2057306111,CN -2057306112,2059403263,IN -2059403264,2059665407,CN +2057306112,2059141119,IN +2059141120,2059665407,CN 2059665408,2059796479,JP 2059796480,2059862015,CN 2059862016,2059878399,AU @@ -53345,16 +61319,18 @@ 2059960320,2059964415,AU 2059964416,2059966463,ID 2059966464,2059968511,TW -2059968512,2059972607,AU +2059968512,2059976703,AU 2059976704,2059995135,JP 2059995136,2059997183,VN 2059997184,2060001279,MN 2060001280,2060005375,HK +2060005376,2060009471,CN 2060009472,2060025855,AU 2060025856,2060058623,TW +2060058624,2060062719,AU 2060062720,2060066815,JP 2060066816,2060075007,KR -2060075008,2060079103,AU +2060075008,2060083199,AU 2060083200,2060091391,PH 2060091392,2060189695,KR 2060189696,2060451839,CN @@ -53365,6 +61341,7 @@ 2063081472,2063085567,BD 2063085568,2063089663,CN 2063089664,2063097855,JP +2063097856,2063106047,MM 2063106048,2063106559,SG 2063106560,2063106815,JP 2063106816,2063107423,SG @@ -53393,6 +61370,7 @@ 2063114328,2063116287,JP 2063116288,2063116319,SG 2063116320,2063122431,JP +2063122432,2063138815,SG 2063138816,2063335423,JP 2063335424,2063341567,AU 2063341568,2063351807,AP @@ -53400,8 +61378,10 @@ 2063368192,2063370239,AP 2063370240,2063372287,JP 2063372288,2063374335,AP +2063374336,2063376383,NZ 2063376384,2063380479,TW 2063380480,2063382527,KH +2063382528,2063384575,NZ 2063384576,2063392767,KR 2063392768,2063400959,IN 2063400960,2063466495,JP @@ -53415,11 +61395,13 @@ 2063556608,2063564799,MY 2063564800,2063597567,JP 2063597568,2063601663,KR +2063601664,2063605759,BD 2063605760,2063613951,TW 2063613952,2063630335,JP 2063630336,2063646719,CN 2063646720,2063663103,TW 2063663104,2063695871,JP +2063695872,2063728639,HK 2063728640,2063859711,AU 2063859712,2064646143,CN 2064646144,2065694719,VN @@ -53432,6 +61414,7 @@ 2066882560,2066890751,TW 2066890752,2066907135,PF 2066907136,2066915327,AU +2066915328,2066923519,CN 2066923520,2066939903,JP 2066939904,2066972671,AU 2066972672,2067005439,TW @@ -53446,6 +61429,7 @@ 2070159360,2070167551,AU 2070167552,2070183935,NZ 2070183936,2070192127,AU +2070192128,2070200319,KR 2070200320,2070208511,JP 2070208512,2070209023,MY 2070209024,2070209535,SG @@ -53460,7 +61444,11 @@ 2070216704,2070282239,CN 2070282240,2070347775,AU 2070347776,2070380543,CN -2070380544,2070677503,JP +2070380544,2070396927,JP +2070396928,2070405119,AU +2070405120,2070409215,JP +2070409216,2070413311,HK +2070413312,2070677503,JP 2070677504,2070679551,ID 2070679552,2070683647,KR 2070683648,2070691839,IN @@ -53471,6 +61459,7 @@ 2070704128,2070708223,PH 2070708224,2070712319,CN 2070712320,2070714367,NZ +2070714368,2070716415,JP 2070716416,2070724607,KR 2070724608,2070726655,JP 2070726656,2070728703,IN @@ -53499,6 +61488,7 @@ 2075140096,2075144191,IN 2075144192,2075146239,JP 2075146240,2075147263,BD +2075147264,2075148287,CN 2075148288,2075150335,PH 2075150336,2075152383,WS 2075152384,2075156479,CN @@ -53549,6 +61539,8 @@ 2080243712,2080260095,JP 2080260096,2080268287,KR 2080268288,2080270335,AP +2080270336,2080272383,HK +2080272384,2080276479,AU 2080276480,2080309247,KR 2080309248,2080325631,NZ 2080325632,2080342015,HK @@ -53567,6 +61559,7 @@ 2080800768,2080817151,PH 2080817152,2080825343,NZ 2080825344,2080829439,BD +2080829440,2080833535,LK 2080833536,2080899071,IN 2080899072,2081226751,TW 2081226752,2081292287,MY @@ -53587,6 +61580,7 @@ 2083045376,2083053567,AU 2083053568,2083057663,TH 2083057664,2083058687,AU +2083058688,2083059711,IN 2083059712,2083061759,ID 2083061760,2083110911,JP 2083110912,2083127295,NP @@ -53604,7 +61598,9 @@ 2084741120,2084743167,ID 2084743168,2084745215,JP 2084745216,2084749311,KR -2084749312,2084765695,JP +2084749312,2084753407,JP +2084753408,2084757503,KR +2084757504,2084765695,JP 2084765696,2085617663,CN 2085617664,2085683199,KR 2085683200,2085748735,ID @@ -53614,6 +61610,7 @@ 2086141952,2086666239,CN 2086666240,2087190527,JP 2087190528,2087452671,PH +2087452672,2087453695,AU 2087453696,2087454719,KH 2087454720,2087456767,CN 2087456768,2087458815,BD @@ -53662,7 +61659,7 @@ 2090242048,2090246143,JP 2090246144,2090250239,NZ 2090250240,2090270719,JP -2090270720,2090336255,CN +2090270720,2090401791,CN 2090401792,2090418175,ID 2090418176,2090434559,IN 2090434560,2090467327,KR @@ -53670,6 +61667,7 @@ 2090565632,2090582015,TW 2090582016,2090590207,SG 2090590208,2090594303,NZ +2090594304,2090598399,IN 2090598400,2090663935,CN 2090663936,2090680319,AU 2090680320,2090696703,NZ @@ -53717,7 +61715,7 @@ 2094759936,2094792703,JP 2094792704,2096152575,CN 2096152576,2096160767,PG -2096168960,2096234495,JP +2096160768,2096234495,JP 2096234496,2096300031,CN 2096300032,2096332799,KR 2096332800,2096349183,AU @@ -53730,6 +61728,7 @@ 2096611328,2096627711,IN 2096627712,2096660479,CN 2096660480,2096664575,NZ +2096664576,2096668671,JP 2096668672,2096676863,KH 2096676864,2096693247,HK 2096693248,2096889855,CN @@ -53763,11 +61762,13 @@ 2101149696,2101182463,KR 2101182464,2101231615,CN 2101231616,2101239807,AU -2101239808,2101272575,IN +2101239808,2101270527,IN +2101270528,2101272575,KR 2101272576,2101276671,TW 2101276672,2101280767,JP 2101280768,2101288959,AU 2101288960,2101293055,JP +2101293056,2101297151,AU 2101297152,2101313535,IN 2101313536,2101346303,AU 2101346304,2103640063,CN @@ -53872,9 +61873,11 @@ 2113724928,2113725183,IN 2113725184,2113728511,AP 2113728512,2113732607,JP -2113732608,2113765375,AU +2113732608,2113761279,AU +2113761280,2113765375,VN 2113765376,2113798143,HK 2113798144,2113811455,AU +2113811456,2113812479,HK 2113812480,2113813503,JP 2113813504,2113830911,AU 2113830912,2113863679,CN @@ -53921,9 +61924,7 @@ 2159869952,2159935487,CA 2159935488,2160525311,US 2160525312,2160590847,GB -2160590848,2160656383,US -2160656384,2160721919,FR -2160721920,2161508351,US +2160590848,2161508351,US 2161508352,2161573887,FI 2161573888,2162687999,US 2162688000,2162753535,GB @@ -53932,11 +61933,9 @@ 2163212288,2163277823,GB 2163277824,2163288063,US 2163288064,2163290111,A1 -2163290112,2163300351,US -2163300352,2163300607,A1 -2163300608,2163304447,US -2163304448,2163305983,A1 -2163305984,2163408895,US +2163290112,2163304447,US +2163304448,2163306495,A1 +2163306496,2163408895,US 2163408896,2163474431,GB 2163474432,2163605503,US 2163605504,2163671039,CH @@ -54087,9 +62086,9 @@ 2187229472,2187229479,A1 2187229480,2187229607,US 2187229608,2187229615,A1 -2187229616,2187229687,US -2187229688,2187229695,A1 -2187229696,2187230111,US +2187229616,2187229679,US +2187229680,2187229687,A1 +2187229688,2187230111,US 2187230112,2187230143,A1 2187230144,2187232511,US 2187232512,2187232639,A1 @@ -54246,8 +62245,7 @@ 2210136064,2210201599,DE 2210201600,2210594815,US 2210594816,2210660351,CA -2210660352,2210725887,FR -2210725888,2211053567,US +2210660352,2211053567,US 2211053568,2211119103,CA 2211119104,2211184639,NZ 2211184640,2211250175,US @@ -54266,7 +62264,13 @@ 2212495360,2212560895,NL 2212560896,2212691967,US 2212691968,2212757503,GB -2212757504,2212823039,FI +2212757504,2212761599,FI +2212761600,2212762623,GB +2212762624,2212766719,FI +2212766720,2212767743,GB +2212767744,2212810751,FI +2212810752,2212811519,US +2212811520,2212823039,FI 2212823040,2212954111,US 2212954112,2213019647,GB 2213019648,2213085183,CA @@ -54284,13 +62288,7 @@ 2214068224,2214133759,JP 2214133760,2214264831,US 2214264832,2214330367,GB -2214330368,2214396159,US -2214396160,2214396415,CA -2214396416,2214396671,US -2214396672,2214396927,CA -2214396928,2214397183,US -2214397184,2214397695,CA -2214397696,2214397951,US +2214330368,2214397951,US 2214397952,2214398207,CA 2214398208,2214398975,US 2214398976,2214400767,CA @@ -54369,7 +62367,15 @@ 2249781256,2249785343,US 2249785344,2249850879,SE 2249850880,2249916415,US -2249916416,2249981951,NL +2249916416,2249924863,NL +2249924864,2249925119,US +2249925120,2249928703,NL +2249928704,2249930751,US +2249930752,2249931775,NL +2249931776,2249932799,US +2249932800,2249932927,NL +2249932928,2249933055,BR +2249933056,2249981951,NL 2249981952,2250047487,DE 2250047488,2250113023,US 2250113024,2250178559,DE @@ -54387,7 +62393,8 @@ 2251948032,2252013567,BE 2252013568,2252079103,FR 2252079104,2252210175,DE -2252210176,2253062143,US +2252210176,2252931071,US +2252996608,2253062143,US 2253062144,2253127679,KR 2253127680,2253193215,DE 2253193216,2253455359,US @@ -54742,7 +62749,8 @@ 2301820928,2302083071,US 2302083072,2302214143,NL 2302214144,2302279679,US -2302279680,2302541823,SE +2302279680,2302345215,SE +2302410752,2302541823,SE 2302541824,2302607359,CH 2302672896,2302935039,US 2302935040,2303000575,KR @@ -54758,7 +62766,7 @@ 2304573440,2304638975,NO 2304638976,2304704511,CA 2304704512,2304770047,US -2304770048,2304835583,SE +2304770048,2304835583,FI 2304835584,2305097727,US 2305097728,2305163263,GB 2305163264,2305359871,US @@ -54957,9 +62965,12 @@ 2331770880,2331836415,AU 2331836416,2331901951,GB 2331901952,2331967487,US -2332033024,2332622847,DE +2332033024,2332098559,ID +2332098560,2332622847,DE +2332622848,2332688383,CN 2332688384,2332753919,NL -2332753920,2334064639,DE +2332753920,2333868031,DE +2333933568,2334064639,DE 2334064640,2334916607,US 2334916608,2334982143,AU 2334982144,2335178751,US @@ -54975,7 +62986,7 @@ 2335899648,2335965183,AU 2335965184,2336161791,US 2336161792,2336227327,NL -2336227328,2336358399,US +2336292864,2336358399,US 2336358400,2336423935,FI 2336423936,2336882687,US 2336882688,2336948223,FI @@ -55013,6 +63024,7 @@ 2338455552,2338521087,NO 2338521088,2338586623,US 2338586624,2338652159,FR +2338652160,2338717695,JP 2338717696,2338783231,US 2338783232,2338848767,CA 2338848768,2338914303,US @@ -55023,6 +63035,7 @@ 2340159488,2340225023,FR 2340225024,2340421631,US 2340421632,2340487167,IT +2340487168,2340552703,CN 2340552704,2340618239,AU 2340618240,2340683775,US 2340683776,2340749311,AU @@ -55035,14 +63048,18 @@ 2341470208,2341535743,US 2341535744,2341601279,NO 2341601280,2341732351,US +2341732352,2341797887,CN 2341797888,2341863423,GB +2341863424,2341928959,KR 2341928960,2341994495,US 2341994496,2342060031,JP 2342060032,2342125567,GB 2342125568,2342191103,JP +2342191104,2342256639,CN 2342256640,2342322175,NL 2342322176,2342387711,FI 2342387712,2342453247,FR +2342453248,2342518783,CN 2342518784,2342584319,FR 2342584320,2342649855,US 2342649856,2342715391,NL @@ -55053,10 +63070,12 @@ 2342977536,2343043071,US 2343043072,2343108607,AU 2343108608,2343174143,US +2343174144,2343239679,CN 2343239680,2343370751,US 2343370752,2343436287,CA 2343436288,2343501823,DE 2343501824,2343567359,TW +2343567360,2343632895,CN 2343632896,2343698431,US 2343698432,2343763967,NL 2343763968,2343829503,TR @@ -55065,17 +63084,32 @@ 2343925760,2343934975,US 2343934976,2343935999,IL 2343936000,2344026111,US +2344026112,2344091647,CN 2344091648,2344157183,GB 2344157184,2344222719,US +2344222720,2344288255,CN 2344288256,2344353791,US 2344353792,2344419327,AU +2344419328,2344484863,CN +2344484864,2344550399,PK 2344550400,2344615935,EU +2344615936,2344878079,ID +2344878080,2346188799,CN +2346188800,2346450943,AU +2346450944,2346582015,CN 2346582016,2346647551,GB 2346647552,2346713087,TW +2346713088,2346778623,CN 2346778624,2346844159,US +2346844160,2346975231,CN +2346975232,2347040767,ID 2347040768,2347106303,US 2347106304,2347171839,AU -2347171840,2353856511,US +2347171840,2348744703,US +2348744704,2348875775,ID +2348875776,2353725439,US +2353725440,2353790975,CN +2353790976,2353856511,US 2353856512,2353922047,FR 2353922048,2353987583,AT 2353987584,2354053119,AU @@ -55099,8 +63133,11 @@ 2355691520,2355757055,IT 2355757056,2355953663,US 2355953664,2357919743,TW -2357919744,2358509567,US +2357919744,2358181887,US +2358181888,2358247423,CN +2358247424,2358509567,US 2358509568,2358575103,MX +2358575104,2358640639,TH 2358640640,2358706175,SE 2358706176,2358771711,FI 2358771712,2359230463,US @@ -55113,9 +63150,7 @@ 2359689216,2359754751,SE 2359754752,2359820287,CA 2359820288,2359885823,AU -2359885824,2360215807,US -2360215808,2360216063,A1 -2360216064,2360672255,US +2359885824,2360672255,US 2360672256,2360737791,DE 2360737792,2360868863,US 2360868864,2360934399,CA @@ -55128,9 +63163,19 @@ 2361982976,2362114047,US 2362114048,2362179583,IE 2362179584,2362245119,GB -2362441728,2363883519,US +2362245120,2362441727,CN +2362441728,2362572799,US +2362572800,2362638335,CN +2362638336,2362769407,US +2362769408,2362834943,ID +2362834944,2363490303,US +2363490304,2363555839,CN +2363555840,2363883519,US 2363883520,2363949055,CA -2363949056,2364538879,US +2363949056,2364342271,US +2364342272,2364407807,CN +2364407808,2364538879,US +2364538880,2364604415,CN 2364604416,2364671487,US 2364671488,2364671743,CN 2364671744,2364675839,US @@ -55138,10 +63183,37 @@ 2364676096,2364676863,US 2364676864,2364677119,GB 2364677120,2364735487,US -2364801024,2365390847,US +2364735488,2364801023,CN +2364801024,2364932095,US +2364932096,2364997631,CN +2364997632,2365128703,US +2365128704,2365259775,CN +2365259776,2365390847,US 2365390848,2365456383,AU 2365456384,2365521919,US -2365587456,2366308351,DE +2365521920,2365587455,CN +2365587456,2365589503,JO +2365589504,2365591519,NO +2365591520,2365591551,US +2365591552,2365593599,DE +2365593600,2365595647,NL +2365595648,2365603839,GB +2365603840,2365624319,NO +2365624320,2365630463,GB +2365630464,2365632511,NL +2365632512,2365634559,RU +2365634560,2365636607,FR +2365636608,2365638655,GB +2365638656,2365640703,FR +2365640704,2365644799,GB +2365644800,2365652991,NO +2365652992,2366111743,DE +2366111744,2366144511,MT +2366144512,2366162943,RU +2366162944,2366164991,AL +2366164992,2366167039,GE +2366167040,2366169087,GB +2366169088,2366308351,DE 2366308352,2366373887,GB 2366373888,2367487999,DE 2367488000,2367553535,SI @@ -55158,9 +63230,50 @@ 2371944448,2372009983,GB 2372009984,2372075519,CH 2372075520,2372206591,DE +2372206592,2372214783,UA +2372214784,2372218879,DE +2372218880,2372220927,FR +2372220928,2372222975,KW +2372222976,2372239359,EU +2372239360,2372272127,RU 2372272128,2372337663,US 2372337664,2372403199,ID -2372403200,2372665343,US +2372403200,2372468735,US +2372468736,2372472831,NL +2372472832,2372474367,PL +2372474368,2372474623,US +2372474624,2372474879,GB +2372474880,2372483071,RU +2372483072,2372485119,JO +2372485120,2372487167,RU +2372487168,2372489215,FR +2372489216,2372493311,LB +2372493312,2372497407,ES +2372497408,2372499455,IE +2372499456,2372501503,NL +2372501504,2372505599,UA +2372505600,2372507647,NL +2372507648,2372509695,IT +2372509696,2372511743,AE +2372511744,2372511744,SI +2372511745,2372511998,BA +2372511999,2372512000,SI +2372512001,2372512254,BA +2372512255,2372512256,SI +2372512257,2372512510,BA +2372512511,2372512512,SI +2372512513,2372512766,BA +2372512767,2372512768,SI +2372512769,2372513022,BA +2372513023,2372513024,SI +2372513025,2372513278,BA +2372513279,2372513280,SI +2372513281,2372513534,BA +2372513535,2372513536,SI +2372513537,2372513790,BA +2372513791,2372513791,SI +2372513792,2372534271,GB +2372534272,2372665343,US 2372665344,2372730879,IT 2372730880,2372796415,CA 2372796416,2372993023,US @@ -55179,12 +63292,38 @@ 2374172672,2374238207,US 2374238208,2374303743,AU 2374303744,2374369279,US +2374369280,2374500351,BE +2374500352,2374502399,LV +2374502400,2374504447,MK +2374504448,2374508543,RO +2374508544,2374512639,LT +2374512640,2374514687,SK +2374514688,2374516735,ES +2374516736,2374524927,AM +2374524928,2374529023,FR +2374529024,2374531071,RU +2374531072,2374533119,NL +2374533120,2374565887,HR 2374565888,2374631423,SE +2374631424,2374647807,HR +2374647808,2374651903,BE +2374651904,2374653951,IT +2374653952,2374655999,FR +2374656000,2374664191,UA +2374664192,2374666239,GB +2374666240,2374670335,NL +2374670336,2374672383,FR +2374672384,2374674431,PL +2374674432,2374676479,NL +2374680576,2374684671,NL +2374684672,2374686719,MT +2374686720,2374688767,NL +2374688768,2374696959,GB 2374696960,2374959103,US 2374959104,2375024639,BE 2375024640,2375090175,DK 2375090176,2375155711,NO -2375155712,2375221247,FI +2375155712,2375221247,US 2375221248,2375286783,SE 2375286784,2375352319,CH 2375352320,2376269823,US @@ -55192,6 +63331,11 @@ 2376335360,2376597503,US 2376597504,2376663039,AU 2376663040,2376728575,DE +2376728576,2376761343,GB +2376761344,2376777727,CZ +2376777728,2376781823,BA +2376781824,2376783871,ES +2376785920,2376794111,UA 2376794112,2376859647,CH 2376859648,2376925183,FI 2376925184,2377056255,US @@ -55207,7 +63351,9 @@ 2378170368,2378235903,FI 2378235904,2378301439,US 2378301440,2378366975,FR -2378366976,2378694655,US +2378366976,2378432511,US +2378432512,2378498047,TR +2378498048,2378694655,US 2378694656,2378760191,DE 2378760192,2378825727,AT 2378825728,2378891263,US @@ -55223,7 +63369,9 @@ 2380595200,2380660735,JP 2380660736,2380726271,US 2380726272,2380791807,GB -2380791808,2381381631,US +2380791808,2381119487,US +2381119488,2381185023,GR +2381185024,2381381631,US 2381381632,2381447167,GB 2381447168,2381512703,US 2381512704,2381578239,AU @@ -55236,6 +63384,7 @@ 2382102528,2382168063,NL 2382168064,2382233599,BE 2382233600,2382299135,US +2382299136,2382331903,GR 2382364672,2385430655,CA 2385430656,2385430687,US 2385430688,2385903615,CA @@ -55248,7 +63397,11 @@ 2386988288,2386988543,CH 2386988544,2386989055,CA 2386989056,2386989311,GB -2386989312,2387410943,CA +2386989312,2387003391,CA +2387003392,2387003647,GB +2387003648,2387003903,CA +2387003904,2387004159,GB +2387004160,2387410943,CA 2387410944,2387476479,US 2387476480,2387542015,CA 2387542016,2387607551,US @@ -55350,13 +63503,17 @@ 2415656960,2415722495,GB 2415722496,2415788031,JP 2415788032,2415853567,US +2415919104,2415984639,CN 2415984640,2416050175,JP 2416050176,2416115711,NL 2416115712,2416181247,US 2416181248,2416246783,FI 2416246784,2416312319,US 2416312320,2416377855,AU -2416443392,2416967679,US +2416377856,2416443391,CN +2416443392,2416705535,US +2416705536,2416771071,CN +2416771072,2416967679,US 2416967680,2417033215,IN 2417033216,2417229823,US 2417229824,2417295359,ES @@ -55374,6 +63531,7 @@ 2418737152,2418802687,NL 2418802688,2418868223,EU 2418868224,2419326975,US +2419326976,2419392511,CN 2419392512,2419458047,AU 2419458048,2419523583,NL 2419523584,2419589119,AU @@ -55413,6 +63571,7 @@ 2423783424,2423848959,FJ 2423848960,2423914495,US 2423914496,2423980031,TR +2423980032,2424045567,CN 2424045568,2424111103,GB 2424111104,2424242175,US 2424242176,2424307711,NO @@ -55423,9 +63582,7 @@ 2425487360,2426667007,US 2426667008,2426732543,NO 2426732544,2426798079,FR -2426798080,2426929151,US -2426929152,2426994687,GB -2426994688,2427256831,US +2426798080,2427207679,US 2427256832,2427322367,GB 2427322368,2427453439,US 2427453440,2427584511,NO @@ -55450,14 +63607,21 @@ 2430205952,2430271487,AU 2430271488,2432172031,US 2432172032,2432237567,BE -2432237568,2432696319,US +2432237568,2432630783,US +2432630784,2432696319,CN 2432696320,2433810431,NL 2433810432,2433875967,GB 2433875968,2436300799,NL 2436300800,2436366335,GB 2436366336,2436759551,NL 2436759552,2436825087,GB -2436825088,2447376383,NL +2436825088,2446983167,NL +2446983168,2447015935,EU +2447015936,2447015939,DK +2447015940,2447015943,SE +2447015944,2447015947,GB +2447015948,2447048703,EU +2447048704,2447376383,NL 2447376384,2447441919,GB 2447441920,2447507455,DE 2447507456,2447572991,FR @@ -55466,7 +63630,50 @@ 2447679820,2447679839,IT 2447679840,2447704063,DE 2447704064,2447769599,GB -2447769600,2447835135,DE +2447769600,2447769855,DE +2447769856,2447770111,GB +2447770112,2447775743,DE +2447775744,2447777791,GB +2447777792,2447781887,DE +2447781888,2447782911,GB +2447782912,2447783935,LU +2447783936,2447784959,GB +2447784960,2447785983,LU +2447785984,2447788031,DE +2447788032,2447790079,QA +2447790080,2447792127,DE +2447792128,2447792383,GB +2447792384,2447793919,DE +2447793920,2447794175,QA +2447794176,2447796223,DE +2447796224,2447798271,GB +2447798272,2447801343,DE +2447801344,2447802367,IT +2447802368,2447806463,DE +2447806464,2447808511,HU +2447808512,2447810559,DE +2447810560,2447812607,GB +2447812608,2447813631,HU +2447813632,2447813887,IE +2447813888,2447814143,DE +2447814144,2447814655,GB +2447814656,2447815679,DE +2447815680,2447816191,IT +2447816192,2447816447,GB +2447816448,2447816703,DE +2447816704,2447817727,GB +2447817728,2447821055,DE +2447821056,2447821311,QA +2447821312,2447821823,GB +2447821824,2447824895,IT +2447824896,2447826943,DE +2447826944,2447827967,GB +2447827968,2447830015,DE +2447830016,2447830527,IT +2447830528,2447833087,DE +2447833088,2447833599,GB +2447833600,2447834111,DE +2447834112,2447835135,IT 2447835136,2447900671,FR 2447900672,2447966207,CH 2447966208,2448031743,GB @@ -55519,7 +63726,7 @@ 2453864448,2453929983,CH 2453929984,2454061055,US 2454061056,2454126591,GB -2454126592,2454192127,US +2454159360,2454192127,US 2454192128,2454257663,NO 2454257664,2454388735,US 2454388736,2454454271,SE @@ -55649,7 +63856,6 @@ 2468151296,2468189663,DK 2468189664,2468189695,GB 2468189696,2468216831,DK -2468216832,2468282367,EU 2468282368,2468347903,US 2468347904,2468478975,CZ 2468478976,2468937727,US @@ -55878,23 +64084,27 @@ 2514419712,2514485247,GB 2514485248,2514514431,DE 2514514432,2514514687,NL -2514514688,2515599359,DE -2515599360,2515664895,EU -2515664896,2516254719,DE +2514514688,2516254719,DE 2516254720,2516320255,FR 2516320256,2516451327,US 2516451328,2516516863,GB -2516582400,2523201535,JP +2516582400,2516647935,CN +2516647936,2523201535,JP 2523201536,2523267071,AU 2523267072,2523529215,US 2523529216,2523594751,NO -2523594752,2523660287,AT -2523660288,2524971007,US +2523660288,2524119039,US +2524119040,2524184575,CN +2524184576,2524315647,TW +2524315648,2524512255,US +2524512256,2524643327,CN +2524643328,2524971007,US 2524971008,2525036543,ES 2525036544,2525102079,EU 2525102080,2525233151,US 2525233152,2525298687,SE 2525298688,2525626367,US +2525626368,2525757439,CN 2525757440,2525822975,GR 2525822976,2526085119,US 2526085120,2526216191,IT @@ -55930,7 +64140,9 @@ 2530607104,2530672639,ES 2530672640,2530803711,US 2530803712,2530869247,IT -2530869248,2531459071,US +2530869248,2531196927,US +2531196928,2531262463,CN +2531262464,2531459071,US 2531459072,2531524607,SE 2531524608,2531590143,US 2531590144,2531655679,AU @@ -55939,13 +64151,13 @@ 2532114432,2532179967,GB 2532179968,2532376575,US 2532376576,2532442111,ES -2532442112,2532507647,FR 2532507648,2532573183,US 2532573184,2532638719,ES 2532638720,2533031935,US 2533031936,2533097471,BE 2533097472,2533228543,US 2533228544,2533294079,PL +2533294080,2533359615,CN 2533359616,2539978751,IT 2539978752,2540240895,US 2540240896,2540306431,FI @@ -56006,7 +64218,6 @@ 2555641856,2555707391,BR 2555707392,2555903999,US 2555904000,2555969535,CH -2555969536,2556035071,FR 2556035072,2556100607,NO 2556100608,2556166143,AU 2556166144,2556231679,BR @@ -56045,8 +64256,10 @@ 2561671168,2564947967,US 2564947968,2565013503,SG 2565013504,2565210111,US +2566914048,2566979583,CN 2566979584,2567045119,FI 2567045120,2567110655,US +2567110656,2567176191,CN 2567176192,2567241727,US 2567241728,2567307263,SI 2567307264,2567897087,US @@ -56056,7 +64269,9 @@ 2568093696,2568159231,US 2568159232,2568224767,PL 2568224768,2568290303,SG -2568290304,2569601023,US +2568290304,2569142271,US +2569142272,2569404415,CN +2569404416,2569601023,US 2569601024,2569666559,CA 2569666560,2569797631,US 2569797632,2569863167,NO @@ -56072,7 +64287,10 @@ 2572944896,2572945919,EU 2572945920,2572946175,DE 2572946176,2573008895,EU -2573008896,2573533183,DE +2573008896,2573402111,DE +2573402112,2573467647,CN +2573467648,2573533183,DE +2573533184,2573598719,CN 2573598720,2573926399,US 2573926400,2573991935,AU 2573991936,2574123007,CH @@ -56082,16 +64300,16 @@ 2574315008,2574315263,NO 2574315264,2574319615,SE 2574319616,2574647295,US -2583691264,2584018943,US -2584018944,2584084479,CA -2584084480,2584215551,US +2574647296,2574778367,CN +2574778368,2583691263,JP +2583691264,2584215551,US 2584215552,2584281087,GB 2584281088,2584346623,US 2584346624,2584412159,KR 2584412160,2584477695,CA 2584477696,2584608767,US -2584608768,2584805375,CH -2584805376,2585001983,US +2584608768,2584739839,CH +2584739840,2585001983,US 2585001984,2585067519,CA 2585067520,2585788415,US 2585788416,2585853951,GB @@ -56253,7 +64471,10 @@ 2627010560,2627076095,NZ 2627076096,2627141631,NL 2627141632,2627469311,US -2634022912,2635399167,JP +2634022912,2634088447,CN +2634088448,2635202559,JP +2635202560,2635268095,CN +2635268096,2635399167,JP 2635399168,2635530239,US 2635530240,2635595775,FR 2635595776,2635661311,FI @@ -56263,6 +64484,7 @@ 2635988992,2636120063,US 2636120064,2637561855,ID 2637561856,2638020607,US +2638020608,2638086143,CN 2638086144,2638151679,US 2638151680,2639462399,JP 2639462400,2639593471,GB @@ -56282,6 +64504,7 @@ 2640576512,2640642047,EC 2640642048,2641952767,JP 2641952768,2642018303,US +2642018304,2642083839,CN 2642083840,2642149375,US 2642149376,2642214911,FI 2642214912,2642280447,SE @@ -56297,8 +64520,11 @@ 2643197952,2643263487,GB 2643263488,2643460095,US 2643460096,2643525631,FI -2643525632,2644180991,US +2643525632,2643722239,US +2643722240,2643787775,CN +2643787776,2644180991,US 2644180992,2644246527,AU +2644246528,2644312063,CN 2644312064,2644377599,IS 2644377600,2644443135,PL 2644443136,2644508671,FR @@ -56353,6 +64579,7 @@ 2650406912,2650603519,US 2650603520,2650669055,CO 2650669056,2650734591,US +2650734592,2650800127,CN 2650800128,2653159423,US 2653159424,2653421567,NO 2653421568,2653487103,AU @@ -56365,7 +64592,6 @@ 2653945856,2654011391,US 2654011392,2654076927,ES 2654076928,2654142463,FR -2654142464,2654207999,CA 2654208000,2654339071,US 2654339072,2654404607,AU 2654404608,2654994431,US @@ -56564,7 +64790,12 @@ 2678652928,2678718463,US 2678718464,2678783999,GB 2678784000,2678849535,NO -2678849536,2678915071,US +2678849536,2678885375,US +2678885376,2678885631,GB +2678885632,2678885887,DE +2678885888,2678886143,US +2678886144,2678886399,NL +2678886400,2678915071,US 2678915072,2678980607,FR 2678980608,2679046143,US 2679046144,2679111679,CA @@ -56636,7 +64867,9 @@ 2686910464,2686975999,US 2686976000,2687041535,GR 2687041536,2687238143,US -2687238144,2687299119,DE +2687238144,2687297824,DE +2687297825,2687297828,FR +2687297829,2687299119,DE 2687299120,2687299127,US 2687299128,2687299135,CN 2687299136,2687762431,DE @@ -56879,6 +65112,7 @@ 2727018496,2727084031,CA 2727084032,2727346175,US 2727346176,2727608319,AU +2734686208,2734751743,CN 2734751744,2734817279,GB 2734817280,2734882815,US 2734882816,2734948351,SE @@ -56904,10 +65138,13 @@ 2742681600,2742747135,IN 2742747136,2742779903,CA 2742812672,2742878207,US +2742878208,2742943743,CN 2742943744,2743009279,US 2743009280,2743140351,AU 2743140352,2743205887,US -2743205888,2744516607,JP +2743205888,2743992319,JP +2743992320,2744057855,CN +2744057856,2744516607,JP 2744516608,2744647679,US 2744647680,2744713215,KR 2744713216,2744844287,US @@ -56930,15 +65167,24 @@ 2746089472,2746155007,NO 2746155008,2746220543,NL 2746220544,2746286079,US +2746286080,2746351615,CN 2746351616,2746417151,CR +2746417152,2746482687,CN 2746482688,2746548223,KR 2746548224,2747072511,US 2747072512,2747138047,AU 2747138048,2747465727,US 2747465728,2748055551,ZA -2748055552,2748317695,US -2748317696,2749628415,JP -2749628416,2749890559,US +2748055552,2748121087,CN +2748121088,2748317695,US +2748317696,2748645375,JP +2748645376,2748710911,KR +2748710912,2749235199,JP +2749235200,2749300735,KR +2749300736,2749628415,JP +2749628416,2749693951,US +2749693952,2749759487,KR +2749759488,2749890559,US 2749890560,2750021631,AU 2750021632,2750349311,US 2750349312,2750414847,KR @@ -56946,7 +65192,8 @@ 2750873600,2750939135,CL 2750939136,2751070207,US 2751070208,2751135743,CL -2751135744,2751463423,US +2751135744,2751397887,US +2751397888,2751463423,KR 2751528960,2751660031,FR 2751660032,2751725567,AT 2751725568,2751791103,SE @@ -57028,7 +65275,6 @@ 2760245248,2760310783,GB 2760310784,2760376319,SE 2760376320,2760507391,GB -2760507392,2760572927,FR 2760572928,2760638463,DE 2760638464,2760703999,NL 2760704000,2760769535,FI @@ -57124,14 +65370,14 @@ 2780926272,2780926303,FR 2780926304,2780926319,IT 2780926320,2780926327,GB -2780926328,2780926823,US -2780926824,2780926847,GB -2780926848,2780926975,US +2780926328,2780926335,US +2780926336,2780926367,GB +2780926368,2780926823,US +2780926824,2780926879,GB +2780926880,2780926975,US 2780926976,2780927487,GB 2780927488,2780927743,US -2780927744,2780927999,GB -2780928000,2780928031,US -2780928032,2780928127,GB +2780927744,2780928127,GB 2780928128,2780928383,US 2780928384,2780928415,GB 2780928416,2780928447,US @@ -57177,7 +65423,9 @@ 2780946128,2780946135,CA 2780946136,2780947903,US 2780947904,2780947967,MY -2780947968,2780952967,US +2780947968,2780948815,US +2780948816,2780948823,MY +2780948824,2780952967,US 2780952968,2780952975,GB 2780952976,2780954623,US 2780954624,2781020159,KR @@ -57235,7 +65483,11 @@ 2788243472,2788243487,SG 2788243488,2788245007,US 2788245008,2788245023,CA -2788245024,2788261887,US +2788245024,2788247863,US +2788247864,2788247871,GB +2788247872,2788253183,US +2788253184,2788253191,JP +2788253192,2788261887,US 2788261888,2788294655,GB 2788294656,2789212159,US 2789212160,2789277695,AU @@ -57325,8 +65577,8 @@ 2815164416,2815229951,US 2815229952,2815295487,ID 2815295488,2815984639,US -2815984640,2815985407,IL -2815985408,2815985663,US +2815984640,2815985151,IL +2815985152,2815985663,US 2815985664,2815986687,IL 2815986688,2815986815,GB 2815986816,2815986831,US @@ -57501,13 +65753,14 @@ 2848522240,2848587775,AU 2848587776,2848653311,ZA 2848653312,2848980991,US -2848980992,2849177855,AU +2848980992,2849177855,KR 2849177856,2849178111,CN -2849178112,2849178367,KR -2849178368,2849178623,AU +2849178112,2849178623,KR 2849178624,2849178879,ID 2849178880,2849179135,VN -2849179136,2849964031,AU +2849179136,2849898495,KR +2849898496,2849898751,AU +2849898752,2849964031,KR 2849964032,2850029567,PH 2850029568,2851995647,US 2852126720,2853306367,US @@ -57516,7 +65769,7 @@ 2853765120,2853830655,MX 2853830656,2854617087,US 2854617088,2854682623,MY -2854682624,2855469055,US +2854748160,2855469055,US 2855469056,2855534591,AR 2855534592,2856058879,US 2856058880,2856124415,CH @@ -57550,6 +65803,10 @@ 2867855360,2868117503,US 2868379648,2868772863,US 2868838400,2868903935,BE +2868903936,2869035007,SG +2869035008,2869166079,JP +2869166080,2869428223,TH +2869428224,2869952511,CN 2869952512,2870018047,FR 2870018048,2870083583,DE 2870083584,2870149119,FR @@ -57568,8 +65825,17 @@ 2870935552,2871001087,HU 2871001088,2871066623,SE 2871066624,2871083007,CH -2873098240,2874146815,US -2877292544,2885681151,US +2871132160,2872049663,CN +2872049664,2873098239,IN +2873098240,2873884671,US +2873884672,2874146815,IN +2874146816,2875195391,CN +2875195392,2875719679,TH +2875719680,2877292543,CN +2877292544,2882469887,US +2882469888,2882535423,SG +2882535424,2883583999,CN +2883584000,2885681151,VN 2894069760,2894921727,US 2894921728,2895118335,GB 2895118336,2895301887,US @@ -57596,9 +65862,49 @@ 2899443712,2899574783,FR 2899574784,2899902463,GB 2902458368,2902462463,A1 -2902462464,2902470936,US +2902462464,2902470775,US +2902470776,2902470777,BD +2902470778,2902470936,US 2902470937,2902470938,LK -2902470939,2902507519,US +2902470939,2902470986,US +2902470987,2902470989,BD +2902470990,2902471468,US +2902471469,2902471470,AU +2902471471,2902471895,US +2902471896,2902471897,AU +2902471898,2902471960,US +2902471961,2902471962,AU +2902471963,2902472018,US +2902472019,2902472021,AL +2902472022,2902472037,US +2902472038,2902472039,AU +2902472040,2902472725,US +2902472726,2902472728,BD +2902472729,2902472788,US +2902472789,2902472790,LK +2902472791,2902472813,US +2902472814,2902472814,LK +2902472815,2902472834,US +2902472835,2902472836,BD +2902472837,2902473028,US +2902473029,2902473031,IN +2902473032,2902473107,US +2902473108,2902473109,BD +2902473110,2902473556,US +2902473557,2902473558,LK +2902473559,2902473649,US +2902473650,2902473650,BD +2902473651,2902473652,US +2902473653,2902473653,BD +2902473654,2902474023,US +2902474024,2902474032,RU +2902474033,2902474062,US +2902474063,2902474073,RU +2902474074,2902475263,US +2902475264,2902475327,CY +2902475328,2902492671,US +2902492672,2902493183,IN +2902493184,2902507519,US 2902507520,2902515711,CA 2902515712,2904555519,US 2904555520,2904817663,CA @@ -57608,7 +65914,9 @@ 2905378304,2905378815,CA 2905378816,2905379071,US 2905379072,2905379583,CA -2905379584,2905381887,US +2905379584,2905380607,US +2905380608,2905380863,CA +2905380864,2905381887,US 2905381888,2905382016,CA 2905382017,2905384959,US 2905384960,2905385471,CA @@ -57628,24 +65936,34 @@ 2905428968,2905428975,AE 2905428976,2905432975,US 2905432976,2905432983,AE -2905432984,2905449983,US +2905432984,2905441535,US +2905441536,2905441791,DE +2905441792,2905446655,US +2905446656,2905446911,DE +2905446912,2905449983,US 2905449984,2905451007,CA 2905451008,2905451519,US 2905451520,2905451647,PA -2905451648,2905451775,US -2905451776,2905451903,PA -2905451904,2905473023,US +2905451648,2905473023,US 2905473024,2905481215,CA 2905481216,2913992703,US 2913992704,2914516991,CA 2914516992,2915250175,US 2915250176,2915254271,CA -2915254272,2915765279,US +2915254272,2915274751,US +2915274752,2915274815,PL +2915274816,2915275007,US +2915275008,2915275071,PL +2915275072,2915275263,US +2915275264,2915275327,PL +2915275328,2915516671,US +2915516672,2915516927,CA +2915516928,2915765279,US 2915765280,2915765287,IN 2915765288,2915765343,US 2915765344,2915765351,NZ 2915765352,2915765367,US -2915765368,2915765375,PE +2915765368,2915765375,ZA 2915765376,2915765431,US 2915765432,2915765439,MX 2915765440,2915765471,US @@ -57677,7 +65995,7 @@ 2915767904,2915768191,US 2915768192,2915768199,GB 2915768200,2915768303,US -2915768304,2915768311,IL +2915768304,2915768311,MX 2915768312,2915768359,US 2915768360,2915768367,GB 2915768368,2915768375,US @@ -57698,15 +66016,29 @@ 2915769240,2915769247,CA 2915769248,2915769295,US 2915769296,2915769303,BR -2915769304,2915772671,US +2915769304,2915770167,US +2915770168,2915770175,BR +2915770176,2915770255,US +2915770256,2915770263,CA +2915770264,2915770279,JE +2915770280,2915770311,US +2915770312,2915770319,MX +2915770320,2915771103,US +2915771104,2915771135,CA +2915771136,2915772671,US 2915772672,2915772679,IN 2915772680,2915772711,US 2915772712,2915772719,GB -2915772720,2915773023,US +2915772720,2915772751,US +2915772752,2915772759,DE +2915772760,2915773023,US 2915773024,2915773039,IN 2915773040,2915773175,US 2915773176,2915773183,KW -2915773184,2915794959,US +2915773184,2915773791,US +2915773792,2915773807,CA +2915773808,2915773839,JE +2915773840,2915794959,US 2915794960,2915794975,MX 2915794976,2915795007,US 2915795008,2915795023,BR @@ -57920,13 +66252,17 @@ 2915808248,2915808255,DE 2915808256,2915810471,US 2915810472,2915810479,GB -2915810480,2915811135,US +2915810480,2915810647,US +2915810648,2915810663,CA +2915810664,2915811135,US 2915811136,2915811199,IN 2915811200,2915958783,US 2915958784,2916024319,CA -2916024320,2916110623,US -2916110624,2916110639,CA -2916110640,2916163583,US +2916024320,2916118223,US +2916118224,2916118231,LK +2916118232,2916121087,US +2916121088,2916121343,GB +2916121344,2916163583,US 2916163584,2916171775,CA 2916171776,2916184063,US 2916184064,2916196351,CA @@ -57934,60 +66270,94 @@ 2916253696,2916286463,CA 2916286464,2916319231,US 2916319232,2916335615,PR -2916352000,2916368383,US +2916335616,2916368383,US 2916368384,2916401151,CA -2916401152,2916417535,US -2916417536,2916434431,CA -2916434432,2916434559,US +2916401152,2916433919,US +2916433920,2916434175,CA +2916434176,2916434559,US 2916434560,2916434591,CA -2916434592,2916437503,US -2916437504,2916437567,CA -2916437568,2916440063,US -2916440064,2916440095,CA -2916440096,2916440143,US +2916434592,2916434623,US +2916434624,2916434655,CA +2916434656,2916436487,US +2916436488,2916436495,CA +2916436496,2916436543,US +2916436544,2916436607,CA +2916436608,2916437039,US +2916437040,2916437047,DE +2916437048,2916437055,CN +2916437056,2916437063,GB +2916437064,2916437199,US +2916437200,2916437207,GB +2916437208,2916437215,TH +2916437216,2916437231,US +2916437232,2916437239,SG +2916437240,2916440143,US 2916440144,2916440159,CA 2916440160,2916440175,US 2916440176,2916440191,CA -2916440192,2916441119,US +2916440192,2916440287,US +2916440288,2916440295,CA +2916440296,2916441119,US 2916441120,2916441151,CA -2916441152,2916441343,US +2916441152,2916441199,US +2916441200,2916441207,MY +2916441208,2916441343,US 2916441344,2916442111,CA 2916442112,2916442623,US 2916442624,2916442879,CA -2916442880,2916443582,US -2916443583,2916443614,PK +2916442880,2916443614,US 2916443615,2916443647,CA -2916443648,2916443903,US -2916443904,2916444159,CA -2916444160,2916444927,US +2916443648,2916444927,US 2916444928,2916445951,CA 2916445952,2916449279,US 2916449280,2916450303,CA 2916450304,2916515839,US -2916548608,2916581375,US +2916515840,2916519935,CA +2916524032,2916581375,US 2916581376,2916614143,PR 2916614144,2917167679,US 2917167680,2917167743,BR -2917167744,2917167775,US -2917167776,2917167807,IR -2917167808,2917167967,US +2917167744,2917167807,US +2917167808,2917167839,RS +2917167840,2917167871,TR +2917167872,2917167903,US +2917167904,2917167935,TR +2917167936,2917167967,US 2917167968,2917167999,GB -2917168000,2917168095,US +2917168000,2917168031,UA +2917168032,2917168095,US 2917168096,2917168127,NZ 2917168128,2917168223,US 2917168224,2917168255,BR -2917168256,2917168287,US -2917168288,2917168319,TR +2917168256,2917168319,US 2917168320,2917168351,AR -2917168352,2917168383,US +2917168352,2917168383,DE 2917168384,2917168415,BR -2917168416,2917168607,US +2917168416,2917168447,US +2917168448,2917168479,BR +2917168480,2917168607,US 2917168608,2917168639,BR 2917168640,2917169663,US 2917169664,2917169695,DE -2917169696,2917195775,US -2917195776,2917196031,CA -2917196032,2917199871,A2 +2917169696,2917170015,US +2917170016,2917170047,UA +2917170048,2917170079,BR +2917170080,2917170111,US +2917170112,2917170143,RU +2917170144,2917170239,US +2917170240,2917170271,RU +2917170272,2917170303,BR +2917170304,2917193025,US +2917193026,2917193087,SG +2917193088,2917194145,US +2917194146,2917194158,SG +2917194159,2917194201,US +2917194202,2917194206,SG +2917194207,2917195775,US +2917195776,2917196159,CA +2917196160,2917196287,A2 +2917196288,2917196415,CA +2917196416,2917199871,A2 2917199872,2917203967,CA 2917203968,2917210335,US 2917210336,2917210367,CA @@ -57997,14 +66367,15 @@ 2917257216,2917261311,KY 2917261312,2917265407,US 2917265408,2917269503,JM -2917269504,2917572607,US +2917269504,2917449727,US +2917449728,2917466111,PR +2917466112,2917572607,US 2917572608,2917580799,CA 2917580800,2917597439,US 2917597440,2917597695,GB 2917597696,2917621759,US 2917621760,2917629951,CA -2917629952,2917646335,US -2917662720,2917663231,US +2917629952,2917663231,US 2917663232,2917663487,CA 2917663488,2917665791,US 2917665792,2917666303,CA @@ -58022,8 +66393,8 @@ 2917682432,2917683455,CA 2917683456,2917685503,US 2917685504,2917686015,CA -2917686016,2917690367,US -2917690368,2917690879,CA +2917686016,2917690623,US +2917690624,2917690879,CA 2917690880,2917693183,US 2917693184,2917693951,CA 2917693952,2917695231,US @@ -58032,21 +66403,41 @@ 2917695744,2917696255,CA 2917696256,2917702399,US 2917702400,2917707007,CA -2917707008,2917714175,US +2917707008,2917707519,US +2917707520,2917707775,CA +2917707776,2917714175,US 2917714176,2917714431,CA 2917714432,2917718527,US 2917718528,2917719039,CA 2917719040,2917722367,US 2917722368,2917722623,CA -2917722624,2917842175,US +2917722624,2917802367,US +2917802368,2917802375,CA +2917802376,2917804935,US +2917804936,2917804943,CA +2917804944,2917815575,US +2917815576,2917815583,RO +2917815584,2917834751,US +2917834752,2917835007,GB +2917835008,2917842175,US 2917842176,2917842431,CA -2917842432,2918055935,US -2918055936,2918121471,CA +2917842432,2917858047,US +2917858048,2917858303,BE +2917858304,2918014975,US +2918014976,2918023167,CA +2918023168,2918043647,US +2918043648,2918047743,CA +2918047744,2918051839,US +2918051840,2918121471,CA 2918121472,2918154239,US 2918154240,2918170623,CA 2918170624,2918199679,US 2918199680,2918199743,CA -2918199744,2918232063,US +2918199744,2918200287,US +2918200288,2918200303,CA +2918200304,2918201551,US +2918201552,2918201567,CA +2918201568,2918232063,US 2918232064,2918236159,CA 2918236160,2918260735,US 2918260736,2918264831,CA @@ -58064,26 +66455,63 @@ 2918375424,2918391807,US 2918391808,2918395903,CA 2918395904,2918404095,US -2918404096,2918408191,PR -2918408192,2918432767,US +2918404096,2918406911,PR +2918406912,2918407423,US +2918407424,2918408191,PR +2918408192,2918416383,US +2918416384,2918420479,CA +2918420480,2918432767,US 2918432768,2918436863,CA -2918436864,2918533119,US +2918436864,2918460095,US +2918460096,2918460159,GB +2918460160,2918469631,US +2918469632,2918471423,CA +2918471424,2918471679,US +2918471680,2918473727,CA +2918473728,2918477823,US +2918477824,2918481919,CA +2918481920,2918514943,US +2918514944,2918515079,CA +2918515080,2918532111,US +2918532112,2918532119,CN +2918532120,2918532143,US +2918532144,2918532151,PK +2918532152,2918533119,US 2918533120,2918533127,CN -2918533128,2918533167,US -2918533168,2918533183,CN -2918533184,2918533247,US -2918533248,2918533375,CA -2918533376,2918534911,US +2918533128,2918533143,US +2918533144,2918533151,CN +2918533152,2918533159,US +2918533160,2918533167,CN +2918533168,2918533191,US +2918533192,2918533199,AU +2918533200,2918533215,CN +2918533216,2918534687,US +2918534688,2918534695,CN +2918534696,2918534703,US +2918534704,2918534735,CN +2918534736,2918534751,US +2918534752,2918534767,CN +2918534768,2918534815,US +2918534816,2918534879,CN +2918534880,2918534911,US 2918534912,2918534943,KR -2918534944,2918580223,US +2918534944,2918534975,CN +2918534976,2918534983,US +2918534984,2918534991,ID +2918534992,2918535807,US +2918535808,2918535967,CN +2918535968,2918535999,US +2918536000,2918536191,CN +2918536192,2918536703,A1 +2918536704,2918580223,US 2918580224,2918588415,CA 2918588416,2918596607,US 2918596608,2918604799,CA -2918604800,2918608895,US -2918612992,2918760447,US +2918604800,2918699007,US +2918699008,2918703103,CA +2918703104,2918760447,US 2918760448,2918776831,CA -2918776832,2918813695,US -2918825984,2918828031,US +2918776832,2918828031,US 2918828032,2918828543,UA 2918828544,2918829055,ES 2918829056,2918829183,US @@ -58094,15 +66522,325 @@ 2918829696,2918829823,DE 2918829824,2918830079,CN 2918830080,2918834175,CA -2918834176,2918838271,US -2918838272,2918875135,CA +2918834176,2918842367,US +2918842368,2918875135,CA 2918875136,2918973439,US 2918973440,2918989823,CA -2919006208,2919174143,US +2918989824,2919010303,US +2919010304,2919010559,CA +2919010560,2919020543,US +2919020544,2919020575,CA +2919020576,2919020591,US +2919020592,2919020655,CA +2919020656,2919020711,US +2919020712,2919020719,CA +2919020720,2919020727,US +2919020728,2919020751,CA +2919020752,2919020767,US +2919020768,2919020799,CA +2919020800,2919063551,US +2919063552,2919064063,MX +2919064064,2919067655,CN +2919067656,2919067695,US +2919067696,2919067703,PK +2919067704,2919067711,ES +2919067712,2919067719,CN +2919067720,2919067727,TR +2919067728,2919067735,IN +2919067736,2919067743,US +2919067744,2919067751,BR +2919067752,2919067759,IN +2919067760,2919067767,CA +2919067768,2919067775,US +2919067776,2919067783,AU +2919067784,2919067791,US +2919067792,2919067799,BR +2919067800,2919067823,US +2919067824,2919067831,BR +2919067832,2919067839,US +2919067840,2919067847,BR +2919067848,2919067863,US +2919067864,2919067871,ES +2919067872,2919067879,CA +2919067880,2919067887,TW +2919067888,2919067895,IE +2919067896,2919067903,CA +2919067904,2919067911,US +2919067912,2919067919,CN +2919067920,2919067927,US +2919067928,2919067935,RU +2919067936,2919067943,BR +2919067944,2919067951,PL +2919067952,2919067959,CN +2919067960,2919067967,IL +2919067968,2919067975,US +2919067976,2919067983,CA +2919067984,2919067999,CN +2919068000,2919068007,CM +2919068008,2919068015,BR +2919068016,2919068023,US +2919068024,2919068031,HK +2919068032,2919068039,US +2919068040,2919068047,IN +2919068048,2919068055,CA +2919068056,2919068087,US +2919068088,2919068095,TR +2919068096,2919068103,US +2919068104,2919068111,AE +2919068112,2919068119,US +2919068120,2919068127,CN +2919068128,2919068135,US +2919068136,2919068143,PK +2919068144,2919068151,IN +2919068152,2919068159,JM +2919068160,2919068167,US +2919068168,2919068175,CA +2919068176,2919068183,US +2919068184,2919068191,CA +2919068192,2919068199,PR +2919068200,2919068207,US +2919068208,2919068215,GB +2919068216,2919068223,CA +2919068224,2919068239,US +2919068240,2919068247,CN +2919068248,2919068255,AU +2919068256,2919068271,US +2919068272,2919068279,SG +2919068280,2919068287,US +2919068288,2919068295,CN +2919068296,2919068303,BR +2919068304,2919068311,RO +2919068312,2919068319,MY +2919068320,2919068335,US +2919068336,2919068343,RU +2919068344,2919068359,US +2919068360,2919068367,CM +2919068368,2919068375,CN +2919068376,2919068383,US +2919068384,2919068391,BR +2919068392,2919068415,US +2919068416,2919068423,BR +2919068424,2919068431,CN +2919068432,2919068495,US +2919068496,2919068503,BR +2919068504,2919068511,IN +2919068512,2919068519,CN +2919068520,2919068527,US +2919068528,2919068535,PL +2919068536,2919068551,IN +2919068552,2919068559,AU +2919068560,2919068567,CN +2919068568,2919068575,IN +2919068576,2919068583,US +2919068584,2919068591,CN +2919068592,2919068599,IN +2919068600,2919068607,CM +2919068608,2919068615,MY +2919068616,2919068647,US +2919068648,2919068655,AU +2919068656,2919068663,CN +2919068664,2919068671,MY +2919068672,2919068703,US +2919068704,2919068711,IN +2919068712,2919068719,JM +2919068720,2919068727,US +2919068728,2919068735,RU +2919068736,2919068743,NO +2919068744,2919068751,PR +2919068752,2919068775,US +2919068776,2919068783,HK +2919068784,2919068791,IN +2919068792,2919068799,CR +2919068800,2919068815,NO +2919068816,2919068823,US +2919068824,2919068831,CA +2919068832,2919068839,CN +2919068840,2919068871,US +2919068872,2919068879,CN +2919068880,2919068887,DO +2919068888,2919068895,SG +2919068896,2919068911,US +2919068912,2919068927,CN +2919068928,2919068935,US +2919068936,2919068943,ZA +2919068944,2919068967,US +2919068968,2919068975,RU +2919068976,2919068991,US +2919068992,2919068999,DO +2919069000,2919069015,US +2919069016,2919069031,CN +2919069032,2919069039,US +2919069040,2919069047,CN +2919069048,2919069055,US +2919069056,2919069063,CN +2919069064,2919069071,AF +2919069072,2919069079,CN +2919069080,2919069087,US +2919069088,2919069095,IN +2919069096,2919069103,BZ +2919069104,2919069111,US +2919069112,2919069119,CN +2919069120,2919069127,CA +2919069128,2919069135,US +2919069136,2919069143,CN +2919069144,2919069151,BR +2919069152,2919069159,US +2919069160,2919069167,JM +2919069168,2919069175,GB +2919069176,2919069183,US +2919069184,2919069191,PR +2919069192,2919069199,US +2919069200,2919069207,GB +2919069208,2919069215,BR +2919069216,2919069231,US +2919069232,2919069239,ES +2919069240,2919069255,GB +2919069256,2919069271,CN +2919069272,2919069295,US +2919069296,2919069303,BR +2919069304,2919069327,US +2919069328,2919069335,BR +2919069336,2919069343,TR +2919069344,2919069359,US +2919069360,2919069367,CN +2919069368,2919069375,AU +2919069376,2919069391,US +2919069392,2919069399,GB +2919069400,2919069407,US +2919069408,2919069415,VN +2919069416,2919069439,US +2919069440,2919069447,CA +2919069448,2919069455,US +2919069456,2919069463,CN +2919069464,2919069471,US +2919069472,2919069479,CA +2919069480,2919069487,CN +2919069488,2919069495,US +2919069496,2919069503,CN +2919069504,2919069511,AR +2919069512,2919069527,US +2919069528,2919069535,TR +2919069536,2919069543,US +2919069544,2919069559,CN +2919069560,2919069567,AE +2919069568,2919069575,VN +2919069576,2919069583,CN +2919069584,2919069607,US +2919069608,2919069615,CN +2919069616,2919069623,QA +2919069624,2919069631,PK +2919069632,2919069639,TW +2919069640,2919069663,US +2919069664,2919069671,CA +2919069672,2919069679,US +2919069680,2919069687,CA +2919069688,2919069703,US +2919069704,2919069711,CN +2919069712,2919069735,US +2919069736,2919069743,BR +2919069744,2919069823,US +2919069824,2919069831,IN +2919069832,2919069839,US +2919069840,2919069847,BR +2919069848,2919069895,US +2919069896,2919069903,BR +2919069904,2919070111,US +2919070112,2919070119,ES +2919070120,2919070303,US +2919070304,2919070311,BR +2919070312,2919070783,US +2919070784,2919070791,BR +2919070792,2919070919,US +2919070920,2919070927,CA +2919070928,2919070943,US +2919070944,2919070951,BR +2919070952,2919071143,US +2919071144,2919071151,CN +2919071152,2919170327,US +2919170328,2919170335,PE +2919170336,2919170351,US +2919170352,2919170359,PE +2919170360,2919170367,AU +2919170368,2919170383,BR +2919170384,2919170391,AU +2919170392,2919170399,IN +2919170400,2919170407,TR +2919170408,2919170415,ES +2919170416,2919170431,US +2919170432,2919170439,JP +2919170440,2919170447,IN +2919170448,2919170463,TH +2919170464,2919170487,US +2919170488,2919170495,NL +2919170496,2919170527,US +2919170528,2919170535,BR +2919170536,2919170551,US +2919170552,2919170559,FR +2919170560,2919170575,US +2919170576,2919170583,FR +2919170584,2919170599,US +2919170600,2919170607,JP +2919170608,2919170615,US +2919170616,2919170623,CN +2919170624,2919170639,US +2919170640,2919170655,JP +2919170656,2919170663,US +2919170664,2919170671,PH +2919170672,2919170679,JP +2919170680,2919170695,US +2919170696,2919170703,CN +2919170704,2919170711,MX +2919170712,2919170727,US +2919170728,2919170735,IN +2919170736,2919170751,US +2919170752,2919170759,GB +2919170760,2919170767,BR +2919170768,2919170775,AR +2919170776,2919170799,US +2919170800,2919170815,SG +2919170816,2919170863,US +2919170864,2919170871,AU +2919170872,2919170879,CH +2919170880,2919170903,US +2919170904,2919170911,GR +2919170912,2919170919,BR +2919170920,2919170935,US +2919170936,2919170943,PH +2919170944,2919170967,US +2919170968,2919170975,NZ +2919170976,2919171047,US +2919171048,2919171055,BR +2919171056,2919171071,US +2919171072,2919171079,IN +2919171080,2919171087,CL +2919171088,2919171095,TR +2919171096,2919171103,US +2919171104,2919171111,PL +2919171112,2919171119,US +2919171120,2919171127,CL +2919171128,2919171135,BR +2919171136,2919171143,AU +2919171144,2919171151,TR +2919171152,2919171159,US +2919171160,2919171167,AU +2919171168,2919171311,US +2919171312,2919171319,IL +2919171320,2919171327,TW +2919171328,2919171343,US +2919171344,2919171351,BR +2919171352,2919171399,US +2919171400,2919171407,IT +2919171408,2919171455,US +2919171456,2919171463,BR +2919171464,2919171479,US +2919171480,2919171487,BR +2919171488,2919174143,US 2919174144,2919178239,CA 2919178240,2919186431,US 2919186432,2919190527,CA -2919190528,2919202815,US +2919190528,2919202079,US +2919202080,2919202111,BE +2919202112,2919202815,US 2919206912,2919211007,CA 2919219200,2919235583,US 2919235584,2919759871,CA @@ -58114,11 +66852,17 @@ 2921497416,2921497423,IN 2921497424,2921497471,US 2921497472,2921497599,IN -2921497600,2921503607,US +2921497600,2921498383,US +2921498384,2921498391,ID +2921498392,2921500159,US +2921500160,2921500415,GB +2921500416,2921503607,US 2921503608,2921503615,GB 2921503616,2921503695,US 2921503696,2921503703,ID -2921503704,2921508719,US +2921503704,2921504431,US +2921504432,2921504439,GB +2921504440,2921508719,US 2921508720,2921508727,SE 2921508728,2921512703,US 2921512704,2921512959,CA @@ -58128,53 +66872,90 @@ 2925002752,2925527039,CA 2925527040,2926575615,US 2926575616,2927099903,CA -2927099904,2928173103,US +2927099904,2927112031,US +2927112032,2927112039,CH +2927112040,2927152175,US +2927152176,2927152183,CH +2927152184,2927154847,US +2927154848,2927154855,CH +2927154856,2927242751,US +2927242752,2927243263,AE +2927243264,2927254527,US +2927254528,2927255039,AE +2927255040,2927911183,US +2927911184,2927911191,CH +2927911192,2928173103,US 2928173104,2928173119,PH 2928173120,2928173151,US 2928173152,2928173159,RU -2928173160,2928173343,US +2928173160,2928173223,US +2928173224,2928173231,JP +2928173232,2928173343,US 2928173344,2928173351,NL 2928173352,2928173519,US -2928173520,2928173527,GB +2928173520,2928173527,JP 2928173528,2928173551,US 2928173552,2928173559,CA -2928173560,2928173679,US +2928173560,2928173671,US +2928173672,2928173679,NZ 2928173680,2928173695,JP 2928173696,2928173711,US 2928173712,2928173727,JP -2928173728,2928173775,US -2928173776,2928173783,IE -2928173784,2928173855,US -2928173856,2928173871,AU -2928173872,2928173903,US +2928173728,2928173903,US 2928173904,2928173919,NZ 2928173920,2928173959,US 2928173960,2928173967,CA -2928173968,2928174095,US -2928174096,2928174103,CA -2928174104,2928174575,US -2928174576,2928174583,AU -2928174584,2928174911,US +2928173968,2928174087,US +2928174088,2928174103,CA +2928174104,2928174215,US +2928174216,2928174223,MQ +2928174224,2928174231,CA +2928174232,2928174479,US +2928174480,2928174487,SE +2928174488,2928174911,US 2928174912,2928174919,AU 2928174920,2928175055,US 2928175056,2928175063,MX -2928175064,2928175791,US +2928175064,2928175143,US +2928175144,2928175151,PH +2928175152,2928175167,US +2928175168,2928175175,RU +2928175176,2928175207,US +2928175208,2928175215,CA +2928175216,2928175271,US +2928175272,2928175279,NZ +2928175280,2928175303,US +2928175304,2928175311,CN +2928175312,2928175399,US +2928175400,2928175407,TR +2928175408,2928175551,US +2928175552,2928175567,CA +2928175568,2928175655,US +2928175656,2928175663,AU +2928175664,2928175775,US +2928175776,2928175791,PH 2928175792,2928175799,CA -2928175800,2928175839,US -2928175840,2928175847,SE -2928175848,2928175967,US +2928175800,2928175815,US +2928175816,2928175823,CA +2928175824,2928175967,US 2928175968,2928175975,ZA -2928175976,2928176223,US +2928175976,2928176007,US +2928176008,2928176015,AU +2928176016,2928176207,US +2928176208,2928176223,ZA 2928176224,2928176231,JP 2928176232,2928176383,US 2928176384,2928176391,ES -2928176392,2928176575,US -2928176576,2928176591,MQ -2928176592,2928176783,US +2928176392,2928176519,US +2928176520,2928176527,NL +2928176528,2928176543,CN +2928176544,2928176783,US 2928176784,2928176799,MX 2928176800,2928176895,US 2928176896,2928176903,CA -2928176904,2928177151,US +2928176904,2928176919,US +2928176920,2928176927,CA +2928176928,2928177151,US 2928177152,2928181247,CA 2928181248,2928218127,US 2928218128,2928218143,CA @@ -58185,7 +66966,9 @@ 2928226400,2928226407,US 2928226408,2928226415,CA 2928226416,2928226423,US -2928226424,2928227583,CA +2928226424,2928226551,CA +2928226552,2928226559,US +2928226560,2928227583,CA 2928227584,2928227783,US 2928227784,2928228087,CA 2928228088,2928228095,RU @@ -58461,17 +67244,25 @@ 2928278960,2928278991,US 2928278992,2928279015,CA 2928279016,2928279023,US -2928279024,2928279551,CA +2928279024,2928279383,CA +2928279384,2928279391,US +2928279392,2928279551,CA 2928279552,2928312319,US 2928312320,2928316415,CA 2928316416,2928318719,US 2928318720,2928318975,DO -2928318976,2928321311,US +2928318976,2928320519,US +2928320520,2928320527,BR +2928320528,2928321063,US +2928321064,2928321071,AU +2928321072,2928321311,US 2928321312,2928321327,GB 2928321328,2928321343,CN 2928321344,2928323135,US 2928323136,2928323143,RU -2928323144,2928323967,US +2928323144,2928323175,US +2928323176,2928323183,AU +2928323184,2928323967,US 2928323968,2928323983,RU 2928323984,2928328703,US 2928328704,2928336895,CA @@ -59013,7 +67804,8 @@ 2938710016,2938712063,AU 2938712064,2938716159,TW 2938716160,2938732543,JP -2938732544,2938765311,SG +2938732544,2938748927,SG +2938748928,2938765311,JP 2938765312,2938961919,CN 2938961920,2938978303,HK 2938978304,2938996735,AU @@ -59038,17 +67830,19 @@ 2942763008,2942767103,JP 2942767104,2942771199,AU 2942771200,2942779391,ID +2942779392,2942795775,VN 2942795776,2942959615,JP 2942959616,2942960639,VN 2942960640,2942961663,AU 2942961664,2942965759,ID -2942965760,2942966783,AU +2942965760,2942967807,AU 2942967808,2942975999,AF 2942976000,2942992383,KR 2942992384,2943025151,CN 2943025152,2943041535,PK 2943041536,2943057919,KR 2943057920,2943074303,AU +2943074304,2943090687,PK 2943090688,2943221759,JP 2943221760,2943291391,PK 2943291392,2943295487,KR @@ -59059,7 +67853,6 @@ 2943311872,2943312895,HK 2943312896,2943313919,NZ 2943313920,2943314943,SG -2943314944,2943315967,BD 2943315968,2943318015,ID 2943318016,2943320063,JP 2943320064,2943336447,PK @@ -59074,8 +67867,7 @@ 2946375680,2946383871,ID 2946383872,2946392063,IN 2946392064,2946393087,BD -2946393088,2946394111,JP -2946394112,2946395135,AU +2946394112,2946396159,AU 2946396160,2946400255,JP 2946400256,2946416639,NC 2946416640,2946433023,PH @@ -59084,10 +67876,8 @@ 2947547136,2947579903,PH 2947579904,2947583999,KR 2947584000,2947586047,TO -2947586048,2947588095,JP 2947588096,2947590143,ID 2947590144,2947592191,SG -2947592192,2947596287,HK 2947596288,2947597311,IN 2947597312,2947598335,JP 2947598336,2947602431,AU @@ -59107,7 +67897,246 @@ 2948135936,2948136959,IN 2948136960,2948595711,CN 2948595712,2952790015,KR -2969567232,2971664383,BR +2952790016,2953314303,DE +2953314304,2953379839,UA +2953379840,2953445375,DE +2953445376,2953453567,IT +2953453568,2953455615,IS +2953455616,2953457663,SK +2953457664,2953459711,DE +2953459712,2953461759,IT +2953461760,2953465855,ES +2953465856,2953465991,GB +2953465992,2953467903,EU +2953467904,2953469951,BE +2953469952,2953478143,CH +2953478144,2953510911,SE +2953510912,2953576447,NO +2953576448,2953592831,BG +2953592832,2953596927,IR +2953596928,2953598975,ES +2953598976,2953601023,IT +2953601024,2953603071,RU +2953603072,2953605119,GB +2953609216,2953707519,IL +2953707520,2953838591,RU +2953838592,2954100735,SA +2954100736,2954362879,DK +2954362880,2954625023,GB +2954625024,2954641407,DE +2954641408,2954643455,RU +2954643456,2954645503,IQ +2954645504,2954647551,AZ +2954647552,2954657791,ES +2954657792,2954756095,JO +2954756096,2954821631,TR +2954821632,2954887167,FR +2954887168,2954891263,UA +2954891264,2954895359,IT +2954895360,2954897407,RU +2954897408,2954899455,DE +2954899456,2954901503,ES +2954901504,2954903551,IT +2954903552,2954905599,NL +2954905600,2954907647,IE +2954907648,2954909695,GB +2954909696,2954911743,DE +2954911744,2954919935,IE +2954919936,2954928127,RU +2954928128,2954932223,PL +2954932224,2954936319,RU +2954936320,2954938367,AM +2954938368,2954940415,HU +2954940416,2954944511,DE +2954944512,2954946559,GB +2954946560,2954948607,DE +2954948608,2954950655,RU +2954950656,2954952703,ES +2954952704,2955018239,TR +2955018240,2955051007,IE +2955051008,2955055103,NL +2955055104,2955083775,IE +2955083776,2955149311,GB +2955149312,2955411455,UA +2955411456,2955673599,TR +2955673600,2955804671,SA +2955804672,2955837439,EE +2955837440,2955845631,IR +2955845632,2955853823,GB +2955853824,2955870207,CH +2955870208,2955935743,UA +2955935744,2956230655,RU +2956230656,2956238847,SI +2956238848,2956242943,ES +2956242944,2956244991,SE +2956244992,2956247039,FR +2956247040,2956249087,DE +2956251136,2956253183,GB +2956253184,2956255231,IE +2956255232,2956259327,FR +2956259328,2956261375,DE +2956261376,2956263423,ES +2956263424,2956296191,TR +2956296192,2956328959,RU +2956328960,2956460031,TR +2956460032,2956468223,RU +2956468224,2956470271,LV +2956470272,2956472319,NL +2956472320,2956474367,RU +2956474368,2956476415,GB +2956476416,2956492799,ES +2956492800,2956496895,CH +2956496896,2956500991,IR +2956500992,2956507135,RU +2956507136,2956508159,NL +2956508160,2956508671,RU +2956508672,2956509183,NL +2956509184,2956517375,GB +2956517376,2956521471,NL +2956521472,2956525567,SE +2956525568,2956533759,JO +2956533760,2956535807,FR +2956535808,2956537855,LV +2956537856,2956541951,UA +2956541952,2956543999,FR +2956544000,2956546047,RU +2956546048,2956548095,FR +2956548096,2956550143,ME +2956550144,2956554239,ES +2956554240,2956558335,IT +2956558336,2956574719,DE +2956574720,2956576767,SE +2956576768,2956578815,ES +2956578816,2956582911,RU +2956582912,2956587007,CH +2956587008,2956589055,FR +2956589056,2956593151,GB +2956593152,2956595199,ES +2956595200,2956597247,AZ +2956597248,2956599295,NL +2956599296,2956607487,RU +2956607488,2956611583,PS +2956611584,2956613631,IT +2956613632,2956613887,GB +2956613888,2956614143,NL +2956614144,2956614399,FR +2956614400,2956615679,EU +2956615680,2956623871,GB +2956623872,2956656639,GR +2956656640,2956722175,RU +2956722176,2956787711,BY +2956787712,2956820479,IE +2956820480,2956822527,NL +2956822528,2956824575,SE +2956824576,2956826623,PT +2956826624,2956828671,DK +2956828672,2956836863,AT +2956836864,2956853247,SK +2956853248,2956865535,HR +2956865536,2956869631,IT +2956869632,2956886015,RU +2956886016,2956888063,GB +2956888064,2956890111,BE +2956890112,2956892159,IR +2956892160,2956894207,IT +2956894208,2956898303,NL +2956898304,2956902399,RU +2956902400,2956904447,NL +2956904448,2956906495,DK +2956906496,2956908543,GB +2956908544,2956910591,RU +2956910592,2956914687,CZ +2956914688,2956918783,RU +2956918784,2956984319,HU +2956984320,2957049855,SE +2957049856,2957058047,PS +2957058048,2957066239,RU +2957066240,2957068287,GB +2957070336,2957074431,IT +2957074432,2957082623,RU +2957082624,2957115391,DE +2957115392,2957180927,AT +2957180928,2957189119,UA +2957189120,2957193215,LV +2957193216,2957195263,RU +2957195264,2957197311,PS +2957197312,2957201407,IR +2957201408,2957201663,GB +2957201664,2957201727,US +2957201728,2957201743,CA +2957201744,2957201759,MX +2957201760,2957201775,BR +2957201776,2957201791,AR +2957201792,2957201807,BS +2957201808,2957201823,VE +2957201824,2957201839,AU +2957201840,2957201855,JP +2957201856,2957201871,HK +2957201872,2957201887,RU +2957201888,2957201903,KR +2957201904,2957201919,TW +2957201920,2957202431,US +2957202432,2957202495,GB +2957202496,2957202511,DE +2957202512,2957202527,NO +2957202528,2957202543,SE +2957202544,2957202551,FI +2957202552,2957202559,EE +2957202560,2957202567,LV +2957202568,2957202575,LT +2957202576,2957202583,BY +2957202584,2957202591,UA +2957202592,2957202599,RO +2957202600,2957202607,BG +2957202608,2957202615,GR +2957202616,2957202623,TR +2957202624,2957202627,AT +2957202628,2957202631,IT +2957202632,2957202639,CH +2957202640,2957202643,LU +2957202644,2957202647,BE +2957202648,2957202651,NL +2957202652,2957202667,DK +2957202668,2957202671,FR +2957202672,2957202675,US +2957202676,2957202679,ES +2957202680,2957202683,PT +2957202684,2957202687,AU +2957202688,2957203455,US +2957203456,2957205503,FR +2957205504,2957213695,PS +2957213696,2957221887,FR +2957221888,2957228031,GB +2957228032,2957230079,DK +2957230080,2957238271,RS +2957238272,2957240319,CZ +2957240320,2957242367,BG +2957242368,2957244415,RU +2957244416,2957246463,HU +2957246464,2957508607,SE +2957508608,2957574143,FI +2957574144,2957639679,GE +2957639680,2957641727,GB +2957641728,2957643775,RU +2957643776,2957647871,GB +2957647872,2957649919,FR +2957649920,2957651967,CH +2957651968,2957654015,AE +2957654016,2957656063,DE +2957656064,2957672447,GE +2957672448,2957680639,CZ +2957680640,2957688831,GB +2957688832,2957690879,SE +2957690880,2957692927,RU +2957692928,2957694975,NO +2957694976,2957697023,CZ +2957697024,2957705215,NL +2957705216,2957770751,NO +2957770752,2957836287,SI +2957901824,2958032895,PT +2958032896,2958557183,ES +2958557184,2958819327,TR +2969567232,2977955839,BR 2986344448,2987393023,DE 2987393024,2987397119,IM 2987397120,2987401215,LV @@ -59118,12 +68147,20 @@ 2987417600,2987425791,PL 2987425792,2987429887,BG 2987429888,2987433215,RU -2987433216,2987433235,KZ -2987433236,2987433239,RU -2987433240,2987433287,KZ -2987433288,2987433295,RU -2987433296,2987433331,KZ -2987433332,2987433983,RU +2987433216,2987433287,KZ +2987433288,2987433291,RU +2987433292,2987433331,KZ +2987433332,2987433335,RU +2987433336,2987433339,KZ +2987433340,2987433347,RU +2987433348,2987433359,KZ +2987433360,2987433375,RU +2987433376,2987433379,KZ +2987433380,2987433383,RU +2987433384,2987433391,KZ +2987433392,2987433407,RU +2987433408,2987433471,KZ +2987433472,2987433983,RU 2987433984,2987438079,FR 2987438080,2987442175,FI 2987442176,2987446271,IE @@ -59133,20 +68170,18 @@ 2987458560,2987462655,CZ 2987462656,2987466751,RS 2987466752,2987470847,GB -2987470848,2987474943,DE +2987470848,2987474943,IQ 2987474944,2987479039,GB 2987479040,2987487231,CZ 2987487232,2987491327,HR 2987491328,2987495423,RU 2987495424,2987499519,NO -2987499520,2987500103,MD -2987500104,2987500111,US -2987500112,2987500239,MD -2987500240,2987500255,DE -2987500256,2987503615,MD +2987499520,2987503615,MD 2987503616,2987511807,RU 2987511808,2987515903,JO -2987515904,2987519999,A2 +2987515904,2987519487,A2 +2987519488,2987519743,KE +2987519744,2987519999,A2 2987520000,2987524095,GB 2987524096,2987528191,RU 2987528192,2987529215,US @@ -59177,7 +68212,8 @@ 2987585872,2987585879,MX 2987585880,2987585887,BR 2987585888,2987585895,PL -2987585896,2987589631,DE +2987585896,2987589119,DE +2987589120,2987589631,US 2987589632,2987593727,FR 2987593728,2987597823,LT 2987597824,2987601919,ES @@ -59196,8 +68232,7 @@ 2987655168,2987658367,DE 2987658368,2987658383,AT 2987658384,2987659263,DE -2987659264,2987660799,BA -2987660800,2987661311,SI +2987659264,2987661311,BA 2987661312,2987663359,GB 2987663360,2987665407,IT 2987665408,2987667455,RU @@ -59245,7 +68280,6 @@ 2987755520,2987757567,PL 2987757568,2987759615,DE 2987759616,2987761663,PL -2987761664,2987763711,DK 2987763712,2987765759,GR 2987765760,2987767807,FR 2987767808,2987769855,CZ @@ -59260,7 +68294,9 @@ 2987786240,2987788287,FR 2987788288,2987788543,GB 2987788544,2987788799,DE -2987788800,2987790335,TR +2987788800,2987789055,US +2987789056,2987789311,GB +2987789312,2987790335,TR 2987790336,2987792383,GB 2987792384,2987794431,CH 2987794432,2987796479,IQ @@ -59324,9 +68360,19 @@ 2987917312,2988179455,DE 2988179456,2988441599,SE 2988441600,2988441603,CH -2988441604,2988441655,FR +2988441604,2988441607,GB +2988441608,2988441611,DE +2988441612,2988441615,CH +2988441616,2988441647,FR +2988441648,2988441651,GB +2988441652,2988441655,FR 2988441656,2988441663,DE -2988441664,2988441839,FR +2988441664,2988441695,IT +2988441696,2988441791,FR +2988441792,2988441807,PL +2988441808,2988441815,FR +2988441816,2988441819,FI +2988441820,2988441839,FR 2988441840,2988441843,PL 2988441844,2988441847,BE 2988441848,2988441855,FR @@ -59334,9 +68380,20 @@ 2988441888,2988441895,FR 2988441896,2988441903,PL 2988441904,2988441911,IT -2988441912,2988441991,FR +2988441912,2988441919,ES +2988441920,2988441935,PL +2988441936,2988441939,FR +2988441940,2988441943,ES +2988441944,2988441951,FR +2988441952,2988441967,PL +2988441968,2988441971,NL +2988441972,2988441975,CH +2988441976,2988441979,DE +2988441980,2988441983,IT +2988441984,2988441991,FR 2988441992,2988441995,ES -2988441996,2988442003,FR +2988441996,2988441999,PT +2988442000,2988442003,FR 2988442004,2988442007,ES 2988442008,2988442047,FR 2988442048,2988442063,GB @@ -59349,7 +68406,16 @@ 2988442432,2988442439,CZ 2988442440,2988442447,ES 2988442448,2988442463,GB -2988442464,2988442895,FR +2988442464,2988442623,FR +2988442624,2988442647,PL +2988442648,2988442651,DE +2988442652,2988442655,GB +2988442656,2988442671,PL +2988442672,2988442675,GB +2988442676,2988442687,FR +2988442688,2988442695,PL +2988442696,2988442703,PT +2988442704,2988442895,FR 2988442896,2988442899,PL 2988442900,2988442903,FR 2988442904,2988442907,IT @@ -59361,7 +68427,7 @@ 2988442928,2988442975,FR 2988442976,2988443007,GB 2988443008,2988443023,PT -2988443024,2988443027,FR +2988443024,2988443027,CZ 2988443028,2988443031,BE 2988443032,2988443035,GB 2988443036,2988443039,BE @@ -59371,7 +68437,7 @@ 2988443088,2988443111,PL 2988443112,2988443119,ES 2988443120,2988443391,FR -2988443392,2988443407,GB +2988443392,2988443407,DE 2988443408,2988443439,FR 2988443440,2988443443,CZ 2988443444,2988443447,DE @@ -59380,7 +68446,7 @@ 2988443488,2988443539,FR 2988443540,2988443547,ES 2988443548,2988443551,IT -2988443552,2988443555,FR +2988443552,2988443555,CH 2988443556,2988443559,PL 2988443560,2988443563,GB 2988443564,2988443567,PL @@ -59393,12 +68459,14 @@ 2988443928,2988444167,FR 2988444168,2988444171,CZ 2988444172,2988444199,FR -2988444200,2988444203,DE +2988444200,2988444203,FI 2988444204,2988444207,NL 2988444208,2988444415,FR 2988444416,2988444679,ES -2988444680,2988444695,PL -2988444696,2988444719,FR +2988444680,2988444687,FR +2988444688,2988444695,LT +2988444696,2988444703,FR +2988444704,2988444719,GB 2988444720,2988444735,ES 2988444736,2988444739,GB 2988444740,2988444755,BE @@ -59408,19 +68476,32 @@ 2988444772,2988444775,GB 2988444776,2988444783,CZ 2988444784,2988444799,FR -2988444800,2988445055,ES -2988445056,2988445119,FR -2988445120,2988445151,IT -2988445152,2988445183,GB +2988444800,2988444927,ES +2988444928,2988444931,PL +2988444932,2988444943,DE +2988444944,2988444967,PL +2988444968,2988444999,FR +2988445000,2988445007,PL +2988445008,2988445023,FR +2988445024,2988445027,PL +2988445028,2988445031,FR +2988445032,2988445035,ES +2988445036,2988445039,PL +2988445040,2988445119,FR +2988445120,2988445127,ES +2988445128,2988445139,FR +2988445140,2988445143,GB +2988445144,2988445167,FR +2988445168,2988445183,ES 2988445184,2988445951,DE 2988445952,2988445967,FR 2988445968,2988445983,GB 2988445984,2988446207,DE 2988446208,2988446271,PL 2988446272,2988446275,IT -2988446276,2988446287,FR -2988446288,2988446303,GB -2988446304,2988446307,FR +2988446276,2988446291,FR +2988446292,2988446295,ES +2988446296,2988446307,FR 2988446308,2988446319,PL 2988446320,2988446323,FR 2988446324,2988446327,LT @@ -59436,18 +68517,18 @@ 2988447924,2988447927,IT 2988447928,2988447935,PL 2988447936,2988447943,DE -2988447944,2988447947,NL -2988447948,2988447951,DE -2988447952,2988447955,GB -2988447956,2988447959,BE +2988447944,2988447947,GB +2988447948,2988447959,FR 2988447960,2988447967,IT 2988447968,2988447999,GB 2988448000,2988448127,DE 2988448128,2988448255,ES 2988448256,2988448511,DE -2988448512,2988448519,FR +2988448512,2988448515,GB +2988448516,2988448519,FR 2988448520,2988448543,PL -2988448544,2988448551,FR +2988448544,2988448547,GB +2988448548,2988448551,FR 2988448552,2988448559,PL 2988448560,2988448563,DE 2988448564,2988448575,ES @@ -59483,8 +68564,10 @@ 2988449536,2988449579,FR 2988449580,2988449583,PL 2988449584,2988449631,FR -2988449632,2988449647,ES -2988449648,2988449663,GB +2988449632,2988449639,ES +2988449640,2988449643,CH +2988449644,2988449647,CZ +2988449648,2988449663,FR 2988449664,2988449695,DE 2988449696,2988449727,IT 2988449728,2988449743,BE @@ -59497,7 +68580,7 @@ 2988457988,2988457991,PL 2988457992,2988457995,CH 2988457996,2988457999,FR -2988458000,2988458015,GB +2988458000,2988458015,DE 2988458016,2988458031,FR 2988458032,2988458047,IT 2988458048,2988458055,PL @@ -59507,8 +68590,10 @@ 2988458076,2988458111,PL 2988458112,2988458255,FR 2988458256,2988458271,IT -2988458272,2988458287,PL -2988458288,2988458295,FR +2988458272,2988458275,GB +2988458276,2988458279,FI +2988458280,2988458283,ES +2988458284,2988458295,FR 2988458296,2988458299,GB 2988458300,2988458319,ES 2988458320,2988458323,CZ @@ -59519,14 +68604,14 @@ 2988458400,2988458431,PL 2988458432,2988458495,FR 2988458496,2988458751,GB -2988458752,2988459007,FR +2988458752,2988458759,FR +2988458760,2988458763,NL +2988458764,2988458767,ES +2988458768,2988459007,FR 2988459008,2988459015,PL 2988459016,2988459019,DE 2988459020,2988459023,GB -2988459024,2988459027,BE -2988459028,2988459031,CH -2988459032,2988459035,CZ -2988459036,2988459039,ES +2988459024,2988459039,IE 2988459040,2988459051,FR 2988459052,2988459055,ES 2988459056,2988459071,CH @@ -59538,18 +68623,28 @@ 2988459104,2988459111,FR 2988459112,2988459119,ES 2988459120,2988459127,IT -2988459128,2988459135,PL -2988459136,2988459167,IT +2988459128,2988459151,PL +2988459152,2988459167,FR 2988459168,2988459171,IE -2988459172,2988459183,FR -2988459184,2988459199,ES +2988459172,2988459175,FR +2988459176,2988459179,PL +2988459180,2988459183,FR +2988459184,2988459199,PL 2988459200,2988459215,FR 2988459216,2988459219,DE 2988459220,2988459223,FR -2988459224,2988459263,PL +2988459224,2988459231,DE +2988459232,2988459235,IT +2988459236,2988459239,PL +2988459240,2988459243,FR +2988459244,2988459247,ES +2988459248,2988459251,LT +2988459252,2988459255,BE +2988459256,2988459259,FR +2988459260,2988459263,NL 2988459264,2988459519,ES 2988459520,2988459583,DE -2988459584,2988459599,FR +2988459584,2988459599,ES 2988459600,2988459603,GB 2988459604,2988459615,FR 2988459616,2988459631,CZ @@ -59563,8 +68658,8 @@ 2988459692,2988459695,PL 2988459696,2988459711,FR 2988459712,2988459715,ES -2988459716,2988459723,FR -2988459724,2988459727,DE +2988459716,2988459719,FR +2988459720,2988459727,DE 2988459728,2988459731,FR 2988459732,2988459735,BE 2988459736,2988459743,PL @@ -59577,17 +68672,15 @@ 2988459776,2988459839,FR 2988459840,2988459855,GB 2988459856,2988459863,FR -2988459864,2988459867,ES -2988459868,2988459871,GB -2988459872,2988459887,FR -2988459888,2988459895,PL +2988459864,2988459871,ES +2988459872,2988459895,PL 2988459896,2988459967,FR 2988459968,2988459999,ES -2988460000,2988460031,FR +2988460000,2988460015,NL +2988460016,2988460031,FR 2988460032,2988460063,DE 2988460064,2988460095,FR -2988460096,2988460103,ES -2988460104,2988460107,PL +2988460096,2988460107,PL 2988460108,2988460111,DE 2988460112,2988460119,FR 2988460120,2988460123,DE @@ -59596,8 +68689,7 @@ 2988460132,2988460135,CZ 2988460136,2988460143,FR 2988460144,2988460147,GB -2988460148,2988460151,FR -2988460152,2988460159,ES +2988460148,2988460159,ES 2988460160,2988460191,GB 2988460192,2988460195,FR 2988460196,2988460199,CZ @@ -59612,9 +68704,12 @@ 2988460276,2988460279,NL 2988460280,2988460287,PL 2988460288,2988460323,FR -2988460324,2988460335,PL -2988460336,2988460351,DE -2988460352,2988460375,GB +2988460324,2988460327,GB +2988460328,2988460335,PL +2988460336,2988460339,FR +2988460340,2988460343,GB +2988460344,2988460367,FR +2988460368,2988460375,PL 2988460376,2988460543,FR 2988460544,2988460547,GB 2988460548,2988460551,DE @@ -59622,29 +68717,28 @@ 2988460576,2988460591,PT 2988460592,2988460607,GB 2988460608,2988460615,IT -2988460616,2988460623,PL +2988460616,2988460623,PT 2988460624,2988460679,FR -2988460680,2988460683,GB -2988460684,2988460687,DE +2988460680,2988460687,DE 2988460688,2988460719,FR 2988460720,2988460735,ES -2988460736,2988460759,FR -2988460760,2988460763,PT -2988460764,2988460767,FR +2988460736,2988460755,FR +2988460756,2988460759,PT +2988460760,2988460767,FR 2988460768,2988460799,PL 2988460800,2988460863,DE 2988460864,2988460927,FR -2988460928,2988460931,DE +2988460928,2988460931,ES 2988460932,2988460943,PL 2988460944,2988460959,DE 2988460960,2988460991,GB -2988460992,2988461087,FR -2988461088,2988461103,PL -2988461104,2988461119,FR -2988461120,2988461151,NL -2988461152,2988461247,GB -2988461248,2988461255,FR -2988461256,2988461263,GB +2988460992,2988461055,FR +2988461056,2988461103,PL +2988461104,2988461151,FR +2988461152,2988461183,GB +2988461184,2988461255,FR +2988461256,2988461259,IT +2988461260,2988461263,PT 2988461264,2988461279,PL 2988461280,2988461295,IT 2988461296,2988461299,PL @@ -59680,13 +68774,14 @@ 2988461616,2988461623,IT 2988461624,2988461695,FR 2988461696,2988461699,DE -2988461700,2988461703,FR -2988461704,2988461707,NL +2988461700,2988461703,PL +2988461704,2988461707,FR 2988461708,2988461711,BE 2988461712,2988461719,FR -2988461720,2988461723,GB +2988461720,2988461723,DE 2988461724,2988461735,FR -2988461736,2988461747,DE +2988461736,2988461743,DE +2988461744,2988461747,ES 2988461748,2988461751,IT 2988461752,2988461755,FR 2988461756,2988461759,NL @@ -59696,25 +68791,34 @@ 2988461812,2988461815,FR 2988461816,2988461819,PL 2988461820,2988461823,GB -2988461824,2988461855,NL -2988461856,2988461859,PL +2988461824,2988461839,PL +2988461840,2988461851,FR +2988461852,2988461855,PL +2988461856,2988461859,FI 2988461860,2988461871,DE 2988461872,2988461879,FR -2988461880,2988461883,CZ -2988461884,2988461887,IT +2988461880,2988461883,ES +2988461884,2988461887,PL 2988461888,2988461903,FR 2988461904,2988461911,ES -2988461912,2988461935,FR +2988461912,2988461915,IT +2988461916,2988461919,NL +2988461920,2988461935,FR 2988461936,2988461951,GB 2988461952,2988462087,PL 2988462088,2988462095,DE -2988462096,2988462127,FR +2988462096,2988462119,FR +2988462120,2988462123,PL +2988462124,2988462127,GB 2988462128,2988462131,ES 2988462132,2988462143,FR 2988462144,2988462151,PL 2988462152,2988462155,IT 2988462156,2988462159,NL -2988462160,2988462191,PL +2988462160,2988462167,ES +2988462168,2988462171,PL +2988462172,2988462175,ES +2988462176,2988462191,PL 2988462192,2988462199,FR 2988462200,2988462203,PL 2988462204,2988462303,FR @@ -59723,7 +68827,8 @@ 2988462312,2988462319,FR 2988462320,2988462323,IT 2988462324,2988462327,DE -2988462328,2988462335,FR +2988462328,2988462331,GB +2988462332,2988462335,FR 2988462336,2988462463,ES 2988462464,2988462495,GB 2988462496,2988462527,DE @@ -59739,8 +68844,9 @@ 2988462752,2988462767,PL 2988462768,2988462775,GB 2988462776,2988462779,PL -2988462780,2988462783,FR -2988462784,2988462799,DE +2988462780,2988462787,FR +2988462788,2988462795,PL +2988462796,2988462799,DE 2988462800,2988462815,FR 2988462816,2988462823,BE 2988462824,2988462847,FR @@ -59748,7 +68854,8 @@ 2988463104,2988463107,IT 2988463108,2988463111,FR 2988463112,2988463119,ES -2988463120,2988463127,GB +2988463120,2988463123,GB +2988463124,2988463127,ES 2988463128,2988463131,FR 2988463132,2988463135,PL 2988463136,2988463143,NL @@ -59757,17 +68864,17 @@ 2988463152,2988463159,FR 2988463160,2988463167,ES 2988463168,2988463199,NL -2988463200,2988463203,GB +2988463200,2988463203,PL 2988463204,2988463207,DE 2988463208,2988463211,FR 2988463212,2988463223,GB -2988463224,2988463227,FR +2988463224,2988463227,ES 2988463228,2988463231,CH 2988463232,2988463263,NL 2988463264,2988463279,PL 2988463280,2988463283,GB 2988463284,2988463315,FR -2988463316,2988463319,DE +2988463316,2988463319,PL 2988463320,2988463323,FR 2988463324,2988463331,DE 2988463332,2988463335,IT @@ -59787,7 +68894,7 @@ 2988463744,2988463747,BE 2988463748,2988463759,FR 2988463760,2988463775,DE -2988463776,2988463791,PL +2988463776,2988463791,FR 2988463792,2988463803,GB 2988463804,2988463823,FR 2988463824,2988463827,DE @@ -59795,9 +68902,13 @@ 2988463832,2988463835,DE 2988463836,2988463839,FR 2988463840,2988463871,PL -2988463872,2988463915,FR +2988463872,2988463907,FR +2988463908,2988463911,PL +2988463912,2988463915,FR 2988463916,2988463919,GB -2988463920,2988463947,FR +2988463920,2988463939,FR +2988463940,2988463943,DE +2988463944,2988463947,FR 2988463948,2988463951,GB 2988463952,2988463999,FR 2988464000,2988464007,IE @@ -59808,11 +68919,17 @@ 2988464028,2988464031,PL 2988464032,2988464055,FR 2988464056,2988464059,ES -2988464060,2988464063,FR +2988464060,2988464063,CZ 2988464064,2988464095,PL -2988464096,2988464303,FR +2988464096,2988464271,FR +2988464272,2988464275,ES +2988464276,2988464279,PL +2988464280,2988464283,FR +2988464284,2988464287,PL +2988464288,2988464303,FR 2988464304,2988464307,IT -2988464308,2988464351,FR +2988464308,2988464311,PL +2988464312,2988464351,FR 2988464352,2988464355,DE 2988464356,2988464359,FR 2988464360,2988464363,PL @@ -59823,29 +68940,38 @@ 2988464528,2988464543,DE 2988464544,2988464551,FR 2988464552,2988464575,ES -2988464576,2988464607,FR +2988464576,2988464591,GB +2988464592,2988464607,FR 2988464608,2988464611,DE -2988464612,2988464615,PL -2988464616,2988464619,FR +2988464612,2988464619,PL 2988464620,2988464623,ES 2988464624,2988464627,FR 2988464628,2988464631,IT -2988464632,2988464639,GB -2988464640,2988464783,FR +2988464632,2988464779,FR +2988464780,2988464783,PL 2988464784,2988464787,IT 2988464788,2988464791,ES -2988464792,2988464799,FR +2988464792,2988464795,FR +2988464796,2988464799,GB 2988464800,2988464815,DE 2988464816,2988464819,FR 2988464820,2988464823,NL -2988464824,2988464831,PL -2988464832,2988464895,ES -2988464896,2988464927,NL -2988464928,2988464947,FR +2988464824,2988464895,ES +2988464896,2988464911,PL +2988464912,2988464915,CH +2988464916,2988464919,DE +2988464920,2988464923,FI +2988464924,2988464927,FR +2988464928,2988464943,ES +2988464944,2988464947,FR 2988464948,2988464951,CH 2988464952,2988464955,FR 2988464956,2988464959,GB -2988464960,2988465215,FR +2988464960,2988464963,IT +2988464964,2988464967,LT +2988464968,2988464971,PT +2988464972,2988464975,PL +2988464976,2988465215,FR 2988465216,2988465223,ES 2988465224,2988465235,FR 2988465236,2988465239,ES @@ -59900,29 +69026,897 @@ 2988466128,2988466131,PT 2988466132,2988466139,FR 2988466140,2988466143,PL -2988466144,2988466175,NL -2988466176,2988507135,FR -2988507136,2988507183,DE +2988466144,2988466159,NL +2988466160,2988476415,FR +2988476416,2988478463,IT +2988478464,2988482559,FR +2988482560,2988482567,ES +2988482568,2988482579,FR +2988482580,2988482591,ES +2988482592,2988482607,PL +2988482608,2988482631,FR +2988482632,2988482639,PL +2988482640,2988482647,FR +2988482648,2988482651,CZ +2988482652,2988482655,GB +2988482656,2988482763,FR +2988482764,2988482767,GB +2988482768,2988482775,PL +2988482776,2988482779,NL +2988482780,2988482783,PL +2988482784,2988482799,FR +2988482800,2988482807,ES +2988482808,2988482811,GB +2988482812,2988482815,FR +2988482816,2988482819,NL +2988482820,2988482823,DE +2988482824,2988482831,PL +2988482832,2988482839,FI +2988482840,2988482843,ES +2988482844,2988482847,NL +2988482848,2988482863,FR +2988482864,2988482871,ES +2988482872,2988482875,PT +2988482876,2988482879,CZ +2988482880,2988482887,PL +2988482888,2988482891,ES +2988482892,2988482895,PL +2988482896,2988482927,GB +2988482928,2988482935,FR +2988482936,2988482939,PL +2988482940,2988482943,LT +2988482944,2988482959,PL +2988482960,2988482975,CZ +2988482976,2988482979,DE +2988482980,2988482983,GB +2988482984,2988482987,DE +2988482988,2988483091,FR +2988483092,2988483095,BE +2988483096,2988483099,FR +2988483100,2988483103,PL +2988483104,2988483107,IE +2988483108,2988483111,PL +2988483112,2988483115,ES +2988483116,2988483119,PL +2988483120,2988483127,ES +2988483128,2988483135,PL +2988483136,2988483151,FR +2988483152,2988483155,CH +2988483156,2988483159,FR +2988483160,2988483167,ES +2988483168,2988483199,GB +2988483200,2988483231,FR +2988483232,2988483235,IE +2988483236,2988483263,PL +2988483264,2988483267,FR +2988483268,2988483271,NL +2988483272,2988483279,DE +2988483280,2988483283,ES +2988483284,2988483295,DE +2988483296,2988483299,FR +2988483300,2988483303,NL +2988483304,2988483311,FR +2988483312,2988483315,GB +2988483316,2988483319,NL +2988483320,2988483327,PL +2988483328,2988483335,BE +2988483336,2988483343,DE +2988483344,2988483351,GB +2988483352,2988483359,FR +2988483360,2988483367,ES +2988483368,2988483375,PL +2988483376,2988483383,ES +2988483384,2988483427,FR +2988483428,2988483431,BE +2988483432,2988483447,FR +2988483448,2988483455,DE +2988483456,2988483711,FR +2988483712,2988483727,PL +2988483728,2988483735,FR +2988483736,2988483739,DE +2988483740,2988483743,FR +2988483744,2988483767,GB +2988483768,2988483775,FR +2988483776,2988483871,PL +2988483872,2988483879,DE +2988483880,2988483887,ES +2988483888,2988483895,GB +2988483896,2988483903,DE +2988483904,2988483935,PT +2988483936,2988483951,ES +2988483952,2988483963,IT +2988483964,2988483967,FR +2988483968,2988483983,IE +2988483984,2988483991,DE +2988483992,2988483995,GB +2988483996,2988483999,PT +2988484000,2988484003,DE +2988484004,2988484007,GB +2988484008,2988484011,FR +2988484012,2988484015,IE +2988484016,2988484019,FR +2988484020,2988484023,ES +2988484024,2988484031,FR +2988484032,2988484039,IT +2988484040,2988484047,NL +2988484048,2988484051,FR +2988484052,2988484055,GB +2988484056,2988484095,FR +2988484096,2988484111,DE +2988484112,2988484127,FR +2988484128,2988484131,PT +2988484132,2988484135,PL +2988484136,2988484143,NL +2988484144,2988484163,FR +2988484164,2988484167,PT +2988484168,2988484191,ES +2988484192,2988484207,DE +2988484208,2988484223,FR +2988484224,2988484239,ES +2988484240,2988484243,DE +2988484244,2988484287,FR +2988484288,2988484351,PL +2988484352,2988484383,GB +2988484384,2988484399,PL +2988484400,2988484403,PT +2988484404,2988484427,PL +2988484428,2988484431,GB +2988484432,2988484439,PL +2988484440,2988484443,ES +2988484444,2988484447,FR +2988484448,2988484463,SN +2988484464,2988484471,FR +2988484472,2988484475,PL +2988484476,2988484479,FR +2988484480,2988484511,PL +2988484512,2988484543,IT +2988484544,2988484591,FR +2988484592,2988484607,ES +2988484608,2988484775,FR +2988484776,2988484783,PL +2988484784,2988484831,FR +2988484832,2988484847,PL +2988484848,2988484863,FR +2988484864,2988484879,ES +2988484880,2988484883,GB +2988484884,2988484887,PL +2988484888,2988484891,FR +2988484892,2988484895,GB +2988484896,2988484927,FR +2988484928,2988484959,PT +2988484960,2988484991,FR +2988484992,2988485007,LT +2988485008,2988485023,PL +2988485024,2988485039,IE +2988485040,2988485055,PL +2988485056,2988485071,FR +2988485072,2988485087,IE +2988485088,2988485119,PL +2988485120,2988485135,FR +2988485136,2988485151,PL +2988485152,2988485167,IT +2988485168,2988485183,FR +2988485184,2988485247,BE +2988485248,2988485255,IT +2988485256,2988485263,NL +2988485264,2988485267,DE +2988485268,2988485271,CH +2988485272,2988485279,FR +2988485280,2988485311,PL +2988485312,2988485327,IT +2988485328,2988485335,FI +2988485336,2988485343,PT +2988485344,2988485347,ES +2988485348,2988485351,IT +2988485352,2988485355,GB +2988485356,2988485359,PL +2988485360,2988485439,FR +2988485440,2988485455,PL +2988485456,2988485479,FR +2988485480,2988485487,IT +2988485488,2988485503,FR +2988485504,2988485519,GB +2988485520,2988485559,FR +2988485560,2988485567,NL +2988485568,2988485583,GB +2988485584,2988485591,ES +2988485592,2988485599,FR +2988485600,2988485607,PL +2988485608,2988485611,FR +2988485612,2988485615,PL +2988485616,2988485631,GB +2988485632,2988485663,ES +2988485664,2988485671,PL +2988485672,2988485675,ES +2988485676,2988485683,FR +2988485684,2988485687,PL +2988485688,2988485691,GB +2988485692,2988485831,FR +2988485832,2988485835,NL +2988485836,2988485839,LT +2988485840,2988485855,BE +2988485856,2988485887,FR +2988485888,2988485903,PL +2988485904,2988485911,GB +2988485912,2988485951,FR +2988485952,2988485955,GB +2988485956,2988485959,CZ +2988485960,2988485967,FR +2988485968,2988485983,IE +2988485984,2988485999,FR +2988486000,2988486015,PL +2988486016,2988486031,FR +2988486032,2988486047,PL +2988486048,2988486063,GB +2988486064,2988486067,FR +2988486068,2988486071,ES +2988486072,2988486075,FR +2988486076,2988486079,ES +2988486080,2988486083,BE +2988486084,2988486087,IT +2988486088,2988486111,FR +2988486112,2988486135,PL +2988486136,2988486139,FR +2988486140,2988486143,GB +2988486144,2988486151,ES +2988486152,2988486159,FR +2988486160,2988486175,IE +2988486176,2988486179,FR +2988486180,2988486183,DE +2988486184,2988486191,IE +2988486192,2988486195,IT +2988486196,2988486199,DE +2988486200,2988486207,PT +2988486208,2988486211,ES +2988486212,2988486215,DE +2988486216,2988486219,ES +2988486220,2988486223,IT +2988486224,2988486231,BE +2988486232,2988486235,PL +2988486236,2988486239,ES +2988486240,2988486287,PL +2988486288,2988486291,FR +2988486292,2988486295,DE +2988486296,2988486299,GB +2988486300,2988486303,PL +2988486304,2988486319,DE +2988486320,2988486323,IT +2988486324,2988486327,PT +2988486328,2988486343,ES +2988486344,2988486347,FR +2988486348,2988486351,ES +2988486352,2988486399,FR +2988486400,2988486783,GB +2988486784,2988486787,DE +2988486788,2988486795,FR +2988486796,2988486799,PL +2988486800,2988486807,FR +2988486808,2988486811,DE +2988486812,2988486823,FR +2988486824,2988486831,IT +2988486832,2988486847,PL +2988486848,2988486863,FR +2988486864,2988486879,BE +2988486880,2988486883,PL +2988486884,2988486887,FR +2988486888,2988486891,PT +2988486892,2988486903,GB +2988486904,2988486907,DE +2988486908,2988486911,LT +2988486912,2988487167,PL +2988487168,2988487423,FR +2988487424,2988487679,IE +2988487680,2988487935,DE +2988487936,2988487939,BE +2988487940,2988487979,FR +2988487980,2988487983,ES +2988487984,2988488011,FR +2988488012,2988488015,LT +2988488016,2988488031,FR +2988488032,2988488047,IE +2988488048,2988488051,IT +2988488052,2988488055,FR +2988488056,2988488063,DE +2988488064,2988488095,FR +2988488096,2988488099,DE +2988488100,2988488103,PT +2988488104,2988488111,FR +2988488112,2988488127,PL +2988488128,2988488159,FR +2988488160,2988488175,ES +2988488176,2988488179,GB +2988488180,2988488183,DE +2988488184,2988488187,IT +2988488188,2988488191,DE +2988488192,2988488479,FR +2988488480,2988488487,PL +2988488488,2988488491,FR +2988488492,2988488495,ES +2988488496,2988488511,FR +2988488512,2988488543,ES +2988488544,2988488575,FR +2988488576,2988488607,NL +2988488608,2988488639,IT +2988488640,2988488647,ES +2988488648,2988488655,IT +2988488656,2988488663,PL +2988488664,2988488959,FR +2988488960,2988488963,NL +2988488964,2988488967,FR +2988488968,2988488971,DE +2988488972,2988488975,FR +2988488976,2988488983,ES +2988488984,2988488987,FR +2988488988,2988488991,NL +2988488992,2988489023,ES +2988489024,2988489055,FR +2988489056,2988489071,DE +2988489072,2988489087,FR +2988489088,2988489103,GB +2988489104,2988489119,FI +2988489120,2988489123,ES +2988489124,2988489127,NL +2988489128,2988489131,DE +2988489132,2988489167,FR +2988489168,2988489175,PT +2988489176,2988489179,PL +2988489180,2988489183,GB +2988489184,2988489255,FR +2988489256,2988489259,GB +2988489260,2988489263,FR +2988489264,2988489279,IT +2988489280,2988489283,FI +2988489284,2988489287,FR +2988489288,2988489295,PL +2988489296,2988489311,FR +2988489312,2988489327,PL +2988489328,2988489331,DE +2988489332,2988489335,PL +2988489336,2988489339,DE +2988489340,2988489343,PL +2988489344,2988489347,DE +2988489348,2988489351,PL +2988489352,2988489355,FR +2988489356,2988489359,PT +2988489360,2988489375,FR +2988489376,2988489379,ES +2988489380,2988489383,GB +2988489384,2988489391,FR +2988489392,2988489399,NL +2988489400,2988489403,PL +2988489404,2988489407,IT +2988489408,2988489439,PT +2988489440,2988489455,GB +2988489456,2988489471,BE +2988489472,2988489475,ES +2988489476,2988489479,GB +2988489480,2988489483,PL +2988489484,2988489487,GB +2988489488,2988489503,FR +2988489504,2988489519,GB +2988489520,2988489527,ES +2988489528,2988489539,NL +2988489540,2988489543,CH +2988489544,2988489663,FR +2988489664,2988489667,DE +2988489668,2988489671,GB +2988489672,2988489675,ES +2988489676,2988489679,IE +2988489680,2988489695,FR +2988489696,2988489711,FI +2988489712,2988489719,FR +2988489720,2988489723,IT +2988489724,2988489727,ES +2988489728,2988489743,FR +2988489744,2988489751,IT +2988489752,2988489755,ES +2988489756,2988489759,FR +2988489760,2988489791,NL +2988489792,2988489887,PL +2988489888,2988489903,FR +2988489904,2988489919,GB +2988489920,2988489935,PL +2988489936,2988489943,ES +2988489944,2988489947,FR +2988489948,2988489951,GB +2988489952,2988489967,FR +2988489968,2988489983,GB +2988489984,2988490047,FR +2988490048,2988490051,ES +2988490052,2988490055,PL +2988490056,2988490059,LT +2988490060,2988490063,FR +2988490064,2988490079,GB +2988490080,2988490095,FR +2988490096,2988490103,PT +2988490104,2988490107,ES +2988490108,2988490111,FR +2988490112,2988490143,PL +2988490144,2988490175,ES +2988490176,2988490183,FR +2988490184,2988490191,ES +2988490192,2988490195,GB +2988490196,2988490199,PT +2988490200,2988490223,FR +2988490224,2988490227,DE +2988490228,2988490231,GB +2988490232,2988490239,ES +2988490240,2988490247,PL +2988490248,2988490251,ES +2988490252,2988490255,FR +2988490256,2988490271,PL +2988490272,2988490287,ES +2988490288,2988490295,FR +2988490296,2988490303,DE +2988490304,2988490319,ES +2988490320,2988490335,FR +2988490336,2988490367,PT +2988490368,2988490379,FR +2988490380,2988490383,ES +2988490384,2988490399,FR +2988490400,2988490407,GB +2988490408,2988490415,NL +2988490416,2988490423,GB +2988490424,2988490463,FR +2988490464,2988490623,PL +2988490624,2988490751,ES +2988490752,2988491775,FR +2988491776,2988492031,TN +2988492032,2988492799,FR +2988492800,2988494847,PL +2988494848,2988498991,FR +2988498992,2988499007,PL +2988499008,2988499039,FR +2988499040,2988499051,DE +2988499052,2988499055,IT +2988499056,2988499063,FR +2988499064,2988499067,DE +2988499068,2988499071,FR +2988499072,2988499103,PL +2988499104,2988499119,IE +2988499120,2988499135,FR +2988499136,2988499139,DE +2988499140,2988499143,FR +2988499144,2988499151,DE +2988499152,2988499167,FR +2988499168,2988499199,ES +2988499200,2988499327,FR +2988499328,2988499343,NL +2988499344,2988499347,PL +2988499348,2988499351,FR +2988499352,2988499359,IT +2988499360,2988499367,PL +2988499368,2988499375,IT +2988499376,2988499379,PT +2988499380,2988499387,PL +2988499388,2988499407,FR +2988499408,2988499415,PL +2988499416,2988499423,FR +2988499424,2988499455,PL +2988499456,2988499463,NL +2988499464,2988499471,DE +2988499472,2988499487,FR +2988499488,2988499519,PL +2988499520,2988499551,FR +2988499552,2988499559,PL +2988499560,2988499567,NL +2988499568,2988499575,IE +2988499576,2988499579,FR +2988499580,2988499583,CH +2988499584,2988499599,IT +2988499600,2988499615,PL +2988499616,2988499623,DE +2988499624,2988499631,ES +2988499632,2988499635,CH +2988499636,2988499639,DE +2988499640,2988499663,GB +2988499664,2988499671,DE +2988499672,2988499679,NL +2988499680,2988499683,FR +2988499684,2988499687,CZ +2988499688,2988499691,FI +2988499692,2988499695,IT +2988499696,2988499699,PT +2988499700,2988499703,GB +2988499704,2988499711,DE +2988499712,2988499731,GB +2988499732,2988499735,FR +2988499736,2988499743,NL +2988499744,2988499747,IE +2988499748,2988499751,LT +2988499752,2988499755,PL +2988499756,2988499759,ES +2988499760,2988499763,CH +2988499764,2988499775,PL +2988499776,2988499791,IT +2988499792,2988499795,GB +2988499796,2988499803,IT +2988499804,2988499807,DE +2988499808,2988499823,FR +2988499824,2988499831,PL +2988499832,2988499839,GB +2988499840,2988499847,BE +2988499848,2988499851,DE +2988499852,2988499855,PL +2988499856,2988499871,ES +2988499872,2988499903,CH +2988499904,2988499907,FR +2988499908,2988499911,BE +2988499912,2988499919,FR +2988499920,2988499923,DE +2988499924,2988499927,BE +2988499928,2988499935,FR +2988499936,2988499967,IE +2988499968,2988500223,FR +2988500224,2988500255,NL +2988500256,2988500271,IT +2988500272,2988500287,BE +2988500288,2988500303,PL +2988500304,2988500307,FR +2988500308,2988500311,IT +2988500312,2988500315,ES +2988500316,2988500319,DE +2988500320,2988500335,IT +2988500336,2988500347,FR +2988500348,2988500351,PL +2988500352,2988500383,GB +2988500384,2988500399,BE +2988500400,2988500415,DE +2988500416,2988500447,PL +2988500448,2988500479,ES +2988500480,2988500495,DE +2988500496,2988500499,PL +2988500500,2988500503,DE +2988500504,2988500511,PL +2988500512,2988500519,NL +2988500520,2988500523,ES +2988500524,2988500527,GB +2988500528,2988500543,BE +2988500544,2988500607,PL +2988500608,2988500639,FR +2988500640,2988500671,GB +2988500672,2988500679,IT +2988500680,2988500687,PL +2988500688,2988500703,NL +2988500704,2988500711,PL +2988500712,2988500735,FR +2988500736,2988500751,IE +2988500752,2988500767,FR +2988500768,2988500771,PT +2988500772,2988500775,ES +2988500776,2988500779,GB +2988500780,2988500783,PL +2988500784,2988500791,FR +2988500792,2988500799,PL +2988500800,2988500815,ES +2988500816,2988500863,FR +2988500864,2988500867,GB +2988500868,2988500871,DE +2988500872,2988500879,NL +2988500880,2988500883,BE +2988500884,2988500887,PL +2988500888,2988500895,DE +2988500896,2988500919,FR +2988500920,2988500927,PL +2988500928,2988500935,FR +2988500936,2988500939,DE +2988500940,2988500943,FI +2988500944,2988500959,IT +2988500960,2988500975,IE +2988500976,2988500979,CZ +2988500980,2988500983,FR +2988500984,2988500987,DE +2988500988,2988500991,PL +2988500992,2988501055,FR +2988501056,2988501119,PT +2988501120,2988501199,FR +2988501200,2988501215,GB +2988501216,2988501219,DE +2988501220,2988501223,ES +2988501224,2988501227,PL +2988501228,2988501231,CZ +2988501232,2988501247,PL +2988501248,2988501327,FR +2988501328,2988501331,FI +2988501332,2988501335,GB +2988501336,2988501339,FR +2988501340,2988501359,PL +2988501360,2988501367,FR +2988501368,2988501375,ES +2988501376,2988501407,FR +2988501408,2988501411,LT +2988501412,2988501415,NL +2988501416,2988501423,BE +2988501424,2988501439,NL +2988501440,2988501471,BE +2988501472,2988501475,PT +2988501476,2988501479,BE +2988501480,2988501483,DE +2988501484,2988501487,PL +2988501488,2988501503,FR +2988501504,2988501567,PT +2988501568,2988501631,PL +2988501632,2988501663,DE +2988501664,2988501679,CH +2988501680,2988501683,PL +2988501684,2988501687,GB +2988501688,2988501691,FR +2988501692,2988501695,PL +2988501696,2988501727,FI +2988501728,2988501759,PL +2988501760,2988502031,FR +2988502032,2988502047,DE +2988502048,2988502063,NL +2988502064,2988502067,FR +2988502068,2988502071,GB +2988502072,2988502075,PL +2988502076,2988502079,ES +2988502080,2988502095,IE +2988502096,2988502099,FI +2988502100,2988502103,CZ +2988502104,2988502111,PT +2988502112,2988502143,PL +2988502144,2988502207,FR +2988502208,2988502223,GB +2988502224,2988502255,FR +2988502256,2988502263,GB +2988502264,2988502267,ES +2988502268,2988502271,DE +2988502272,2988502399,FR +2988502400,2988502407,NL +2988502408,2988502411,FR +2988502412,2988502415,CH +2988502416,2988502431,DE +2988502432,2988502447,FR +2988502448,2988502451,IE +2988502452,2988502455,IT +2988502456,2988502459,ES +2988502460,2988502463,PT +2988502464,2988502527,FR +2988502528,2988502591,PL +2988502592,2988502599,FR +2988502600,2988502603,DE +2988502604,2988502607,PL +2988502608,2988502631,FR +2988502632,2988502639,NL +2988502640,2988502655,FR +2988502656,2988502719,DE +2988502720,2988502723,ES +2988502724,2988502731,FR +2988502732,2988502735,PL +2988502736,2988502751,FR +2988502752,2988502783,ES +2988502784,2988502795,FR +2988502796,2988502799,DE +2988502800,2988502831,GB +2988502832,2988502839,DE +2988502840,2988502847,NL +2988502848,2988502851,FR +2988502852,2988502855,CH +2988502856,2988502859,FI +2988502860,2988502863,BE +2988502864,2988502867,IE +2988502868,2988502871,LT +2988502872,2988502875,PL +2988502876,2988502879,ES +2988502880,2988502883,IT +2988502884,2988502887,CZ +2988502888,2988502891,NL +2988502892,2988502895,PL +2988502896,2988502911,FR +2988502912,2988502915,PL +2988502916,2988502919,CH +2988502920,2988502959,FR +2988502960,2988502975,IE +2988502976,2988502983,PL +2988502984,2988502991,BE +2988502992,2988503015,DE +2988503016,2988503019,PL +2988503020,2988503023,ES +2988503024,2988503031,GB +2988503032,2988503035,ES +2988503036,2988503039,GB +2988503040,2988503079,FR +2988503080,2988503103,GB +2988503104,2988503107,ES +2988503108,2988503111,NL +2988503112,2988503119,PL +2988503120,2988503127,DE +2988503128,2988503131,IT +2988503132,2988503151,PL +2988503152,2988503155,DE +2988503156,2988503159,LT +2988503160,2988503167,ES +2988503168,2988503171,PL +2988503172,2988503183,ES +2988503184,2988503199,NL +2988503200,2988503215,FR +2988503216,2988503231,PL +2988503232,2988503375,FR +2988503376,2988503391,GB +2988503392,2988503395,ES +2988503396,2988503399,PL +2988503400,2988503415,FR +2988503416,2988503423,PL +2988503424,2988503471,FR +2988503472,2988503487,NL +2988503488,2988503503,DE +2988503504,2988503519,FR +2988503520,2988503535,NL +2988503536,2988503551,FI +2988503552,2988503807,GB +2988503808,2988503987,FR +2988503988,2988504003,PL +2988504004,2988504015,FR +2988504016,2988504019,GB +2988504020,2988504023,BE +2988504024,2988504031,FR +2988504032,2988504063,ES +2988504064,2988504223,FR +2988504224,2988504227,PT +2988504228,2988504231,DE +2988504232,2988504239,PL +2988504240,2988504255,GB +2988504256,2988504287,ES +2988504288,2988504303,GB +2988504304,2988504311,PL +2988504312,2988504315,FI +2988504316,2988504319,DE +2988504320,2988504415,FR +2988504416,2988504419,PL +2988504420,2988504423,DE +2988504424,2988504427,ES +2988504428,2988504431,PT +2988504432,2988504435,FR +2988504436,2988504439,ES +2988504440,2988504443,FR +2988504444,2988504463,GB +2988504464,2988504467,DE +2988504468,2988504471,ES +2988504472,2988504479,PL +2988504480,2988504543,FR +2988504544,2988504559,PL +2988504560,2988504563,FR +2988504564,2988504567,PL +2988504568,2988504571,FR +2988504572,2988504603,PL +2988504604,2988504671,FR +2988504672,2988504703,PT +2988504704,2988504735,FR +2988504736,2988504743,PL +2988504744,2988504751,GB +2988504752,2988504767,FR +2988504768,2988504799,ES +2988504800,2988504815,CH +2988504816,2988504863,FR +2988504864,2988504879,PL +2988504880,2988504959,FR +2988504960,2988504963,PT +2988504964,2988504967,FR +2988504968,2988504975,BE +2988504976,2988504991,FR +2988504992,2988505023,CZ +2988505024,2988505087,FR +2988505088,2988505151,NL +2988505152,2988505183,FR +2988505184,2988505195,PL +2988505196,2988505199,DE +2988505200,2988505207,PL +2988505208,2988505211,ES +2988505212,2988505215,PT +2988505216,2988505247,FR +2988505248,2988505255,PL +2988505256,2988505311,FR +2988505312,2988505315,DE +2988505316,2988505319,ES +2988505320,2988505323,PL +2988505324,2988505327,FR +2988505328,2988505343,PL +2988505344,2988505439,FR +2988505440,2988505455,PL +2988505456,2988505487,FR +2988505488,2988505503,PL +2988505504,2988505599,FR +2988505600,2988505603,DE +2988505604,2988505607,ES +2988505608,2988505615,FR +2988505616,2988505631,ES +2988505632,2988505663,FR +2988505664,2988505695,ES +2988505696,2988505699,FR +2988505700,2988505703,IT +2988505704,2988505711,PL +2988505712,2988505727,GB +2988505728,2988505735,PL +2988505736,2988505739,DE +2988505740,2988505743,ES +2988505744,2988505747,PT +2988505748,2988505751,DE +2988505752,2988505755,CH +2988505756,2988505759,PL +2988505760,2988505775,FR +2988505776,2988505791,ES +2988505792,2988505807,FR +2988505808,2988505811,PL +2988505812,2988505815,DE +2988505816,2988505823,BE +2988505824,2988506143,FR +2988506144,2988506175,PT +2988506176,2988506191,IT +2988506192,2988506207,GB +2988506208,2988506239,ES +2988506240,2988506271,FR +2988506272,2988506303,GB +2988506304,2988506335,DE +2988506336,2988506367,FR +2988506368,2988506375,IE +2988506376,2988506379,FR +2988506380,2988506383,DE +2988506384,2988506399,FR +2988506400,2988506415,GB +2988506416,2988506431,BE +2988506432,2988506447,IT +2988506448,2988506451,ES +2988506452,2988506455,PT +2988506456,2988506459,BE +2988506460,2988506463,PL +2988506464,2988506495,FR +2988506496,2988506499,PL +2988506500,2988506507,DE +2988506508,2988506515,ES +2988506516,2988506519,FR +2988506520,2988506523,PL +2988506524,2988506527,IE +2988506528,2988506543,FR +2988506544,2988506551,DE +2988506552,2988506559,FR +2988506560,2988506563,DE +2988506564,2988506567,A2 +2988506568,2988506571,GB +2988506572,2988506575,CH +2988506576,2988506623,FR +2988506624,2988506687,PL +2988506688,2988506751,IE +2988506752,2988506763,ES +2988506764,2988506767,PL +2988506768,2988506783,ES +2988506784,2988506819,PL +2988506820,2988506831,FR +2988506832,2988506847,PL +2988506848,2988506863,FR +2988506864,2988506871,DE +2988506872,2988506875,ES +2988506876,2988506887,FR +2988506888,2988506891,ES +2988506892,2988507143,FR +2988507144,2988507147,BE +2988507148,2988507155,IT +2988507156,2988507159,PL +2988507160,2988507163,CH +2988507164,2988507167,PL +2988507168,2988507183,DE 2988507184,2988507199,FR 2988507200,2988507203,GB -2988507204,2988507207,PL +2988507204,2988507207,DE 2988507208,2988507211,ES 2988507212,2988507215,PL 2988507216,2988507231,FR 2988507232,2988507239,ES 2988507240,2988507243,FR -2988507244,2988507247,ES +2988507244,2988507247,GB 2988507248,2988507263,FR 2988507264,2988507279,PL 2988507280,2988507287,GB 2988507288,2988507327,FR 2988507328,2988507335,DE -2988507336,2988507423,FR +2988507336,2988507339,FR +2988507340,2988507343,NL +2988507344,2988507423,FR 2988507424,2988507431,PL 2988507432,2988507439,DE 2988507440,2988507443,IT 2988507444,2988507447,NL -2988507448,2988507451,PL +2988507448,2988507451,IT 2988507452,2988507459,FR 2988507460,2988507463,BE 2988507464,2988507467,CH @@ -59934,12 +69928,11 @@ 2988507488,2988507503,FR 2988507504,2988507519,IT 2988507520,2988507527,PL -2988507528,2988507531,DE -2988507532,2988507535,PL +2988507528,2988507535,DE 2988507536,2988507539,FR 2988507540,2988507543,PL -2988507544,2988507551,FR -2988507552,2988507567,GB +2988507544,2988507547,FR +2988507548,2988507567,GB 2988507568,2988507583,IE 2988507584,2988507591,ES 2988507592,2988507595,FR @@ -59958,8 +69951,7 @@ 2988507712,2988507743,FR 2988507744,2988507759,IE 2988507760,2988507767,FR -2988507768,2988507775,PL -2988507776,2988507839,IE +2988507768,2988507839,PL 2988507840,2988507855,FR 2988507856,2988507859,BE 2988507860,2988507867,PL @@ -59982,7 +69974,8 @@ 2988507980,2988507983,DE 2988507984,2988507999,FR 2988508000,2988508031,NL -2988508032,2988508039,PL +2988508032,2988508035,PL +2988508036,2988508039,CZ 2988508040,2988508047,FR 2988508048,2988508055,GB 2988508056,2988508063,ES @@ -59991,28 +69984,32 @@ 2988508072,2988508079,FR 2988508080,2988508095,ES 2988508096,2988508103,FR -2988508104,2988508127,GB +2988508104,2988508111,GB +2988508112,2988508127,BE 2988508128,2988508135,PL 2988508136,2988508143,GB 2988508144,2988508151,FR -2988508152,2988508155,ES -2988508156,2988508159,PL +2988508152,2988508159,ES 2988508160,2988508207,FR -2988508208,2988508211,DE -2988508212,2988508215,PL +2988508208,2988508215,PL 2988508216,2988508219,FR 2988508220,2988508223,DE -2988508224,2988508287,FR +2988508224,2988508255,FR +2988508256,2988508259,BE +2988508260,2988508263,FR +2988508264,2988508271,ES +2988508272,2988508287,FR 2988508288,2988508303,PL -2988508304,2988508307,CZ +2988508304,2988508307,PT 2988508308,2988508315,FR 2988508316,2988508319,ES 2988508320,2988508343,FR -2988508344,2988508367,ES +2988508344,2988508351,GB +2988508352,2988508367,ES 2988508368,2988508383,FR -2988508384,2988508399,PL -2988508400,2988508415,ES -2988508416,2988508431,PT +2988508384,2988508423,PL +2988508424,2988508427,CH +2988508428,2988508431,CZ 2988508432,2988508435,FR 2988508436,2988508439,DE 2988508440,2988508447,PL @@ -60025,41 +70022,37 @@ 2988508684,2988508687,DE 2988508688,2988508703,PL 2988508704,2988508711,GB -2988508712,2988508715,DE -2988508716,2988508719,GB -2988508720,2988508847,FR +2988508712,2988508719,DE +2988508720,2988508723,IT +2988508724,2988508735,GB +2988508736,2988508767,FR +2988508768,2988508799,PT +2988508800,2988508847,FR 2988508848,2988508855,GB 2988508856,2988508871,FR 2988508872,2988508875,PL -2988508876,2988508879,DE -2988508880,2988508895,ES +2988508876,2988508879,PT +2988508880,2988508895,DE 2988508896,2988508911,PL -2988508912,2988508915,FR -2988508916,2988508919,GB -2988508920,2988508923,IE -2988508924,2988508927,IT -2988508928,2988508931,LT -2988508932,2988508939,NL -2988508940,2988508943,PL -2988508944,2988508947,PT +2988508912,2988508927,FR +2988508928,2988508943,GB +2988508944,2988508947,DE 2988508948,2988508951,FR -2988508952,2988508959,IT -2988508960,2988508975,DE -2988508976,2988508991,NL -2988508992,2988509023,FR -2988509024,2988509055,ES -2988509056,2988509119,IT -2988509120,2988509151,GB +2988508952,2988508959,ES +2988508960,2988508991,FR +2988508992,2988509055,NL +2988509056,2988509119,FR +2988509120,2988509151,IT 2988509152,2988509183,PL 2988509184,2988509279,FR 2988509280,2988509283,DE 2988509284,2988509287,IT 2988509288,2988509291,BE -2988509292,2988509295,FR +2988509292,2988509295,IT 2988509296,2988509311,DE 2988509312,2988509343,FR 2988509344,2988509351,BE -2988509352,2988509355,NL +2988509352,2988509355,ES 2988509356,2988509363,DE 2988509364,2988509367,IT 2988509368,2988509371,CH @@ -60073,8 +70066,7 @@ 2988509444,2988509451,ES 2988509452,2988509455,PL 2988509456,2988509467,FR -2988509468,2988509471,NL -2988509472,2988509503,FR +2988509468,2988509503,NL 2988509504,2988509507,PL 2988509508,2988509511,FR 2988509512,2988509515,GB @@ -60105,21 +70097,28 @@ 2988509824,2988509839,FR 2988509840,2988509855,ES 2988509856,2988509859,FR -2988509860,2988509871,DE -2988509872,2988509903,FR +2988509860,2988509875,DE +2988509876,2988509879,FR +2988509880,2988509887,DE +2988509888,2988509903,FR 2988509904,2988509907,PL 2988509908,2988509919,IT -2988509920,2988509931,FR -2988509932,2988509951,PL +2988509920,2988509927,FR +2988509928,2988509935,PL +2988509936,2988509939,DE +2988509940,2988509943,IT +2988509944,2988509951,FR 2988509952,2988509955,IT 2988509956,2988509959,PL -2988509960,2988509963,FR +2988509960,2988509963,IT 2988509964,2988509967,GB 2988509968,2988509983,ES -2988509984,2988509995,FR +2988509984,2988509987,DE +2988509988,2988509991,CZ +2988509992,2988509995,FR 2988509996,2988509999,DE 2988510000,2988510015,PL -2988510016,2988510023,ES +2988510016,2988510023,GB 2988510024,2988510031,FR 2988510032,2988510079,PL 2988510080,2988510095,ES @@ -60144,19 +70143,35 @@ 2988510324,2988510327,GB 2988510328,2988510399,FR 2988510400,2988510403,DE -2988510404,2988510407,FR +2988510404,2988510407,GB 2988510408,2988510415,PL 2988510416,2988510431,FR 2988510432,2988510435,IT -2988510436,2988510751,FR +2988510436,2988510463,FR +2988510464,2988510495,PL +2988510496,2988510511,FR +2988510512,2988510515,GB +2988510516,2988510519,DE +2988510520,2988510523,PT +2988510524,2988510527,BE +2988510528,2988510559,FR +2988510560,2988510591,IT +2988510592,2988510623,BE +2988510624,2988510655,IE +2988510656,2988510687,PL +2988510688,2988510703,FR +2988510704,2988510719,PL +2988510720,2988510751,FR 2988510752,2988510759,PL 2988510760,2988510767,FR 2988510768,2988510775,ES 2988510776,2988510847,FR -2988510848,2988510911,PL -2988510912,2988510943,FR +2988510848,2988510943,PL 2988510944,2988510975,GB -2988510976,2988510991,PL +2988510976,2988510979,PL +2988510980,2988510983,IT +2988510984,2988510987,GB +2988510988,2988510991,PL 2988510992,2988511007,FR 2988511008,2988511015,PL 2988511016,2988511023,IT @@ -60167,7 +70182,8 @@ 2988511088,2988511103,FR 2988511104,2988511167,PL 2988511168,2988511175,IE -2988511176,2988511183,FR +2988511176,2988511179,GB +2988511180,2988511183,FR 2988511184,2988511191,GB 2988511192,2988511487,FR 2988511488,2988511551,PL @@ -60177,7 +70193,7 @@ 2988511576,2988511583,GB 2988511584,2988511663,FR 2988511664,2988511671,DE -2988511672,2988511675,FR +2988511672,2988511675,PL 2988511676,2988511679,GB 2988511680,2988511683,NL 2988511684,2988511687,ES @@ -60187,8 +70203,9 @@ 2988511700,2988511703,IT 2988511704,2988511711,PL 2988511712,2988511719,DE -2988511720,2988511735,FR -2988511736,2988511739,DE +2988511720,2988511727,FR +2988511728,2988511731,NL +2988511732,2988511739,DE 2988511740,2988511743,FR 2988511744,2988511747,PL 2988511748,2988511751,GB @@ -60197,7 +70214,7 @@ 2988511776,2988511807,GB 2988511808,2988511823,ES 2988511824,2988511831,DE -2988511832,2988511835,ES +2988511832,2988511835,GB 2988511836,2988511855,FR 2988511856,2988511871,GB 2988511872,2988511887,PL @@ -60208,15 +70225,16 @@ 2988511920,2988511923,GB 2988511924,2988511927,ES 2988511928,2988511931,IT -2988511932,2988511935,PL +2988511932,2988511935,FR 2988511936,2988511951,PT 2988511952,2988511999,GB 2988512000,2988512031,PL -2988512032,2988512055,FR +2988512032,2988512047,FR +2988512048,2988512055,ES 2988512056,2988512059,PL 2988512060,2988512063,FR 2988512064,2988512095,CH -2988512096,2988512127,FR +2988512096,2988512127,IE 2988512128,2988512143,PL 2988512144,2988512151,GB 2988512152,2988512155,ES @@ -60239,10 +70257,12 @@ 2988512316,2988512319,DE 2988512320,2988512335,FR 2988512336,2988512339,PL -2988512340,2988512343,ES +2988512340,2988512343,DE 2988512344,2988512351,FR 2988512352,2988512383,IT -2988512384,2988512415,FR +2988512384,2988512399,FR +2988512400,2988512403,DE +2988512404,2988512415,FR 2988512416,2988512435,PL 2988512436,2988512439,FR 2988512440,2988512447,NL @@ -60251,19 +70271,21 @@ 2988512460,2988512467,FR 2988512468,2988512471,GB 2988512472,2988512479,FR -2988512480,2988512483,ES +2988512480,2988512483,DE 2988512484,2988512523,FR 2988512524,2988512527,IT 2988512528,2988512543,FR 2988512544,2988512551,PL -2988512552,2988512579,FR +2988512552,2988512575,FR +2988512576,2988512579,NL 2988512580,2988512583,ES 2988512584,2988512587,FR 2988512588,2988512591,PL 2988512592,2988512595,BE 2988512596,2988512599,ES 2988512600,2988512607,PT -2988512608,2988512639,FR +2988512608,2988512631,GB +2988512632,2988512639,PL 2988512640,2988512647,GB 2988512648,2988512651,ES 2988512652,2988512655,DE @@ -60279,17 +70301,16 @@ 2988512840,2988512847,DE 2988512848,2988512851,ES 2988512852,2988512855,DE -2988512856,2988512879,FR -2988512880,2988512895,DE +2988512856,2988512895,FR 2988512896,2988512899,PL 2988512900,2988512903,GB 2988512904,2988512907,ES -2988512908,2988512911,LT -2988512912,2988512943,FR +2988512908,2988512943,FR 2988512944,2988512951,GB 2988512952,2988512955,FR 2988512956,2988512959,LT -2988512960,2988512967,ES +2988512960,2988512963,ES +2988512964,2988512967,PL 2988512968,2988512971,GB 2988512972,2988512975,NL 2988512976,2988512995,FR @@ -60315,25 +70336,27 @@ 2988513276,2988513279,CH 2988513280,2988513283,FR 2988513284,2988513287,ES -2988513288,2988513307,FR +2988513288,2988513291,FR +2988513292,2988513295,PL +2988513296,2988513303,NL +2988513304,2988513307,FR 2988513308,2988513311,PL 2988513312,2988513327,PT 2988513328,2988513331,PL -2988513332,2988513335,FR -2988513336,2988513343,GB -2988513344,2988513351,FR +2988513332,2988513343,FR +2988513344,2988513351,ES 2988513352,2988513359,IT 2988513360,2988513375,GB -2988513376,2988513383,FR -2988513384,2988513407,GB +2988513376,2988513379,FR +2988513380,2988513383,PT +2988513384,2988513407,FR 2988513408,2988513471,PL 2988513472,2988513503,FR 2988513504,2988513507,CH 2988513508,2988513511,DE 2988513512,2988513515,FR 2988513516,2988513519,DE -2988513520,2988513535,GB -2988513536,2988513551,DE +2988513520,2988513551,GB 2988513552,2988513555,IT 2988513556,2988513567,FR 2988513568,2988513575,GB @@ -60345,11 +70368,12 @@ 2988513680,2988513683,ES 2988513684,2988513691,FR 2988513692,2988513695,DE -2988513696,2988513723,FR +2988513696,2988513703,FR +2988513704,2988513707,DE +2988513708,2988513723,FR 2988513724,2988513727,DE -2988513728,2988513731,FR -2988513732,2988513735,BE -2988513736,2988513743,DE +2988513728,2988513739,FR +2988513740,2988513743,ES 2988513744,2988513759,GB 2988513760,2988513879,FR 2988513880,2988513883,ES @@ -60358,16 +70382,26 @@ 2988513900,2988513903,PL 2988513904,2988513919,IT 2988513920,2988513951,FR -2988513952,2988513983,PT -2988513984,2988514015,GB -2988514016,2988514019,PT +2988513952,2988513967,PT +2988513968,2988513983,DE +2988513984,2988513991,GB +2988513992,2988513999,IE +2988514000,2988514015,FR +2988514016,2988514019,ES 2988514020,2988514023,NL -2988514024,2988514027,PT -2988514028,2988514111,FR +2988514024,2988514027,CH +2988514028,2988514031,PL +2988514032,2988514047,FR +2988514048,2988514079,ES +2988514080,2988514095,PL +2988514096,2988514099,DE +2988514100,2988514103,PL +2988514104,2988514111,FR 2988514112,2988514115,DE 2988514116,2988514127,FR 2988514128,2988514131,IE -2988514132,2988514139,IT +2988514132,2988514135,IT +2988514136,2988514139,ES 2988514140,2988514143,PL 2988514144,2988514159,FR 2988514160,2988514163,IT @@ -60378,26 +70412,26 @@ 2988514208,2988514211,ES 2988514212,2988514219,FR 2988514220,2988514227,GB -2988514228,2988514231,FR -2988514232,2988514239,GB +2988514228,2988514231,IE +2988514232,2988514239,ES 2988514240,2988514243,FR 2988514244,2988514251,GB 2988514252,2988514255,FR 2988514256,2988514271,ES 2988514272,2988514279,FR -2988514280,2988514283,PL -2988514284,2988514287,GB +2988514280,2988514287,PL 2988514288,2988514303,ES 2988514304,2988514335,FR -2988514336,2988514339,IE +2988514336,2988514339,PL 2988514340,2988514343,FR -2988514344,2988514351,GB -2988514352,2988514399,FR +2988514344,2988514359,PL +2988514360,2988514367,ES +2988514368,2988514399,FR 2988514400,2988514431,GB 2988514432,2988514447,FR 2988514448,2988514463,ES -2988514464,2988514527,FR -2988514528,2988514559,DE +2988514464,2988514543,FR +2988514544,2988514559,PL 2988514560,2988514623,FR 2988514624,2988514655,DE 2988514656,2988514671,FR @@ -60405,7 +70439,7 @@ 2988514676,2988514679,IT 2988514680,2988514687,FR 2988514688,2988514719,GB -2988514720,2988514735,DE +2988514720,2988514735,ES 2988514736,2988514739,FR 2988514740,2988514743,ES 2988514744,2988514747,BE @@ -60413,24 +70447,410 @@ 2988514752,2988514815,FI 2988514816,2988514823,FR 2988514824,2988514827,PL -2988514828,2988514831,DE +2988514828,2988514831,FR 2988514832,2988514839,PL 2988514840,2988514879,ES 2988514880,2988514943,PL 2988514944,2988514959,ES 2988514960,2988514975,PL -2988514976,2988514979,BE +2988514976,2988514979,DE 2988514980,2988514983,PL 2988514984,2988514991,IT -2988514992,2988514999,FR -2988515000,2988515007,PL -2988515008,2988515039,FR +2988514992,2988514995,FR +2988514996,2988515007,PL +2988515008,2988515027,FR +2988515028,2988515031,DE +2988515032,2988515039,FR 2988515040,2988515071,GB 2988515072,2988515327,FR 2988515328,2988517375,DE 2988517376,2988519423,FR 2988519424,2988521471,PL -2988521472,2988535807,FR +2988521472,2988523519,FR +2988523520,2988523523,GB +2988523524,2988523599,FR +2988523600,2988523603,ES +2988523604,2988523607,GB +2988523608,2988523615,PL +2988523616,2988523631,IT +2988523632,2988523651,PL +2988523652,2988523655,FR +2988523656,2988523663,FI +2988523664,2988523667,DE +2988523668,2988523679,FR +2988523680,2988523711,ES +2988523712,2988523731,GB +2988523732,2988523735,IT +2988523736,2988523739,DE +2988523740,2988523743,FR +2988523744,2988523775,GB +2988523776,2988524031,FR +2988524032,2988524159,DE +2988524160,2988524163,ES +2988524164,2988524167,FR +2988524168,2988524175,ES +2988524176,2988524191,FR +2988524192,2988524195,FI +2988524196,2988524199,DE +2988524200,2988524203,IE +2988524204,2988524211,FR +2988524212,2988524215,FI +2988524216,2988524219,FR +2988524220,2988524223,ES +2988524224,2988524227,DE +2988524228,2988524231,PL +2988524232,2988524239,ES +2988524240,2988524255,FR +2988524256,2988524259,LT +2988524260,2988524263,PT +2988524264,2988524267,CZ +2988524268,2988524271,NL +2988524272,2988524287,DE +2988524288,2988524291,ES +2988524292,2988524295,IT +2988524296,2988524303,FR +2988524304,2988524307,IT +2988524308,2988524319,GB +2988524320,2988524351,FR +2988524352,2988524359,CH +2988524360,2988524363,ES +2988524364,2988524367,DE +2988524368,2988524383,GB +2988524384,2988524415,IE +2988524416,2988524447,FI +2988524448,2988524479,GB +2988524480,2988524483,CZ +2988524484,2988524487,IT +2988524488,2988524495,FR +2988524496,2988524543,PL +2988524544,2988524575,IE +2988524576,2988524591,FR +2988524592,2988524603,PL +2988524604,2988524607,ES +2988524608,2988524623,GB +2988524624,2988524639,FR +2988524640,2988524671,DE +2988524672,2988524799,FR +2988524800,2988525055,GB +2988525056,2988525567,PL +2988525568,2988525583,FR +2988525584,2988525647,PL +2988525648,2988525655,IE +2988525656,2988525659,FR +2988525660,2988525663,DE +2988525664,2988525695,FR +2988525696,2988525823,PL +2988525824,2988525839,FR +2988525840,2988525847,ES +2988525848,2988525851,IT +2988525852,2988525887,DE +2988525888,2988525951,FI +2988525952,2988526079,ES +2988526080,2988526143,PT +2988526144,2988526175,BE +2988526176,2988526239,ES +2988526240,2988526423,PL +2988526424,2988526427,BE +2988526428,2988526431,ES +2988526432,2988526447,FR +2988526448,2988526451,ES +2988526452,2988526455,FR +2988526456,2988526463,ES +2988526464,2988526543,FR +2988526544,2988526559,IT +2988526560,2988526579,FR +2988526580,2988526583,ES +2988526584,2988526591,DE +2988526592,2988526607,FR +2988526608,2988526615,DE +2988526616,2988526655,FR +2988526656,2988526663,PL +2988526664,2988526687,FR +2988526688,2988526703,ES +2988526704,2988526711,FR +2988526712,2988526715,ES +2988526716,2988526719,GB +2988526720,2988526847,FR +2988526848,2988526863,PL +2988526864,2988526867,GB +2988526868,2988526871,FR +2988526872,2988526875,DE +2988526876,2988526911,FR +2988526912,2988526927,GB +2988526928,2988526935,DE +2988526936,2988526943,PL +2988526944,2988526951,DE +2988526952,2988526959,PT +2988526960,2988526975,FR +2988526976,2988526991,PL +2988526992,2988526995,DE +2988526996,2988526999,ES +2988527000,2988527087,FR +2988527088,2988527095,GB +2988527096,2988527099,IE +2988527100,2988527103,LT +2988527104,2988527127,FR +2988527128,2988527167,PL +2988527168,2988527171,DE +2988527172,2988527175,ES +2988527176,2988527179,PT +2988527180,2988527183,PL +2988527184,2988527187,IT +2988527188,2988527191,ES +2988527192,2988527195,DE +2988527196,2988527199,FR +2988527200,2988527207,NL +2988527208,2988527211,DE +2988527212,2988527391,FR +2988527392,2988527399,PL +2988527400,2988527407,DE +2988527408,2988527411,FR +2988527412,2988527415,PL +2988527416,2988527423,GB +2988527424,2988527431,FR +2988527432,2988527439,IT +2988527440,2988527451,PL +2988527452,2988527455,PT +2988527456,2988527459,IT +2988527460,2988527475,FR +2988527476,2988527479,ES +2988527480,2988527487,FR +2988527488,2988527503,GB +2988527504,2988527523,FR +2988527524,2988527531,DE +2988527532,2988527535,FR +2988527536,2988527551,GB +2988527552,2988527583,PL +2988527584,2988527591,GB +2988527592,2988527595,IT +2988527596,2988527599,DE +2988527600,2988527603,NL +2988527604,2988527607,FR +2988527608,2988527611,DE +2988527612,2988527615,PT +2988527616,2988528127,DE +2988528128,2988528159,GB +2988528160,2988528175,ES +2988528176,2988528179,CH +2988528180,2988528183,IT +2988528184,2988528187,PL +2988528188,2988528191,GB +2988528192,2988528207,IE +2988528208,2988528215,FR +2988528216,2988528219,IE +2988528220,2988528223,DE +2988528224,2988528231,CH +2988528232,2988528235,GB +2988528236,2988528239,FR +2988528240,2988528255,GB +2988528256,2988528383,FR +2988528384,2988528399,GB +2988528400,2988528415,FR +2988528416,2988528423,GB +2988528424,2988528431,NL +2988528432,2988528435,PL +2988528436,2988528439,FR +2988528440,2988528447,ES +2988528448,2988528451,DE +2988528452,2988528455,IT +2988528456,2988528459,GB +2988528460,2988528463,ES +2988528464,2988528467,DE +2988528468,2988528471,GB +2988528472,2988528475,ES +2988528476,2988528479,DE +2988528480,2988528483,NL +2988528484,2988528487,ES +2988528488,2988528495,FR +2988528496,2988528511,IT +2988528512,2988528639,FR +2988528640,2988528643,BE +2988528644,2988528647,PL +2988528648,2988528671,FR +2988528672,2988528703,DE +2988528704,2988528767,FR +2988528768,2988528771,DE +2988528772,2988528783,FR +2988528784,2988528787,ES +2988528788,2988528791,FR +2988528792,2988528795,PL +2988528796,2988528799,GB +2988528800,2988528863,FR +2988528864,2988528867,DE +2988528868,2988528875,FR +2988528876,2988528879,GB +2988528880,2988528895,ES +2988528896,2988528911,FR +2988528912,2988528919,ES +2988528920,2988528923,CH +2988528924,2988528927,GB +2988528928,2988528959,FR +2988528960,2988528991,FI +2988528992,2988529007,LT +2988529008,2988529023,FI +2988529024,2988529031,PL +2988529032,2988529047,FR +2988529048,2988529051,PL +2988529052,2988529055,PT +2988529056,2988529119,FR +2988529120,2988529151,NL +2988529152,2988529159,IT +2988529160,2988529163,IE +2988529164,2988529167,DE +2988529168,2988529171,IE +2988529172,2988529175,PT +2988529176,2988529179,ES +2988529180,2988529199,FR +2988529200,2988529207,PL +2988529208,2988529247,FR +2988529248,2988529251,GB +2988529252,2988529255,PL +2988529256,2988529263,NL +2988529264,2988529279,ES +2988529280,2988529311,FR +2988529312,2988529315,PL +2988529316,2988529319,FR +2988529320,2988529323,FI +2988529324,2988529331,DE +2988529332,2988529335,FR +2988529336,2988529339,GB +2988529340,2988529343,DE +2988529344,2988529351,IE +2988529352,2988529359,GB +2988529360,2988529375,IE +2988529376,2988529383,GB +2988529384,2988529387,DE +2988529388,2988529391,FR +2988529392,2988529407,PL +2988529408,2988529423,FR +2988529424,2988529431,DE +2988529432,2988529439,FR +2988529440,2988529455,PL +2988529456,2988529535,FR +2988529536,2988529567,FI +2988529568,2988529599,GB +2988529600,2988529607,IT +2988529608,2988529631,FR +2988529632,2988529647,LT +2988529648,2988529663,FR +2988529664,2988529679,PL +2988529680,2988529703,FR +2988529704,2988529707,GB +2988529708,2988529759,FR +2988529760,2988529767,PL +2988529768,2988529771,FR +2988529772,2988529775,DE +2988529776,2988529783,ES +2988529784,2988529791,FR +2988529792,2988529799,ES +2988529800,2988529807,DE +2988529808,2988529823,FR +2988529824,2988529855,ES +2988529856,2988529887,FR +2988529888,2988529891,DE +2988529892,2988529895,PL +2988529896,2988529899,GB +2988529900,2988529903,FI +2988529904,2988529919,BE +2988529920,2988529935,FR +2988529936,2988529939,CH +2988529940,2988529943,GB +2988529944,2988529947,ES +2988529948,2988529951,PT +2988529952,2988529955,GB +2988529956,2988529959,PL +2988529960,2988529967,GB +2988529968,2988529983,NL +2988529984,2988529999,GB +2988530000,2988530003,FR +2988530004,2988530007,GB +2988530008,2988530039,FR +2988530040,2988530043,DE +2988530044,2988530047,FR +2988530048,2988530063,GB +2988530064,2988530079,IE +2988530080,2988530095,FR +2988530096,2988530099,DE +2988530100,2988530103,FR +2988530104,2988530111,GB +2988530112,2988530191,FR +2988530192,2988530207,NL +2988530208,2988530239,PL +2988530240,2988530271,FR +2988530272,2988530303,IE +2988530304,2988530307,DE +2988530308,2988530311,PL +2988530312,2988530323,FR +2988530324,2988530327,GB +2988530328,2988530351,FR +2988530352,2988530371,ES +2988530372,2988530379,FR +2988530380,2988530383,CH +2988530384,2988530399,FR +2988530400,2988530403,ES +2988530404,2988530407,PL +2988530408,2988530415,FR +2988530416,2988530423,PL +2988530424,2988530431,ES +2988530432,2988530687,DE +2988530688,2988530695,IT +2988530696,2988530703,PL +2988530704,2988530735,FR +2988530736,2988530739,IE +2988530740,2988530743,NL +2988530744,2988530751,PL +2988530752,2988530847,FR +2988530848,2988530851,DE +2988530852,2988530855,ES +2988530856,2988530863,PT +2988530864,2988530867,PL +2988530868,2988530871,FR +2988530872,2988530879,IT +2988530880,2988530887,PL +2988530888,2988530895,DE +2988530896,2988530927,FR +2988530928,2988530943,FI +2988530944,2988530975,FR +2988530976,2988531007,PL +2988531008,2988531015,DE +2988531016,2988531019,NL +2988531020,2988531023,IE +2988531024,2988531027,ES +2988531028,2988531031,FR +2988531032,2988531039,PL +2988531040,2988531047,FR +2988531048,2988531051,GB +2988531052,2988531055,PL +2988531056,2988531071,FR +2988531072,2988531075,DE +2988531076,2988531079,GB +2988531080,2988531083,FR +2988531084,2988531087,PL +2988531088,2988531103,FR +2988531104,2988531119,BE +2988531120,2988531151,FR +2988531152,2988531171,PL +2988531172,2988531175,BE +2988531176,2988531183,GB +2988531184,2988531187,ES +2988531188,2988531191,IE +2988531192,2988531199,FR +2988531200,2988531247,ES +2988531248,2988531259,PL +2988531260,2988531263,GB +2988531264,2988531295,FR +2988531296,2988531311,IE +2988531312,2988531319,FR +2988531320,2988531323,PT +2988531324,2988531327,GB +2988531328,2988531343,IE +2988531344,2988531391,FR +2988531392,2988531399,PL +2988531400,2988531403,DE +2988531404,2988531427,PL +2988531428,2988531451,FR +2988531452,2988531455,CH +2988531456,2988535807,FR 2988535808,2988537855,ES 2988537856,2988539935,FR 2988539936,2988539967,GB @@ -60449,7 +70869,9 @@ 2988540220,2988540223,GB 2988540224,2988540255,BE 2988540256,2988540271,PL -2988540272,2988540287,FR +2988540272,2988540275,DE +2988540276,2988540279,PL +2988540280,2988540287,FR 2988540288,2988540303,BE 2988540304,2988540319,FR 2988540320,2988540351,PT @@ -60457,8 +70879,9 @@ 2988540364,2988540367,PL 2988540368,2988540375,FR 2988540376,2988540379,GB -2988540380,2988540423,FR -2988540424,2988540427,GB +2988540380,2988540415,FR +2988540416,2988540419,CZ +2988540420,2988540427,GB 2988540428,2988540431,NL 2988540432,2988540435,FR 2988540436,2988540439,DE @@ -60468,7 +70891,7 @@ 2988540456,2988540459,DE 2988540460,2988540463,ES 2988540464,2988540471,PL -2988540472,2988540479,DE +2988540472,2988540479,ES 2988540480,2988540483,FR 2988540484,2988540487,DE 2988540488,2988540491,ES @@ -60479,19 +70902,18 @@ 2988540544,2988540607,PL 2988540608,2988540639,FR 2988540640,2988540647,PL -2988540648,2988540651,GB -2988540652,2988540663,PL -2988540664,2988540671,IT -2988540672,2988540679,PL -2988540680,2988540683,IT +2988540648,2988540651,FR +2988540652,2988540667,PL +2988540668,2988540671,IT +2988540672,2988540683,PL 2988540684,2988540715,FR 2988540716,2988540719,PL 2988540720,2988540735,DE 2988540736,2988540751,ES 2988540752,2988540759,PL -2988540760,2988540763,GB +2988540760,2988540763,ES 2988540764,2988540767,DE -2988540768,2988540775,GB +2988540768,2988540775,PL 2988540776,2988540783,BE 2988540784,2988540787,ES 2988540788,2988540791,DE @@ -60516,13 +70938,13 @@ 2988541120,2988541131,FR 2988541132,2988541135,DE 2988541136,2988541143,GB -2988541144,2988541151,IT -2988541152,2988541215,FR +2988541144,2988541215,FR 2988541216,2988541231,PT 2988541232,2988541235,DE 2988541236,2988541243,FR 2988541244,2988541247,GB -2988541248,2988541279,FR +2988541248,2988541263,FR +2988541264,2988541279,IT 2988541280,2988541311,NL 2988541312,2988541315,DE 2988541316,2988541319,CH @@ -60530,7 +70952,7 @@ 2988541328,2988541335,PL 2988541336,2988541375,FR 2988541376,2988541391,BE -2988541392,2988541407,FR +2988541392,2988541407,CH 2988541408,2988541423,BE 2988541424,2988541439,DE 2988541440,2988541443,IT @@ -60538,21 +70960,19 @@ 2988541464,2988541467,ES 2988541468,2988541503,FR 2988541504,2988541519,CH -2988541520,2988541535,FR -2988541536,2988541551,GB -2988541552,2988541583,FR -2988541584,2988541587,ES -2988541588,2988541591,FR -2988541592,2988541599,GB -2988541600,2988541603,FR +2988541520,2988541539,FR +2988541540,2988541543,PT +2988541544,2988541547,FR +2988541548,2988541551,ES +2988541552,2988541567,FR +2988541568,2988541587,ES +2988541588,2988541603,FR 2988541604,2988541607,NL 2988541608,2988541611,GB 2988541612,2988541615,IT 2988541616,2988541619,BE 2988541620,2988541623,CH -2988541624,2988541631,FR -2988541632,2988541647,PL -2988541648,2988541655,FR +2988541624,2988541655,FR 2988541656,2988541659,ES 2988541660,2988541663,PL 2988541664,2988541679,FR @@ -60561,7 +70981,8 @@ 2988541688,2988541691,ES 2988541692,2988541695,IT 2988541696,2988541727,PL -2988541728,2988541735,FR +2988541728,2988541731,NL +2988541732,2988541735,FR 2988541736,2988541739,GB 2988541740,2988541743,FR 2988541744,2988541747,DE @@ -60575,9 +70996,12 @@ 2988541784,2988541787,NL 2988541788,2988541791,FR 2988541792,2988541807,ES -2988541808,2988541823,FR -2988541824,2988541855,LT -2988541856,2988541887,IE +2988541808,2988541815,FR +2988541816,2988541819,ES +2988541820,2988541823,CZ +2988541824,2988541855,FR +2988541856,2988541867,PL +2988541868,2988541887,FR 2988541888,2988541895,DE 2988541896,2988541899,PL 2988541900,2988541903,BE @@ -60588,11 +71012,15 @@ 2988541940,2988541943,FI 2988541944,2988541947,FR 2988541948,2988541951,ES -2988541952,2988541959,DE +2988541952,2988541955,GB +2988541956,2988541959,DE 2988541960,2988541963,CH 2988541964,2988541967,DE -2988541968,2988541983,FR -2988541984,2988542015,ES +2988541968,2988541999,FR +2988542000,2988542003,PL +2988542004,2988542007,DE +2988542008,2988542011,FI +2988542012,2988542015,CH 2988542016,2988542019,GB 2988542020,2988542023,FR 2988542024,2988542027,NL @@ -60602,10 +71030,15 @@ 2988542056,2988542063,FR 2988542064,2988542067,GB 2988542068,2988542071,ES -2988542072,2988542367,FR +2988542072,2988542255,FR +2988542256,2988542271,IT +2988542272,2988542335,ES +2988542336,2988542367,FR 2988542368,2988542399,CZ -2988542400,2988542407,FR -2988542408,2988542415,PL +2988542400,2988542403,FI +2988542404,2988542407,FR +2988542408,2988542411,LT +2988542412,2988542415,PL 2988542416,2988542431,FR 2988542432,2988542439,PL 2988542440,2988542443,ES @@ -60632,23 +71065,29 @@ 2988542784,2988542847,CZ 2988542848,2988542919,DE 2988542920,2988542923,PL -2988542924,2988542943,GB +2988542924,2988542935,FR +2988542936,2988542939,IT +2988542940,2988542943,PL 2988542944,2988542959,DE 2988542960,2988542963,FR 2988542964,2988542967,CH -2988542968,2988542971,NL -2988542972,2988542975,DE +2988542968,2988542975,DE 2988542976,2988543007,FR 2988543008,2988543011,PL -2988543012,2988543015,GB +2988543012,2988543015,LT 2988543016,2988543023,CH 2988543024,2988543039,DE -2988543040,2988543043,CZ -2988543044,2988543047,ES -2988543048,2988543051,IE -2988543052,2988543067,FR -2988543068,2988543071,GB -2988543072,2988543231,FR +2988543040,2988543047,GB +2988543048,2988543067,FR +2988543068,2988543071,PL +2988543072,2988543103,FR +2988543104,2988543167,GB +2988543168,2988543199,IE +2988543200,2988543203,GB +2988543204,2988543207,FR +2988543208,2988543211,PL +2988543212,2988543215,GB +2988543216,2988543231,FR 2988543232,2988543235,IT 2988543236,2988543243,FR 2988543244,2988543247,IT @@ -60661,15 +71100,19 @@ 2988543300,2988543303,FR 2988543304,2988543307,ES 2988543308,2988543311,PL -2988543312,2988543315,DE +2988543312,2988543315,FR 2988543316,2988543319,IE 2988543320,2988543323,FI 2988543324,2988543327,PL -2988543328,2988543383,FR +2988543328,2988543379,FR +2988543380,2988543383,PL 2988543384,2988543399,DE 2988543400,2988543403,GB 2988543404,2988543407,NL -2988543408,2988543423,GB +2988543408,2988543411,PL +2988543412,2988543415,FR +2988543416,2988543419,ES +2988543420,2988543423,PL 2988543424,2988543431,DE 2988543432,2988543439,GB 2988543440,2988543447,FR @@ -60682,8 +71125,8 @@ 2988543504,2988543527,FR 2988543528,2988543535,GB 2988543536,2988543551,PL -2988543552,2988543555,GB -2988543556,2988543559,NL +2988543552,2988543555,CH +2988543556,2988543559,BE 2988543560,2988543563,PT 2988543564,2988543567,FR 2988543568,2988543579,PL @@ -60691,12 +71134,18 @@ 2988543584,2988543615,DE 2988543616,2988543743,ES 2988543744,2988543935,FR -2988543936,2988543939,FI -2988543940,2988543947,IT +2988543936,2988543947,PL 2988543948,2988543959,BE 2988543960,2988543967,PL -2988543968,2988543999,FR -2988544000,2988544127,CZ +2988543968,2988544015,FR +2988544016,2988544023,GB +2988544024,2988544031,IE +2988544032,2988544035,PL +2988544036,2988544039,FR +2988544040,2988544043,DE +2988544044,2988544047,GB +2988544048,2988544063,FR +2988544064,2988544127,DE 2988544128,2988544159,GB 2988544160,2988544163,FR 2988544164,2988544167,PL @@ -60705,17 +71154,52 @@ 2988544180,2988544183,IT 2988544184,2988544191,DE 2988544192,2988544227,ES -2988544228,2988544255,FR -2988544256,2988544383,LT -2988544384,2988544511,NL +2988544228,2988544271,FR +2988544272,2988544275,DE +2988544276,2988544279,FR +2988544280,2988544283,GB +2988544284,2988544287,CZ +2988544288,2988544291,PL +2988544292,2988544295,GB +2988544296,2988544303,FR +2988544304,2988544307,PL +2988544308,2988544311,IT +2988544312,2988544315,DE +2988544316,2988544323,FR +2988544324,2988544327,ES +2988544328,2988544331,PL +2988544332,2988544351,FR +2988544352,2988544355,PL +2988544356,2988544359,DE +2988544360,2988544367,FR +2988544368,2988544371,ES +2988544372,2988544375,FR +2988544376,2988544383,ES +2988544384,2988544447,GB +2988544448,2988544463,FR +2988544464,2988544479,ES +2988544480,2988544511,PL 2988544512,2988544527,FR 2988544528,2988544535,ES -2988544536,2988544539,PL -2988544540,2988544543,LT +2988544536,2988544543,FR 2988544544,2988544639,ES -2988544640,2988544735,DE -2988544736,2988544751,PL -2988544752,2988544799,FR +2988544640,2988544647,PL +2988544648,2988544655,FR +2988544656,2988544659,ES +2988544660,2988544663,FR +2988544664,2988544667,DE +2988544668,2988544671,ES +2988544672,2988544687,GB +2988544688,2988544703,PL +2988544704,2988544719,IT +2988544720,2988544723,FR +2988544724,2988544727,DE +2988544728,2988544767,FR +2988544768,2988544775,ES +2988544776,2988544783,PT +2988544784,2988544787,GB +2988544788,2988544791,PL +2988544792,2988544799,PT 2988544800,2988544831,FI 2988544832,2988544863,FR 2988544864,2988544895,PL @@ -60723,12 +71207,11 @@ 2988544928,2988544931,DE 2988544932,2988544935,FR 2988544936,2988544943,IT -2988544944,2988544951,PL +2988544944,2988544951,PT 2988544952,2988544959,GB 2988544960,2988544979,ES 2988544980,2988544983,FR -2988544984,2988544991,IE -2988544992,2988544995,PL +2988544984,2988544995,PL 2988544996,2988544999,FR 2988545000,2988545003,DE 2988545004,2988545007,ES @@ -60755,19 +71238,37 @@ 2988545292,2988545295,DE 2988545296,2988545311,FR 2988545312,2988545327,CH -2988545328,2988545335,IT -2988545336,2988545343,DE -2988545344,2988545407,FR -2988545408,2988545439,IE -2988545440,2988545471,FR +2988545328,2988545331,FR +2988545332,2988545343,DE +2988545344,2988545367,FR +2988545368,2988545371,DE +2988545372,2988545375,GB +2988545376,2988545383,DE +2988545384,2988545387,ES +2988545388,2988545391,FR +2988545392,2988545395,DE +2988545396,2988545439,FR +2988545440,2988545443,DE +2988545444,2988545447,ES +2988545448,2988545455,PL +2988545456,2988545471,FR 2988545472,2988545503,ES 2988545504,2988545507,FR 2988545508,2988545511,DE 2988545512,2988545515,IT -2988545516,2988545531,PL -2988545532,2988545535,FR -2988545536,2988545567,BE -2988545568,2988545663,FR +2988545516,2988545523,PL +2988545524,2988545527,FR +2988545528,2988545531,PL +2988545532,2988545551,FR +2988545552,2988545555,PL +2988545556,2988545559,IT +2988545560,2988545563,FR +2988545564,2988545567,DE +2988545568,2988545571,NL +2988545572,2988545575,DE +2988545576,2988545579,FR +2988545580,2988545583,ES +2988545584,2988545663,FR 2988545664,2988545695,ES 2988545696,2988545727,DE 2988545728,2988545791,FR @@ -60779,15 +71280,18 @@ 2988545836,2988545839,DE 2988545840,2988545855,FR 2988545856,2988545859,ES -2988545860,2988545867,FR -2988545868,2988545871,PL +2988545860,2988545863,FR +2988545864,2988545871,PL 2988545872,2988545919,FR -2988545920,2988545923,GB +2988545920,2988545923,ES 2988545924,2988545927,PL 2988545928,2988545931,BE -2988545932,2988545943,FR +2988545932,2988545935,DE +2988545936,2988545943,FR 2988545944,2988545967,NL -2988545968,2988545983,GB +2988545968,2988545971,IT +2988545972,2988545979,FR +2988545980,2988545983,DE 2988545984,2988545987,FR 2988545988,2988545991,PL 2988545992,2988545995,LT @@ -60809,7 +71313,7 @@ 2988546176,2988546239,GB 2988546240,2988546271,LT 2988546272,2988546279,IT -2988546280,2988546283,GB +2988546280,2988546283,DE 2988546284,2988546287,BE 2988546288,2988546291,GB 2988546292,2988546295,ES @@ -60822,15 +71326,18 @@ 2988546328,2988546335,ES 2988546336,2988546351,PT 2988546352,2988546367,ES -2988546368,2988546431,FR -2988546432,2988546463,DE +2988546368,2988546439,FR +2988546440,2988546443,DE +2988546444,2988546447,FR +2988546448,2988546463,ES 2988546464,2988546527,FR 2988546528,2988546535,BE 2988546536,2988546539,IE 2988546540,2988546547,ES 2988546548,2988546559,FR 2988546560,2988546567,NL -2988546568,2988546575,FR +2988546568,2988546571,PL +2988546572,2988546575,DE 2988546576,2988546579,ES 2988546580,2988546583,GB 2988546584,2988546591,FR @@ -60838,24 +71345,34 @@ 2988546600,2988546603,PT 2988546604,2988546615,GB 2988546616,2988546619,FI -2988546620,2988546623,FR +2988546620,2988546623,IT 2988546624,2988546687,FI 2988546688,2988546695,PL 2988546696,2988546699,FR 2988546700,2988546703,IT -2988546704,2988546727,FR -2988546728,2988546735,ES -2988546736,2988546751,FR +2988546704,2988546751,FR 2988546752,2988546783,ES -2988546784,2988546831,FR +2988546784,2988546815,FR +2988546816,2988546819,PT +2988546820,2988546823,NL +2988546824,2988546831,FR 2988546832,2988546835,DE 2988546836,2988546839,ES 2988546840,2988546847,IE -2988546848,2988546879,FR +2988546848,2988546851,PT +2988546852,2988546855,IT +2988546856,2988546859,FR +2988546860,2988546863,IE +2988546864,2988546867,GB +2988546868,2988546871,FR +2988546872,2988546875,GB +2988546876,2988546879,IE 2988546880,2988546947,ES 2988546948,2988546951,DE -2988546952,2988546959,FR -2988546960,2988546967,DE +2988546952,2988546955,FR +2988546956,2988546959,DE +2988546960,2988546963,CH +2988546964,2988546967,IT 2988546968,2988546971,FR 2988546972,2988546975,BE 2988546976,2988546991,FI @@ -60863,8 +71380,7 @@ 2988546996,2988546999,ES 2988547000,2988547003,IT 2988547004,2988547007,ES -2988547008,2988547011,GB -2988547012,2988547015,FR +2988547008,2988547015,FR 2988547016,2988547019,NL 2988547020,2988547023,ES 2988547024,2988547039,FR @@ -60884,19 +71400,22 @@ 2988547124,2988547127,IT 2988547128,2988547135,FR 2988547136,2988547167,IT -2988547168,2988547199,BE +2988547168,2988547183,IE +2988547184,2988547191,ES +2988547192,2988547195,DE +2988547196,2988547199,PL 2988547200,2988547207,IE -2988547208,2988547211,FR -2988547212,2988547215,DE -2988547216,2988547219,IT -2988547220,2988547223,FR -2988547224,2988547227,ES -2988547228,2988547231,PT -2988547232,2988547239,FR +2988547208,2988547211,ES +2988547212,2988547215,GB +2988547216,2988547223,FR +2988547224,2988547227,GB +2988547228,2988547239,FR 2988547240,2988547247,PL 2988547248,2988547255,NL -2988547256,2988547271,FR -2988547272,2988547279,ES +2988547256,2988547263,FR +2988547264,2988547267,GB +2988547268,2988547271,ES +2988547272,2988547279,NL 2988547280,2988547295,FR 2988547296,2988547303,DE 2988547304,2988547311,FR @@ -60906,31 +71425,30 @@ 2988547432,2988547435,ES 2988547436,2988547443,PL 2988547444,2988547447,DE -2988547448,2988547455,FR +2988547448,2988547451,FR +2988547452,2988547455,PT 2988547456,2988547471,DE -2988547472,2988547475,NL +2988547472,2988547475,LT 2988547476,2988547479,GB 2988547480,2988547487,FR 2988547488,2988547519,ES -2988547520,2988547523,PL +2988547520,2988547523,NL 2988547524,2988547527,CZ 2988547528,2988547531,IT 2988547532,2988547535,ES 2988547536,2988547539,FR 2988547540,2988547543,DE -2988547544,2988547547,IT -2988547548,2988547551,PL -2988547552,2988547567,FR +2988547544,2988547547,BE +2988547548,2988547567,FR 2988547568,2988547583,DE 2988547584,2988547599,ES 2988547600,2988547615,FR 2988547616,2988547647,PL 2988547648,2988547655,FR 2988547656,2988547663,PL -2988547664,2988547679,IE +2988547664,2988547679,FR 2988547680,2988547711,CH -2988547712,2988547727,PL -2988547728,2988547751,FR +2988547712,2988547751,FR 2988547752,2988547775,DE 2988547776,2988547807,ES 2988547808,2988547871,FR @@ -60954,11 +71472,15 @@ 2988556416,2988556447,FR 2988556448,2988556451,NL 2988556452,2988556479,FR -2988556480,2988556495,IT -2988556496,2988556511,FR -2988556512,2988556543,DE -2988556544,2988556799,FR -2988556800,2988556839,DE +2988556480,2988556487,IT +2988556488,2988556491,PL +2988556492,2988556495,DE +2988556496,2988556527,FR +2988556528,2988556535,PL +2988556536,2988556539,GB +2988556540,2988556543,DE +2988556544,2988556831,FR +2988556832,2988556839,DE 2988556840,2988556847,FR 2988556848,2988556855,ES 2988556856,2988556863,GB @@ -60968,26 +71490,38 @@ 2988556888,2988556895,FR 2988556896,2988556911,PL 2988556912,2988556919,NL -2988556920,2988556959,PL +2988556920,2988556927,PL +2988556928,2988556943,FR +2988556944,2988556959,PL 2988556960,2988556963,ES 2988556964,2988556967,FR 2988556968,2988556975,BE 2988556976,2988556979,FI -2988556980,2988557023,FR +2988556980,2988556999,FR +2988557000,2988557003,BE +2988557004,2988557007,ES +2988557008,2988557023,FR 2988557024,2988557039,IE -2988557040,2988557047,FR +2988557040,2988557043,PT +2988557044,2988557047,BE 2988557048,2988557055,PL -2988557056,2988557071,FR +2988557056,2988557059,ES +2988557060,2988557071,FR 2988557072,2988557075,PL 2988557076,2988557079,FR 2988557080,2988557087,FI -2988557088,2988557119,DE -2988557120,2988557151,NL +2988557088,2988557095,CH +2988557096,2988557103,ES +2988557104,2988557111,FR +2988557112,2988557115,LT +2988557116,2988557151,NL 2988557152,2988557215,FR 2988557216,2988557247,BE 2988557248,2988557251,FR 2988557252,2988557255,ES -2988557256,2988557279,GB +2988557256,2988557259,FR +2988557260,2988557263,DE +2988557264,2988557279,GB 2988557280,2988557295,ES 2988557296,2988557299,BE 2988557300,2988557303,PL @@ -60997,20 +71531,17 @@ 2988557344,2988557379,FR 2988557380,2988557383,ES 2988557384,2988557387,GB -2988557388,2988557391,ES -2988557392,2988557395,FR -2988557396,2988557399,PL +2988557388,2988557391,CZ +2988557392,2988557399,PL 2988557400,2988557407,DE 2988557408,2988557427,ES 2988557428,2988557431,DE -2988557432,2988557435,PL -2988557436,2988557439,FR +2988557432,2988557439,PL 2988557440,2988557471,GB 2988557472,2988557487,PL 2988557488,2988557495,DE 2988557496,2988557539,PL -2988557540,2988557543,IE -2988557544,2988557599,FR +2988557540,2988557599,FR 2988557600,2988557631,GB 2988557632,2988557639,FR 2988557640,2988557643,IE @@ -61020,21 +71551,30 @@ 2988557664,2988557695,PL 2988557696,2988557727,FR 2988557728,2988557759,PL -2988557760,2988557763,FR -2988557764,2988557767,GB +2988557760,2988557763,DE +2988557764,2988557767,ES 2988557768,2988557771,PL 2988557772,2988557823,FR 2988557824,2988557951,DE 2988557952,2988557983,LT -2988557984,2988557999,GB +2988557984,2988557999,FR 2988558000,2988558015,IE 2988558016,2988558047,FR 2988558048,2988558063,PL -2988558064,2988558071,IT +2988558064,2988558067,DE +2988558068,2988558071,FI 2988558072,2988558075,DE 2988558076,2988558079,PL -2988558080,2988558127,FR -2988558128,2988558135,PL +2988558080,2988558083,FR +2988558084,2988558087,PL +2988558088,2988558095,FR +2988558096,2988558103,PL +2988558104,2988558111,FR +2988558112,2988558115,IE +2988558116,2988558123,GB +2988558124,2988558127,FR +2988558128,2988558131,DE +2988558132,2988558135,PL 2988558136,2988558139,GB 2988558140,2988558143,DE 2988558144,2988558207,PL @@ -61045,7 +71585,12 @@ 2988558464,2988558527,NL 2988558528,2988558591,PL 2988558592,2988558655,GB -2988558656,2988558767,FR +2988558656,2988558719,FR +2988558720,2988558727,PL +2988558728,2988558731,IT +2988558732,2988558735,PT +2988558736,2988558751,GB +2988558752,2988558767,FR 2988558768,2988558783,CH 2988558784,2988558831,FR 2988558832,2988558847,IT @@ -61062,10 +71607,12 @@ 2988558976,2988559007,GB 2988559008,2988559011,BE 2988559012,2988559015,PL -2988559016,2988559071,FR +2988559016,2988559039,FR +2988559040,2988559055,GB +2988559056,2988559071,LT 2988559072,2988559103,ES 2988559104,2988559135,PL -2988559136,2988559139,FR +2988559136,2988559139,DE 2988559140,2988559151,PL 2988559152,2988559231,FR 2988559232,2988559247,DE @@ -61090,14 +71637,16 @@ 2988559736,2988559743,GB 2988559744,2988559871,FR 2988559872,2988560383,IT -2988560384,2988560575,FR +2988560384,2988560447,FR +2988560448,2988560451,DE +2988560452,2988560455,PL +2988560456,2988560575,FR 2988560576,2988560591,ES -2988560592,2988560595,DE +2988560592,2988560595,NL 2988560596,2988560599,IT 2988560600,2988560603,PL -2988560604,2988560607,PT -2988560608,2988560623,FR -2988560624,2988560627,BE +2988560604,2988560623,FR +2988560624,2988560627,PL 2988560628,2988560639,FR 2988560640,2988560703,GB 2988560704,2988560711,DE @@ -61111,19 +71660,199 @@ 2988560800,2988560815,DE 2988560816,2988560831,FR 2988560832,2988560863,GB -2988560864,2988560895,DE +2988560864,2988560871,PL +2988560872,2988560895,GB 2988560896,2988560911,PL 2988560912,2988560919,FR 2988560920,2988560923,DE 2988560924,2988560951,FR 2988560952,2988560959,PL -2988560960,2988561023,IE -2988561024,2988561031,ES -2988561032,2988561039,FR -2988561040,2988561043,ES -2988561044,2988561055,FR -2988561056,2988561071,FI -2988561072,2988572671,FR +2988560960,2988560975,FR +2988560976,2988560991,ES +2988560992,2988560995,FR +2988560996,2988561007,DE +2988561008,2988561023,FR +2988561024,2988561027,BE +2988561028,2988561039,FR +2988561040,2988561043,GB +2988561044,2988561047,DE +2988561048,2988561051,PL +2988561052,2988561055,GB +2988561056,2988561059,FR +2988561060,2988561071,PL +2988561072,2988561075,NL +2988561076,2988561079,LT +2988561080,2988561083,PL +2988561084,2988561087,GB +2988561088,2988561095,FR +2988561096,2988561099,PL +2988561100,2988561103,CZ +2988561104,2988561119,BE +2988561120,2988561171,FR +2988561172,2988561175,PL +2988561176,2988561179,ES +2988561180,2988561183,PL +2988561184,2988561187,GB +2988561188,2988561191,FR +2988561192,2988561195,CZ +2988561196,2988561199,LT +2988561200,2988561203,PL +2988561204,2988561207,GB +2988561208,2988561215,PL +2988561216,2988561231,FR +2988561232,2988561235,PT +2988561236,2988561239,GB +2988561240,2988561243,BE +2988561244,2988561263,PL +2988561264,2988561283,FR +2988561284,2988561287,NL +2988561288,2988561291,ES +2988561292,2988561295,PT +2988561296,2988561303,PL +2988561304,2988561343,FR +2988561344,2988561375,PL +2988561376,2988561391,FR +2988561392,2988561403,ES +2988561404,2988561407,LT +2988561408,2988561667,GB +2988561668,2988561671,PL +2988561672,2988561675,NL +2988561676,2988561679,FI +2988561680,2988561683,FR +2988561684,2988561687,CZ +2988561688,2988561691,DE +2988561692,2988561695,LT +2988561696,2988561727,FR +2988561728,2988561743,PL +2988561744,2988561747,FR +2988561748,2988561751,PL +2988561752,2988561759,GB +2988561760,2988561763,PL +2988561764,2988561767,PT +2988561768,2988561775,PL +2988561776,2988561843,FR +2988561844,2988561847,IT +2988561848,2988561855,FR +2988561856,2988561871,IE +2988561872,2988561875,CH +2988561876,2988561887,FR +2988561888,2988561903,PL +2988561904,2988561983,FR +2988561984,2988562015,DE +2988562016,2988562027,ES +2988562028,2988562031,LT +2988562032,2988562047,PL +2988562048,2988562079,DE +2988562080,2988562095,PL +2988562096,2988562111,IE +2988562112,2988562127,FR +2988562128,2988562143,PL +2988562144,2988562151,FR +2988562152,2988562163,PL +2988562164,2988562167,DE +2988562168,2988562431,NL +2988562432,2988562591,FR +2988562592,2988562599,GB +2988562600,2988562607,FR +2988562608,2988562611,PT +2988562612,2988562623,PL +2988562624,2988562687,FI +2988562688,2988562703,GB +2988562704,2988562707,PL +2988562708,2988562711,DE +2988562712,2988562719,GB +2988562720,2988562815,BE +2988562816,2988562823,PL +2988562824,2988562831,PT +2988562832,2988562835,FR +2988562836,2988562839,NL +2988562840,2988562847,FR +2988562848,2988562855,NL +2988562856,2988562863,DE +2988562864,2988562911,FR +2988562912,2988562943,PL +2988562944,2988563011,FR +2988563012,2988563015,PT +2988563016,2988563023,GB +2988563024,2988563043,FR +2988563044,2988563047,ES +2988563048,2988563055,FR +2988563056,2988563059,NL +2988563060,2988563063,CH +2988563064,2988563067,FI +2988563068,2988563075,PT +2988563076,2988563079,GB +2988563080,2988563083,DE +2988563084,2988563087,FR +2988563088,2988563103,PL +2988563104,2988563135,FR +2988563136,2988563151,PL +2988563152,2988563183,FR +2988563184,2988563187,CZ +2988563188,2988563191,PL +2988563192,2988563199,CH +2988563200,2988563455,IE +2988563456,2988563487,FR +2988563488,2988563499,GB +2988563500,2988563503,FR +2988563504,2988563519,PL +2988563520,2988563523,CZ +2988563524,2988563527,FI +2988563528,2988563535,PL +2988563536,2988563555,FR +2988563556,2988563559,BE +2988563560,2988563567,FR +2988563568,2988563571,NL +2988563572,2988563575,GB +2988563576,2988563583,IE +2988563584,2988563591,PT +2988563592,2988563599,GB +2988563600,2988563607,ES +2988563608,2988563615,DE +2988563616,2988563647,FR +2988563648,2988563663,LT +2988563664,2988563667,FR +2988563668,2988563671,PL +2988563672,2988563675,FR +2988563676,2988563679,PL +2988563680,2988563967,FR +2988563968,2988563999,BE +2988564000,2988564015,IE +2988564016,2988564019,FR +2988564020,2988564023,PL +2988564024,2988564031,FR +2988564032,2988564063,BE +2988564064,2988564175,FR +2988564176,2988564179,PL +2988564180,2988564183,GB +2988564184,2988564187,PL +2988564188,2988564191,GB +2988564192,2988564195,ES +2988564196,2988564199,LT +2988564200,2988564203,DE +2988564204,2988564215,FR +2988564216,2988564219,GB +2988564220,2988564223,IT +2988564224,2988564275,FR +2988564276,2988564279,BE +2988564280,2988564287,ES +2988564288,2988564303,FR +2988564304,2988564307,IT +2988564308,2988564311,PL +2988564312,2988564319,ES +2988564320,2988564351,FR +2988564352,2988564359,DE +2988564360,2988564367,GB +2988564368,2988564383,FR +2988564384,2988564387,IE +2988564388,2988564391,GB +2988564392,2988564395,NL +2988564396,2988564399,CH +2988564400,2988564403,DE +2988564404,2988564407,ES +2988564408,2988564471,FR +2988564472,2988564479,GB +2988564480,2988572671,FR 2988572672,2988703743,RU 2988703744,2988834815,PL 2988834816,2988965887,CH @@ -61135,7 +71864,7 @@ 2989621248,2989752319,BE 2989752320,2989817855,SY 2989817856,2989883391,KW -2989883392,2989916159,UA +2989883392,2989948927,UA 2989948928,2990014463,FI 2990014464,2990079999,PL 2990080000,2990145535,RU @@ -61148,9 +71877,11 @@ 2990518016,2990518079,IT 2990518080,2990525247,DE 2990525248,2990525311,ES -2990525312,2990534655,DE -2990534656,2990534783,EG -2990534784,2990535935,DE +2990525312,2990528703,DE +2990528704,2990528735,RS +2990528736,2990534655,DE +2990534656,2990534687,EG +2990534688,2990535935,DE 2990535936,2990535967,PL 2990535968,2990538751,DE 2990538752,2991063039,RU @@ -61163,149 +71894,176 @@ 2991128576,2991144959,PL 2991144960,2991161343,SA 2991161344,2991177727,FR -2991177728,2991182335,SE -2991182336,2991182591,GB -2991182592,2991185919,SE +2991177728,2991178751,A1 +2991178752,2991179263,SE +2991179264,2991179327,A1 +2991179328,2991180799,SE +2991180800,2991182847,A1 +2991182848,2991185919,SE 2991185920,2991185951,GB 2991185952,2991185967,NL 2991185968,2991185983,DE 2991185984,2991185999,DK 2991186000,2991186015,ES -2991186016,2991186175,SE +2991186016,2991186019,FR +2991186020,2991186175,SE 2991186176,2991186207,GB 2991186208,2991186223,NL 2991186224,2991186239,DE 2991186240,2991186255,DK 2991186256,2991186271,ES -2991186272,2991186431,SE +2991186272,2991186275,FR +2991186276,2991186431,SE 2991186432,2991186463,GB 2991186464,2991186479,NL 2991186480,2991186495,DE 2991186496,2991186511,DK 2991186512,2991186527,ES -2991186528,2991186687,SE +2991186528,2991186531,FR +2991186532,2991186687,SE 2991186688,2991186719,GB 2991186720,2991186735,NL 2991186736,2991186751,DE 2991186752,2991186767,DK 2991186768,2991186783,ES -2991186784,2991186943,SE +2991186784,2991186787,FR +2991186788,2991186943,SE 2991186944,2991186975,GB 2991186976,2991186991,NL 2991186992,2991187007,DE 2991187008,2991187023,DK 2991187024,2991187039,ES -2991187040,2991187199,SE +2991187040,2991187043,FR +2991187044,2991187199,SE 2991187200,2991187231,GB 2991187232,2991187247,NL 2991187248,2991187263,DE 2991187264,2991187279,DK 2991187280,2991187295,ES -2991187296,2991187455,SE +2991187296,2991187299,FR +2991187300,2991187455,SE 2991187456,2991187487,GB 2991187488,2991187503,NL 2991187504,2991187519,DE 2991187520,2991187535,DK 2991187536,2991187551,ES -2991187552,2991187711,SE +2991187552,2991187555,FR +2991187556,2991187711,SE 2991187712,2991187743,GB 2991187744,2991187759,NL 2991187760,2991187775,DE 2991187776,2991187791,DK 2991187792,2991187807,ES -2991187808,2991187967,SE +2991187808,2991187811,FR +2991187812,2991187967,SE 2991187968,2991187999,GB 2991188000,2991188015,NL 2991188016,2991188031,DE 2991188032,2991188047,DK 2991188048,2991188063,ES -2991188064,2991188223,SE +2991188064,2991188067,FR +2991188068,2991188223,SE 2991188224,2991188255,GB 2991188256,2991188271,NL 2991188272,2991188287,DE 2991188288,2991188303,DK 2991188304,2991188319,ES -2991188320,2991188479,SE +2991188320,2991188323,FR +2991188324,2991188479,SE 2991188480,2991188511,GB 2991188512,2991188527,NL 2991188528,2991188543,DE 2991188544,2991188559,DK 2991188560,2991188575,ES -2991188576,2991188735,SE +2991188576,2991188579,FR +2991188580,2991188735,SE 2991188736,2991188767,GB 2991188768,2991188783,NL 2991188784,2991188799,DE 2991188800,2991188815,DK 2991188816,2991188831,ES -2991188832,2991188991,SE +2991188832,2991188835,FR +2991188836,2991188991,SE 2991188992,2991189023,GB 2991189024,2991189039,NL 2991189040,2991189055,DE 2991189056,2991189071,DK 2991189072,2991189087,ES -2991189088,2991189247,SE +2991189088,2991189091,FR +2991189092,2991189247,SE 2991189248,2991189279,GB 2991189280,2991189295,NL 2991189296,2991189311,DE 2991189312,2991189327,DK 2991189328,2991189343,ES -2991189344,2991189503,SE +2991189344,2991189347,FR +2991189348,2991189503,SE 2991189504,2991189535,GB 2991189536,2991189551,NL 2991189552,2991189567,DE 2991189568,2991189583,DK 2991189584,2991189599,ES -2991189600,2991189759,SE +2991189600,2991189603,FR +2991189604,2991189759,SE 2991189760,2991189791,GB 2991189792,2991189807,NL 2991189808,2991189823,DE 2991189824,2991189839,DK 2991189840,2991189855,ES -2991189856,2991190015,SE +2991189856,2991189859,FR +2991189860,2991190015,SE 2991190016,2991190047,GB 2991190048,2991190063,NL 2991190064,2991190079,DE 2991190080,2991190095,DK 2991190096,2991190111,ES -2991190112,2991190271,SE +2991190112,2991190115,FR +2991190116,2991190271,SE 2991190272,2991190303,GB 2991190304,2991190319,NL 2991190320,2991190335,DE 2991190336,2991190351,DK 2991190352,2991190367,ES -2991190368,2991190527,SE +2991190368,2991190371,FR +2991190372,2991190527,SE 2991190528,2991190559,GB 2991190560,2991190575,NL 2991190576,2991190591,DE 2991190592,2991190607,DK 2991190608,2991190623,ES -2991190624,2991190783,SE +2991190624,2991190627,FR +2991190628,2991190783,SE 2991190784,2991190815,GB 2991190816,2991190831,NL 2991190832,2991190847,DE 2991190848,2991190863,DK 2991190864,2991190879,ES -2991190880,2991191039,SE +2991190880,2991190883,FR +2991190884,2991191039,SE 2991191040,2991191071,GB 2991191072,2991191087,NL 2991191088,2991191103,DE 2991191104,2991191119,DK 2991191120,2991191135,ES -2991191136,2991191295,SE +2991191136,2991191139,FR +2991191140,2991191295,SE 2991191296,2991191327,GB 2991191328,2991191343,NL 2991191344,2991191359,DE 2991191360,2991191375,DK 2991191376,2991191391,ES -2991191392,2991191551,SE +2991191392,2991191395,FR +2991191396,2991191551,SE 2991191552,2991191583,GB 2991191584,2991191599,NL 2991191600,2991191615,DE 2991191616,2991191631,DK 2991191632,2991191647,ES -2991191648,2991191807,SE +2991191648,2991191651,FR +2991191652,2991191807,SE 2991191808,2991192063,FI -2991192064,2991192319,DK +2991192064,2991192255,DK +2991192256,2991192319,IT 2991192320,2991194111,SE 2991194112,2991210495,NO 2991210496,2991243263,RU @@ -61329,34 +72087,33 @@ 2991538176,2991554559,SI 2991554560,2991571455,GB 2991571456,2991587327,IT -2991587328,2991718399,RU 2991718400,2991849471,CH 2991849472,2991980543,NL 2991980544,2991980807,UA 2991980808,2991980815,NA 2991980816,2991981063,UA 2991981064,2991981071,DE -2991981072,2991981463,UA -2991981464,2991981471,NA -2991981472,2991981495,UA +2991981072,2991981495,UA 2991981496,2991981503,NA -2991981504,2991981647,UA -2991981648,2991981655,NA -2991981656,2991981687,UA -2991981688,2991981695,NA -2991981696,2991981839,UA +2991981504,2991981839,UA 2991981840,2991981847,RU -2991981848,2991981911,UA -2991981912,2991981919,RU -2991981920,2991982535,UA +2991981848,2991982535,UA 2991982536,2991982543,GL 2991982544,2991982592,UA 2991982593,2991982599,JP 2991982600,2991982607,UA -2991982608,2991982846,JP +2991982608,2991982751,JP +2991982752,2991982759,UA +2991982760,2991982846,JP 2991982847,2991983359,UA 2991983360,2991983615,JP -2991983616,2992111615,UA +2991983616,2991984383,UA +2991984384,2991984639,JP +2991984640,2991985919,UA +2991985920,2991986175,JP +2991986176,2991986431,UA +2991986432,2991986687,JP +2991986688,2992111615,UA 2992111616,2992373759,KZ 2992373760,2992635903,UA 2992635904,2993684479,GB @@ -61366,7 +72123,6 @@ 2994733056,2994798591,GR 2994798592,2994929663,RU 2994929664,2994995199,IR -2994995200,2995060735,RU 2995060736,2995126271,UA 2995126272,2995191807,GE 2995191808,2995257343,LB @@ -61390,7 +72146,7 @@ 2996649984,2996666367,RO 2996666368,2996682751,RU 2996682752,2996699135,DK -2996731904,2996748287,UA +2996699136,2996764671,UA 2996764672,2996768767,NL 2996768768,2996772863,RU 2996772864,2996776959,UA @@ -61409,8 +72165,7 @@ 2996862976,2996895743,AM 2996895744,2996928511,KW 2996928512,2996994047,RU -2996994048,2996994879,DE -2996994880,2996994943,UA +2996994048,2996994943,DE 2996994944,2996995071,US 2996995072,2996995327,BZ 2996995328,2996995647,DE @@ -61424,11 +72179,11 @@ 2996996352,2996996383,DE 2996996384,2996996447,RU 2996996448,2996996575,UA -2996996576,2996996639,DE +2996996576,2996996583,US +2996996584,2996996639,DE 2996996640,2996996767,UA 2996996768,2996996831,RU -2996996832,2996996863,DE -2996996864,2996997119,CN +2996996832,2996997119,CN 2996997120,2996998143,DE 2996998144,2996998271,UA 2996998272,2996998463,DE @@ -61436,25 +72191,26 @@ 2996998528,2996998655,UA 2996998656,2996998719,DE 2996998720,2996998911,RU -2996998912,2996999199,DE -2996999200,2996999231,AU -2996999232,2996999359,DE +2996998912,2996999359,DE 2996999360,2996999423,IL 2996999424,2996999551,IN 2996999552,2996999679,DE 2996999680,2996999935,GB -2996999936,2996999967,DE -2996999968,2996999999,AU -2997000000,2997000447,DE +2996999936,2996999951,DE +2996999952,2996999967,LT +2996999968,2997000447,DE 2997000448,2997000703,RU 2997000704,2997000767,DE -2997000768,2997000831,SC +2997000768,2997000831,CY 2997000832,2997000959,CA 2997000960,2997000991,DE 2997000992,2997001119,RO 2997001120,2997001471,DE 2997001472,2997001727,BZ -2997001728,2997003071,DE +2997001728,2997001983,TR +2997001984,2997003023,DE +2997003024,2997003039,US +2997003040,2997003071,DE 2997003072,2997003135,RU 2997003136,2997003199,DE 2997003200,2997003263,RU @@ -61462,11 +72218,9 @@ 2997003288,2997003295,NL 2997003296,2997003327,CA 2997003328,2997003391,RU -2997003392,2997003583,DE -2997003584,2997003647,UA -2997003648,2997004031,DE +2997003392,2997004031,DE 2997004032,2997004287,BZ -2997004288,2997004543,US +2997004288,2997004543,CA 2997004544,2997004607,DE 2997004608,2997004671,RU 2997004672,2997004799,DE @@ -61482,37 +72236,43 @@ 2997006592,2997006655,DE 2997006656,2997006719,TR 2997006720,2997006847,RU -2997006848,2997008191,DE -2997008192,2997008255,TR +2997006848,2997008255,DE 2997008256,2997008383,LT 2997008384,2997008447,DE 2997008448,2997008511,RU 2997008512,2997008639,LT 2997008640,2997008959,DE 2997008960,2997009023,RU -2997009024,2997010431,DE -2997010432,2997018623,US +2997009024,2997010495,DE +2997010496,2997010559,CY +2997010560,2997010687,IN +2997010688,2997018623,DE 2997018624,2997019135,GB 2997019136,2997019391,TR 2997019392,2997019647,GB -2997019648,2997019679,DE -2997019680,2997019711,AU +2997019648,2997019711,DE 2997019712,2997019903,US 2997019904,2997020415,DE 2997020416,2997020671,CA -2997020672,2997021183,DE +2997020672,2997020719,DE +2997020720,2997020735,SE +2997020736,2997020799,DE +2997020800,2997020863,CA +2997020864,2997021183,DE 2997021184,2997021695,GB -2997021696,2997021951,NL -2997021952,2997022015,DE -2997022016,2997022143,GB -2997022144,2997022207,IN -2997022208,2997022239,DE +2997021696,2997022079,DE +2997022080,2997022143,GB +2997022144,2997022239,DE 2997022240,2997022303,NL 2997022304,2997022367,SG -2997022368,2997022783,DE +2997022368,2997022751,DE +2997022752,2997022783,TR 2997022784,2997022847,IN 2997022848,2997023231,BZ -2997023232,2997024255,DE +2997023232,2997023287,DE +2997023288,2997023295,US +2997023296,2997023423,IN +2997023424,2997024255,DE 2997024256,2997024511,TR 2997024512,2997026815,DE 2997026816,2997059583,RU @@ -61556,12 +72316,17 @@ 2999985712,2999985727,BE 2999985728,2999985743,CZ 2999985744,2999985759,NL -2999985760,2999986687,BE -2999986688,2999992319,NL +2999985760,2999988991,BE +2999988992,2999988999,FR +2999989000,2999989247,NL +2999989248,2999991039,BE +2999991040,2999992319,NL 2999992320,3000000511,RU 3000000512,3000008703,DE 3000008704,3000016895,RU -3000016896,3000025087,GB +3000016896,3000020991,GB +3000020992,3000023039,US +3000023040,3000025087,GB 3000025088,3000033279,GI 3000033280,3000041471,RU 3000041472,3000049663,BA @@ -61642,6 +72407,7 @@ 3000434688,3000451071,IR 3000451072,3000467455,RU 3000467456,3000471551,GB +3000471552,3000475647,RU 3000475648,3000483839,UA 3000483840,3000487935,PL 3000487936,3000492031,PS @@ -61649,7 +72415,7 @@ 3000506368,3000508415,PL 3000508416,3000510463,UA 3000510464,3000512511,PL -3000512512,3000514559,EE +3000512512,3000514559,SE 3000514560,3000516607,SI 3000516608,3000520703,RU 3000520704,3000522751,CZ @@ -61666,7 +72432,6 @@ 3000545280,3000547327,RU 3000547328,3000549375,UA 3000549376,3000551423,SE -3000551424,3000553471,RS 3000553472,3000555519,KG 3000555520,3000557567,RU 3000557568,3000561663,UA @@ -61704,7 +72469,6 @@ 3000668160,3000672255,RU 3000672256,3000676351,HR 3000676352,3000680447,RO -3000680448,3000684543,RS 3000684544,3000688639,RU 3000688640,3000692735,PL 3000692736,3000696831,UA @@ -61714,7 +72478,7 @@ 3000709120,3000713215,AM 3000713216,3000717311,A2 3000717312,3000721407,UA -3000721408,3000729599,PL +3000721408,3000733695,PL 3000733696,3000737791,RU 3000737792,3000741887,UA 3000741888,3000745983,RU @@ -61732,24 +72496,85 @@ 3001815040,3001819135,RU 3001819136,3001823231,IR 3001823232,3001827327,GE -3001827328,3001831423,SE +3001827328,3001827647,SE +3001827648,3001827743,GB +3001827744,3001827775,US +3001827776,3001828864,SE +3001828865,3001828896,US +3001828897,3001828927,SE +3001828928,3001828991,DE +3001828992,3001829055,GB +3001829056,3001829120,SE +3001829121,3001829152,US +3001829153,3001829183,SE +3001829184,3001829247,DE +3001829248,3001829311,GB +3001829312,3001830400,SE +3001830401,3001830432,GB +3001830433,3001830495,SE +3001830496,3001830527,GB +3001830528,3001830559,IT +3001830560,3001830591,FR +3001830592,3001830623,US +3001830624,3001830631,SE +3001830632,3001830639,IT +3001830640,3001830656,SE +3001830657,3001830688,GB +3001830689,3001830751,SE +3001830752,3001830783,GB +3001830784,3001830815,IT +3001830816,3001830847,FR +3001830848,3001830879,US +3001830880,3001830887,SE +3001830888,3001830895,IT +3001830896,3001830912,SE +3001830913,3001830944,GB +3001830945,3001831007,SE +3001831008,3001831039,GB +3001831040,3001831071,IT +3001831072,3001831103,FR +3001831104,3001831135,US +3001831136,3001831167,IT +3001831168,3001831199,GB +3001831200,3001831263,SE +3001831264,3001831295,GB +3001831296,3001831327,IT +3001831328,3001831359,FR +3001831360,3001831391,US +3001831392,3001831423,SE 3001831424,3001835519,BA 3001835520,3001839615,RU 3001839616,3001843711,ES -3001843712,3001845759,RU -3001845760,3001851903,GB +3001843712,3001846271,RU +3001846272,3001846783,GB +3001846784,3001847807,RU +3001847808,3001851903,GB 3001851904,3001855999,IT 3001856000,3001859071,NL 3001859072,3001860095,MD -3001860096,3001864191,EE +3001860096,3001861119,LV +3001861120,3001862143,LT +3001862144,3001863167,EE +3001863168,3001864191,LT 3001864192,3001868287,RU -3001868288,3001869312,FR +3001868288,3001869055,FR +3001869056,3001869311,RU +3001869312,3001869312,FR 3001869313,3001869599,SA 3001869600,3001869600,FR 3001869601,3001869696,IR 3001869697,3001869823,YE 3001869824,3001869887,IR -3001869888,3001872383,FR +3001869888,3001870079,FR +3001870080,3001870335,RU +3001870336,3001870591,IT +3001870592,3001870847,FR +3001870848,3001871103,DE +3001871104,3001871359,ES +3001871360,3001871615,GR +3001871616,3001871871,PL +3001871872,3001872127,PT +3001872128,3001872383,RO 3001872384,3001876479,RU 3001876480,3001880575,IT 3001880576,3001884671,RU @@ -61760,7 +72585,8 @@ 3001885440,3001886463,BE 3001886464,3001886511,NL 3001886512,3001886527,US -3001886528,3001888767,NL +3001886528,3001886543,IE +3001886544,3001888767,NL 3001888768,3001892863,BH 3001892864,3001896959,AZ 3001896960,3001901055,CH @@ -61778,95 +72604,96 @@ 3001954304,3001958399,IT 3001958400,3001962495,KZ 3001962496,3001966591,GB -3001966592,3001970687,NL +3001966592,3001968639,NL +3001968640,3001970687,BE 3001970688,3001974783,RU 3001974784,3001975567,GB -3001975568,3001975591,US -3001975592,3001975599,TW -3001975600,3001975607,CN -3001975608,3001975615,RU -3001975616,3001975623,US +3001975568,3001975575,LK +3001975576,3001975591,US +3001975592,3001975599,MY +3001975600,3001975615,CN +3001975616,3001975623,UA 3001975624,3001975631,RU 3001975632,3001975655,GB 3001975656,3001975663,RU -3001975664,3001975671,US +3001975664,3001975671,FR 3001975672,3001975679,CN 3001975680,3001975687,TW 3001975688,3001975695,US -3001975696,3001975703,GB +3001975696,3001975703,UA 3001975704,3001975711,DE 3001975712,3001975719,MY 3001975720,3001975727,US -3001975728,3001975735,GB +3001975728,3001975735,RU 3001975736,3001975743,MY -3001975744,3001975759,GB -3001975760,3001975799,US -3001975800,3001975815,GB +3001975744,3001975751,CN +3001975752,3001975759,UA +3001975760,3001975767,US +3001975768,3001975783,CN +3001975784,3001975791,US +3001975792,3001975799,IT +3001975800,3001975807,US +3001975808,3001975815,UA 3001975816,3001975823,US -3001975824,3001975839,GB -3001975840,3001975847,CN +3001975824,3001975831,UA +3001975832,3001975847,GB 3001975848,3001975855,US -3001975856,3001975863,GB -3001975864,3001975871,AU -3001975872,3001975879,US -3001975880,3001975895,GB -3001975896,3001975903,RU -3001975904,3001976415,GB -3001976416,3001976447,IL -3001976448,3001976575,GB -3001976576,3001976607,US -3001976608,3001976623,GB -3001976624,3001976639,CN +3001975856,3001975863,MY +3001975864,3001975871,AE +3001975872,3001975887,US +3001975888,3001975895,CN +3001975896,3001975919,GB +3001975920,3001975927,CN +3001975928,3001975935,AU +3001975936,3001976639,GB 3001976640,3001976655,RU 3001976656,3001976671,GB 3001976672,3001976679,IN 3001976680,3001976687,US 3001976688,3001976831,GB 3001976832,3001976895,CN -3001976896,3001976927,IL +3001976896,3001976927,GB 3001976928,3001976959,RU -3001976960,3001977087,GB -3001977088,3001977103,IN +3001976960,3001977103,GB 3001977104,3001977119,RU -3001977120,3001977135,GB -3001977136,3001977151,AE -3001977152,3001977167,GB +3001977120,3001977135,IN +3001977136,3001977143,CN +3001977144,3001977151,TW +3001977152,3001977167,IN 3001977168,3001977183,LK -3001977184,3001977199,GB -3001977200,3001977215,DE +3001977184,3001977215,GB 3001977216,3001977247,RU 3001977248,3001977311,GB 3001977312,3001977343,CN -3001977344,3001977375,IL -3001977376,3001977407,CA -3001977408,3001977439,IL -3001977440,3001977447,GB +3001977344,3001977375,GB +3001977376,3001977407,US +3001977408,3001977447,GB 3001977448,3001977455,IT -3001977456,3001977463,US -3001977464,3001977487,GB +3001977456,3001977471,US +3001977472,3001977487,IN 3001977488,3001977503,LK 3001977504,3001977519,GB 3001977520,3001977535,CN -3001977536,3001977575,GB -3001977576,3001977583,CA -3001977584,3001977599,GB +3001977536,3001977567,GB +3001977568,3001977575,CA +3001977576,3001977599,GB 3001977600,3001977855,DK -3001977856,3001978047,GB -3001978048,3001978111,US -3001978112,3001978303,GB -3001978304,3001978367,IL +3001977856,3001978031,GB +3001978032,3001978047,RU +3001978048,3001978367,GB 3001978368,3001978495,US 3001978496,3001978527,RU 3001978528,3001978559,UA 3001978560,3001978591,US -3001978592,3001978607,AU -3001978608,3001978623,GB -3001978624,3001978687,CA +3001978592,3001978607,RU +3001978608,3001978615,IE +3001978616,3001978623,CN +3001978624,3001978687,US 3001978688,3001978751,EE 3001978752,3001978783,RU 3001978784,3001978815,US -3001978816,3001978831,LK -3001978832,3001978847,GB +3001978816,3001978823,LK +3001978824,3001978847,GB 3001978848,3001978879,UA 3001978880,3001982975,GB 3001982976,3001987071,CH @@ -61877,17 +72704,9 @@ 3002003456,3002011647,PL 3002011648,3002015743,BA 3002015744,3002019839,IT -3002019840,3002020095,NL -3002020096,3002020159,SG -3002020160,3002020223,NL -3002020224,3002020287,IL +3002019840,3002020287,NL 3002020288,3002020303,US -3002020304,3002020319,BZ -3002020320,3002021695,NL -3002021696,3002021759,SG -3002021760,3002022527,NL -3002022528,3002022655,BZ -3002022656,3002023935,NL +3002020304,3002023935,NL 3002023936,3002028031,DE 3002028032,3002036223,GB 3002036224,3002040319,BG @@ -61949,7 +72768,11 @@ 3002662912,3002664959,DE 3002664960,3002667007,ES 3002667008,3002669055,GE -3002669056,3002671103,DE +3002669056,3002669199,DE +3002669200,3002669207,CH +3002669208,3002669951,DE +3002669952,3002669983,US +3002669984,3002671103,DE 3002671104,3002673151,LV 3002673152,3002675199,GB 3002675200,3002677247,DK @@ -61966,7 +72789,7 @@ 3002699776,3002701823,SE 3002701824,3002703871,NL 3002703872,3002705919,DE -3002705920,3002707967,BG +3002705920,3002707967,MK 3002707968,3002710015,KW 3002710016,3002712063,IT 3002712064,3002714111,LU @@ -62010,8 +72833,8 @@ 3002798080,3002800127,FR 3002800128,3002802175,NL 3002802176,3002804223,GB -3002804224,3002806271,TR -3002806272,3002808319,DE +3002804224,3002806015,TR +3002806016,3002808319,DE 3002808320,3002810367,FI 3002810368,3002812415,AT 3002812416,3002814463,IT @@ -62024,7 +72847,9 @@ 3002826752,3002828799,SE 3002828800,3002830847,RU 3002830848,3002834943,FI -3002834944,3002836991,LU +3002834944,3002835887,LU +3002835888,3002835903,US +3002835904,3002836991,LU 3002836992,3002841087,GB 3002841088,3002843135,CZ 3002843136,3002845183,NL @@ -62050,15 +72875,17 @@ 3003056128,3003058175,DE 3003058176,3003058431,MT 3003058432,3003058687,FI -3003058688,3003058943,EE -3003058944,3003059135,PH -3003059136,3003060223,EE +3003058688,3003058751,EE +3003058752,3003058943,PH +3003058944,3003059199,IL +3003059200,3003060223,EE 3003060224,3003062271,DE 3003062272,3003064319,NL 3003064320,3003066367,RO 3003066368,3003066887,PL 3003066888,3003066895,MX -3003066896,3003066911,UA +3003066896,3003066903,RU +3003066904,3003066911,UA 3003066912,3003068415,PL 3003068416,3003070463,NL 3003070464,3003074559,GB @@ -62071,7 +72898,11 @@ 3003088896,3003090943,FR 3003090944,3003092991,DE 3003092992,3003095039,NO -3003095040,3003097087,AT +3003095040,3003095567,AT +3003095568,3003095583,CZ +3003095584,3003096063,AT +3003096064,3003096079,CZ +3003096080,3003097087,AT 3003097088,3003099135,FR 3003099136,3003101183,CZ 3003101184,3003103231,UA @@ -62090,8 +72921,7 @@ 3024879616,3025141759,CN 3025141760,3025403903,KR 3025403904,3025600511,CN -3025600512,3025649663,AP -3025649664,3025666047,IN +3025600512,3025666047,IN 3025666048,3025928191,CN 3025928192,3025932287,TW 3025932288,3025944575,JP @@ -62099,17 +72929,20 @@ 3025960960,3025969151,PK 3025969152,3025973247,IN 3025973248,3025974271,AU +3025974272,3025975295,HK 3025975296,3025977343,SG 3025977344,3025979391,AU 3025979392,3025981439,IN -3025981440,3025985535,AU +3025981440,3025982463,AU +3025982464,3025983487,ID +3025983488,3025985535,AU 3025985536,3025989631,BD 3025989632,3025993727,KR 3025993728,3026059263,VN 3026059264,3026067455,PH 3026068480,3026069503,PH 3026069504,3026071551,JP -3026071552,3026073599,AP +3026071552,3026073599,HK 3026073600,3026075647,CN 3026075648,3026083839,AF 3026083840,3026087935,CN @@ -62130,6 +72963,7 @@ 3028484096,3028500479,KR 3028500480,3028516863,JP 3028516864,3028518911,AU +3028518912,3028520959,JP 3028520960,3028521983,ID 3028521984,3028523007,LA 3028523008,3028525055,JP @@ -62140,28 +72974,32 @@ 3029336064,3029598207,JP 3029598208,3029600255,VN 3029600256,3029601279,AU +3029601280,3029602303,IN +3029602304,3029604351,CN 3029604352,3029605375,AU +3029605376,3029606399,JP 3029606400,3029614591,IN -3029614592,3029622783,AU +3029614592,3029630975,AU 3029630976,3029635071,VN 3029635072,3029637119,JP +3029637120,3029639167,CN 3029639168,3029643263,JP 3029643264,3029644287,AU +3029644288,3029645311,KR 3029645312,3029651455,JP 3029651456,3029653503,BD -3029655552,3029663743,CN +3029653504,3029663743,CN 3029663744,3029671935,BD 3029671936,3029680127,IN 3029680128,3029696511,MN 3029696512,3029704703,CN 3029704704,3029712895,JP -3029712896,3029713919,AU +3029712896,3029714943,AU 3029714944,3029715199,JP 3029715200,3029715455,AU -3029715456,3029715967,AP -3029715968,3029716991,JP +3029715456,3029716991,JP 3029716992,3029721087,PK -3029721088,3029725183,AP +3029721088,3029725183,AU 3029725184,3029727231,IN 3029727232,3029728255,AU 3029728256,3029729279,HK @@ -62180,11 +73018,13 @@ 3031564288,3031572479,IN 3031572480,3031580671,HK 3031580672,3031581695,AU +3031581696,3031582719,JP 3031582720,3031584767,SG 3031584768,3031587839,JP 3031587840,3031592959,ID 3031592960,3031595007,HK 3031595008,3031596031,AU +3031596032,3031597055,KH 3031597056,3031613439,PK 3031613440,3031629823,CN 3031629824,3031695359,IN @@ -62200,13 +73040,13 @@ 3032285184,3032301567,JP 3032301568,3032317951,KR 3032317952,3032319999,JP -3032320000,3032321023,AU -3032322048,3032323071,AU +3032320000,3032323071,AU 3032323072,3032324095,CN 3032324096,3032326143,AU 3032326144,3032330239,TL 3032330240,3032334335,KR 3032334336,3032342527,NZ +3032342528,3032350719,JP 3032350720,3032743935,PH 3032743936,3033038847,JP 3033038848,3033063423,AU @@ -62220,11 +73060,12 @@ 3033268224,3033530367,TW 3033530368,3033661439,CN 3033661440,3033694207,KR +3033694208,3033710591,BD 3033710592,3033712639,KR 3033712640,3033714687,SG 3033714688,3033715711,NZ +3033715712,3033716735,AU 3033716736,3033717759,TH -3033717760,3033718783,BD 3033718784,3033726975,CN 3033726976,3033743359,KR 3033743360,3033745407,IN @@ -62237,6 +73078,7 @@ 3033792512,3033923583,CN 3033923584,3033939967,JP 3033939968,3033948159,AU +3033948160,3033956351,NC 3033956352,3033964543,IN 3033964544,3033966591,HK 3033966592,3033968639,AU @@ -62252,17 +73094,21 @@ 3034251264,3034316799,HK 3034316800,3034447871,JP 3034447872,3034456063,AU +3034456064,3034464255,JP 3034464256,3034466303,NZ 3034466304,3034472447,JP -3034472448,3034480639,IN +3034472448,3034478591,IN +3034478592,3034480639,JP 3034480640,3034482687,SG 3034482688,3034484735,AF 3034484736,3034488831,TH 3034488832,3034492927,AU -3034497024,3034498047,AU +3034492928,3034497023,JP +3034497024,3034499071,AU 3034499072,3034500095,HK 3034500096,3034501119,TW 3034501120,3034502143,VU +3034502144,3034503167,IN 3034503168,3034504191,ID 3034504192,3034505215,KR 3034505216,3034578943,CN @@ -62270,9 +73116,9 @@ 3035103232,3035168767,PH 3035168768,3035193343,CN 3035193344,3035197439,JP -3035197440,3035199487,AP +3035197440,3035199487,HK 3035199488,3035200511,IN -3035201536,3035202559,AU +3035200512,3035202559,AU 3035202560,3035205631,JP 3035205632,3035207679,MY 3035207680,3035209727,ID @@ -62282,7 +73128,7 @@ 3035299840,3035316223,JP 3035316224,3035324415,CN 3035324416,3035326463,JP -3035326464,3035327487,AU +3035326464,3035328511,AU 3035332608,3035333631,AU 3035333632,3035334655,HK 3035335680,3035337727,JP @@ -62290,15 +73136,24 @@ 3035338752,3035339007,SG 3035339008,3035339263,IN 3035339264,3035339775,HK +3035339776,3035340799,AU 3035340800,3035348991,MN 3035348992,3035357183,AU +3035357184,3035365375,JP 3035365376,3035627519,KR -3035627520,3036676095,ID +3035627520,3036610559,ID +3036610560,3036676095,SG +3036676096,3037790207,AR +3037790208,3037855743,VE +3037986816,3038248959,AR +3038511104,3038773247,AR +3039035392,3039166463,DO +3039297536,3039363071,PY +3039821824,3040346111,CO 3053453312,3054501887,ID 3054501888,3054534655,HK 3054534656,3054537727,PH 3054537728,3054538751,SG -3054538752,3054540799,BD 3054540800,3054541823,NZ 3054541824,3054542847,BD 3054542848,3054551039,ID @@ -62312,35 +73167,42 @@ 3054665728,3054682111,IN 3054682112,3054698495,PH 3054698496,3054731263,IN +3054731264,3054764031,SG 3054764032,3054960639,JP 3054960640,3054993407,ID 3054993408,3054997503,IN 3054997504,3055001599,SG 3055001600,3055005695,ID 3055005696,3055007743,NZ +3055007744,3055009791,CN 3055009792,3055011839,AU +3055011840,3055013887,CN 3055013888,3055014911,JP 3055014912,3055015935,AU 3055015936,3055026175,JP -3055026176,3055550463,ID +3055026176,3055484927,ID +3055484928,3055550463,KR 3055550464,3056599039,CN 3056599040,3056615423,JP 3056615424,3056623615,BD 3056623616,3056631807,CN 3056631808,3056639999,NZ +3056640000,3056648191,ID 3056648192,3056664575,IN 3056664576,3056734207,CN 3056734208,3056746495,KR 3056746496,3056747519,NP -3056747520,3056748543,BD 3056748544,3056749567,WS +3056749568,3056750591,SG 3056750592,3056754687,TH 3056754688,3056758783,JP 3056758784,3056762879,CN 3056762880,3056771071,SG 3056771072,3056772095,NZ +3056772096,3056773119,JP 3056773120,3056774143,WS -3056775168,3056779263,AP +3056774144,3056775167,JP +3056775168,3056779263,AF 3056779264,3056791551,JP 3056791552,3056795647,ID 3056795648,3056861183,CN @@ -62348,8 +73210,11 @@ 3056992256,3057025023,CN 3057025024,3057033215,PH 3057033216,3057037311,NZ +3057037312,3057041407,JP 3057041408,3057049599,MY -3057049600,3057053695,AU +3057049600,3057050623,AU +3057050624,3057051647,SG +3057051648,3057053695,AU 3057053696,3057054719,JP 3057054720,3057055743,HK 3057055744,3057057791,JP @@ -62367,6 +73232,7 @@ 3059744768,3063414783,CN 3063414784,3063545855,HK 3063545856,3063611391,NZ +3063611392,3063676927,TW 3063676928,3063742463,IN 3063742464,3063807999,CN 3063808000,3063939071,JP @@ -62374,6 +73240,7 @@ 3063955456,3063963647,CN 3063963648,3063971839,BD 3063971840,3063988223,AU +3063988224,3064004607,JP 3064004608,3064012799,LK 3064012800,3064020991,MY 3064020992,3064023039,JP @@ -62446,8 +73313,7 @@ 3075383296,3075385343,IN 3075385344,3075386367,MY 3075386368,3075387391,AU -3075387392,3075388415,JP -3075388416,3075389439,MY +3075388416,3075389439,CN 3075389440,3075390463,IN 3075390464,3075391487,JP 3075391488,3075407871,KR @@ -62455,6 +73321,7 @@ 3075473408,3075571711,VN 3075571712,3075575807,FJ 3075575808,3075577855,AU +3075577856,3075579903,ID 3075579904,3075581951,MY 3075581952,3075582975,MN 3075582976,3075583999,TH @@ -62478,10 +73345,10 @@ 3076194304,3076202495,VN 3076202496,3076210687,HK 3076210688,3076218879,ID +3076218880,3076227071,JP 3076227072,3076228095,CN 3076228096,3076229119,NP -3076229120,3076231167,TH -3076231168,3076235263,CN +3076229120,3076235263,CN 3076235264,3076243455,VN 3076243456,3076259839,KR 3076259840,3076521983,CN @@ -62490,7 +73357,7 @@ 3081437184,3081502719,MY 3081502720,3081764863,CN 3081764864,3081846783,JP -3081846784,3081854975,AP +3081846784,3081854975,HK 3081854976,3081859071,MN 3081859072,3081861119,PH 3081861120,3081862143,AU @@ -62501,7 +73368,7 @@ 3082158080,3082166271,CN 3082166272,3082174463,JP 3082174464,3082178559,PH -3082178560,3082179583,AP +3082178560,3082179583,HK 3082179584,3082181631,IN 3082181632,3082182655,ID 3082182656,3082190847,LA @@ -62509,18 +73376,60 @@ 3082289152,3087007743,CN 3087007744,3091202047,US 3091202048,3091726335,CA -3091726336,3093168127,US +3091726336,3091955711,US +3091955712,3091959807,CA +3091959808,3091976191,US +3091976192,3091980287,CA +3091980288,3093168127,US 3093168128,3093200895,CA +3093200896,3093213183,US +3093213184,3093217279,CA +3093217280,3093233663,US 3093233664,3093237759,PR -3093299200,3093939167,US -3093939168,3093939175,CN -3093939176,3093941111,US -3093941112,3093941119,MY -3093941120,3093941199,US -3093941200,3093941207,CN -3093941208,3093942271,US -3093942272,3093942527,CA -3093942528,3093954759,US +3093237760,3093241863,US +3093241864,3093241871,AU +3093241872,3093242287,US +3093242288,3093242295,AU +3093242296,3093242719,US +3093242720,3093242751,CN +3093242752,3093243223,US +3093243224,3093243231,AU +3093243232,3093245575,US +3093245576,3093245583,BR +3093245584,3093245719,US +3093245720,3093245727,AU +3093245728,3093245999,US +3093246000,3093246007,AU +3093246008,3093246431,US +3093246432,3093246439,AU +3093246440,3093247327,US +3093247328,3093247335,AU +3093247336,3093247511,US +3093247512,3093247519,AU +3093247520,3093248375,US +3093248376,3093248399,AU +3093248400,3093248415,US +3093248416,3093248431,AU +3093248432,3093248479,US +3093248480,3093248487,AU +3093248488,3093248727,US +3093248728,3093248735,AU +3093248736,3093248831,US +3093248832,3093248839,AU +3093248840,3093248887,US +3093248888,3093248895,AU +3093248896,3093249599,US +3093249600,3093249623,AU +3093249624,3093249679,US +3093249680,3093249687,AU +3093249688,3093266431,US +3093299200,3093940991,US +3093940992,3093941055,CN +3093941056,3093941103,US +3093941104,3093941119,CN +3093941120,3093941191,US +3093941192,3093941199,CN +3093941200,3093954759,US 3093954760,3093954767,AR 3093954768,3093954975,US 3093954976,3093954983,AU @@ -62546,7 +73455,9 @@ 3093955664,3093955679,CA 3093955680,3093956479,US 3093956480,3093956495,IE -3093956496,3093956567,US +3093956496,3093956543,US +3093956544,3093956551,AU +3093956552,3093956567,US 3093956568,3093956575,MX 3093956576,3093956895,US 3093956896,3093956943,CA @@ -62598,15 +73509,52 @@ 3093962376,3093962379,CA 3093962380,3093962475,US 3093962476,3093962479,CA -3093962480,3093962807,US +3093962480,3093962559,US +3093962560,3093962575,GB +3093962576,3093962807,US 3093962808,3093962815,AU -3093962816,3093963359,US +3093962816,3093962943,US +3093962944,3093962951,GB +3093962952,3093963359,US 3093963360,3093963367,CA 3093963368,3093963487,US 3093963488,3093963495,IE 3093963496,3093963599,US 3093963600,3093963607,CA -3093963608,3093986367,US +3093963608,3093965039,US +3093965040,3093965055,GB +3093965056,3093965359,US +3093965360,3093965367,FR +3093965368,3093965663,US +3093965664,3093965671,KW +3093965672,3093965879,US +3093965880,3093965881,CA +3093965882,3093965885,US +3093965886,3093965887,MX +3093965888,3093965903,US +3093965904,3093965905,CA +3093965906,3093965965,US +3093965966,3093965967,MX +3093965968,3093966319,US +3093966320,3093966323,AU +3093966324,3093967191,US +3093967192,3093967199,CA +3093967200,3093968911,US +3093968912,3093968927,CA +3093968928,3093968943,US +3093968944,3093968951,MX +3093968952,3093969007,US +3093969008,3093969015,IE +3093969016,3093969031,US +3093969032,3093969035,CA +3093969036,3093969131,US +3093969132,3093969135,MX +3093969136,3093970503,US +3093970504,3093970507,GB +3093970508,3093977159,US +3093977160,3093977163,AU +3093977164,3093977167,IL +3093977168,3093986367,US 3093986368,3093986431,DE 3093986432,3093986463,US 3093986464,3093986495,GB @@ -62616,14 +73564,55 @@ 3096444928,3096969215,CA 3096969216,3097493503,US 3097493504,3097755647,CA -3097755648,3098148863,US +3097755648,3098095615,US +3098095616,3098099711,CA +3098099712,3098116095,US 3098148864,3098165247,JM -3098214400,3098263551,US +3098165248,3098181631,US +3098181632,3098185727,CA +3098185728,3098263551,US 3098263552,3098271743,CA 3098271744,3098275839,US -3098279936,3098476543,US +3098279936,3098279943,US +3098279944,3098279951,KW +3098279952,3098280591,US +3098280592,3098280599,PA +3098280600,3098281503,US +3098281504,3098281511,PA +3098281512,3098281711,US +3098281712,3098281719,PA +3098281720,3098290223,US +3098290224,3098290231,IN +3098290232,3098291087,US +3098291088,3098291095,IN +3098291096,3098291119,US +3098291120,3098291135,NL +3098291136,3098291151,US +3098291152,3098291159,NL +3098291160,3098295751,US +3098295752,3098295759,PL +3098295760,3098322367,US +3098322368,3098322375,BD +3098322376,3098322383,US +3098322384,3098322391,BD +3098322392,3098322695,US +3098322696,3098322703,BD +3098322704,3098333951,US +3098333952,3098333959,BD +3098333960,3098365535,US +3098365536,3098365551,IN +3098365552,3098365951,US +3098365952,3098365959,MX +3098365960,3098371303,US +3098371304,3098371311,PE +3098371312,3098476543,US 3098476544,3098492927,CA -3098492928,3103784959,US +3098492928,3098495999,US +3098496000,3098496255,CA +3098496256,3098502143,US +3098502144,3098502207,IN +3098502208,3103784959,US +3103784960,3107979263,EU 3120562176,3120594943,CO 3120594944,3120599039,AR 3120599040,3120601087,EC @@ -62634,6 +73623,7 @@ 3120610304,3120611327,PY 3120611328,3120627711,AR 3120627712,3120644095,NI +3120644096,3120660479,DO 3120660480,3120668671,PA 3120676864,3120680959,HT 3120685056,3120689151,AR @@ -62657,19 +73647,27 @@ 3122135040,3122331647,VE 3122331648,3122348031,BO 3122397184,3122659327,CO -3122659328,3122724863,GT -3122790400,3122987007,CL -3123052544,3123118079,AR +3122659328,3122675711,CR +3122675712,3122700287,GT +3122700288,3122716671,CR +3122716672,3122724863,GT +3122790400,3123052543,CL +3123052544,3123183615,AR 3123183616,3123314687,CL 3123314688,3123380223,EC 3123380224,3123412991,CO 3123445760,3123576831,TT -3123576832,3123609599,EC +3123576832,3123642367,EC 3123707904,3123970047,UY 3124232192,3124772863,AR +3124789248,3124822015,CR +3124822016,3124838399,EC +3124854784,3124887551,CL 3124887552,3124953087,EC -3125018624,3125149695,EC +3124953088,3125018623,CL +3125018624,3125280767,EC 3125280768,3125542911,PA +3125673984,3125805055,CL 3125805056,3126329343,CO 3126329344,3126853631,VE 3126853632,3126919167,AR @@ -62678,34 +73676,46 @@ 3127246848,3127377919,CO 3127377920,3127640063,CL 3127640064,3127902207,AR -3127902208,3128164351,CO +3127902208,3128426495,CO 3128426496,3128492031,DO 3128492032,3128524799,CO 3128557568,3128950783,AR 3128950784,3129016319,UY 3129016320,3129999359,AR 3129999360,3130261503,CO +3130261504,3130277887,CL +3130327040,3130392575,DO 3130523648,3130654719,AR +3130654720,3130720255,CO +3130785792,3130818559,CL +3130851328,3130916863,AR 3131047936,3131310079,PE -3132096512,3132129279,CR +3131310080,3131572223,VE +3131572224,3131703295,CO +3132096512,3132162047,CR 3132227584,3132293119,EC -3132358656,3132424191,CO +3132358656,3132489727,CO 3132489728,3132555263,AR -3132620800,3132751871,VE -3132882944,3132915711,VE +3132620800,3132915711,VE +3132915712,3132948479,PA 3132948480,3133014015,AR 3133014016,3133046783,HT -3133046784,3133054975,AR +3133046784,3133067263,AR +3133067264,3133073407,PA +3133073408,3133074431,AN +3133074432,3133075455,CL +3133075456,3133079551,AN 3133079552,3133145087,AR 3133145088,3145727999,BR 3145728000,3154116607,MX -3154116608,3154182143,EU +3154149376,3154157567,UA +3154157568,3154173951,RU +3154173952,3154182143,MD 3154182144,3154247679,DE 3154247680,3154313215,RS 3154313216,3154378751,TR 3154378752,3154444287,GR 3154444288,3154509823,BE -3154509824,3154575359,RU 3154575360,3154640895,FR 3154640896,3155165183,IT 3155165184,3155427327,RU @@ -62714,23 +73724,25 @@ 3155506336,3155689471,AT 3155689472,3155951615,RO 3155951616,3156213759,GB -3156213760,3156279295,RU 3156279296,3156344831,PL 3156344832,3156410367,IR 3156410368,3156475903,RU 3156475904,3156539391,HU 3156539392,3156539647,RO 3156539648,3156541439,HU +3156541440,3156606975,PT 3156606976,3156672511,TR 3156672512,3156738047,GB 3156738048,3156791439,DE 3156791440,3156791455,NL 3156791456,3156802271,DE 3156802272,3156802303,US -3156802304,3156803583,DE +3156802304,3156803327,DE +3156803328,3156803359,CH +3156803360,3156803583,DE 3156803584,3156869119,TR 3156869120,3156934655,LU -3156934656,3157065727,RU +3156934656,3157000191,RU 3157065728,3157131263,AT 3157131264,3157196799,DE 3157196800,3157262335,PL @@ -62738,7 +73750,6 @@ 3157786624,3158048767,TR 3158048768,3158310911,CH 3158310912,3158312959,FI -3158312960,3158315007,NL 3158315008,3158317055,DE 3158317056,3158319103,SI 3158319104,3158321151,GB @@ -62784,11 +73795,25 @@ 3158395008,3158395135,GB 3158395136,3158395151,AT 3158395152,3158395159,DE -3158395160,3158395263,AT +3158395160,3158395167,AT +3158395168,3158395175,DE +3158395176,3158395191,AT +3158395192,3158395199,DE +3158395200,3158395263,AT 3158395264,3158395295,DE -3158395296,3158395647,AT +3158395296,3158395359,AT +3158395360,3158395367,DE +3158395368,3158395431,AT +3158395432,3158395439,DE +3158395440,3158395647,AT 3158395648,3158395663,DE -3158395664,3158396927,AT +3158395664,3158395687,AT +3158395688,3158395695,DE +3158395696,3158395711,AT +3158395712,3158395743,DE +3158395744,3158396287,AT +3158396288,3158396319,DE +3158396320,3158396927,AT 3158396928,3158398975,IT 3158398976,3158401023,ES 3158401024,3158403071,GB @@ -62802,7 +73827,12 @@ 3158417408,3158419455,NL 3158419456,3158421503,FR 3158421504,3158423551,GB -3158423552,3158425599,MT +3158423552,3158424063,MT +3158424064,3158424095,NL +3158424096,3158424127,MT +3158424128,3158424159,IE +3158424160,3158425567,MT +3158425568,3158425599,IE 3158425600,3158427647,NL 3158427648,3158429695,DE 3158429696,3158431743,RU @@ -62815,8 +73845,13 @@ 3158446080,3158448127,NL 3158448128,3158452223,RU 3158452224,3158454271,DE +3158454272,3158458367,EU +3158458368,3158474751,GB +3158474752,3158507519,OM +3158507520,3158573055,FI 3158573056,3158638591,RU 3158638592,3158704127,LT +3158704128,3158835199,KW 3158835200,3158851583,IQ 3158851584,3158867967,RU 3158867968,3158884351,AZ @@ -62829,13 +73864,9 @@ 3158886176,3158886207,BZ 3158886208,3158886271,DE 3158886272,3158886335,RO -3158886336,3158886399,DE -3158886400,3158886655,TR -3158886656,3158887167,DE +3158886336,3158887167,DE 3158887168,3158887423,CA -3158887424,3158889215,DE -3158889216,3158889727,TR -3158889728,3158889983,DE +3158887424,3158889983,DE 3158889984,3158890239,HK 3158890240,3158891263,DE 3158891264,3158891519,CA @@ -62845,16 +73876,17 @@ 3158891648,3158891711,DE 3158891712,3158891775,RU 3158891776,3158892031,PL -3158892032,3158892415,DE +3158892032,3158892351,DE +3158892352,3158892415,IR 3158892416,3158892543,GB 3158892544,3158892671,DE 3158892672,3158892799,RU 3158892800,3158893567,DE 3158893568,3158893823,GB -3158893824,3158894079,TR -3158894080,3158895167,DE +3158893824,3158895167,DE 3158895168,3158895231,RU -3158895232,3158895423,DE +3158895232,3158895359,TR +3158895360,3158895423,DE 3158895424,3158895487,RU 3158895488,3158895551,MK 3158895552,3158895615,AE @@ -62873,7 +73905,8 @@ 3158898272,3158898335,RU 3158898336,3158898431,DE 3158898432,3158898687,US -3158898688,3158898943,DE +3158898688,3158898815,DE +3158898816,3158898943,BZ 3158898944,3158899199,ES 3158899200,3158899455,DE 3158899456,3158899711,CA @@ -62882,12 +73915,14 @@ 3158917120,3158933503,DE 3158933504,3158949887,RU 3158949888,3158966271,GR +3158966272,3158982655,DE 3158982656,3158999039,GB 3158999040,3159031807,RO 3159031808,3159048191,RU 3159048192,3159064575,IR 3159064576,3159080959,CZ 3159080960,3159097343,RU +3159097344,3159359487,ES 3159359488,3159621631,PT 3159621632,3159883775,ES 3159883776,3160145919,NL @@ -62896,6 +73931,8 @@ 3160150016,3160152063,LV 3160152064,3160154111,IT 3160154112,3160156159,DE +3160156160,3160158207,CZ +3160158208,3160160255,CH 3160160256,3160162303,NL 3160162304,3160164351,FR 3160164352,3160166399,LV @@ -62967,6 +74004,7 @@ 3160271952,3160272895,ES 3160272896,3160274943,RU 3160274944,3160276991,AT +3160276992,3160279039,FR 3160279040,3160281087,ES 3160281088,3160283135,GB 3160283136,3160285183,DE @@ -62991,7 +74029,10 @@ 3160324096,3160328191,IT 3160328192,3160330239,FR 3160330240,3160332287,RU -3160332288,3160333055,NO +3160332288,3160332751,NO +3160332752,3160332759,SE +3160332760,3160332767,AU +3160332768,3160333055,NO 3160333056,3160333087,CO 3160333088,3160334335,NO 3160334336,3160336383,RU @@ -63015,6 +74056,7 @@ 3160377344,3160379391,NL 3160379392,3160381439,TR 3160381440,3160383487,UA +3160383488,3160385535,SA 3160385536,3160387583,NL 3160387584,3160389631,RS 3160389632,3160391679,RU @@ -63022,7 +74064,9 @@ 3160395776,3160397823,EE 3160397824,3160399871,ES 3160399872,3160401919,SE +3160401920,3160403967,DE 3160403968,3160406015,NO +3160406016,3160408063,ES 3160408064,3161456639,DE 3161456640,3161473023,PL 3161473024,3161489407,SK @@ -63045,14 +74089,19 @@ 3161784320,3161800703,FI 3161800704,3161817087,SA 3161817088,3161833471,PL -3161833472,3161833983,MK -3161833984,3161834495,AT -3161834496,3161835263,MK -3161835264,3161849855,AT +3161833472,3161835519,MK +3161835520,3161835775,AT +3161835776,3161837567,MK +3161837568,3161837695,AT +3161837696,3161840639,MK +3161840640,3161840895,AT +3161840896,3161844735,MK +3161844736,3161849855,AT 3161849856,3161866239,BE 3161866240,3161882623,IR 3161882624,3161899007,DE 3161899008,3161915391,AT +3161915392,3161931775,TR 3161931776,3161948159,SA 3161948160,3161964543,RO 3161964544,3161980927,ES @@ -63070,17 +74119,30 @@ 3162071040,3162087423,IR 3162087424,3162095615,SK 3162095616,3162103807,GE -3162103808,3162104319,FR -3162104320,3162108415,NL -3162108416,3162108671,FR -3162108672,3162108927,NL -3162108928,3162109951,FR -3162109952,3162111999,NL +3162103808,3162104831,FR +3162104832,3162110975,NL +3162110976,3162111103,FR +3162111104,3162111167,NL +3162111168,3162111231,FR +3162111232,3162111295,CA +3162111296,3162111359,NL +3162111360,3162111391,CA +3162111392,3162111471,NL +3162111472,3162111487,BE +3162111488,3162111519,CA +3162111520,3162111599,NL +3162111600,3162111615,BE +3162111616,3162111727,NL +3162111728,3162111775,CH +3162111776,3162111871,NL +3162111872,3162111903,CH +3162111904,3162111999,NL 3162112000,3162120191,PL 3162120192,3162128383,GB 3162128384,3162129407,NL 3162129408,3162129919,DE 3162129920,3162136575,NL +3162136576,3162144767,ES 3162144768,3162152959,SE 3162152960,3162161151,RU 3162161152,3162169343,CZ @@ -63095,6 +74157,7 @@ 3162234880,3162243071,RU 3162243072,3162251263,TR 3162251264,3162259455,RU +3162259456,3162267647,BG 3162267648,3162275839,RU 3162275840,3162284031,NO 3162284032,3162292223,PL @@ -63115,7 +74178,8 @@ 3162365952,3162374143,PL 3162374144,3162382335,BG 3162382336,3162390527,RU -3162390528,3162398719,SE +3162390528,3162391551,SE +3162391552,3162398719,A1 3162398720,3162406911,BE 3162406912,3162415103,IR 3162415104,3162423295,DE @@ -63128,7 +74192,9 @@ 3162472448,3162480639,HU 3162480640,3162488831,ES 3162488832,3162497023,FI -3162497024,3162537983,RU +3162497024,3162504511,RU +3162504512,3162504543,PL +3162504544,3162537983,RU 3162537984,3162570751,PL 3162570752,3162603519,HR 3162603520,3162636287,GE @@ -63137,7 +74203,9 @@ 3162681344,3162682367,UA 3162682368,3162685439,RU 3162685440,3162697727,UA -3162697728,3162701823,RU +3162697728,3162700543,RU +3162700544,3162700799,UA +3162700800,3162701823,RU 3162701824,3162734591,MD 3162734592,3162767359,RU 3162767360,3162800127,SA @@ -63150,54 +74218,84 @@ 3163029504,3163062271,DE 3163062272,3163095039,IR 3163095040,3163127807,PL +3163127808,3163160575,BH 3163160576,3163161631,DE 3163161632,3163161663,DK -3163161664,3163161695,DE +3163161664,3163161695,US 3163161696,3163161727,BG -3163161728,3163161887,DE -3163161888,3163161919,US -3163161920,3163162111,DE +3163161728,3163161759,DE +3163161760,3163161791,BR +3163161792,3163161887,DE +3163161888,3163161951,US +3163161952,3163162079,DE +3163162080,3163162111,RU 3163162112,3163162143,TR -3163162144,3163162175,DE -3163162176,3163162207,US -3163162208,3163162239,TR -3163162240,3163162271,DE +3163162144,3163162239,DE +3163162240,3163162271,US 3163162272,3163162303,NL -3163162304,3163162431,DE +3163162304,3163162367,DE +3163162368,3163162399,TR +3163162400,3163162431,DE 3163162432,3163162463,CY -3163162464,3163163871,DE +3163162464,3163163807,DE +3163163808,3163163839,CY +3163163840,3163163871,DE 3163163872,3163163903,RU 3163163904,3163163935,GR 3163163936,3163163967,VG -3163163968,3163164543,DE +3163163968,3163164031,DE +3163164032,3163164063,TW +3163164064,3163164095,AM +3163164096,3163164127,RU +3163164128,3163164287,DE +3163164288,3163164319,CL +3163164320,3163164351,RU +3163164352,3163164447,DE +3163164448,3163164479,RU +3163164480,3163164511,DE +3163164512,3163164543,HU 3163164544,3163164575,RU 3163164576,3163165759,DE 3163165760,3163165791,PL 3163165792,3163165823,RU -3163165824,3163166175,DE -3163166176,3163166207,US -3163166208,3163166367,DE -3163166368,3163166399,NL +3163165824,3163166015,DE +3163166016,3163166047,US +3163166048,3163166175,DE +3163166176,3163166207,RU +3163166208,3163166239,TR +3163166240,3163166271,IT +3163166272,3163166367,DE +3163166368,3163166399,US 3163166400,3163166495,DE 3163166496,3163166527,RO 3163166528,3163166559,DE 3163166560,3163166591,HU 3163166592,3163167775,DE 3163167776,3163167807,GR -3163167808,3163167839,NL -3163167840,3163167967,DE +3163167808,3163167839,US +3163167840,3163167871,BR +3163167872,3163167903,DE +3163167904,3163167935,UA +3163167936,3163167967,DE 3163167968,3163167999,TR 3163168000,3163168031,DE 3163168032,3163168095,RU 3163168096,3163168127,TR 3163168128,3163168159,SA -3163168160,3163168319,DE +3163168160,3163168191,BR +3163168192,3163168223,AT +3163168224,3163168319,DE 3163168320,3163168351,DK -3163168352,3163168575,DE -3163168576,3163168607,NL +3163168352,3163168383,RU +3163168384,3163168415,TR +3163168416,3163168511,DE +3163168512,3163168543,TR +3163168544,3163168575,DE +3163168576,3163168607,US 3163168608,3163168671,DE 3163168672,3163168703,US -3163168704,3163169823,DE +3163168704,3163168735,GR +3163168736,3163169823,DE 3163169824,3163169855,RU 3163169856,3163169951,DE 3163169952,3163169983,GB @@ -63205,57 +74303,90 @@ 3163170016,3163170047,ES 3163170048,3163170079,RU 3163170080,3163170111,TR -3163170112,3163170207,DE +3163170112,3163170143,TW +3163170144,3163170175,ZA +3163170176,3163170207,DE 3163170208,3163170239,RU -3163170240,3163170303,DE +3163170240,3163170271,DE +3163170272,3163170303,TW 3163170304,3163170335,IT -3163170336,3163170495,DE -3163170496,3163170527,BR +3163170336,3163170367,RO +3163170368,3163170495,DE +3163170496,3163170527,BG 3163170528,3163170591,DE 3163170592,3163170623,BR -3163170624,3163171871,DE +3163170624,3163170655,GR +3163170656,3163170751,DE +3163170752,3163170783,CH +3163170784,3163171871,DE 3163171872,3163171903,RO -3163171904,3163172127,DE -3163172128,3163172159,NL -3163172160,3163172191,RU -3163172192,3163172255,DE -3163172256,3163172287,PL -3163172288,3163172319,DE +3163171904,3163171935,BZ +3163171936,3163171967,DE +3163171968,3163171999,US +3163172000,3163172095,DE +3163172096,3163172127,BR +3163172128,3163172159,US +3163172160,3163172191,TR +3163172192,3163172319,DE 3163172320,3163172351,NL 3163172352,3163172383,GB -3163172384,3163172447,DE -3163172448,3163172479,TR -3163172480,3163172607,DE +3163172384,3163172479,DE +3163172480,3163172511,US +3163172512,3163172543,RU +3163172544,3163172607,DE 3163172608,3163172639,DK 3163172640,3163172735,DE 3163172736,3163172767,GR -3163172768,3163174047,DE +3163172768,3163173919,DE +3163173920,3163173951,TW +3163173952,3163174015,DE +3163174016,3163174047,RU 3163174048,3163174079,DK -3163174080,3163174303,DE +3163174080,3163174111,DE +3163174112,3163174143,BE +3163174144,3163174175,DE +3163174176,3163174207,US +3163174208,3163174239,DE +3163174240,3163174271,TW +3163174272,3163174303,DE 3163174304,3163174335,IL 3163174336,3163174367,RU -3163174368,3163174591,DE +3163174368,3163174431,DE +3163174432,3163174463,BR +3163174464,3163174495,DE +3163174496,3163174527,US +3163174528,3163174559,BD +3163174560,3163174591,PL 3163174592,3163174623,SE 3163174624,3163174655,GB -3163174656,3163174687,NL -3163174688,3163174719,DE +3163174656,3163174719,DE 3163174720,3163174751,NL -3163174752,3163174783,US -3163174784,3163176127,DE -3163176128,3163176159,NL +3163174752,3163174815,DE +3163174816,3163174847,CA +3163174848,3163174879,TR +3163174880,3163174911,RU +3163174912,3163176095,DE +3163176096,3163176127,CY +3163176128,3163176159,US 3163176160,3163176255,DE 3163176256,3163176287,UG -3163176288,3163176319,DE -3163176320,3163176351,US -3163176352,3163176479,DE -3163176480,3163176543,GB +3163176288,3163176319,PT +3163176320,3163176447,DE +3163176448,3163176479,US +3163176480,3163176511,GB +3163176512,3163176543,TR 3163176544,3163176575,DE 3163176576,3163176607,GR -3163176608,3163176767,DE +3163176608,3163176639,TW +3163176640,3163176671,DE +3163176672,3163176703,AU +3163176704,3163176767,DE 3163176768,3163176799,PL -3163176800,3163176895,DE +3163176800,3163176831,EG +3163176832,3163176895,DE 3163176896,3163176927,SE 3163176928,3163193343,DE +3163193344,3163226111,MD 3163226112,3163258879,SA 3163258880,3163291647,SY 3163291648,3163324415,PT @@ -63263,7 +74394,7 @@ 3163357184,3163389951,IE 3163389952,3163422719,FR 3163422720,3163455487,NL -3163455488,3163488255,HU +3163455488,3163521023,HU 3163521024,3163553791,RU 3163553792,3163684863,DE 3163684864,3163815935,PL @@ -63301,15 +74432,18 @@ 3164947044,3164947047,GB 3164947048,3164947063,FR 3164947064,3164947067,NL -3164947068,3164947071,PL +3164947068,3164947071,IT 3164947072,3164947199,DE 3164947200,3164947455,FR 3164947456,3164947519,PL 3164947520,3164947551,ES 3164947552,3164947583,DE -3164947584,3164947599,FR -3164947600,3164947615,GB -3164947616,3164947627,FR +3164947584,3164947587,FR +3164947588,3164947591,DE +3164947592,3164947599,GB +3164947600,3164947619,FR +3164947620,3164947623,ES +3164947624,3164947627,GB 3164947628,3164947635,ES 3164947636,3164947639,DE 3164947640,3164947643,IT @@ -63326,31 +74460,39 @@ 3164948736,3164949087,GB 3164949088,3164949095,FR 3164949096,3164949103,IT -3164949104,3164949119,GB +3164949104,3164949107,DE +3164949108,3164949111,PL +3164949112,3164949119,FR 3164949120,3164949123,PT 3164949124,3164949131,DE 3164949132,3164949151,FR 3164949152,3164949155,NL -3164949156,3164949159,FR +3164949156,3164949159,DE 3164949160,3164949163,PL 3164949164,3164949183,FR -3164949184,3164949215,DE +3164949184,3164949199,GB +3164949200,3164949215,FR 3164949216,3164949219,PL 3164949220,3164949223,FR 3164949224,3164949231,PL 3164949232,3164949247,BE -3164949248,3164949279,FR +3164949248,3164949263,FR +3164949264,3164949271,PL +3164949272,3164949275,GB +3164949276,3164949279,CH 3164949280,3164949295,ES 3164949296,3164949327,FR -3164949328,3164949331,PL -3164949332,3164949335,ES +3164949328,3164949335,PL 3164949336,3164949343,IE 3164949344,3164949359,FR 3164949360,3164949363,BE -3164949364,3164949391,FR +3164949364,3164949371,FR +3164949372,3164949375,GB +3164949376,3164949391,FR 3164949392,3164949395,ES 3164949396,3164949439,FR -3164949440,3164949471,PL +3164949440,3164949455,GB +3164949456,3164949471,PL 3164949472,3164949503,FR 3164949504,3164950015,BE 3164950016,3164950271,GB @@ -63360,7 +74502,7 @@ 3164950412,3164950435,PL 3164950436,3164950439,ES 3164950440,3164950447,FR -3164950448,3164950451,PL +3164950448,3164950451,ES 3164950452,3164950455,CZ 3164950456,3164950463,PL 3164950464,3164950479,ES @@ -63377,8 +74519,9 @@ 3164950624,3164950655,GB 3164950656,3164950687,FR 3164950688,3164950703,ES -3164950704,3164950719,PL -3164950720,3164950723,GB +3164950704,3164950711,PL +3164950712,3164950715,FI +3164950716,3164950723,GB 3164950724,3164950735,FR 3164950736,3164950751,ES 3164950752,3164950759,GB @@ -63391,7 +74534,9 @@ 3164951296,3164951471,PL 3164951472,3164951487,FR 3164951488,3164951519,PL -3164951520,3164951535,GB +3164951520,3164951523,ES +3164951524,3164951527,IT +3164951528,3164951535,FR 3164951536,3164951543,BE 3164951544,3164951547,NL 3164951548,3164951559,FR @@ -63404,13 +74549,14 @@ 3164951596,3164951615,FR 3164951616,3164951663,GB 3164951664,3164951671,PL -3164951672,3164951679,FR -3164951680,3164951683,ES +3164951672,3164951675,FR +3164951676,3164951683,ES 3164951684,3164951687,GB 3164951688,3164951691,FR 3164951692,3164951695,CH -3164951696,3164951711,IE -3164951712,3164951807,FR +3164951696,3164951711,PL +3164951712,3164951775,FR +3164951776,3164951807,DE 3164951808,3164951823,NL 3164951824,3164951831,CH 3164951832,3164951839,FR @@ -63420,7 +74566,8 @@ 3164951876,3164951879,IT 3164951880,3164951887,DE 3164951888,3164951895,ES -3164951896,3164951907,FR +3164951896,3164951903,FR +3164951904,3164951907,DE 3164951908,3164951911,PL 3164951912,3164951915,ES 3164951916,3164951919,IE @@ -63431,8 +74578,13 @@ 3164952032,3164952063,PL 3164952064,3164952191,FR 3164952192,3164952207,ES -3164952208,3164952219,NL -3164952220,3164952255,FR +3164952208,3164952215,FR +3164952216,3164952219,NL +3164952220,3164952223,FR +3164952224,3164952239,GB +3164952240,3164952243,DE +3164952244,3164952247,BE +3164952248,3164952255,FR 3164952256,3164952319,DE 3164952320,3164952575,ES 3164952576,3164952831,FR @@ -63448,7 +74600,9 @@ 3164953248,3164953255,CH 3164953256,3164953263,CZ 3164953264,3164953311,FR -3164953312,3164953375,PL +3164953312,3164953319,CZ +3164953320,3164953327,BE +3164953328,3164953375,PL 3164953376,3164953391,FR 3164953392,3164953395,IT 3164953396,3164953399,NL @@ -63459,15 +74613,16 @@ 3164953440,3164953443,PL 3164953444,3164953447,DE 3164953448,3164953451,ES -3164953452,3164953455,FR -3164953456,3164953463,PL +3164953452,3164953459,FR +3164953460,3164953463,GB 3164953464,3164953467,FR 3164953468,3164953471,GB 3164953472,3164953503,PL 3164953504,3164953511,FR 3164953512,3164953515,PL 3164953516,3164953519,IE -3164953520,3164953567,PL +3164953520,3164953535,FR +3164953536,3164953567,PL 3164953568,3164953571,FR 3164953572,3164953575,GB 3164953576,3164953583,IT @@ -63495,7 +74650,9 @@ 3164954544,3164954559,LT 3164954560,3164954591,FR 3164954592,3164954623,PL -3164954624,3164956479,FR +3164954624,3164956383,FR +3164956384,3164956399,DE +3164956400,3164956479,FR 3164956480,3164956543,GB 3164956544,3164958847,FR 3164958848,3164958911,IT @@ -63520,15 +74677,49 @@ 3164959384,3164959387,PL 3164959388,3164959487,FR 3164959488,3164959743,ES -3164959744,3164959999,FR -3164960000,3164960255,DE -3164960256,3164960511,FR +3164959744,3164959887,FR +3164959888,3164959895,ES +3164959896,3164959903,PL +3164959904,3164959919,DE +3164959920,3164959927,FR +3164959928,3164959931,GB +3164959932,3164959935,ES +3164959936,3164959999,FR +3164960000,3164960259,DE +3164960260,3164960263,FR +3164960264,3164960267,LT +3164960268,3164960271,NL +3164960272,3164960295,FR +3164960296,3164960299,IT +3164960300,3164960303,GB +3164960304,3164960319,FR +3164960320,3164960323,ES +3164960324,3164960327,IT +3164960328,3164960331,CZ +3164960332,3164960335,LT +3164960336,3164960339,PL +3164960340,3164960359,FR +3164960360,3164960367,PL +3164960368,3164960383,FR +3164960384,3164960387,DE +3164960388,3164960391,PL +3164960392,3164960395,GB +3164960396,3164960399,DE +3164960400,3164960415,PL +3164960416,3164960435,FR +3164960436,3164960439,ES +3164960440,3164960443,CH +3164960444,3164960447,IT +3164960448,3164960463,PL +3164960464,3164960467,NL +3164960468,3164960471,GB +3164960472,3164960479,FR +3164960480,3164960511,DE 3164960512,3164960575,PL 3164960576,3164960591,DE 3164960592,3164960599,ES -3164960600,3164960603,IT -3164960604,3164960607,CZ -3164960608,3164960639,BE +3164960600,3164960623,DE +3164960624,3164960639,FR 3164960640,3164960643,LT 3164960644,3164960647,FR 3164960648,3164960651,CH @@ -63538,35 +74729,49 @@ 3164960676,3164960679,GB 3164960680,3164960699,PL 3164960700,3164960703,ES -3164960704,3164960719,GB +3164960704,3164960719,FR 3164960720,3164960723,CH -3164960724,3164960727,DE +3164960724,3164960727,FR 3164960728,3164960735,GB 3164960736,3164960767,ES -3164960768,3164960831,PL -3164960832,3164960895,FR -3164960896,3164960959,PT -3164960960,3164961023,CH +3164960768,3164960799,GB +3164960800,3164960831,ES +3164960832,3164960911,FR +3164960912,3164960919,PL +3164960920,3164960927,FR +3164960928,3164960935,ES +3164960936,3164960939,GB +3164960940,3164960943,DE +3164960944,3164960959,PL +3164960960,3164960963,DE +3164960964,3164960967,PT +3164960968,3164960975,PL +3164960976,3164960991,GB +3164960992,3164960999,FR +3164961000,3164961003,ES +3164961004,3164961007,DE +3164961008,3164961023,PL 3164961024,3164961151,FR 3164961152,3164961167,DE 3164961168,3164961175,PL -3164961176,3164961247,FR -3164961248,3164961279,NL +3164961176,3164961279,FR 3164961280,3164961311,DE 3164961312,3164961319,FR 3164961320,3164961327,PL -3164961328,3164961331,ES -3164961332,3164961339,FR -3164961340,3164961343,ES -3164961344,3164961363,FR +3164961328,3164961331,CZ +3164961332,3164961363,FR 3164961364,3164961367,ES 3164961368,3164961375,FR -3164961376,3164961391,DE -3164961392,3164961399,FR +3164961376,3164961379,DE +3164961380,3164961387,IT +3164961388,3164961399,FR 3164961400,3164961403,PL 3164961404,3164961471,FR 3164961472,3164961503,DE -3164961504,3164961551,ES +3164961504,3164961519,GB +3164961520,3164961527,IT +3164961528,3164961535,PL +3164961536,3164961551,ES 3164961552,3164961559,FR 3164961560,3164961563,DE 3164961564,3164961583,FR @@ -63577,12 +74782,14 @@ 3164961656,3164961663,ES 3164961664,3164961695,DE 3164961696,3164961727,GB -3164961728,3164961743,ES -3164961744,3164961759,PL -3164961760,3164961763,ES +3164961728,3164961731,ES +3164961732,3164961735,IT +3164961736,3164961739,FR +3164961740,3164961743,GB +3164961744,3164961763,PL 3164961764,3164961767,IT 3164961768,3164961775,BE -3164961776,3164961783,FR +3164961776,3164961783,PL 3164961784,3164961791,ES 3164961792,3164961855,FR 3164961856,3164961871,PL @@ -63595,13 +74802,18 @@ 3164961972,3164961975,ES 3164961976,3164961979,GB 3164961980,3164961999,DE -3164962000,3164962031,FR +3164962000,3164962007,BE +3164962008,3164962011,DE +3164962012,3164962015,PT +3164962016,3164962031,FR 3164962032,3164962047,NL 3164962048,3164962079,FR 3164962080,3164962095,ES -3164962096,3164962111,BE +3164962096,3164962111,FR 3164962112,3164962143,GB -3164962144,3164962203,FR +3164962144,3164962151,ES +3164962152,3164962159,DE +3164962160,3164962203,FR 3164962204,3164962207,PT 3164962208,3164962211,GB 3164962212,3164962215,PL @@ -63631,11 +74843,14 @@ 3164962544,3164962623,FR 3164962624,3164962627,BE 3164962628,3164962631,PL -3164962632,3164962655,FR +3164962632,3164962639,FR +3164962640,3164962647,ES +3164962648,3164962655,PT 3164962656,3164962687,ES -3164962688,3164962715,FR +3164962688,3164962703,PL +3164962704,3164962715,FR 3164962716,3164962719,NL -3164962720,3164962723,IT +3164962720,3164962723,FR 3164962724,3164962727,ES 3164962728,3164962751,FR 3164962752,3164964863,ES @@ -63662,7 +74877,8 @@ 3164967936,3164967967,DE 3164967968,3164967971,FR 3164967972,3164967975,DE -3164967976,3164967999,FR +3164967976,3164967983,FR +3164967984,3164967999,PL 3164968000,3164968063,ES 3164968064,3164968191,FR 3164968192,3164968703,PL @@ -63671,14 +74887,16 @@ 3164968864,3164968895,FR 3164968896,3164968927,GB 3164968928,3164968959,IT -3164968960,3164968991,DE -3164968992,3164969007,FR +3164968960,3164968991,GB +3164968992,3164969007,IE 3164969008,3164969015,PT -3164969016,3164969023,FR +3164969016,3164969019,NL +3164969020,3164969023,BE 3164969024,3164969055,PL 3164969056,3164969071,CZ -3164969072,3164969087,FR -3164969088,3164969095,ES +3164969072,3164969079,FR +3164969080,3164969083,PL +3164969084,3164969095,ES 3164969096,3164969099,PL 3164969100,3164969103,DE 3164969104,3164969135,FR @@ -63717,7 +74935,9 @@ 3164970368,3164970371,PL 3164970372,3164970375,ES 3164970376,3164970399,IT -3164970400,3164970415,GB +3164970400,3164970407,CH +3164970408,3164970411,IT +3164970412,3164970415,GB 3164970416,3164970423,FR 3164970424,3164970427,IE 3164970428,3164970431,PT @@ -63725,7 +74945,8 @@ 3164970464,3164970495,GB 3164970496,3164970559,PL 3164970560,3164970567,FR -3164970568,3164970575,ES +3164970568,3164970571,GB +3164970572,3164970575,ES 3164970576,3164970607,FR 3164970608,3164970615,ES 3164970616,3164970623,CH @@ -63746,9 +74967,9 @@ 3164970832,3164970835,IT 3164970836,3164970839,PL 3164970840,3164970847,GB -3164970848,3164970855,FR -3164970856,3164970863,PL -3164970864,3164970911,FR +3164970848,3164970887,FR +3164970888,3164970891,GB +3164970892,3164970911,FR 3164970912,3164970915,ES 3164970916,3164970919,FR 3164970920,3164970923,GB @@ -63762,7 +74983,7 @@ 3164971072,3164971135,DE 3164971136,3164971263,GB 3164971264,3164971455,DE -3164971456,3164971459,NL +3164971456,3164971459,FR 3164971460,3164971463,IT 3164971464,3164971467,CH 3164971468,3164971471,FR @@ -63793,7 +75014,8 @@ 3164972480,3164972499,FR 3164972500,3164972511,DE 3164972512,3164972527,GB -3164972528,3164972799,FR +3164972528,3164972531,DE +3164972532,3164972799,FR 3164972800,3164973311,ES 3164973312,3164973823,FR 3164973824,3164973855,DE @@ -63805,17 +75027,19 @@ 3164973884,3164973887,DE 3164973888,3164973919,ES 3164973920,3164973935,FR -3164973936,3164973939,IE +3164973936,3164973939,GB 3164973940,3164973943,FR 3164973944,3164973951,PL -3164973952,3164974651,FR +3164973952,3164974591,FR +3164974592,3164974623,PL +3164974624,3164974647,FR +3164974648,3164974651,PT 3164974652,3164974655,DE 3164974656,3164974663,FR 3164974664,3164974667,GB 3164974668,3164974671,DE 3164974672,3164974675,FR -3164974676,3164974679,PT -3164974680,3164974719,PL +3164974676,3164974719,PL 3164974720,3164974727,FR 3164974728,3164974731,PL 3164974732,3164974735,IT @@ -63834,8 +75058,80 @@ 3164975352,3164975355,NL 3164975356,3164975359,FR 3164975360,3164975615,ES -3164975616,3164976127,GB -3164976128,3164976767,FR +3164975616,3164975663,FI +3164975664,3164975679,DE +3164975680,3164975695,GB +3164975696,3164975699,PL +3164975700,3164975703,ES +3164975704,3164975719,PL +3164975720,3164975731,ES +3164975732,3164975735,PT +3164975736,3164975739,BE +3164975740,3164975751,PL +3164975752,3164975755,NL +3164975756,3164975759,ES +3164975760,3164975775,PL +3164975776,3164975807,FR +3164975808,3164975823,PL +3164975824,3164975839,FR +3164975840,3164975843,DE +3164975844,3164975847,PL +3164975848,3164975851,ES +3164975852,3164975871,PL +3164975872,3164975935,FR +3164975936,3164975939,ES +3164975940,3164975943,PT +3164975944,3164975947,PL +3164975948,3164975967,GB +3164975968,3164975983,NL +3164975984,3164975987,PL +3164975988,3164975991,DE +3164975992,3164976011,PL +3164976012,3164976015,ES +3164976016,3164976023,PL +3164976024,3164976027,ES +3164976028,3164976063,FR +3164976064,3164976095,PT +3164976096,3164976127,PL +3164976128,3164976131,NL +3164976132,3164976135,GB +3164976136,3164976139,FR +3164976140,3164976143,GB +3164976144,3164976159,FR +3164976160,3164976191,GB +3164976192,3164976215,FR +3164976216,3164976223,PL +3164976224,3164976231,FR +3164976232,3164976239,ES +3164976240,3164976255,IE +3164976256,3164976259,GB +3164976260,3164976263,DE +3164976264,3164976271,PT +3164976272,3164976279,FI +3164976280,3164976287,PL +3164976288,3164976295,ES +3164976296,3164976303,IT +3164976304,3164976307,FR +3164976308,3164976311,DE +3164976312,3164976315,GB +3164976316,3164976319,FR +3164976320,3164976327,DE +3164976328,3164976331,FR +3164976332,3164976335,PL +3164976336,3164976343,FR +3164976344,3164976347,PL +3164976348,3164976351,ES +3164976352,3164976367,DE +3164976368,3164976383,PL +3164976384,3164976399,FR +3164976400,3164976403,ES +3164976404,3164976407,FR +3164976408,3164976415,DE +3164976416,3164976431,IT +3164976432,3164976459,FR +3164976460,3164976479,DE +3164976480,3164976511,PL +3164976512,3164976767,FR 3164976768,3164976783,DE 3164976784,3164976799,ES 3164976800,3164976815,DE @@ -63857,18 +75153,25 @@ 3164977744,3164977759,PT 3164977760,3164977775,NL 3164977776,3164977791,PL -3164977792,3164977807,FR -3164977808,3164977823,NL +3164977792,3164977823,FR 3164977824,3164977839,GB -3164977840,3164977883,FR +3164977840,3164977871,FR +3164977872,3164977875,DE +3164977876,3164977879,ES +3164977880,3164977883,DE 3164977884,3164977887,GB 3164977888,3164977903,IT -3164977904,3164977919,NL +3164977904,3164977907,DE +3164977908,3164977911,BE +3164977912,3164977915,CH +3164977916,3164977919,CZ 3164977920,3164978047,DE -3164978048,3164978067,FR +3164978048,3164978055,FR +3164978056,3164978063,NL +3164978064,3164978067,FR 3164978068,3164978079,ES 3164978080,3164978111,IT -3164978112,3164978127,ES +3164978112,3164978127,GB 3164978128,3164978143,FR 3164978144,3164978147,DE 3164978148,3164978151,ES @@ -63876,17 +75179,17 @@ 3164978156,3164978159,DE 3164978160,3164978175,FR 3164978176,3164978431,IT -3164978432,3164978447,FR -3164978448,3164978463,PT -3164978464,3164978495,DE +3164978432,3164978495,FR 3164978496,3164978511,IT 3164978512,3164978527,ES 3164978528,3164978543,FR -3164978544,3164978559,PT -3164978560,3164978575,GB +3164978544,3164978563,PT +3164978564,3164978567,PL +3164978568,3164978571,GB +3164978572,3164978575,FR 3164978576,3164978591,ES 3164978592,3164978607,FR -3164978608,3164978623,CZ +3164978608,3164978623,IE 3164978624,3164978687,FR 3164978688,3164978943,PL 3164978944,3164978951,PT @@ -63894,12 +75197,14 @@ 3164978956,3164978959,GB 3164978960,3164978975,FR 3164978976,3164978991,ES -3164978992,3164979007,FR -3164979008,3164979023,ES -3164979024,3164979039,CH -3164979040,3164979071,PT -3164979072,3164979103,ES -3164979104,3164979111,DE +3164978992,3164978999,PL +3164979000,3164979003,FR +3164979004,3164979007,DE +3164979008,3164979023,GB +3164979024,3164979047,FR +3164979048,3164979051,BE +3164979052,3164979103,FR +3164979104,3164979111,GB 3164979112,3164979119,PL 3164979120,3164979135,NL 3164979136,3164979151,DE @@ -63922,13 +75227,39 @@ 3166175232,3166306303,CH 3166306304,3166437375,RU 3166437376,3166568447,BE +3166568448,3166601215,UA +3166601216,3166609407,RU +3166609408,3166633983,UA +3166633984,3166638079,RU +3166638080,3166646271,UA +3166646272,3166650367,CZ +3166650368,3166654463,UA +3166654464,3166658559,RU +3166658560,3166662655,UA +3166662656,3166666751,RU +3166666752,3166670847,RO +3166670848,3166672895,UA +3166672896,3166674943,GB +3166674944,3166679039,RU +3166679040,3166681087,IR +3166681088,3166685183,RU +3166685184,3166687231,PL +3166687232,3166689279,MD +3166689280,3166691327,PL +3166691328,3166693375,RU +3166693376,3166695423,UA +3166695424,3166697471,RU +3166697472,3166699519,RO 3166699520,3166961663,DE +3166961664,3167223807,SI 3167223808,3167594831,NL 3167594832,3167594839,A2 3167594840,3167748095,NL 3167748096,3167940095,RO 3167940096,3167940351,CY -3167940352,3168092159,RO +3167940352,3168015871,RO +3168015872,3168016127,GB +3168016128,3168092159,RO 3168092160,3168096255,GB 3168096256,3168100351,MD 3168100352,3168104447,RO @@ -63937,13 +75268,11 @@ 3168112640,3168116735,GB 3168116736,3168120831,RO 3168120832,3168124927,GB -3168124928,3168129023,RO -3168129024,3168137215,GB -3168137216,3168157695,RO -3168157696,3168178175,GB -3168178176,3168182271,RO -3168182272,3168194559,GB -3168194560,3168207103,RO +3168124928,3168190463,RO +3168190464,3168194559,GB +3168194560,3168195583,RO +3168195584,3168196095,DE +3168196096,3168207103,RO 3168207104,3168207359,CY 3168207360,3168214527,RO 3168214528,3168214783,CY @@ -63959,7 +75288,11 @@ 3168927744,3169058815,RU 3169058816,3169091583,DK 3169091584,3169124351,IT -3169124352,3169157119,RO +3169124352,3169149439,RO +3169149440,3169149695,IT +3169149696,3169149951,PS +3169149952,3169157119,RO +3169157120,3169189887,SY 3169189888,3169222655,UA 3169222656,3169255423,SI 3169255424,3169264895,KW @@ -63990,9 +75323,16 @@ 3169281024,3169281279,US 3169281280,3169288191,KW 3169288192,3169320959,UA -3169845248,3169965823,RO -3169965824,3169966079,GB -3169966080,3169976319,RO +3169320960,3169583103,RU +3169583104,3169648639,KW +3169648640,3169714175,MD +3169714176,3169779711,FI +3169779712,3169845247,UA +3169845248,3169863679,RO +3169863680,3169864703,MD +3169864704,3169867775,RO +3169867776,3169868031,DE +3169868032,3169976319,RO 3169976320,3170111487,RU 3170111488,3170115583,MD 3170115584,3170119679,RU @@ -64000,17 +75340,32 @@ 3170123776,3170127871,DK 3170127872,3170131967,ES 3170131968,3170136063,JO +3170136064,3170140159,GB +3170140160,3170172927,RU +3170172928,3170238463,IR 3170238464,3170246655,DE 3170246656,3170254847,RS 3170254848,3170263039,BA 3170263040,3170271231,CZ 3170271232,3170279423,PL 3170279424,3170287615,RU +3170287616,3170295807,GB 3170295808,3170303999,RU 3170304000,3170312191,SY 3170312192,3170320383,RU 3170320384,3170328575,JO +3170328576,3170336767,UA +3170336768,3170369535,RO 3170369536,3170500607,SA +3170500608,3170631679,PT +3170631680,3170664447,PL +3170664448,3170697215,HR +3170697216,3170729983,IR +3170729984,3170762751,AZ +3170762752,3170795519,RU +3170795520,3170828287,BG +3170828288,3170861055,RU +3170861056,3170893823,RS 3170893824,3179282431,BR 3179282432,3179282943,UY 3179282944,3179283199,MX @@ -64028,6 +75383,7 @@ 3187734528,3187736575,BO 3187736576,3187752959,AR 3187752960,3187761151,CO +3187761152,3187769343,AR 3187769344,3187802111,CO 3187802112,3187818495,AR 3187818496,3187822591,PY @@ -64046,10 +75402,13 @@ 3187936724,3187936727,HN 3187936728,3187949567,GT 3187949568,3187953663,AN +3187953664,3187955711,CL +3187955712,3187957759,CR 3187957760,3187961855,CL 3187965952,3187982335,AN 3187982336,3187998719,CL 3187998720,3188006911,AR +3188006912,3188015103,CL 3188015104,3188031487,HN 3188031488,3188039679,SV 3188047872,3188051967,CO @@ -64060,8 +75419,9 @@ 3188097024,3188105215,DO 3188105216,3188113407,CO 3188113408,3188117503,HN +3188117504,3188121599,AR 3188121600,3188125695,TT -3188129792,3188146175,AR +3188125696,3188146175,AR 3188146176,3188170751,CO 3188170752,3188174847,CR 3188178944,3188187135,CR @@ -64069,8 +75429,10 @@ 3188203520,3188207615,DO 3188211712,3188228095,CL 3188228096,3188236287,PE +3188236288,3188237311,PA +3188237312,3188238335,VE 3188244480,3188260863,CO -3188260864,3188264959,AR +3188260864,3188269055,AR 3188269056,3188273151,VE 3188273152,3188275199,PA 3188275200,3188277247,CL @@ -64088,15 +75450,21 @@ 3188473856,3188482047,PE 3188482048,3188490239,AR 3188490240,3188498431,CO -3188506624,3188513279,AR +3188498432,3188513279,AR 3188513280,3188513535,US 3188513536,3188523007,AR 3188523008,3188539391,CO 3188539392,3188543487,CL +3188543488,3188545535,PA +3188545536,3188547583,AR 3188547584,3188551679,CO 3188555776,3188572159,CL 3188572160,3188576255,CO -3188580352,3188596735,AR +3188576256,3188578303,AR +3188580352,3188597759,AR +3188597760,3188598783,PA +3188598784,3188600831,AR +3188600832,3188604927,CL 3188604928,3188606207,AR 3188606208,3188606463,CL 3188606464,3188609279,AR @@ -64107,12 +75475,15 @@ 3188612096,3188612351,CL 3188612352,3188621311,AR 3188621312,3188625407,GT -3188629504,3188637695,AR +3188625408,3188627455,AR +3188627456,3188628479,CR +3188628480,3188637695,AR 3188637696,3188645887,PA 3188645888,3188662271,CO 3188670464,3188674559,HN -3188678656,3188686847,AR +3188674560,3188686847,AR 3188686848,3188690943,EC +3188690944,3188695039,CU 3188695040,3188703231,VE 3188703232,3188981759,AR 3188981760,3189178367,CL @@ -64125,6 +75496,9 @@ 3190554624,3190816767,CL 3190816768,3191078911,AR 3191078912,3191087103,CO +3191087104,3191091199,AR +3191091200,3191093247,BO +3191093248,3191095295,AR 3191095296,3191099391,EC 3191103488,3191107583,CO 3191111680,3191128063,PY @@ -64147,6 +75521,8 @@ 3191435776,3191436287,SV 3191436288,3191438335,GT 3191438336,3191439359,SV +3191439360,3191455743,EC +3191455744,3191472127,AR 3191472128,3191603199,TT 3191603200,3191608319,MX 3191608320,3191608831,CO @@ -64162,6 +75538,7 @@ 3191639040,3191672063,CO 3191672064,3191672319,AR 3191672320,3191734271,CO +3191734272,3191799807,SV 3191865344,3191930879,UY 3191930880,3192389631,CO 3192389632,3192913919,VE @@ -64170,19 +75547,21 @@ 3192979456,3193044991,PE 3193044992,3193110527,CL 3193110528,3193143295,CO +3193143296,3193176063,TT 3193176064,3193307135,CO 3193307136,3193438207,SV 3193438208,3193569279,AN 3193569280,3193634815,CO +3193634816,3193700351,CL 3193700352,3193716735,HN 3193733120,3193765887,AR 3193765888,3193798655,TT 3193798656,3193806847,CO -3193815040,3193819135,AR +3193815040,3193823231,AR 3193823232,3193827327,CL 3193831424,3193864191,DO 3193864192,3193872383,EC -3193880576,3193888767,VE +3193880576,3193896959,VE 3193896960,3193929727,CL 3193929728,3193962495,EC 3193962496,3193995263,CL @@ -64228,6 +75607,9 @@ 3194519552,3194535935,PY 3194552320,3194585087,AR 3194585088,3194589183,HN +3194589184,3194591231,AR +3194591232,3194592255,PA +3194592256,3194593279,GY 3194593280,3194595327,AR 3194595328,3194596351,PA 3194596352,3194597375,HT @@ -64250,7 +75632,6 @@ 3194707968,3194716159,AR 3194716160,3194724351,HN 3194724352,3194728447,PA -3194732544,3194736639,AR 3194740736,3194742783,CL 3194742784,3194744831,EC 3194744832,3194746879,AR @@ -64268,7 +75649,8 @@ 3194863616,3194871807,HN 3194880000,3194896383,DO 3194896384,3194904575,CO -3194912768,3194929151,CL +3194912768,3194925055,CL +3194925056,3194929151,AR 3194929152,3194937343,EC 3194945536,3194953727,GT 3194961920,3194966015,EC @@ -64277,8 +75659,7 @@ 3194976256,3194977279,VE 3194977280,3194978303,AR 3194978304,3194994687,PA -3194994688,3195002879,AR -3195011072,3195023359,AR +3194994688,3195023359,AR 3195023360,3195024383,CL 3195024384,3195025407,UY 3195025408,3195035647,AR @@ -64287,7 +75668,7 @@ 3195068416,3195072511,AN 3195076608,3195084799,CL 3195092992,3195097087,AR -3195101184,3195105279,CR +3195101184,3195109375,CR 3195109376,3195125759,AR 3195125760,3195133951,PE 3195142144,3195150335,VE @@ -64301,8 +75682,8 @@ 3195240448,3195256831,HT 3195256832,3195265023,AR 3195273216,3195535359,PE -3195535360,3195539455,SV -3195543552,3195547647,PE +3195535360,3195543551,SV +3195547648,3195551743,AR 3195551744,3195559935,EC 3195559936,3195564031,AR 3195568128,3195572223,CO @@ -64315,15 +75696,18 @@ 3195641856,3195645951,PY 3195650048,3195654143,GT 3195658240,3195662335,VE +3195662336,3195666431,AN 3195666432,3195686911,AR -3195691008,3195695103,DO +3195691008,3195699199,DO 3195699200,3195703295,AR 3195707392,3195711487,PA 3195715584,3195731967,AR 3195731968,3195736063,EC 3195740160,3195744255,PA +3195744256,3195748351,EC 3195748352,3195752447,CL -3195756544,3195760639,AR +3195756544,3195763711,AR +3195763712,3195764735,BO 3195764736,3195768831,CR 3195772928,3195777023,VE 3195781120,3195797503,PA @@ -64333,6 +75717,7 @@ 3195809792,3195811839,PE 3195811840,3195813887,AR 3195813888,3195822079,DO +3195822080,3195830271,CO 3195830272,3195838463,AR 3195838464,3195840511,HN 3195846656,3195852799,AR @@ -64347,7 +75732,8 @@ 3196092416,3196125183,PY 3196125184,3196190719,BO 3196190720,3196207103,HN -3196256256,3196321791,EC +3196207104,3196223487,CO +3196223488,3196321791,EC 3196321792,3196583935,UY 3196583936,3196690687,AR 3196690688,3196690943,UY @@ -64358,10 +75744,16 @@ 3197075456,3197091839,GT 3197108224,3197370367,CO 3197370368,3197501439,GT -3197501440,3197534207,SV +3197501440,3197566975,SV 3197566976,3197599743,CL +3197599744,3197600767,GT +3197600768,3197601791,CR +3197601792,3197612031,AR +3197612032,3197616127,SV +3197616128,3197632511,CO 3197632512,3197698047,EC 3197698048,3197730815,VE +3197730816,3197763583,CL 3197763584,3197894655,EC 3197894656,3198156799,CO 3198156800,3198484479,CL @@ -64408,19 +75800,21 @@ 3201875968,3201880063,CO 3201880064,3201888255,AR 3201888256,3201892351,VE +3201892352,3201925119,AR +3201925120,3201957887,CL 3201957888,3202088959,PA 3202088960,3202220031,AR 3202220032,3202351103,PE 3202351104,3202875391,AR 3202875392,3203399679,PE -3203399680,3203432447,CO +3203399680,3203465215,CO 3203465216,3203476479,CR 3203476480,3203476735,CO 3203476736,3203476991,CR 3203476992,3203477375,CO 3203477376,3203530751,CR 3203530752,3203538943,NI -3203538944,3203596287,CO +3203538944,3203661823,CO 3203661824,3203923967,AR 3203923968,3204448255,CO 3221225472,3221560319,US @@ -64680,14 +76074,44 @@ 3223582464,3223582719,NL 3223582720,3223582975,AU 3223583488,3223584767,US -3223584768,3223650303,SE +3223584768,3223589119,SE +3223589120,3223589375,US +3223589376,3223606527,SE +3223606528,3223606783,GB +3223606784,3223607551,SE +3223607552,3223607807,GB +3223607808,3223610367,SE +3223610368,3223610623,IT +3223610624,3223610879,SE +3223610880,3223611135,NO +3223611136,3223611647,SE +3223611648,3223611903,GB +3223611904,3223615743,SE +3223615744,3223615999,GB +3223616000,3223617535,SE +3223617536,3223617791,NO +3223617792,3223620863,SE +3223620864,3223621119,DK +3223621120,3223627775,SE +3223627776,3223628031,DE +3223628032,3223628287,SE +3223628288,3223628543,ES +3223628544,3223630591,SE +3223630592,3223630847,GB +3223630848,3223634431,SE +3223634432,3223634687,US +3223634688,3223646207,SE +3223646208,3223646463,IT +3223646464,3223646975,SE +3223646976,3223647231,IT +3223647232,3223650303,SE 3223650304,3223715839,CH 3223715840,3223781375,DK 3223781376,3223823871,US 3223823872,3223824127,AT 3223824128,3223863295,US 3223863552,3223863807,US -3223864320,3223867647,FI +3223865344,3223867391,FI 3223871488,3223887871,US 3223898368,3223898623,US 3223902464,3223902719,CA @@ -64904,7 +76328,6 @@ 3224800256,3224816639,FR 3224816640,3224816895,EU 3224816896,3224820735,FR -3224820736,3224820991,AT 3224820992,3224821247,DE 3224821248,3224822015,US 3224822016,3224822271,SE @@ -64990,7 +76413,7 @@ 3224958208,3225028863,US 3225028864,3225031423,JP 3225031424,3225033727,US -3225033728,3225035775,LU +3225033728,3225033983,LU 3225035776,3225037055,US 3225037056,3225051135,FI 3225051136,3225052671,JP @@ -65219,7 +76642,35 @@ 3225876480,3225878527,US 3225878528,3225880319,SE 3225880320,3225880575,US -3225880576,3225944063,SE +3225880576,3225881343,SE +3225881344,3225881599,IT +3225881600,3225887999,SE +3225888000,3225888255,GB +3225888256,3225905407,SE +3225905408,3225905663,IT +3225905664,3225913855,SE +3225913856,3225914111,DE +3225914112,3225915135,SE +3225915136,3225915391,DK +3225915392,3225918463,SE +3225918464,3225918719,GB +3225918720,3225920767,SE +3225920768,3225921023,GB +3225921024,3225921791,SE +3225921792,3225922047,GB +3225922048,3225923839,SE +3225923840,3225924095,GB +3225924096,3225930239,SE +3225930240,3225930495,FR +3225930496,3225932799,SE +3225932800,3225933055,IT +3225933056,3225935359,SE +3225935360,3225935615,US +3225935616,3225937407,SE +3225937408,3225937663,US +3225937664,3225938431,SE +3225938432,3225938687,US +3225938688,3225944063,SE 3225944064,3225977855,TW 3225977856,3225978111,CH 3225978112,3226008831,TW @@ -65390,7 +76841,6 @@ 3226705408,3226705919,US 3226705920,3226706175,FR 3226706176,3226706943,US -3226707200,3226707455,EU 3226707456,3226715391,TW 3226715392,3226715647,US 3226715648,3226715903,AU @@ -65532,7 +76982,7 @@ 3227014656,3227014911,FI 3227014912,3227017215,US 3227017472,3227017983,DE -3227018496,3227019007,JP +3227018752,3227019007,JP 3227019008,3227020287,US 3227020288,3227020543,DE 3227020800,3227022847,US @@ -65555,9 +77005,7 @@ 3227041536,3227042815,US 3227042816,3227043071,IT 3227043072,3227043327,US -3227043584,3227044863,US -3227044864,3227045119,EU -3227045120,3227053567,US +3227043584,3227053567,US 3227053568,3227053823,GB 3227053824,3227054079,DE 3227054080,3227056639,US @@ -65751,9 +77199,12 @@ 3227806496,3227806527,GB 3227806528,3227806719,FI 3227806720,3227807743,US -3227807744,3227813375,FI +3227807744,3227809023,FI +3227809024,3227809279,IN +3227809280,3227813375,FI 3227813376,3227813631,US -3227813632,3227815167,GB +3227813632,3227813887,MY +3227813888,3227815167,GB 3227815168,3227815935,US 3227815936,3227816191,GB 3227816192,3227818495,US @@ -65806,7 +77257,6 @@ 3227909632,3227909887,AU 3227910400,3227910655,AT 3227910656,3227911679,US -3227911680,3227912191,HU 3227912192,3227912447,GB 3227912448,3227912703,ZA 3227912704,3227912959,US @@ -65824,7 +77274,7 @@ 3227933184,3227933695,US 3227933696,3227933951,NZ 3227933952,3227934463,US -3227934464,3227934719,CH +3227934464,3227934719,EU 3227934720,3227947519,US 3227947520,3227955711,DE 3227955712,3227964927,US @@ -66140,9 +77590,17 @@ 3229120768,3229151487,US 3229151488,3229151743,SE 3229151744,3229155327,US -3229155328,3229171455,SE +3229155328,3229155839,SE +3229155840,3229156095,ES +3229156096,3229171455,SE 3229171456,3229171711,MT -3229171712,3229219583,SE +3229171712,3229200895,SE +3229200896,3229201151,DE +3229201152,3229201663,SE +3229201664,3229201919,DK +3229201920,3229205503,SE +3229205504,3229206015,GB +3229206016,3229219583,SE 3229219584,3229219839,EE 3229219840,3229220863,SE 3229220864,3229245439,GB @@ -66195,7 +77653,22 @@ 3229391872,3229394943,US 3229394944,3229408255,RU 3229408256,3229412095,US -3229412096,3229483007,DE +3229412096,3229470719,DE +3229470720,3229471231,IE +3229471232,3229471999,DE +3229472000,3229472255,IE +3229472256,3229472767,GB +3229472768,3229473791,DE +3229473792,3229474047,GB +3229474048,3229474303,DE +3229474304,3229475839,GB +3229475840,3229478399,DE +3229478400,3229478655,IE +3229478656,3229478911,DE +3229478912,3229480959,IE +3229480960,3229481471,DE +3229481472,3229482239,GB +3229482240,3229483007,IE 3229483008,3229499647,FI 3229499648,3229500671,US 3229548544,3229679615,US @@ -66213,7 +77686,11 @@ 3229705216,3229708287,US 3229745152,3229749759,FI 3229749760,3229750015,BE -3229750016,3229810687,FI +3229750016,3229764063,FI +3229764064,3229764095,AX +3229764096,3229808639,FI +3229808640,3229808647,AX +3229808648,3229810687,FI 3229810688,3229814015,US 3229814016,3229814271,AU 3229814272,3229815807,US @@ -66349,7 +77826,8 @@ 3230093824,3230094079,NL 3230094080,3230094335,CA 3230094336,3230095615,US -3230095616,3230101503,JP +3230095616,3230095871,JP +3230096384,3230101503,JP 3230101504,3230105855,US 3230105856,3230106111,PT 3230106112,3230106879,US @@ -66545,7 +78023,7 @@ 3230827520,3230827775,AT 3230827776,3230828031,NZ 3230828032,3230828543,HU -3230828544,3230830079,GB +3230828544,3230828799,GB 3230830080,3230832127,US 3230832128,3230832383,NZ 3230832384,3230832639,US @@ -66956,11 +78434,7 @@ 3231502848,3231503103,PT 3231503104,3231503615,US 3231503616,3231503871,IT -3231503872,3231504383,US -3231504640,3231504895,GB -3231504896,3231505407,US -3231505408,3231505663,JP -3231505664,3231506687,US +3231503872,3231506687,US 3231506688,3231506943,NZ 3231506944,3231507199,US 3231507200,3231507455,BE @@ -67042,9 +78516,7 @@ 3231678464,3231682559,US 3231711232,3231713023,US 3231713024,3231713279,CA -3231713280,3231713791,US -3231713792,3231714047,IE -3231714048,3231715071,US +3231713280,3231715071,US 3231715072,3231715327,SI 3231715328,3231715583,AU 3231715584,3231716095,US @@ -67126,36 +78598,128 @@ 3231776768,3231793151,US 3231793152,3231793663,BE 3231809536,3231810047,NZ -3231842304,3231846399,EU +3231842304,3231843327,RU +3231843328,3231844351,NO +3231844352,3231845375,RU +3231845376,3231846399,ES 3231846400,3231846655,RO -3231846656,3231907839,EU +3231846656,3231846911,PT +3231846912,3231847167,GB +3231847168,3231847423,UA +3231847424,3231848447,RU +3231848448,3231849471,ES +3231849472,3231850495,RO +3231850496,3231851519,UA +3231851520,3231853567,RU +3231853568,3231855615,PL +3231855616,3231856639,RS +3231856640,3231857663,RU +3231857664,3231858687,PL +3231858688,3231859711,RU +3231859712,3231860735,FR +3231860736,3231861759,SA +3231861760,3231863807,UA +3231863808,3231864831,DE +3231864832,3231865855,RU +3231865856,3231866879,PL +3231866880,3231867903,CZ +3231867904,3231868927,RU +3231868928,3231869951,LV +3231869952,3231873023,UA +3231873024,3231875071,RU +3231875072,3231876095,PL +3231876096,3231877119,UA +3231877120,3231878143,NL +3231878144,3231879167,UA +3231879168,3231881215,PL +3231881216,3231882239,UA +3231882240,3231883263,RU +3231883264,3231884287,UA +3231884288,3231885311,PL +3231885312,3231886335,DE +3231886336,3231888383,PL +3231888384,3231889407,RU +3231889408,3231890431,RO +3231890432,3231893503,RU +3231893504,3231894527,UA +3231894528,3231895551,RU +3231895552,3231896575,UA +3231896576,3231897599,RU +3231897600,3231898623,IE +3231898624,3231899647,SE +3231899648,3231900671,UA +3231900672,3231901439,DE +3231901440,3231901695,BG +3231901696,3231903743,UA +3231903744,3231905791,RU +3231905792,3231906047,PL +3231906048,3231907839,RU 3231907840,3231916031,US 3231916032,3231948799,FI 3231973376,3232038911,AT -3232038912,3232092671,SE +3232038912,3232039167,SE +3232039168,3232039423,DK +3232039424,3232039679,IT +3232039680,3232047359,SE +3232047360,3232048639,GB +3232048640,3232049151,SE +3232049152,3232049407,GB +3232049408,3232051967,SE +3232051968,3232052991,GB +3232052992,3232060415,SE +3232060416,3232060671,IE +3232060672,3232065791,SE +3232065792,3232066303,GB +3232066304,3232066559,SE +3232066560,3232066815,NO +3232066816,3232079871,SE +3232079872,3232080895,GB +3232080896,3232082687,SE +3232082688,3232083199,GB +3232083200,3232083455,SE +3232083456,3232083711,DE +3232083712,3232086271,SE +3232086272,3232087039,GB +3232087040,3232089087,SE +3232089088,3232089343,ES +3232089344,3232090367,SE +3232090368,3232090623,IT +3232090624,3232092671,SE 3232092672,3232093183,GB 3232093184,3232093439,US 3232093440,3232094207,GB 3232094208,3232094719,CH 3232094720,3232095231,US 3232095232,3232096255,GB -3232096256,3232104447,SE +3232096256,3232097279,SE +3232097280,3232097535,IT +3232097536,3232098047,SE +3232098048,3232098303,FR +3232098304,3232100095,SE +3232100096,3232100351,IE +3232100352,3232101119,GB +3232101120,3232104447,SE 3232104448,3232107519,DE -3232107520,3232108543,EU +3232107520,3232108543,RU 3232108544,3232129023,DE -3232129024,3232131071,EU +3232129024,3232130047,RO +3232130048,3232131071,UA 3232131072,3232133119,DE -3232133120,3232133631,EU +3232133120,3232133631,UA 3232133632,3232134143,DE -3232134144,3232141823,EU +3232134144,3232137215,EU +3232137216,3232139263,UA +3232139264,3232140287,GB +3232140288,3232141311,FR +3232141312,3232141823,UA 3232141824,3232156159,DE -3232156160,3232156671,EU +3232156160,3232156671,PL 3232156672,3232159743,DE -3232159744,3232160767,EU +3232159744,3232160767,PL 3232160768,3232163839,DE -3232163840,3232165887,EU +3232163840,3232165887,RU 3232165888,3232169727,DE -3232169728,3232169983,EU +3232169728,3232169983,PL 3232169984,3232235519,IT 3232301056,3232309247,US 3232309248,3232313343,SG @@ -67169,7 +78733,8 @@ 3232464896,3232497663,GB 3232497664,3232555007,US 3232555264,3232555775,US -3232555776,3232560895,JP +3232555776,3232560127,JP +3232560384,3232560895,JP 3232560896,3232561663,US 3232561664,3232561919,CA 3232561920,3232562431,US @@ -67188,7 +78753,23 @@ 3232706560,3232706815,US 3232710656,3232718847,US 3232727040,3232759807,US -3232759808,3232825343,SE +3232759808,3232774911,SE +3232774912,3232775167,IE +3232775168,3232794879,SE +3232794880,3232795135,DE +3232795136,3232802559,SE +3232802560,3232802815,DK +3232802816,3232803071,SE +3232803072,3232803327,IE +3232803328,3232804607,SE +3232804608,3232804863,IT +3232804864,3232812031,SE +3232812032,3232812543,GB +3232812544,3232812799,SE +3232812800,3232813055,ES +3232813056,3232820223,SE +3232820224,3232820479,IE +3232820480,3232825343,SE 3233285120,3233285375,US 3233480704,3233484799,US 3233484800,3233488895,ES @@ -67568,7 +79149,9 @@ 3234589440,3234589695,AU 3234589696,3234592511,US 3234592512,3234592767,TH -3234592768,3234725887,US +3234592768,3234611199,US +3234611200,3234615295,A1 +3234615296,3234725887,US 3234726144,3234726399,CA 3234726400,3234726911,US 3234727936,3234733055,US @@ -67597,10 +79180,7 @@ 3234781440,3234781951,CA 3234781952,3234782719,US 3234782720,3234783999,IL -3234784000,3234794495,US -3234794752,3234795007,US -3234795008,3234795263,GB -3234795264,3234799359,US +3234784000,3234799359,US 3234799360,3234799615,NL 3234799616,3234799871,US 3234799872,3234800127,AU @@ -67986,7 +79566,6 @@ 3237732864,3237733119,DE 3237733120,3237733631,TH 3237733632,3237733887,AU -3237733888,3237734143,NZ 3237734144,3237734399,CA 3237734400,3237736447,US 3237740544,3238002687,US @@ -67995,7 +79574,6 @@ 3238007040,3238010879,NL 3238010880,3238017023,CH 3238017024,3238018303,DK -3238018304,3238018559,TR 3238018560,3238018815,FR 3238018816,3238019071,DE 3238019072,3238035455,PL @@ -68043,7 +79621,28 @@ 3238461440,3238502399,DE 3238502400,3238504447,RU 3238504448,3238526975,DE -3238526976,3238592511,CH +3238526976,3238527231,RU +3238527232,3238542591,CH +3238542592,3238542847,PL +3238542848,3238545919,CH +3238545920,3238546431,RU +3238546432,3238546943,CH +3238546944,3238547455,UA +3238547456,3238548991,CH +3238548992,3238549503,CZ +3238549504,3238559231,CH +3238559232,3238559487,SE +3238559488,3238562559,CH +3238562560,3238562815,IR +3238562816,3238573567,CH +3238573568,3238574079,PL +3238574080,3238578943,CH +3238578944,3238579199,RU +3238579200,3238589951,CH +3238589952,3238590207,LT +3238590208,3238590975,CH +3238590976,3238591231,SA +3238591232,3238592511,CH 3238592512,3238593023,GB 3238593024,3238594303,EU 3238594304,3238594559,GB @@ -68088,6 +79687,12 @@ 3238630656,3238632959,GB 3238632960,3238633215,UA 3238633216,3238653951,DK +3238653952,3238655999,RU +3238656000,3238656255,GB +3238656256,3238656511,RU +3238656512,3238657023,UA +3238657024,3238657535,AT +3238657536,3238657791,DK 3238657792,3238658047,AT 3238658048,3238675455,SE 3238675456,3238675711,DK @@ -68178,7 +79783,6 @@ 3239127040,3239127295,PT 3239127296,3239127551,PL 3239127552,3239127807,IL -3239127808,3239128063,RU 3239128064,3239128319,AT 3239128320,3239128575,IT 3239128576,3239128831,UA @@ -68250,6 +79854,7 @@ 3239173632,3239173887,AT 3239173888,3239174143,PL 3239174144,3239174399,DE +3239174400,3239174655,RO 3239174656,3239174911,GB 3239174912,3239175167,SI 3239175168,3239175423,UA @@ -68297,7 +79902,6 @@ 3239287808,3239288831,GB 3239288832,3239289855,DE 3239289856,3239290879,PL -3239290880,3239291903,GB 3239291904,3239292927,BG 3239292928,3239293951,CZ 3239293952,3239294975,DE @@ -68328,7 +79932,6 @@ 3239452416,3239452671,HR 3239452672,3239464959,DE 3239464960,3239465215,IL -3239465216,3239465471,HR 3239465472,3239465727,AT 3239465728,3239465983,PL 3239465984,3239466239,UA @@ -68412,7 +80015,7 @@ 3239541504,3239541759,FR 3239541760,3239542015,GB 3239542016,3239542271,PL -3239542272,3239542527,UA +3239542272,3239542527,RU 3239542528,3239542783,FR 3239542784,3239544831,DE 3239544832,3239545087,GB @@ -68438,7 +80041,6 @@ 3239556608,3239556863,HR 3239556864,3239557119,UA 3239557120,3239567359,DE -3239567360,3239567615,GB 3239567616,3239567871,UA 3239567872,3239568127,DE 3239568128,3239568383,FR @@ -68473,7 +80075,6 @@ 3239634944,3239635967,RU 3239635968,3239636991,DE 3239636992,3239638015,BG -3239638016,3239639039,PL 3239639040,3239640063,SI 3239640064,3239641087,DE 3239641088,3239643135,PL @@ -68576,9 +80177,11 @@ 3239762176,3239762431,RU 3239762432,3239762687,DK 3239762688,3239762943,RO +3239762944,3239763199,SI 3239763200,3239763455,SE 3239763456,3239763967,GB 3239763968,3239772159,DE +3239772160,3239772415,NL 3239772416,3239772671,GB 3239772672,3239773183,DK 3239773184,3239773439,FR @@ -68596,12 +80199,11 @@ 3239783424,3239783679,DK 3239783680,3239783935,CH 3239783936,3239784191,DE -3239784192,3239784447,UA 3239784448,3239788543,DE 3239788544,3239789055,EU -3239789056,3239789567,RU 3239789568,3239790079,FR 3239790080,3239790591,RO +3239790592,3239791103,LV 3239791104,3239792127,CH 3239792128,3239792639,FR 3239792640,3239793151,UA @@ -68609,7 +80211,6 @@ 3239793664,3239794175,RO 3239794176,3239794687,NL 3239794688,3239795199,GB -3239795200,3239795711,PL 3239795712,3239796223,IL 3239796224,3239796735,NO 3239796736,3239821311,DE @@ -68638,6 +80239,7 @@ 3239834624,3239835135,AT 3239835136,3239836159,RU 3239836160,3239836671,DK +3239836672,3239837183,DE 3239837184,3239837695,SE 3239837696,3239837951,PL 3239837952,3239839231,DE @@ -68662,7 +80264,8 @@ 3239859968,3239860223,CA 3239860224,3239860479,DE 3239860480,3239860735,GB -3239860736,3239861247,DE +3239860736,3239860991,DE +3239860992,3239861247,AT 3239861248,3239861503,UA 3239861504,3239861759,PL 3239861760,3239862015,SA @@ -68712,7 +80315,7 @@ 3239895296,3239895551,TR 3239895552,3239895807,PL 3239895808,3239896063,DK -3239896064,3239896575,DE +3239896320,3239896575,AT 3239896576,3239896831,PL 3239896832,3239897087,HU 3239897088,3239897343,GB @@ -68856,7 +80459,7 @@ 3240183616,3240183647,CR 3240183648,3240183807,NL 3240183808,3240184319,GB -3240184320,3240184831,UA +3240184320,3240184831,RU 3240184832,3240185343,GB 3240185344,3240185855,FR 3240185856,3240187391,RU @@ -68868,7 +80471,6 @@ 3240189952,3240190463,DE 3240190464,3240190975,IT 3240190976,3240191487,RU -3240191488,3240191999,SE 3240192000,3240192511,UA 3240192512,3240193023,RO 3240193024,3240193535,GB @@ -68885,7 +80487,7 @@ 3240199168,3240199679,HU 3240199680,3240200191,NL 3240200192,3240200703,RO -3240200704,3240201215,SE +3240200704,3240201215,GB 3240201216,3240201727,RO 3240201728,3240202239,CH 3240202240,3240202751,RU @@ -68901,7 +80503,6 @@ 3240207872,3240208383,RU 3240208384,3240208895,FR 3240208896,3240209407,GB -3240209408,3240209919,UA 3240209920,3240210943,PL 3240210944,3240211455,GB 3240211456,3240211967,NL @@ -68996,7 +80597,7 @@ 3240279040,3240279551,CH 3240279552,3240280063,RO 3240280064,3240280191,DE -3240280192,3240280447,PL +3240280320,3240280447,PL 3240280448,3240280575,UA 3240280576,3240280703,GB 3240280704,3240280831,RU @@ -69011,9 +80612,12 @@ 3240282112,3240282239,DE 3240282240,3240282367,UA 3240282368,3240282495,RO -3240282496,3240282879,SE +3240282624,3240282879,SE 3240282880,3240283007,UA -3240283008,3240283135,PL +3240283008,3240283391,PL +3240283392,3240283647,TR +3240283648,3240283903,AT +3240283904,3240284159,DE 3240284160,3240285183,RU 3240285184,3240286207,PL 3240286208,3240287231,UA @@ -69052,7 +80656,6 @@ 3240409344,3240409599,GB 3240409600,3240409855,NL 3240409856,3240410111,DE -3240410112,3240410367,CH 3240410368,3240410623,AT 3240410624,3240410879,PT 3240410880,3240411135,NO @@ -69104,7 +80707,6 @@ 3240577280,3240577535,RO 3240577536,3240577791,DE 3240577792,3240578559,UA -3240578560,3240578815,CH 3240578816,3240579071,IL 3240579072,3240587263,GB 3240587264,3240587519,NL @@ -69212,9 +80814,9 @@ 3240740608,3240741119,DE 3240741120,3240741375,AT 3240741376,3240741631,IL -3240741632,3240741887,SK 3240741888,3240742143,LV 3240742144,3240742399,IT +3240742400,3240742655,RO 3240742656,3240742911,AT 3240742912,3240743423,IL 3240743424,3240743935,DK @@ -69278,7 +80880,6 @@ 3240813568,3240814591,PL 3240814592,3240818687,IT 3240818688,3240820735,NL -3240820736,3240820799,EU 3240820800,3240820831,RU 3240820832,3240827135,IT 3240827136,3240827391,FR @@ -69339,24 +80940,17 @@ 3240884224,3240886271,UA 3240886272,3240952071,SE 3240952072,3240952079,IE -3240952080,3240952087,GB -3240952088,3240952095,SE +3240952080,3240952095,SE 3240952096,3240952127,US -3240952128,3240953471,SE -3240953472,3240953599,DE -3240953600,3240954495,SE +3240952128,3240954495,SE 3240954496,3240954623,DE 3240954624,3240955647,SE 3240955648,3240955903,GB 3240955904,3240961791,SE 3240961792,3240961799,FI -3240961800,3240968191,SE -3240968192,3240968447,DE -3240968448,3240968703,SE +3240961800,3240968703,SE 3240968704,3240968959,GB -3240968960,3240969215,SE -3240969216,3240969231,GB -3240969232,3240988159,SE +3240968960,3240988159,SE 3240988160,3240988167,PL 3240988168,3241017343,SE 3241017344,3241017855,AT @@ -69460,6 +81054,7 @@ 3241119488,3241119743,BE 3241119744,3241119999,RO 3241120000,3241120255,UA +3241120256,3241120511,RU 3241120512,3241120767,GB 3241120768,3241121023,RU 3241121024,3241121279,CH @@ -69514,7 +81109,9 @@ 3241499136,3241499903,BE 3241499904,3241500159,DE 3241500160,3241500671,GB -3241500672,3241502975,BE +3241500672,3241501439,BE +3241501440,3241501951,EU +3241501952,3241502975,BE 3241502976,3241503231,GR 3241503232,3241503487,FR 3241503488,3241508095,BE @@ -69527,7 +81124,6 @@ 3241803824,3241803831,EU 3241803832,3241803839,GB 3241803840,3241803903,PT -3241803904,3241804031,UA 3241804032,3241820159,BE 3241820160,3241821695,GB 3241821696,3241822207,GR @@ -69563,6 +81159,7 @@ 3241867008,3241867263,FR 3241867264,3241867519,UA 3241867520,3241867775,PL +3241867776,3241868031,NO 3241868032,3241868287,RU 3241868288,3241868543,HR 3241868544,3241868799,DE @@ -69571,7 +81168,9 @@ 3241869312,3241934847,PL 3241934848,3242196991,GB 3242196992,3242393599,FI -3242393600,3242459135,NL +3242393600,3242394471,NL +3242394472,3242394479,DE +3242394480,3242459135,NL 3242459136,3242467327,BG 3242467328,3242475519,HU 3242475520,3242483711,LV @@ -69804,18 +81403,17 @@ 3244823296,3244823551,FR 3244823552,3244823807,GE 3244823808,3244824063,RO -3244824064,3244824319,UA +3244824064,3244824319,IR 3244824320,3244824575,SI 3244824576,3244824831,RU 3244824832,3244825087,GB 3244825088,3244825343,DE -3244825344,3244825599,UA -3244825600,3244826111,RU +3244825344,3244826111,RU 3244826112,3244826367,RO 3244826368,3244826623,CH 3244826624,3244826879,DE 3244826880,3244827135,MK -3244827136,3244827391,RU +3244827136,3244827391,AT 3244827392,3244827647,GB 3244827648,3244827903,FR 3244827904,3244828159,BE @@ -70018,7 +81616,7 @@ 3244883200,3244883455,UA 3244883456,3244883711,CZ 3244883712,3244883967,NL -3244883968,3244884223,UA +3244883968,3244884223,DE 3244884224,3244884479,FR 3244884480,3244884735,IR 3244884736,3244884991,NL @@ -70093,7 +81691,6 @@ 3244903168,3244903423,PL 3244903424,3244903679,FI 3244903680,3244903935,NO -3244903936,3244904191,TR 3244904192,3244904447,IT 3244904448,3244904703,GR 3244904704,3244904959,FR @@ -70106,7 +81703,6 @@ 3244906752,3244907007,SA 3244907008,3244907263,FR 3244907264,3244907519,RO -3244907520,3244907775,GB 3244907776,3244908287,RU 3244908288,3244908543,NL 3244908544,3244908799,RU @@ -70130,7 +81726,6 @@ 3244913408,3244913663,SI 3244913664,3244913919,DK 3244913920,3244914431,RU -3244914432,3244914687,UA 3244914688,3244914943,GB 3244914944,3244915199,UA 3244915200,3244915455,PL @@ -70165,7 +81760,8 @@ 3244922624,3244922879,BG 3244922880,3244923135,UA 3244923136,3244923391,AT -3244923392,3244923903,LV +3244923392,3244923647,EU +3244923648,3244923903,LV 3244923904,3244924159,RU 3244924160,3244924927,CZ 3244924928,3244925183,FI @@ -70208,7 +81804,6 @@ 3244935168,3244935423,NL 3244935424,3244935679,UA 3244935680,3244935935,PL -3244935936,3244936191,FR 3244936192,3244936959,AT 3244936960,3244937215,KZ 3244937216,3244937471,TR @@ -70260,6 +81855,7 @@ 3244951552,3244952575,FI 3244952576,3244953599,GB 3244953600,3244954623,DE +3244954624,3244955647,PL 3244955648,3244957695,UA 3244957696,3244958719,EU 3244958720,3244959743,FR @@ -70297,13 +81893,15 @@ 3244999680,3245000703,IQ 3245000704,3245001727,UA 3245001728,3245002751,IL -3245002752,3245003775,ES +3245002752,3245003263,PL +3245003264,3245003519,SE 3245003776,3245004799,RU 3245004800,3245005823,PL 3245005824,3245006847,UA 3245006848,3245007871,DE 3245007872,3245008895,PL -3245008896,3245011967,RU +3245008896,3245009919,RU +3245010944,3245011967,RU 3245011968,3245012991,PL 3245012992,3245014015,UA 3245014016,3245015039,GR @@ -70385,7 +81983,7 @@ 3245093888,3245094911,RO 3245094912,3245095935,UA 3245095936,3245096959,IT -3245096960,3245099007,CZ +3245096960,3245099007,EU 3245099008,3245103103,GB 3245103104,3245105151,EU 3245105152,3245105663,GB @@ -70455,7 +82053,6 @@ 3245136384,3245136639,GB 3245136640,3245136895,EU 3245136896,3245137151,PL -3245137152,3245137407,IT 3245137408,3245137663,DE 3245137664,3245137919,SE 3245137920,3245138431,DK @@ -70465,7 +82062,6 @@ 3245139968,3245140479,CH 3245140480,3245140991,RO 3245140992,3245141503,UA -3245141504,3245142015,IT 3245142016,3245143039,UA 3245143040,3245144063,GB 3245144064,3245145087,UA @@ -70503,6 +82099,7 @@ 3245168896,3245169151,RU 3245169152,3245169407,IT 3245169408,3245169919,PL +3245169920,3245170175,PT 3245170176,3245170431,GB 3245170432,3245170687,CH 3245170688,3245171711,DE @@ -70514,7 +82111,7 @@ 3245175296,3245175551,RU 3245175552,3245175807,PL 3245175808,3245176063,GB -3245176064,3245176319,IT +3245176064,3245176319,SK 3245176320,3245176575,UA 3245176576,3245176831,FR 3245176832,3245177343,ES @@ -70546,7 +82143,6 @@ 3245200384,3245200639,PL 3245200640,3245200895,GR 3245200896,3245201151,DE -3245201152,3245201407,GB 3245201408,3245201663,UA 3245201664,3245201919,NO 3245201920,3245202175,SA @@ -70566,6 +82162,7 @@ 3245207552,3245208063,UA 3245208064,3245208575,DE 3245208576,3245209087,PL +3245209088,3245209599,VG 3245209600,3245210111,UA 3245210112,3245210623,FR 3245210624,3245211135,HU @@ -70714,8 +82311,7 @@ 3245298432,3245298687,UA 3245298688,3245298943,GB 3245298944,3245299199,UA -3245299200,3245299455,GB -3245299456,3245299711,CY +3245299200,3245299711,GB 3245299712,3245299967,DE 3245299968,3245300223,BG 3245300224,3245300479,FR @@ -70814,7 +82410,9 @@ 3245903032,3245903039,GB 3245903040,3245903959,IE 3245903960,3245903967,FR -3245903968,3245904199,IE +3245903968,3245904087,IE +3245904088,3245904095,GB +3245904096,3245904199,IE 3245904200,3245904207,GB 3245904208,3245906367,IE 3245906368,3245906431,GB @@ -70876,9 +82474,7 @@ 3246417960,3246417967,LV 3246417968,3246418887,GB 3246418888,3246418895,SE -3246418896,3246475535,GB -3246475536,3246475551,A2 -3246475552,3246537887,GB +3246418896,3246537887,GB 3246537888,3246537903,A2 3246537904,3246613503,GB 3246613504,3246614527,HU @@ -70929,7 +82525,6 @@ 3247071488,3247072255,RO 3247072256,3247072511,IE 3247072512,3247072767,BE -3247072768,3247073023,SE 3247073024,3247073279,RO 3247073280,3247073535,DE 3247073536,3247073791,AT @@ -71239,9 +82834,7 @@ 3247335424,3247336447,FI 3247336448,3247337215,NO 3247337216,3247337471,CH -3247337472,3247337983,PL -3247337984,3247338239,FI -3247338240,3247338495,PL +3247337472,3247338495,PL 3247338496,3247338751,SI 3247338752,3247339519,GB 3247339520,3247340543,FI @@ -71259,6 +82852,8 @@ 3247347968,3247348223,HU 3247348224,3247348991,FI 3247348992,3247349247,DE +3247349248,3247349503,FR +3247349504,3247349759,UA 3247349760,3247353855,SE 3247353856,3247362047,FI 3247362048,3247362303,RO @@ -71312,7 +82907,9 @@ 3247714304,3247716351,CH 3247716352,3247717887,ES 3247717888,3247718399,CH -3247718400,3247769599,ES +3247718400,3247742975,ES +3247742976,3247751167,DE +3247751168,3247769599,ES 3247769600,3247771647,DE 3247771648,3247775743,ES 3247775744,3247779647,DE @@ -71332,10 +82929,8 @@ 3247825920,3247826943,BE 3247826944,3247828991,CH 3247828992,3247833087,BE -3247833088,3247865855,RU 3247865856,3247871999,GB 3247872000,3247875327,NL -3247875328,3247875583,TR 3247875584,3247876095,DE 3247876096,3247876351,PL 3247876352,3247876607,FR @@ -71351,6 +82946,7 @@ 3247901696,3247902719,UA 3247902720,3247903743,GB 3247903744,3247904767,BG +3247904768,3247905791,RU 3247905792,3247906815,RO 3247906816,3247907839,DE 3247907840,3247908863,PL @@ -71358,7 +82954,7 @@ 3247909888,3247910911,DE 3247910912,3247912959,PL 3247912960,3247913983,UA -3247913984,3247915007,DE +3247913984,3247915007,AT 3247915008,3247917055,PL 3247917056,3247918079,NL 3247918080,3247919103,PL @@ -71386,9 +82982,7 @@ 3248226304,3248235007,NO 3248235008,3248235263,PK 3248235264,3248357375,NO -3248357376,3248370511,DE -3248370512,3248370519,AT -3248370520,3248371743,DE +3248357376,3248371743,DE 3248371744,3248371751,PL 3248371752,3248372239,DE 3248372240,3248372247,AT @@ -71463,8 +83057,8 @@ 3248790784,3248791039,PL 3248791040,3248791295,BE 3248791296,3248791551,DE -3248791552,3248792479,GB -3248792480,3248796607,EU +3248791552,3248792527,GB +3248792528,3248796607,EU 3248796608,3248796863,GB 3248796864,3248798975,EU 3248798976,3248799231,GB @@ -71609,7 +83203,8 @@ 3249136128,3249137151,RU 3249137152,3249137663,FR 3249137664,3249138175,PL -3249138176,3249138687,UA +3249138176,3249138687,RU +3249138688,3249139199,GB 3249139200,3249139711,RU 3249139712,3249140223,UA 3249140224,3249140735,IT @@ -71702,7 +83297,7 @@ 3249716736,3249717247,UA 3249717248,3249718271,LV 3249718272,3249719295,DE -3249719296,3249720319,GB +3249719296,3249720319,IR 3249720320,3249721343,IT 3249721344,3249721599,AT 3249721600,3249721855,BE @@ -71730,11 +83325,57 @@ 3249731584,3249732607,UA 3249732608,3249733631,IT 3249733632,3249799167,CZ -3249799168,3249931007,SE +3249799168,3249829887,SE +3249829888,3249830143,GB +3249830144,3249830399,SE +3249830400,3249830655,IT +3249830656,3249850623,SE +3249850624,3249850879,GB +3249850880,3249863679,SE +3249863680,3249863935,ES +3249863936,3249865471,SE +3249865472,3249866751,GB +3249866752,3249868543,SE +3249868544,3249868799,DE +3249868800,3249871103,SE +3249871104,3249871359,NO +3249871360,3249871615,SE +3249871616,3249871871,NO +3249871872,3249872383,SE +3249872384,3249872639,GB +3249872640,3249910783,SE +3249910784,3249912319,GB +3249912320,3249931007,SE 3249931008,3249931263,GB 3249931264,3249932031,SE 3249932032,3249934335,GB -3249934336,3250061311,SE +3249934336,3249967615,SE +3249967616,3249967871,GB +3249967872,3249968127,SE +3249968128,3249969151,FR +3249969152,3249971199,SE +3249971200,3249971455,IT +3249971456,3249974527,SE +3249974528,3249974783,ES +3249974784,3249976063,SE +3249976064,3249976319,FR +3249976320,3249976831,SE +3249976832,3249977087,GB +3249977088,3249991679,SE +3249991680,3249991935,US +3249991936,3249995263,SE +3249995264,3249995519,GB +3249995520,3249997055,SE +3249997056,3249997311,US +3249997312,3250000127,SE +3250000128,3250000383,GB +3250000384,3250007295,SE +3250007296,3250007551,GB +3250007552,3250031359,SE +3250031360,3250031615,US +3250031616,3250035455,SE +3250035456,3250035711,US +3250035712,3250061311,SE 3250061312,3250061635,FI 3250061636,3250061639,AX 3250061640,3250083643,FI @@ -71804,8 +83445,7 @@ 3250357880,3250357887,SE 3250357888,3250357895,DK 3250357920,3250357927,PL -3250357928,3250357959,CY -3250357960,3250358015,GB +3250357952,3250358015,GB 3250358016,3250358527,LB 3250358528,3250358783,HU 3250358784,3250359295,LB @@ -71818,7 +83458,6 @@ 3250372608,3250373375,HU 3250373376,3250373631,GB 3250373632,3250374143,DE -3250374144,3250374655,TR 3250374656,3250374911,SA 3250374912,3250375679,SE 3250375680,3250376703,GB @@ -71857,6 +83496,7 @@ 3250416128,3250417663,DE 3250417664,3250418175,IT 3250418176,3250418687,DE +3250418688,3250419199,PL 3250419200,3250419711,NO 3250419712,3250420223,RU 3250420224,3250420735,IR @@ -71875,11 +83515,13 @@ 3250425856,3250426111,LT 3250426112,3250426367,NO 3250426368,3250426623,AT -3250426624,3250426879,FR +3250426624,3250426879,BE 3250426880,3250427135,JO 3250427136,3250427391,NL 3250427392,3250429951,DE -3250429952,3250438143,SI +3250429952,3250434335,SI +3250434336,3250434351,AT +3250434352,3250438143,SI 3250438144,3250438207,FR 3250438208,3250438399,CH 3250438400,3250438431,FR @@ -71901,7 +83543,6 @@ 3250589440,3250589471,IE 3250589472,3250589503,NL 3250589504,3250589567,HR -3250589568,3250589631,UA 3250589632,3250589695,NO 3250589696,3250593791,CH 3250593792,3250594815,GB @@ -71932,7 +83573,6 @@ 3250692096,3250692351,NO 3250692352,3250692607,NL 3250692608,3250693375,BG -3250693376,3250694399,IE 3250694400,3250694655,GB 3250694656,3250694911,SK 3250694912,3250695167,NL @@ -71942,7 +83582,7 @@ 3250697728,3250697983,BG 3250697984,3250698239,IT 3250698240,3250698751,GR -3250698752,3250699775,GB +3250699264,3250699775,GB 3250699776,3250700287,DE 3250700288,3250708479,UA 3250708480,3250716671,KZ @@ -71954,7 +83594,6 @@ 3250722304,3250724863,GB 3250724864,3250733055,MA 3250733056,3250741247,DZ -3250741248,3250749439,EU 3250749440,3250749695,GH 3250749696,3250749951,IT 3250749952,3250750463,RO @@ -72022,6 +83661,7 @@ 3251122176,3251122687,CH 3251122688,3251123199,PL 3251123200,3251123711,FR +3251123712,3251124223,RU 3251124224,3251124735,NL 3251124736,3251125247,FR 3251125248,3251125759,BE @@ -72174,7 +83814,8 @@ 3251175168,3251175423,UA 3251175424,3251176703,FR 3251176704,3251176959,IT -3251176960,3251177471,FR +3251176960,3251177215,US +3251177216,3251177471,FR 3251177472,3251179519,DE 3251179520,3251180031,SE 3251180032,3251180543,PL @@ -72184,7 +83825,6 @@ 3251182080,3251182591,FR 3251182592,3251183103,IT 3251183104,3251183615,RU -3251183616,3251183871,NO 3251183872,3251184127,CH 3251184128,3251184383,PL 3251184384,3251184639,DK @@ -72239,7 +83879,7 @@ 3251209216,3251210239,GB 3251210240,3251211263,PL 3251211264,3251212287,UA -3251212288,3251212415,IE +3251212288,3251212415,PL 3251212416,3251212671,FI 3251212672,3251212799,SE 3251212800,3251212927,FR @@ -72258,7 +83898,7 @@ 3251213696,3251213759,LV 3251213760,3251213823,TR 3251213824,3251213887,GB -3251213888,3251214015,FI +3251213952,3251214015,FI 3251214016,3251214079,UA 3251214080,3251214143,FR 3251214144,3251214207,AF @@ -72274,7 +83914,6 @@ 3251215488,3251215615,SE 3251215616,3251215743,TR 3251215744,3251215871,GB -3251215872,3251215999,CH 3251216000,3251216127,LI 3251216128,3251216255,FI 3251216256,3251216383,RU @@ -72312,8 +83951,7 @@ 3251237888,3251238911,DK 3251238912,3251239935,FR 3251239936,3251240959,US -3251240960,3251241215,DE -3251241216,3251243007,GB +3251240960,3251243007,GB 3251243008,3251245055,BE 3251245056,3251245311,DE 3251245312,3251245567,BE @@ -72331,12 +83969,7 @@ 3251248640,3251248895,DE 3251248896,3251249151,GB 3251249152,3251251199,NL -3251251200,3251251455,PT -3251251456,3251251711,GB -3251251712,3251251967,CH -3251251968,3251252223,BG -3251252224,3251252479,AT -3251252480,3251252735,NL +3251251200,3251252735,EU 3251252736,3251256831,CH 3251256832,3251257343,GB 3251257344,3251259903,BE @@ -72344,11 +83977,7 @@ 3251260672,3251260927,BE 3251260928,3251261439,FR 3251261440,3251264255,CH -3251264256,3251264511,BG -3251264512,3251264767,IT -3251264768,3251265023,GB -3251265024,3251265279,ES -3251265280,3251265535,DE +3251264256,3251265535,FR 3251265536,3251267839,NL 3251267840,3251268351,GB 3251268352,3251268607,NL @@ -72460,7 +84089,9 @@ 3251734528,3251734783,NL 3251734784,3251765247,FI 3251765248,3251765503,NL -3251765504,3251774207,FI +3251765504,3251766663,FI +3251766664,3251766671,AX +3251766672,3251774207,FI 3251774208,3251774463,DE 3251774464,3251783423,FI 3251783424,3251783679,GB @@ -72476,7 +84107,9 @@ 3251850496,3251850751,FR 3251850752,3251851007,CH 3251851008,3251896319,FI -3251896320,3251927991,NO +3251896320,3251927767,NO +3251927768,3251927775,SE +3251927776,3251927991,NO 3251927992,3251927999,NL 3251928000,3252015687,NO 3252015688,3252015695,SE @@ -72495,11 +84128,11 @@ 3252316416,3252316671,FR 3252316672,3252318463,GR 3252318464,3252318719,TR -3252318720,3252318975,GP +3252318720,3252318975,MQ 3252318976,3252319231,PL 3252319232,3252319743,AT 3252319744,3252321791,GR -3252321792,3252322303,DE +3252321792,3252322303,PL 3252322304,3252323327,NO 3252323328,3252324351,PL 3252324352,3252326399,RU @@ -72519,6 +84152,11 @@ 3252342208,3252342239,GB 3252342240,3252342271,CH 3252342528,3252342543,NO +3252342544,3252342559,GB +3252342560,3252342575,IT +3252342576,3252342591,DE +3252342592,3252342607,IE +3252342656,3252342783,IL 3252342784,3252346367,DE 3252346368,3252346623,GB 3252346624,3252355071,GR @@ -72568,32 +84206,38 @@ 3252407584,3252407599,NG 3252407600,3252407615,BJ 3252407616,3252407711,NO -3252407712,3252407727,NG -3252407728,3252407751,NO +3252407712,3252407743,NG +3252407744,3252407751,NO 3252407752,3252407759,AO -3252407760,3252407767,NE -3252407768,3252407775,CD +3252407760,3252407775,CD 3252407776,3252407791,GH 3252407792,3252407807,NO 3252407808,3252407999,GN -3252408000,3252408159,NO +3252408000,3252408063,NO +3252408064,3252408079,ML +3252408080,3252408159,NO 3252408160,3252408191,GQ 3252408192,3252408319,NO 3252408320,3252408327,MW 3252408328,3252408335,LT -3252408336,3252408367,GN +3252408336,3252408343,GN +3252408344,3252408351,LT +3252408352,3252408367,GN 3252408368,3252408375,NG 3252408376,3252408383,LT 3252408384,3252408391,BI 3252408392,3252408415,LT 3252408416,3252408479,NO 3252408480,3252408511,LT -3252408512,3252408519,AF -3252408520,3252408639,LT +3252408512,3252408527,AF +3252408528,3252408575,LT +3252408576,3252408607,SO +3252408608,3252408639,LT 3252408640,3252408671,CF 3252408672,3252408703,SO 3252408704,3252408735,NG -3252408736,3252408767,LT +3252408736,3252408751,SO +3252408752,3252408767,LT 3252408768,3252408783,NG 3252408784,3252408799,LT 3252408800,3252408831,SO @@ -72603,28 +84247,34 @@ 3252408856,3252408863,CM 3252408864,3252408871,LR 3252408872,3252408879,CI -3252408880,3252409103,LT +3252408880,3252409023,LT +3252409024,3252409039,TZ +3252409040,3252409103,LT 3252409104,3252409111,SD 3252409112,3252409119,LT 3252409120,3252409127,NG -3252409128,3252409167,LT +3252409128,3252409151,LT +3252409152,3252409159,KE +3252409160,3252409167,LT 3252409168,3252409175,UG 3252409176,3252409183,LT 3252409184,3252409191,UG 3252409192,3252409199,ZW -3252409200,3252409207,TZ -3252409208,3252409215,LT +3252409200,3252409215,TZ 3252409216,3252409223,BW 3252409224,3252409231,LT 3252409232,3252409247,UG -3252409248,3252409263,LT -3252409264,3252409271,SO -3252409272,3252409279,LT -3252409280,3252409343,SO +3252409248,3252409263,CD +3252409264,3252409279,LT +3252409280,3252409295,SO +3252409296,3252409303,LT +3252409304,3252409343,SO 3252409344,3252409375,TD 3252409376,3252409407,LT 3252409408,3252409471,BI -3252409472,3252409519,LT +3252409472,3252409503,LT +3252409504,3252409511,GH +3252409512,3252409519,LT 3252409520,3252409527,NG 3252409528,3252409535,LT 3252409536,3252409543,BI @@ -72634,23 +84284,22 @@ 3252409632,3252409647,AO 3252409648,3252409727,LT 3252409728,3252409735,LR -3252409736,3252410375,LT -3252410376,3252410391,BW +3252409736,3252409759,LT +3252409760,3252409775,BI +3252409776,3252410383,LT +3252410384,3252410391,BW 3252410392,3252410431,LT 3252410432,3252410463,BI 3252410464,3252410495,LT 3252410496,3252410623,BI 3252410624,3252410751,ZW -3252410752,3252411135,LT -3252411136,3252411167,IQ -3252411168,3252411327,LT +3252410752,3252411327,LT 3252411328,3252411367,CD 3252411368,3252411375,LT 3252411376,3252411391,CD 3252411392,3252411647,LT 3252411648,3252411679,BI -3252411680,3252411695,LT -3252411696,3252411711,UG +3252411680,3252411711,LT 3252411712,3252411743,NG 3252411744,3252411775,LT 3252411776,3252411783,GH @@ -72662,8 +84311,7 @@ 3252411880,3252411903,CD 3252411904,3252414463,LT 3252414464,3252414479,GH -3252414480,3252414495,ML -3252414496,3252414511,LT +3252414480,3252414511,LT 3252414512,3252414527,MR 3252414528,3252414591,LT 3252414592,3252414599,GH @@ -72672,28 +84320,30 @@ 3252414624,3252414639,TZ 3252414640,3252414647,GH 3252414648,3252414655,NE -3252414656,3252414719,ER -3252414720,3252414983,LT -3252414984,3252415007,IQ -3252415008,3252415015,LT -3252415016,3252415127,IQ +3252414656,3252414991,LT +3252414992,3252414999,IQ +3252415000,3252415015,LT +3252415016,3252415031,IQ +3252415032,3252415039,LT +3252415040,3252415095,IQ +3252415096,3252415103,LT +3252415104,3252415127,IQ 3252415128,3252415135,LT -3252415136,3252415167,IQ -3252415168,3252415199,LT -3252415200,3252415231,IQ -3252415232,3252415487,LT -3252415488,3252415743,IQ +3252415136,3252415159,IQ +3252415160,3252415167,BE +3252415168,3252415231,IQ +3252415232,3252415743,LT 3252415744,3252415775,GB 3252415776,3252415967,LT 3252415968,3252415999,CM -3252416000,3252416831,LT -3252416832,3252416927,GN +3252416000,3252416895,LT +3252416896,3252416927,GN 3252416928,3252416959,LT 3252416960,3252417023,GN 3252417024,3252417279,LT 3252417280,3252417287,IQ -3252417288,3252417375,AF -3252417376,3252417791,LT +3252417288,3252417463,AF +3252417464,3252417791,LT 3252417792,3252417855,NG 3252417856,3252417919,LT 3252417920,3252417935,MW @@ -72715,26 +84365,17 @@ 3252419168,3252419199,CD 3252419200,3252419215,LT 3252419216,3252419247,GN -3252419248,3252419263,LT -3252419264,3252419279,TZ -3252419280,3252419311,LT +3252419248,3252419311,LT 3252419312,3252419327,ZM -3252419328,3252419343,GH -3252419344,3252419359,LT +3252419328,3252419359,LT 3252419360,3252419423,GH 3252419424,3252419839,LT 3252419840,3252419879,IQ -3252419880,3252419887,LT -3252419888,3252419895,IQ -3252419896,3252419903,LT -3252419904,3252419911,IQ -3252419912,3252419919,LT +3252419880,3252419919,LT 3252419920,3252419927,IQ 3252419928,3252419935,LT -3252419936,3252419951,IQ -3252419952,3252419991,LT -3252419992,3252420007,IQ -3252420008,3252420031,LT +3252419936,3252419943,IQ +3252419944,3252420031,LT 3252420032,3252420055,IQ 3252420056,3252420063,LT 3252420064,3252420071,IQ @@ -72743,28 +84384,23 @@ 3252420120,3252420143,IQ 3252420144,3252420191,LT 3252420192,3252420223,IQ -3252420224,3252420239,LT -3252420240,3252420247,IQ -3252420248,3252420263,LT -3252420264,3252420271,IQ -3252420272,3252420367,LT -3252420368,3252420415,IQ +3252420224,3252420351,LT +3252420352,3252420415,IQ 3252420416,3252420431,GB -3252420432,3252420463,IQ +3252420432,3252420447,LT +3252420448,3252420463,IQ 3252420464,3252420471,AF 3252420472,3252420583,LT 3252420584,3252420591,IQ 3252420592,3252421119,LT -3252421120,3252421631,NO -3252421632,3252424703,LT +3252421120,3252423679,NO +3252423680,3252424703,LT 3252424704,3252424719,GN 3252424720,3252424735,LT 3252424736,3252424767,MA 3252424768,3252424799,LT 3252424800,3252424815,NE -3252424816,3252424959,LT -3252424960,3252424967,KE -3252424968,3252425023,LT +3252424816,3252425023,LT 3252425024,3252425215,SO 3252425216,3252425343,TD 3252425344,3252425471,LT @@ -72791,7 +84427,7 @@ 3252430520,3252430527,LT 3252430528,3252430543,BF 3252430544,3252430559,BJ -3252430560,3252430591,BF +3252430560,3252430591,LT 3252430592,3252430847,GN 3252430848,3252431359,MW 3252431360,3252431871,LT @@ -72812,21 +84448,25 @@ 3252434720,3252434743,GH 3252434744,3252435199,LT 3252435200,3252435247,TZ -3252435248,3252435295,LT +3252435248,3252435263,BW +3252435264,3252435279,ML +3252435280,3252435295,LT 3252435296,3252435311,TZ -3252435312,3252435319,LT +3252435312,3252435319,CF 3252435320,3252435327,MZ 3252435328,3252435343,CD 3252435344,3252435359,BF -3252435360,3252435375,CD +3252435360,3252435375,LT 3252435376,3252435415,GN -3252435416,3252435423,CD -3252435424,3252435455,LT +3252435416,3252435423,LT +3252435424,3252435447,CD +3252435448,3252435455,LT 3252435456,3252435711,TZ 3252435712,3252435855,GH 3252435856,3252435871,MR 3252435872,3252435887,GH -3252435888,3252435919,BW +3252435888,3252435903,LT +3252435904,3252435919,BW 3252435920,3252435935,BF 3252435936,3252435951,CF 3252435952,3252435967,LT @@ -72853,18 +84493,14 @@ 3252438528,3252438783,CM 3252438784,3252439039,LT 3252439040,3252439055,BJ -3252439056,3252439071,LT -3252439072,3252439079,BJ -3252439080,3252439263,LT +3252439056,3252439263,LT 3252439264,3252439271,SN 3252439272,3252439287,LT 3252439288,3252439295,SN 3252439296,3252439391,SO 3252439392,3252439807,LT 3252439808,3252439871,SO -3252439872,3252440063,LT -3252440064,3252440319,MW -3252440320,3252444287,LT +3252439872,3252444287,LT 3252444288,3252444351,TZ 3252444352,3252445183,LT 3252445184,3252445263,GN @@ -72890,8 +84526,12 @@ 3252450912,3252451071,LT 3252451072,3252451327,CH 3252451328,3252451583,LT -3252451584,3252451599,GM -3252451600,3252451839,LT +3252451584,3252451607,GM +3252451608,3252451631,GW +3252451632,3252451655,GN +3252451656,3252451679,SL +3252451680,3252451695,LR +3252451696,3252451839,LT 3252451840,3252451855,NO 3252451856,3252451967,LT 3252451968,3252451999,NO @@ -72899,7 +84539,7 @@ 3252452096,3252452127,NO 3252452128,3252452135,LT 3252452136,3252452143,NO -3252452144,3252452159,LT +3252452144,3252452159,GB 3252452160,3252452175,NL 3252452176,3252452191,NO 3252452192,3252452215,NL @@ -72921,7 +84561,7 @@ 3252453248,3252453271,NG 3252453272,3252454655,LT 3252454656,3252454911,IQ -3252454912,3252455167,GB +3252454912,3252455167,LT 3252455168,3252455295,NG 3252455296,3252455679,LT 3252455680,3252455807,BI @@ -72931,7 +84571,7 @@ 3252456960,3252457471,NG 3252457472,3252460799,LT 3252460800,3252460831,AF -3252460832,3252460847,KP +3252460832,3252460847,US 3252460848,3252461055,LT 3252461056,3252461567,NO 3252461568,3252464383,LT @@ -72941,8 +84581,7 @@ 3252465952,3252465983,GH 3252465984,3252466047,LT 3252466048,3252466175,GH -3252466176,3252473343,LT -3252473344,3252473855,CD +3252466176,3252473855,LT 3252473856,3252474879,SO 3252474880,3252475903,LT 3252475904,3252476415,NG @@ -72970,7 +84609,6 @@ 3252510720,3252514815,FR 3252514816,3252515071,SI 3252515072,3252515327,GB -3252515328,3252515583,DE 3252515584,3252515839,SI 3252515840,3252516095,CH 3252516096,3252516351,FR @@ -73078,7 +84716,6 @@ 3252912896,3252913151,PL 3252913152,3252913407,ES 3252913408,3252913663,FR -3252913664,3252913919,CZ 3252913920,3252914175,NO 3252914176,3252916223,FR 3252916224,3252920319,DE @@ -73142,15 +84779,41 @@ 3253230592,3253230847,BY 3253230848,3253247999,RU 3253248000,3253248255,DE -3253248256,3253248511,UZ -3253248512,3253264383,RU -3253264384,3253264895,KZ -3253264896,3253265407,RU +3253248256,3253265407,RU 3253265408,3253265919,AM 3253265920,3253270527,RU 3253270528,3253271551,BY 3253271552,3253338111,RU -3253338112,3253469183,SE +3253338112,3253380863,SE +3253380864,3253381119,IT +3253381120,3253383935,SE +3253383936,3253384191,NO +3253384192,3253409791,SE +3253409792,3253410047,GB +3253410048,3253412351,SE +3253412352,3253412607,US +3253412608,3253416447,SE +3253416448,3253416703,GB +3253416704,3253428223,SE +3253428224,3253428479,DE +3253428480,3253429759,SE +3253429760,3253430015,ES +3253430016,3253433087,SE +3253433088,3253433343,DE +3253433344,3253434111,SE +3253434112,3253434367,GB +3253434368,3253434623,IT +3253434624,3253434879,SE +3253434880,3253435135,IT +3253435136,3253440511,SE +3253440512,3253440767,FR +3253440768,3253453311,SE +3253453312,3253453567,NO +3253453568,3253454079,SE +3253454080,3253454335,GB +3253454336,3253460735,SE +3253460736,3253460991,IT +3253460992,3253469183,SE 3253469184,3253471231,AO 3253471232,3253534719,PT 3253534720,3253600255,GB @@ -73311,7 +84974,6 @@ 3253888256,3253888511,BE 3253888512,3253888767,GB 3253888768,3253889023,SE -3253889024,3253889279,PL 3253889280,3253889535,CH 3253889536,3253889791,DE 3253889792,3253890047,DK @@ -73354,7 +85016,6 @@ 3253968896,3253969407,DE 3253969408,3253969919,AT 3253969920,3253970431,NL -3253970432,3253970687,DE 3253970688,3253970943,UA 3253970944,3253971967,RS 3253971968,3253972991,RU @@ -73434,9 +85095,7 @@ 3254490368,3254490623,CF 3254490624,3254491135,FR 3254491136,3254491391,DZ -3254491392,3254491607,GQ -3254491608,3254491615,FR -3254491616,3254491647,GQ +3254491392,3254491647,GQ 3254491648,3254491903,FR 3254491904,3254492031,CM 3254492032,3254492159,FR @@ -73492,11 +85151,11 @@ 3254510564,3254510847,NE 3254510848,3254521855,FR 3254521856,3254522367,GB -3254522368,3254523665,FR -3254523666,3254523666,UG -3254523667,3254523667,CH -3254523668,3254523668,RO -3254523669,3254550527,FR +3254522368,3254523739,FR +3254523740,3254523740,UG +3254523741,3254523741,CH +3254523742,3254523742,RO +3254523743,3254550527,FR 3254550528,3254550783,US 3254550784,3254551039,IR 3254551040,3254551295,US @@ -73555,7 +85214,7 @@ 3254707712,3254708223,RO 3254708224,3254708735,UA 3254708736,3254709247,RO -3254709248,3254710271,DE +3254709248,3254709759,DE 3254710272,3254710783,IT 3254710784,3254711295,RO 3254711296,3254711807,FR @@ -73582,6 +85241,10 @@ 3254784512,3254785279,LT 3254785280,3254785535,KZ 3254785536,3254785791,DK +3254785792,3254786047,LU +3254786304,3254786815,AT +3254786816,3254787071,SM +3254787072,3254788095,NL 3254796288,3254797311,SE 3254797312,3254798335,RU 3254798336,3254799359,AT @@ -73593,7 +85256,6 @@ 3254804480,3254806527,PL 3254806528,3254807551,UA 3254807552,3254808575,KZ -3254808576,3254809599,PL 3254809600,3254810623,UA 3254810624,3254811647,RU 3254811648,3254812671,RO @@ -73652,7 +85314,6 @@ 3254827776,3254828031,UA 3254828032,3254828287,DE 3254828288,3254828799,RO -3254828800,3254829055,BE 3254829056,3254829311,NO 3254829312,3254829567,GB 3254829568,3254829823,NL @@ -73700,7 +85361,6 @@ 3254840320,3254840575,DK 3254840576,3254840831,UA 3254840832,3254841343,GB -3254841344,3254841599,IT 3254841600,3254841855,IE 3254841856,3254842111,LV 3254842112,3254842367,GB @@ -73787,7 +85447,9 @@ 3255006720,3255006975,A2 3255006976,3255017648,FR 3255017649,3255017649,LB -3255017650,3255120639,FR +3255017650,3255087103,FR +3255087104,3255087359,SG +3255087360,3255120639,FR 3255120640,3255120895,DE 3255120896,3255123711,FR 3255123712,3255123967,DE @@ -73940,7 +85602,9 @@ 3255252528,3255252543,LU 3255252544,3255252559,BE 3255252560,3255252575,LU -3255252576,3255255559,BE +3255252576,3255254847,BE +3255254848,3255254879,LU +3255254880,3255255559,BE 3255255560,3255255567,LU 3255255568,3255255599,BE 3255255600,3255255607,LU @@ -73950,7 +85614,9 @@ 3255255752,3255255759,DK 3255255760,3255256319,BE 3255256320,3255256575,LU -3255256576,3255259327,BE +3255256576,3255259199,BE +3255259200,3255259215,LU +3255259216,3255259327,BE 3255259328,3255259359,LU 3255259360,3255259919,BE 3255259920,3255259927,LU @@ -73960,17 +85626,21 @@ 3255260320,3255260335,LU 3255260336,3255260343,BE 3255260344,3255260347,LU -3255260348,3255261519,BE -3255261520,3255261535,LU +3255260348,3255261471,BE +3255261472,3255261535,LU 3255261536,3255262799,BE 3255262800,3255262815,LU 3255262816,3255263295,BE 3255263296,3255263327,US -3255263328,3255265007,BE +3255263328,3255264543,BE +3255264544,3255264575,LU +3255264576,3255265007,BE 3255265008,3255265023,LU 3255265024,3255270431,BE 3255270432,3255270463,FR -3255270464,3255273855,BE +3255270464,3255271807,BE +3255271808,3255271839,LU +3255271840,3255273855,BE 3255273856,3255273887,LU 3255273888,3255274207,BE 3255274208,3255274239,LU @@ -73986,7 +85656,9 @@ 3255276576,3255276607,LU 3255276608,3255276671,BE 3255276672,3255276703,LU -3255276704,3255277247,BE +3255276704,3255276783,BE +3255276784,3255276799,LU +3255276800,3255277247,BE 3255277248,3255277255,LU 3255277256,3255277955,BE 3255277956,3255277959,LU @@ -74105,7 +85777,7 @@ 3255366144,3255367167,DK 3255367168,3255367679,RU 3255367680,3255368191,UA -3255368192,3255368703,LV +3255368192,3255368703,MD 3255368704,3255369215,CZ 3255369216,3255369727,GB 3255369728,3255370239,LU @@ -74129,6 +85801,7 @@ 3255378944,3255379455,UA 3255379456,3255379967,RU 3255379968,3255380479,GB +3255380480,3255380991,NL 3255380992,3255381503,CH 3255381504,3255382015,PL 3255382016,3255382527,NL @@ -74157,7 +85830,7 @@ 3255401472,3255412479,DE 3255412480,3255412735,RO 3255412736,3255413247,DE -3255413248,3255413759,LV +3255413248,3255413503,LV 3255413760,3255414271,GB 3255414272,3255414527,TR 3255414528,3255414783,LV @@ -74281,14 +85954,26 @@ 3255660544,3255666431,NL 3255666432,3255666687,DE 3255666688,3255697407,NL -3255697408,3255739647,SE +3255697408,3255710719,SE +3255710720,3255710975,ES +3255710976,3255724543,SE +3255724544,3255725055,US +3255725056,3255725311,ES +3255725312,3255739647,SE 3255739648,3255739903,GB 3255739904,3255743231,SE 3255743232,3255743487,IT -3255743488,3255745535,SE +3255743488,3255743743,DE +3255743744,3255745535,SE 3255745536,3255746047,DK 3255746048,3255762943,SE -3255762944,3255799039,DE +3255762944,3255791615,DE +3255791616,3255792639,UA +3255792640,3255793663,RU +3255793664,3255794943,PL +3255794944,3255795199,RU +3255795200,3255795711,UA +3255795712,3255799039,DE 3255799040,3255799295,SE 3255799296,3255800575,DE 3255800576,3255800831,UA @@ -74353,7 +86038,6 @@ 3256413184,3256413695,UA 3256413696,3256414207,PL 3256414208,3256414719,RU -3256414720,3256415231,DE 3256415232,3256415743,PL 3256415744,3256416255,UA 3256416256,3256416767,RS @@ -74455,7 +86139,9 @@ 3256698880,3256699135,DE 3256699136,3256699391,NL 3256699392,3256700415,GB -3256700416,3256701183,EU +3256700416,3256700671,NL +3256700672,3256700927,FR +3256700928,3256701183,EU 3256701184,3256701439,BE 3256701440,3256701695,GB 3256701696,3256705279,EU @@ -74491,7 +86177,6 @@ 3256788224,3256788479,RU 3256788480,3256788735,GB 3256788736,3256788991,DE -3256788992,3256789247,UA 3256789248,3256789503,SE 3256789504,3256789759,UA 3256789760,3256790015,GB @@ -74587,7 +86272,6 @@ 3257401344,3257466879,CH 3257466880,3257467135,DE 3257467136,3257467391,GB -3257467392,3257467903,NL 3257467904,3257468927,IT 3257468928,3257469183,EU 3257469184,3257469439,IT @@ -74635,20 +86319,17 @@ 3257546688,3257546719,DE 3257546720,3257546751,DK 3257546752,3257548799,IE -3257548800,3257549055,DE -3257549056,3257549343,GB +3257548800,3257549343,GB 3257549344,3257549359,DE -3257549360,3257549375,GB -3257549376,3257549423,DE -3257549424,3257549567,GB -3257549568,3257549695,DE +3257549360,3257549407,GB +3257549408,3257549423,DE +3257549424,3257549631,GB +3257549632,3257549695,DE 3257549696,3257549823,GB 3257549824,3257549871,DE -3257549872,3257549951,GB -3257549952,3257550095,DE -3257550096,3257550847,GB -3257550848,3257551103,DE -3257551104,3257551631,GB +3257549872,3257550079,GB +3257550080,3257550095,DE +3257550096,3257551631,GB 3257551632,3257551647,DE 3257551648,3257551711,GB 3257551712,3257551807,DE @@ -74659,8 +86340,8 @@ 3257552656,3257552703,GB 3257552704,3257552719,DE 3257552720,3257552895,GB -3257552896,3257552959,DE -3257552960,3257553023,GB +3257552896,3257552927,DE +3257552928,3257553023,GB 3257553024,3257553039,DE 3257553040,3257553407,GB 3257553408,3257553727,DE @@ -75641,6 +87322,7 @@ 3258085888,3258086143,UA 3258086144,3258086399,AT 3258086400,3258086655,UA +3258086656,3258086911,PL 3258086912,3258087167,GB 3258087168,3258087423,UA 3258087424,3258087679,RU @@ -75686,7 +87368,9 @@ 3258109952,3258110207,DK 3258110208,3258111487,CZ 3258111488,3258111743,PL -3258111744,3258121215,CZ +3258111744,3258118399,CZ +3258118400,3258118655,UA +3258118656,3258121215,CZ 3258121216,3258121471,PL 3258121472,3258121727,AT 3258121728,3258121983,UA @@ -75751,7 +87435,9 @@ 3258504192,3258504703,CH 3258504704,3258504959,DE 3258504960,3258505215,IL -3258505216,3258515455,CH +3258505216,3258506495,CH +3258506496,3258506751,DE +3258506752,3258515455,CH 3258515456,3258580991,FR 3258580992,3258625791,RU 3258625792,3258626047,UA @@ -75822,7 +87508,9 @@ 3258948608,3258949631,RU 3258949632,3258972159,GR 3258972160,3258974207,NO -3258974208,3259023103,DE +3258974208,3259006079,DE +3259006080,3259006111,BE +3259006112,3259023103,DE 3259023104,3259023107,ES 3259023108,3259031655,DE 3259031656,3259031659,ES @@ -75841,9 +87529,7 @@ 3259035456,3259036031,DE 3259036032,3259036035,ES 3259036036,3259039743,DE -3259039744,3259062015,PT -3259062016,3259062271,GW -3259062272,3259105279,PT +3259039744,3259105279,PT 3259105280,3259170815,GB 3259170816,3259219967,RU 3259219968,3259220479,BY @@ -75860,11 +87546,27 @@ 3259228160,3259236351,RU 3259236352,3259236863,SE 3259236864,3259237119,CH -3259237120,3259269375,SE +3259237120,3259237887,SE +3259237888,3259238143,FR +3259238144,3259248127,SE +3259248128,3259248383,GB +3259248384,3259258623,SE +3259258624,3259258879,ES +3259258880,3259262719,SE +3259262720,3259262975,DK +3259262976,3259269375,SE 3259269376,3259269631,FR -3259269632,3259292415,SE +3259269632,3259276287,SE +3259276288,3259276543,ES +3259276544,3259285759,SE +3259285760,3259286015,GB +3259286016,3259290879,SE +3259290880,3259291135,US +3259291136,3259292415,SE 3259292416,3259292671,IT -3259292672,3259301887,SE +3259292672,3259297535,SE +3259297536,3259297791,GB +3259297792,3259301887,SE 3259301888,3259302143,DE 3259302144,3259302399,AE 3259302400,3259303423,CH @@ -75968,13 +87670,19 @@ 3259367424,3259432959,GB 3259432960,3259435263,SE 3259435264,3259435519,IT -3259435520,3259457279,SE +3259435520,3259438079,SE +3259438080,3259438335,ES +3259438336,3259457279,SE 3259457280,3259457535,IT 3259457536,3259460351,SE 3259460352,3259460607,DE 3259460608,3259465215,SE 3259465216,3259465471,KH -3259465472,3259492351,SE +3259465472,3259479807,SE +3259479808,3259480063,DK +3259480064,3259480831,SE +3259480832,3259481087,ES +3259481088,3259492351,SE 3259492352,3259493375,GB 3259493376,3259498495,SE 3259498496,3259506943,GB @@ -76058,11 +87766,7 @@ 3259657728,3259657887,BE 3259657888,3259657919,GB 3259657920,3259657983,BE -3259657984,3259660287,GB -3259660288,3259660295,CH -3259660296,3259660327,GB -3259660328,3259660335,CH -3259660336,3259660543,GB +3259657984,3259660543,GB 3259660544,3259660799,CH 3259660800,3259695871,GB 3259695872,3259695903,ES @@ -76070,11 +87774,7 @@ 3259696640,3259696895,ES 3259696896,3259701759,GB 3259701760,3259702303,DE -3259702304,3259751423,GB -3259751424,3259751431,FR -3259751432,3259751551,GB -3259751552,3259751615,FR -3259751616,3259752191,GB +3259702304,3259752191,GB 3259752192,3259752447,FR 3259752448,3259760639,GB 3259760640,3259814399,DE @@ -76111,9 +87811,7 @@ 3260021248,3260021759,RU 3260021760,3260022271,GR 3260022272,3260022783,NL -3260022784,3260237775,GB -3260237776,3260237791,GR -3260237792,3260284927,GB +3260022784,3260284927,GB 3260284928,3260288767,RU 3260288768,3260289023,KZ 3260289024,3260303935,RU @@ -76169,7 +87867,6 @@ 3260587520,3260588031,PL 3260588032,3260596223,DE 3260596224,3260596735,CH -3260596736,3260597247,RO 3260597248,3260597759,CH 3260597760,3260598271,DE 3260598272,3260598783,RU @@ -76216,15 +87913,7 @@ 3260809216,3260874751,PL 3260874752,3260875775,DK 3260875776,3260876031,GB -3260876032,3260891391,DK -3260891392,3260891647,IT -3260891648,3260891903,NL -3260891904,3260892159,ES -3260892160,3260892415,GB -3260892416,3260892671,FI -3260892672,3260892927,PT -3260892928,3260893183,SE -3260893184,3260893439,AT +3260876032,3260893439,DK 3260893440,3260894207,SE 3260894208,3260895231,AT 3260895232,3260898303,SE @@ -76235,7 +87924,6 @@ 3260901120,3260903423,DE 3260903424,3260906239,CH 3260906240,3260906495,DE -3260906496,3260907519,FR 3260907520,3260915711,GB 3260915712,3260923903,UA 3260923904,3261071359,DE @@ -76261,7 +87949,9 @@ 3261472768,3261503487,RO 3261503488,3261503935,MD 3261503936,3261530111,RO -3261530112,3261570303,SE +3261530112,3261531903,SE +3261531904,3261532159,GB +3261532160,3261570303,SE 3261570304,3261570559,IT 3261570560,3261595647,SE 3261595648,3261661183,NL @@ -76305,6 +87995,7 @@ 3261767680,3261775871,RS 3261775872,3261776383,PL 3261776384,3261777407,RU +3261777408,3261777663,IR 3261777664,3261777919,KZ 3261777920,3261778431,PL 3261778432,3261778943,RU @@ -76333,7 +88024,7 @@ 3261820928,3261821183,RO 3261821184,3261821439,AT 3261821440,3261821695,NL -3261821696,3261821951,SI +3261821696,3261821951,UA 3261821952,3261822207,RU 3261822208,3261822463,UA 3261822464,3261822719,GB @@ -76396,7 +88087,9 @@ 3262034048,3262034119,AX 3262034120,3262034123,FI 3262034124,3262034127,AX -3262034128,3262034431,FI +3262034128,3262034175,FI +3262034176,3262034191,AX +3262034192,3262034431,FI 3262034432,3262034447,AX 3262034448,3262034455,FI 3262034456,3262034463,AX @@ -76590,7 +88283,6 @@ 3262423040,3262423551,GB 3262423552,3262424063,UA 3262424064,3262424575,IT -3262424576,3262425087,FR 3262425088,3262425599,RO 3262425600,3262426111,UA 3262426112,3262426623,DE @@ -76630,8 +88322,7 @@ 3262444032,3262444543,AT 3262444544,3262445055,UA 3262445056,3262445567,RO -3262445568,3262446079,PL -3262446592,3262447103,PL +3262445568,3262447103,PL 3262447104,3262447615,GB 3262447616,3262460415,PT 3262460416,3262460543,UA @@ -76799,7 +88490,7 @@ 3262472992,3262472995,DE 3262472996,3262472999,FR 3262473000,3262473003,HU -3262473004,3262473007,NO +3262473004,3262473007,DE 3262473008,3262473011,US 3262473012,3262473015,DE 3262473016,3262473019,AR @@ -77195,8 +88886,7 @@ 3262475460,3262475463,FR 3262475464,3262475467,DE 3262475468,3262475471,ES -3262475472,3262475475,DE -3262475476,3262475479,ES +3262475472,3262475479,DE 3262475480,3262475483,US 3262475484,3262475487,IT 3262475488,3262475491,MX @@ -77723,7 +89413,7 @@ 3262478135,3262478135,TR 3262478136,3262478137,HU 3262478138,3262478138,TR -3262478139,3262478139,MZ +3262478139,3262478139,DE 3262478140,3262478140,FR 3262478141,3262478143,TR 3262478144,3262478145,DE @@ -77735,7 +89425,7 @@ 3262478151,3262478151,DE 3262478152,3262478152,PL 3262478153,3262478153,TR -3262478154,3262478154,FR +3262478154,3262478154,DE 3262478155,3262478155,CU 3262478156,3262478156,TR 3262478157,3262478157,DE @@ -77804,7 +89494,7 @@ 3262478344,3262478344,IT 3262478345,3262478345,CH 3262478346,3262478346,PT -3262478347,3262478347,AO +3262478347,3262478347,DE 3262478348,3262478348,DK 3262478349,3262478349,BE 3262478350,3262478350,AT @@ -78111,7 +89801,7 @@ 3262478749,3262478751,FR 3262478752,3262478752,PT 3262478753,3262478753,IE -3262478754,3262478754,ES +3262478754,3262478754,DE 3262478755,3262478755,DK 3262478756,3262478756,DE 3262478757,3262478757,AT @@ -78158,7 +89848,7 @@ 3262478801,3262478801,DE 3262478802,3262478802,IT 3262478803,3262478803,ES -3262478804,3262478804,SK +3262478804,3262478804,DE 3262478805,3262478806,GR 3262478807,3262478807,CH 3262478808,3262478808,HU @@ -78495,8 +90185,7 @@ 3262479305,3262479307,DE 3262479308,3262479308,DK 3262479309,3262479309,SE -3262479310,3262479311,DE -3262479312,3262479312,IT +3262479310,3262479312,DE 3262479313,3262479313,FR 3262479314,3262479318,DE 3262479319,3262479319,DK @@ -78848,8 +90537,7 @@ 3262479809,3262479809,FR 3262479810,3262479810,NL 3262479811,3262479811,ES -3262479812,3262479812,GB -3262479813,3262479816,DE +3262479812,3262479816,DE 3262479817,3262479817,HU 3262479818,3262479818,DE 3262479819,3262479819,NL @@ -78917,9 +90605,7 @@ 3262479903,3262479903,CH 3262479904,3262479908,DE 3262479909,3262479909,SE -3262479910,3262479912,DE -3262479913,3262479913,NO -3262479914,3262479914,DE +3262479910,3262479914,DE 3262479915,3262479915,FR 3262479916,3262479917,DE 3262479918,3262479918,GB @@ -79381,7 +91067,6 @@ 3263072256,3263074303,LB 3263074304,3263074815,CH 3263074816,3263075327,RO -3263075328,3263075839,GB 3263075840,3263076351,SE 3263076352,3263076863,RO 3263076864,3263077375,IT @@ -79429,7 +91114,6 @@ 3263096064,3263096319,PL 3263096320,3263096575,TR 3263096576,3263096831,SA -3263096832,3263097087,NL 3263097088,3263097343,FR 3263097344,3263097599,DK 3263097600,3263097855,NL @@ -79458,12 +91142,21 @@ 3263138560,3263138815,AT 3263138816,3263168511,DE 3263168512,3263430655,GB -3263430656,3263436799,SE +3263430656,3263436543,SE +3263436544,3263436799,ES 3263436800,3263437311,GB -3263437312,3263477759,SE +3263437312,3263458047,SE +3263458048,3263458303,DE +3263458304,3263459583,SE +3263459584,3263459839,FR +3263459840,3263461631,SE +3263461632,3263461887,AE +3263461888,3263477759,SE 3263477760,3263478015,JP 3263478016,3263478271,AU -3263478272,3263496191,SE +3263478272,3263478527,SE +3263478528,3263478783,ES +3263478784,3263496191,SE 3263496192,3263497983,EU 3263497984,3263498239,GB 3263498240,3263498751,EU @@ -79617,6 +91310,7 @@ 3264015360,3264015615,DK 3264015616,3264015871,UA 3264015872,3264016127,PT +3264016128,3264016383,UA 3264016384,3264016639,SE 3264016640,3264016895,PL 3264016896,3264017151,GB @@ -79693,7 +91387,6 @@ 3264320000,3264320255,DE 3264320256,3264321023,GB 3264321024,3264321535,DE -3264321536,3264321791,SE 3264321792,3264322047,RS 3264322048,3264322303,FR 3264322304,3264322559,RO @@ -79731,9 +91424,7 @@ 3264340992,3264341503,PL 3264341504,3264341759,DE 3264341760,3264342015,IT -3264342016,3264342783,DE -3264342784,3264343039,ES -3264343040,3264343295,DE +3264342016,3264343295,DE 3264343296,3264343551,GB 3264343552,3264343807,RO 3264343808,3264344063,DE @@ -79793,7 +91484,9 @@ 3264431104,3264431615,LI 3264431616,3264446207,CH 3264446208,3264446463,FR -3264446464,3264463871,CH +3264446464,3264447743,CH +3264447744,3264447999,DE +3264448000,3264463871,CH 3264463872,3264466943,LI 3264466944,3264483071,CH 3264483072,3264483327,LI @@ -79836,15 +91529,17 @@ 3264612352,3264612479,FR 3264612480,3264612511,GB 3264612512,3264612591,FR -3264612592,3264613119,GB -3264613120,3264614399,FR -3264614400,3264614431,GB +3264612592,3264612607,GB +3264612608,3264613375,FR +3264613376,3264614143,NL +3264614144,3264614399,GB +3264614400,3264614431,NL 3264614432,3264614447,FR -3264614448,3264614463,GB +3264614448,3264614463,NL 3264614464,3264614527,FR -3264614528,3264614559,GB +3264614528,3264614559,NL 3264614560,3264614591,FR -3264614592,3264614623,GB +3264614592,3264614623,NL 3264614624,3264614655,FR 3264614656,3264615935,GB 3264615936,3264615999,FR @@ -79862,7 +91557,9 @@ 3264616960,3264617215,FR 3264617216,3264617311,GB 3264617312,3264617983,FR -3264617984,3264618751,GB +3264617984,3264618239,GB +3264618240,3264618495,US +3264618496,3264618751,GB 3264618752,3264619007,FR 3264619008,3264619519,GB 3264619520,3264619551,FR @@ -79876,7 +91573,9 @@ 3264620544,3264620927,FR 3264620928,3264621567,GB 3264621568,3264621823,FR -3264621824,3264626687,GB +3264621824,3264622847,GB +3264622848,3264623103,FR +3264623104,3264626687,GB 3264626688,3264627711,EE 3264627712,3264628735,GR 3264628736,3264630783,UA @@ -79895,7 +91594,6 @@ 3264652288,3264652799,RU 3264652800,3264653311,PL 3264653312,3264653823,EU -3264653824,3264654335,RO 3264654336,3264654847,DE 3264654848,3264655359,UA 3264655360,3264655871,GB @@ -79920,6 +91618,7 @@ 3264665600,3264666111,RO 3264666112,3264666623,IL 3264666624,3264667135,UA +3264667136,3264667647,RU 3264667648,3264668159,BE 3264668160,3264669183,DE 3264669184,3264669695,PL @@ -80009,21 +91708,23 @@ 3264845312,3264845951,DE 3264845952,3264846079,GB 3264846080,3264846207,UG +3264846208,3264846335,AE 3264846336,3264846463,GB 3264846464,3264846591,NO 3264846592,3264846719,US 3264846720,3264846847,RU 3264846848,3264846911,DK -3264846912,3264846975,SK 3264846976,3264847103,GB 3264847104,3264847135,FR 3264847136,3264847167,ES 3264847168,3264847199,IE 3264847200,3264847231,NO +3264847232,3264847263,CH 3264847264,3264847295,LI 3264847360,3264847487,FR 3264847488,3264847615,RU 3264847616,3264847679,PL +3264847680,3264847743,FI 3264847744,3264847807,BE 3264847808,3264847871,SE 3264847872,3264849919,DE @@ -80033,7 +91734,6 @@ 3264850944,3264851967,IT 3264851968,3264854015,CH 3264854016,3264854527,DE -3264854528,3264854783,RU 3264854784,3264855039,IT 3264855040,3264855551,CH 3264855552,3264856063,DE @@ -80048,154 +91748,9 @@ 3264872448,3264888831,GB 3264888832,3264897023,RU 3264897024,3264905215,GB -3264905216,3264906255,CY -3264906256,3264906263,GR -3264906264,3264906287,CY -3264906288,3264906291,GR -3264906292,3264906295,CY -3264906296,3264906303,GR -3264906304,3264906323,CY -3264906324,3264906327,GR -3264906328,3264906332,CY -3264906333,3264906335,GR -3264906336,3264906339,CY -3264906340,3264906351,GR -3264906352,3264906355,CY -3264906356,3264906359,GR -3264906360,3264906367,CY -3264906368,3264906411,GR -3264906412,3264906423,CY -3264906424,3264906435,GR -3264906436,3264906495,CY -3264906496,3264906623,GR -3264906624,3264906751,CY -3264906752,3264906761,GR -3264906762,3264906879,CY -3264906880,3264906895,GR -3264906896,3264906911,CY -3264906912,3264906919,GR -3264906920,3264906983,CY -3264906984,3264906995,GR -3264906996,3264907139,CY -3264907140,3264907143,GR -3264907144,3264907151,CY -3264907152,3264907155,GR -3264907156,3264907639,CY -3264907640,3264907647,GR -3264907648,3264907663,CY -3264907664,3264907671,GR -3264907672,3264907679,CY -3264907680,3264907683,GR -3264907684,3264907687,CY -3264907688,3264907691,GR -3264907692,3264907695,CY -3264907696,3264907703,GR -3264907704,3264907715,CY -3264907716,3264907727,GR -3264907728,3264907735,CY -3264907736,3264907743,GR -3264907744,3264907755,CY -3264907756,3264907763,GR -3264907764,3264907767,CY -3264907768,3264907775,GR -3264907776,3264907919,CY -3264907920,3264907927,GR -3264907928,3264907935,CY -3264907936,3264907939,GR -3264907940,3264907963,CY -3264907964,3264907971,GR -3264907972,3264907987,CY -3264907988,3264907991,GR -3264907992,3264908007,CY -3264908008,3264908019,GR -3264908020,3264908023,CY -3264908024,3264908031,GR -3264908032,3264908063,CY -3264908064,3264908071,GR -3264908072,3264908095,CY -3264908096,3264908103,GR -3264908104,3264908111,CY -3264908112,3264908119,GR -3264908120,3264908167,CY -3264908168,3264908175,GR -3264908176,3264908183,CY -3264908184,3264908191,GR -3264908192,3264908223,CY -3264908224,3264908255,GR -3264908256,3264908286,CY -3264908287,3264908799,GR +3264905216,3264908799,CY 3264908800,3264909055,GB -3264909056,3264909311,GR -3264909312,3264909639,CY -3264909640,3264909647,GR -3264909648,3264909655,CY -3264909656,3264909663,GR -3264909664,3264910590,CY -3264910591,3264910591,GR -3264910592,3264910607,CY -3264910608,3264910623,GR -3264910624,3264910655,CY -3264910656,3264910671,GR -3264910672,3264910696,CY -3264910697,3264910699,GR -3264910700,3264910707,CY -3264910708,3264910719,GR -3264910720,3264910815,CY -3264910816,3264911103,GR -3264911104,3264911651,CY -3264911652,3264911655,GR -3264911656,3264911679,CY -3264911680,3264911703,GR -3264911704,3264911743,CY -3264911744,3264911807,GR -3264911808,3264912131,CY -3264912132,3264912135,GR -3264912136,3264912139,CY -3264912140,3264912143,GR -3264912144,3264912147,CY -3264912148,3264912151,GR -3264912152,3264912167,CY -3264912168,3264912183,GR -3264912184,3264912191,CY -3264912192,3264912219,GR -3264912220,3264912223,CY -3264912224,3264912231,GR -3264912232,3264912235,CY -3264912236,3264912239,GR -3264912240,3264912243,CY -3264912244,3264912251,GR -3264912252,3264912263,CY -3264912264,3264912279,GR -3264912280,3264912283,CY -3264912284,3264912287,GR -3264912288,3264912295,CY -3264912296,3264912319,GR -3264912320,3264912655,CY -3264912656,3264912663,GR -3264912664,3264912815,CY -3264912816,3264912839,GR -3264912840,3264912843,CY -3264912844,3264912863,GR -3264912864,3264912879,CY -3264912880,3264912895,GR -3264912896,3264913151,CY -3264913152,3264913183,GR -3264913184,3264913191,CY -3264913192,3264913199,GR -3264913200,3264913223,CY -3264913224,3264913231,GR -3264913232,3264913243,CY -3264913244,3264913263,GR -3264913264,3264913279,CY -3264913280,3264913295,GR -3264913296,3264913299,CY -3264913300,3264913303,GR -3264913304,3264913311,CY -3264913312,3264913327,GR -3264913328,3264913375,CY -3264913376,3264913383,GR -3264913384,3264913399,CY -3264913400,3264913407,GR +3264909056,3264913407,CY 3264913408,3264917247,GB 3264917248,3264917375,NL 3264917376,3264921599,GB @@ -80289,7 +91844,9 @@ 3265467520,3265467523,ES 3265467524,3265527055,DE 3265527056,3265527059,ES -3265527060,3265527807,DE +3265527060,3265527063,DE +3265527064,3265527071,SE +3265527072,3265527807,DE 3265527808,3265569279,GB 3265569280,3265569791,AE 3265569792,3265582335,GB @@ -80317,14 +91874,12 @@ 3265604096,3265604351,SA 3265604352,3265604607,FR 3265604608,3265604863,CH +3265604864,3265605119,RU 3265605120,3265605375,UA 3265605376,3265605631,CZ 3265605632,3265605887,PL 3265605888,3265606143,FR -3265606144,3265606399,RU -3265606400,3265606655,DE 3265606656,3265606911,AT -3265606912,3265607167,FR 3265607168,3265607423,PL 3265607424,3265607935,DK 3265607936,3265608191,CZ @@ -80402,7 +91957,7 @@ 3265918976,3265919231,NL 3265919232,3265919487,FR 3265919488,3265919743,RU -3265919744,3265919999,DK +3265919744,3265919999,DE 3265920000,3265920255,CZ 3265920256,3265920511,TR 3265920512,3265921023,GB @@ -80488,7 +92043,9 @@ 3266445312,3266510847,NL 3266510848,3266543615,ES 3266543616,3266576383,IT -3266576384,3266634391,DE +3266576384,3266617327,DE +3266617328,3266617343,GB +3266617344,3266634391,DE 3266634392,3266634399,EE 3266634400,3266641919,DE 3266641920,3266707455,PL @@ -80505,8 +92062,8 @@ 3266799616,3266800127,GB 3266800128,3266800319,NL 3266800320,3266800639,GB -3266800640,3266800703,NL -3266800704,3266800727,GB +3266800640,3266800695,NL +3266800696,3266800727,GB 3266800728,3266800735,NL 3266800736,3266800895,GB 3266800896,3266801215,NL @@ -80520,10 +92077,10 @@ 3266801616,3266801647,NL 3266801648,3266801663,GB 3266801664,3266801919,NL -3266801920,3266802943,GB -3266802944,3266803199,NL -3266803200,3266803727,GB -3266803728,3266803831,NL +3266801920,3266803727,GB +3266803728,3266803751,NL +3266803752,3266803759,GB +3266803760,3266803831,NL 3266803832,3266804223,GB 3266804224,3266804479,NL 3266804480,3266804735,GB @@ -80706,9 +92263,7 @@ 3267626240,3267626495,BE 3267626496,3267626751,ES 3267626752,3267627007,RU -3267627008,3267627167,DE -3267627168,3267627199,EU -3267627200,3267627343,DE +3267627008,3267627343,DE 3267627344,3267627359,EU 3267627360,3267627423,DE 3267627424,3267627431,EU @@ -80723,9 +92278,11 @@ 3267628800,3267629055,HU 3267629056,3267629311,CZ 3267629312,3267629567,DK -3267629568,3267629759,BE -3267629760,3267629807,EU -3267629808,3267629823,BE +3267629568,3267629711,BE +3267629712,3267629719,EU +3267629720,3267629759,BE +3267629760,3267629791,EU +3267629792,3267629823,BE 3267629824,3267630079,GR 3267630080,3267630591,GB 3267630592,3267630847,SK @@ -80800,12 +92357,13 @@ 3267644416,3267644671,DE 3267644672,3267644927,SI 3267644928,3267644935,EU -3267644936,3267644959,BE +3267644936,3267644943,BE +3267644944,3267644951,EU +3267644952,3267644959,BE 3267644960,3267644975,FR 3267644976,3267644983,GB 3267644984,3267645055,BE -3267645056,3267645183,GB -3267645184,3267645439,EU +3267645056,3267645439,EU 3267645440,3267645695,GB 3267645696,3267645951,DE 3267645952,3267646207,DK @@ -80813,16 +92371,17 @@ 3267647488,3267647743,GB 3267647744,3267647999,SI 3267648000,3267648255,DE -3267648256,3267648431,EU +3267648256,3267648383,EU +3267648384,3267648399,BG +3267648400,3267648415,GB +3267648416,3267648431,EU 3267648432,3267648447,BE 3267648448,3267648479,FR 3267648480,3267648511,GB 3267648512,3267648767,DE 3267648768,3267649023,NL 3267649024,3267649279,RU -3267649280,3267649295,DE -3267649296,3267649311,EU -3267649312,3267649471,DE +3267649280,3267649471,DE 3267649472,3267649791,EU 3267649792,3267650303,NL 3267650304,3267650319,EU @@ -80854,8 +92413,8 @@ 3267657488,3267657503,EU 3267657504,3267657567,RO 3267657568,3267657663,EU -3267657664,3267657679,RO -3267657680,3267657983,EU +3267657664,3267657695,RO +3267657696,3267657983,EU 3267657984,3267658239,GB 3267658240,3267658495,IT 3267658496,3267658751,EU @@ -80864,24 +92423,29 @@ 3267659520,3267659775,IT 3267659776,3267660287,EU 3267660288,3267660543,CH -3267660544,3267660671,ES +3267660544,3267660575,ES +3267660576,3267660591,EU +3267660592,3267660671,ES 3267660672,3267661311,EU 3267661312,3267661567,SK -3267661568,3267661679,GB +3267661568,3267661583,GB +3267661584,3267661599,EU +3267661600,3267661679,GB 3267661680,3267661695,EU 3267661696,3267661823,GB 3267661824,3267661847,ES 3267661848,3267661855,EU 3267661856,3267661887,ES 3267661888,3267662023,EU -3267662024,3267662031,ES -3267662032,3267662047,EU +3267662024,3267662039,ES +3267662040,3267662047,EU 3267662048,3267662079,ES 3267662080,3267662847,EU 3267662848,3267662879,IE 3267662880,3267662887,EU 3267662888,3267662895,GB -3267662896,3267662951,IE +3267662896,3267662911,EU +3267662912,3267662951,IE 3267662952,3267662959,GB 3267662960,3267662991,IE 3267662992,3267663007,EU @@ -80915,12 +92479,12 @@ 3267666544,3267666575,EU 3267666576,3267667199,GB 3267667200,3267667455,NL -3267667456,3267667967,GB +3267667456,3267667759,GB +3267667760,3267667775,EU +3267667776,3267667967,GB 3267667968,3267670015,EU 3267670016,3267671551,ZA -3267671552,3267671679,DE -3267671680,3267671711,EU -3267671712,3267671807,DE +3267671552,3267671807,DE 3267671808,3267672063,NO 3267672064,3267672223,DE 3267672224,3267672255,EU @@ -80929,26 +92493,25 @@ 3267672576,3267672831,AT 3267672832,3267672847,FR 3267672848,3267672855,EU -3267672856,3267672927,FR -3267672928,3267672943,EU -3267672944,3267672999,FR -3267673000,3267673007,EU -3267673008,3267673015,FR +3267672856,3267672935,FR +3267672936,3267672943,EU +3267672944,3267673015,FR 3267673016,3267673023,EU 3267673024,3267673087,FR 3267673088,3267673439,DE 3267673440,3267673471,EU -3267673472,3267673479,DE -3267673480,3267673487,EU -3267673488,3267673503,DE +3267673472,3267673503,DE 3267673504,3267673599,EU 3267673600,3267673759,DE 3267673760,3267673807,EU 3267673808,3267673855,DE 3267673856,3267674111,EU 3267674112,3267674127,NL -3267674128,3267674159,GB -3267674160,3267674207,BE +3267674128,3267674143,EU +3267674144,3267674159,GB +3267674160,3267674167,BE +3267674168,3267674175,EU +3267674176,3267674207,BE 3267674208,3267674239,GB 3267674240,3267674303,BE 3267674304,3267674335,EU @@ -80988,8 +92551,8 @@ 3267680000,3267680255,CZ 3267680256,3267680767,SK 3267680768,3267681279,EU -3267681280,3267681319,FR -3267681320,3267681327,EU +3267681280,3267681311,FR +3267681312,3267681327,EU 3267681328,3267681503,FR 3267681504,3267681511,EU 3267681512,3267681535,FR @@ -81004,22 +92567,20 @@ 3267682560,3267683335,EU 3267683336,3267683359,PL 3267683360,3267683391,EU -3267683392,3267683471,PL -3267683472,3267683519,EU +3267683392,3267683463,PL +3267683464,3267683519,EU 3267683520,3267683527,PL 3267683528,3267683535,EU 3267683536,3267683551,PL 3267683552,3267683567,EU 3267683568,3267683575,PL -3267683576,3267684383,EU -3267684384,3267684399,GB -3267684400,3267684407,EU -3267684408,3267684783,GB -3267684784,3267684791,EU -3267684792,3267685119,GB +3267683576,3267683919,EU +3267683920,3267683935,PL +3267683936,3267684383,EU +3267684384,3267685119,GB 3267685120,3267685375,DE 3267685376,3267685887,NL -3267685888,3267686399,GB +3267685888,3267686399,CH 3267686400,3267687935,EU 3267687936,3267688191,IE 3267688192,3267688703,DE @@ -81035,7 +92596,12 @@ 3267690272,3267690495,FR 3267690496,3267691519,FI 3267691520,3267692543,SE -3267692544,3267711999,FI +3267692544,3267710959,FI +3267710960,3267710963,LV +3267710964,3267710967,NO +3267710968,3267710971,DK +3267710972,3267710975,SE +3267710976,3267711999,FI 3267712000,3267712255,SE 3267712256,3267729311,FI 3267729312,3267729343,AX @@ -81115,9 +92681,7 @@ 3268223232,3268224767,EU 3268224768,3268225023,US 3268225024,3268226367,EU -3268226368,3268226655,GB -3268226656,3268226687,EU -3268226688,3268226815,GB +3268226368,3268226815,GB 3268226816,3268227327,EU 3268227328,3268227391,GB 3268227392,3268227519,EU @@ -81171,9 +92735,7 @@ 3268238360,3268238367,DE 3268238368,3268238463,GB 3268238464,3268238471,DE -3268238472,3268238759,GB -3268238760,3268238767,EU -3268238768,3268238847,GB +3268238472,3268238847,GB 3268238848,3268239103,EU 3268239104,3268239359,GB 3268239360,3268239583,EU @@ -81387,10 +92949,8 @@ 3268739072,3268739327,DE 3268739328,3268739583,PL 3268739584,3268739839,DE -3268739840,3268740095,CH 3268740096,3268740351,IL 3268740352,3268740607,DE -3268740608,3268740863,UA 3268740864,3268741119,CH 3268741120,3268741375,FR 3268741376,3268741887,LV @@ -81458,7 +93018,11 @@ 3268935680,3269057535,GB 3269057536,3269058047,NL 3269058048,3269066751,GB -3269066752,3269131555,SE +3269066752,3269118087,SE +3269118088,3269118091,GB +3269118092,3269122343,SE +3269122344,3269122351,GB +3269122352,3269131555,SE 3269131556,3269131559,NO 3269131560,3269132287,SE 3269132288,3269197823,GR @@ -81502,8 +93066,8 @@ 3269279488,3269279671,EU 3269279672,3269279679,CH 3269279680,3269279743,EU -3269279744,3269279999,GB -3269280000,3269280767,NL +3269279744,3269280127,GB +3269280128,3269280767,NL 3269280768,3269281023,GB 3269281024,3269281279,DE 3269281280,3269282047,EU @@ -81525,7 +93089,8 @@ 3269285216,3269285311,EU 3269285312,3269285327,DE 3269285328,3269285343,FR -3269285344,3269285631,EU +3269285344,3269285375,GB +3269285376,3269285631,EU 3269285632,3269285887,DE 3269285888,3269286399,EU 3269286400,3269286463,DE @@ -81604,7 +93169,9 @@ 3269320704,3269321727,GB 3269321728,3269322239,EU 3269322240,3269322495,DE -3269322496,3269322679,EU +3269322496,3269322655,EU +3269322656,3269322671,DE +3269322672,3269322679,EU 3269322680,3269322683,DE 3269322684,3269322751,EU 3269322752,3269323263,DE @@ -81837,7 +93404,6 @@ 3270653440,3270653695,NL 3270653696,3270653951,GB 3270653952,3270654207,ES -3270654208,3270654463,EU 3270654464,3270654719,BE 3270654720,3270655231,UA 3270655232,3270655487,IT @@ -81897,6 +93463,33 @@ 3270973952,3270974463,FR 3270974464,3270974975,IT 3270974976,3270975487,NL +3270975488,3270975743,RU +3270975744,3270975999,UA +3270976000,3270976255,FR +3270976256,3270976511,UA +3270976512,3270976767,HU +3270976768,3270977023,UA +3270977024,3270977279,NL +3270977280,3270977535,RS +3270977536,3270977791,RU +3270977792,3270978047,PL +3270978048,3270978303,UA +3270978304,3270979071,FI +3270979072,3270979327,PL +3270979328,3270979583,AT +3270979584,3270979839,LV +3270979840,3270980095,GB +3270980096,3270980351,AM +3270980352,3270980607,RU +3270980608,3270980863,MD +3270980864,3270981631,RU +3270981632,3270981887,IT +3270982144,3270982399,RU +3270982400,3270982655,TR +3270982656,3270982911,UA +3270982912,3270983167,DK +3270983168,3270983423,PL +3270983424,3270983679,NL 3270983680,3270991871,GB 3270991872,3271000063,NL 3271000064,3271008255,RU @@ -82081,7 +93674,10 @@ 3271426304,3271491583,FR 3271491584,3271495679,DK 3271495680,3271495807,SE -3271495808,3271557119,DK +3271495808,3271501663,DK +3271501664,3271501679,DE +3271501680,3271501695,SE +3271501696,3271557119,DK 3271557120,3271589887,BE 3271589888,3271688191,NO 3271688192,3271691775,EU @@ -82090,7 +93686,7 @@ 3271692288,3271694847,EU 3271694848,3271695103,GB 3271695104,3271696383,EU -3271696384,3271698431,DE +3271696384,3271698431,GB 3271698432,3271704575,EU 3271704576,3271712767,RU 3271712768,3271716863,LV @@ -82111,6 +93707,7 @@ 3271744512,3271745023,AT 3271745024,3271745535,PL 3271745536,3271746047,GB +3271746048,3271746559,RU 3271746560,3271747071,CH 3271747072,3271747583,KZ 3271747584,3271748095,RU @@ -82148,7 +93745,6 @@ 3271805952,3271806975,UA 3271806976,3271807999,EU 3271808000,3271810047,DE -3271810048,3271811071,PL 3271811072,3271812095,UA 3271812096,3271813119,ES 3271813120,3271814143,PL @@ -82161,9 +93757,7 @@ 3271821247,3271821247,AT 3271821248,3271847487,DE 3271847488,3271847495,US -3271847496,3271851879,DE -3271851880,3271851887,NL -3271851888,3271884799,DE +3271847496,3271884799,DE 3271884800,3271901183,UA 3271901184,3271909375,ES 3271909376,3271909887,RO @@ -82180,7 +93774,6 @@ 3271915520,3271916031,NL 3271916032,3271916543,GB 3271916544,3271917055,UA -3271917056,3271917567,RO 3271917568,3271925759,RU 3271925760,3271926015,DE 3271926016,3271926271,MD @@ -82223,14 +93816,11 @@ 3272040448,3272048639,FR 3272048640,3272056831,NL 3272056832,3272065023,RU -3272065024,3272065087,NL -3272065088,3272065151,GB -3272065152,3272065183,NL -3272065184,3272065215,GB +3272065024,3272065215,GB 3272065216,3272065279,NL 3272065280,3272065343,GB -3272065344,3272065503,NL -3272065504,3272065535,GB +3272065344,3272065439,NL +3272065440,3272065535,GB 3272065536,3272065551,NL 3272065552,3272065559,GB 3272065560,3272065575,NL @@ -82243,14 +93833,12 @@ 3272065824,3272066335,GB 3272066336,3272066431,NL 3272066432,3272066815,GB -3272066816,3272066879,NL -3272066880,3272066911,GB +3272066816,3272066847,NL +3272066848,3272066911,GB 3272066912,3272066943,NL 3272066944,3272067063,GB 3272067064,3272067071,NL -3272067072,3272067327,GB -3272067328,3272067583,NL -3272067584,3272067615,GB +3272067072,3272067615,GB 3272067616,3272067647,NL 3272067648,3272067711,GB 3272067712,3272067775,NL @@ -82260,16 +93848,9 @@ 3272067872,3272067887,NL 3272067888,3272067927,GB 3272067928,3272067967,NL -3272067968,3272068095,GB -3272068096,3272068351,NL -3272068352,3272068607,GB -3272068608,3272068863,NL -3272068864,3272069119,GB -3272069120,3272069247,NL -3272069248,3272069343,GB +3272067968,3272069343,GB 3272069344,3272069375,IT -3272069376,3272069439,NL -3272069440,3272069503,GB +3272069376,3272069503,GB 3272069504,3272069567,NL 3272069568,3272069599,GB 3272069600,3272069603,NL @@ -82289,28 +93870,24 @@ 3272070624,3272070639,NL 3272070640,3272070647,GB 3272070648,3272070655,NL -3272070656,3272070911,GB -3272070912,3272071167,NL -3272071168,3272071247,GB +3272070656,3272071247,GB 3272071248,3272071283,NL 3272071284,3272071287,GB 3272071288,3272071295,NL -3272071296,3272071327,GB -3272071328,3272071551,NL -3272071552,3272071615,GB +3272071296,3272071359,GB +3272071360,3272071423,NL +3272071424,3272071615,GB 3272071616,3272071647,NL -3272071648,3272071935,GB -3272071936,3272072063,NL -3272072064,3272072191,GB -3272072192,3272073215,NL -3272073216,3272081407,GB +3272071648,3272072319,GB +3272072320,3272072959,NL +3272072960,3272081407,GB 3272081408,3272081919,PT 3272081920,3272082687,CV 3272082688,3272083455,PT 3272083456,3272083711,ST 3272083712,3272084735,PT 3272084736,3272084991,CV -3272084992,3272085503,GW +3272084992,3272085503,PT 3272085504,3272086015,AO 3272086016,3272086527,ST 3272086528,3272086655,AO @@ -82492,7 +94069,9 @@ 3272216912,3272216927,DE 3272216928,3272216959,EU 3272216960,3272217007,GB -3272217008,3272217215,EU +3272217008,3272217087,EU +3272217088,3272217151,GB +3272217152,3272217215,EU 3272217216,3272217279,BE 3272217280,3272217303,DE 3272217304,3272217311,BE @@ -82618,29 +94197,33 @@ 3272358912,3272359935,NL 3272359936,3272368127,RU 3272368128,3272376319,KZ -3272376320,3272384511,SK +3272376320,3272376447,SK +3272376448,3272376479,SR +3272376480,3272376495,SK +3272376496,3272376519,SR +3272376520,3272376735,SK +3272376736,3272376751,SR +3272376752,3272384511,SK 3272384512,3272392703,LT 3272392704,3272400895,AT 3272400896,3272400903,EU 3272400904,3272400927,GB 3272400928,3272401023,EU 3272401024,3272401087,GB -3272401088,3272401183,EU -3272401184,3272401199,GB -3272401200,3272401407,EU +3272401088,3272401279,EU +3272401280,3272401407,NL 3272401408,3272401919,ES 3272401920,3272401951,GB -3272401952,3272401983,EU -3272401984,3272402015,DE -3272402016,3272402031,EU +3272401952,3272401967,EU +3272401968,3272401983,GB +3272401984,3272402031,DE 3272402032,3272402039,GB 3272402040,3272402047,US 3272402048,3272402079,EU 3272402080,3272402111,SE 3272402112,3272402175,EU 3272402176,3272402191,GB -3272402192,3272402239,EU -3272402240,3272402303,GB +3272402192,3272402303,EU 3272402304,3272402431,FR 3272402432,3272402447,EU 3272402448,3272402455,FR @@ -82648,14 +94231,13 @@ 3272402560,3272402623,GB 3272402624,3272402687,EU 3272402688,3272402815,SE -3272402816,3272402879,GB -3272402880,3272403007,EU +3272402816,3272403007,EU 3272403008,3272403023,FR 3272403024,3272403039,EU 3272403040,3272403055,DE 3272403056,3272403071,NL 3272403072,3272403199,FR -3272403200,3272403455,EU +3272403200,3272403455,SE 3272403456,3272404991,FR 3272404992,3272406015,DE 3272406016,3272407039,NL @@ -82862,6 +94444,37 @@ 3272899072,3272899583,GB 3272899584,3272900095,UA 3272900096,3272900607,LV +3272900608,3272900863,RU +3272900864,3272901119,AT +3272901120,3272901375,UA +3272901376,3272901631,PL +3272901632,3272901887,AT +3272901888,3272902143,DE +3272902144,3272902399,PL +3272902400,3272902655,RU +3272902656,3272902911,IR +3272902912,3272903167,RU +3272903168,3272903423,PL +3272903424,3272903679,AT +3272903680,3272903935,RU +3272903936,3272904191,GB +3272904192,3272904447,SI +3272904448,3272904703,BE +3272904704,3272904959,NL +3272904960,3272905215,RO +3272905216,3272905727,CH +3272905728,3272905983,UA +3272905984,3272906239,FI +3272906240,3272906495,PL +3272906496,3272906751,EE +3272906752,3272907007,HU +3272907008,3272907263,HR +3272907264,3272907519,UA +3272907520,3272907775,GB +3272907776,3272908031,RO +3272908032,3272908287,CH +3272908288,3272908543,AT +3272908544,3272908799,DE 3272908800,3272910847,SK 3272910848,3272911359,NL 3272911360,3272911871,SK @@ -82901,9 +94514,7 @@ 3272936960,3272937087,DE 3272937088,3272937471,GB 3272937472,3272937535,DE -3272937536,3272937599,GB -3272937600,3272937631,DE -3272937632,3272937791,GB +3272937536,3272937791,GB 3272937792,3272937903,DE 3272937904,3272937919,GB 3272937920,3272937983,DE @@ -82988,7 +94599,9 @@ 3272966976,3272967103,GB 3272967104,3272967167,DE 3272967168,3272967423,GB -3272967424,3272968703,DE +3272967424,3272968191,DE +3272968192,3272968447,GB +3272968448,3272968703,DE 3272968704,3272968735,GB 3272968736,3272968879,DE 3272968880,3272968927,GB @@ -83088,9 +94701,11 @@ 3273023488,3273024511,PL 3273024512,3273025535,NL 3273025536,3273026559,RU -3273027584,3273028607,UA +3273026560,3273028607,UA 3273028608,3273029631,PL -3273029632,3273030655,DK +3273029632,3273029887,CH +3273029888,3273030143,GB +3273030144,3273030655,RU 3273030656,3273031679,PL 3273031680,3273032191,GB 3273032192,3273033215,UA @@ -83122,8 +94737,8 @@ 3273052040,3273052047,NL 3273052048,3273052063,GR 3273052064,3273052087,IT -3273052088,3273052111,GR -3273052112,3273052415,IT +3273052088,3273052095,DE +3273052096,3273052415,IT 3273052416,3273052671,GB 3273052672,3273052927,FR 3273052928,3273053183,DE @@ -83142,9 +94757,7 @@ 3273056128,3273056255,HK 3273056256,3273064447,MD 3273064448,3273129983,PT -3273129984,3273131999,DK -3273132000,3273132015,NO -3273132016,3273138175,DK +3273129984,3273138175,DK 3273138176,3273146367,BG 3273146368,3273148415,RU 3273148416,3273150463,LU @@ -83207,8 +94820,8 @@ 3273326984,3273326987,DE 3273326988,3273326991,EU 3273326992,3273327047,DE -3273327048,3273327279,EU -3273327280,3273327287,DE +3273327048,3273327263,EU +3273327264,3273327287,DE 3273327288,3273327359,EU 3273327360,3273327423,IE 3273327424,3273327511,GB @@ -83218,8 +94831,8 @@ 3273328512,3273328639,DE 3273328640,3273329199,GB 3273329200,3273329215,DE -3273329216,3273329311,GB -3273329312,3273329407,EU +3273329216,3273329327,GB +3273329328,3273329407,EU 3273329408,3273329423,GB 3273329424,3273329439,DE 3273329440,3273330175,GB @@ -83360,7 +94973,8 @@ 3273372672,3273372927,GB 3273372928,3273373183,NL 3273373184,3273373455,GB -3273373456,3273373695,DE +3273373456,3273373567,DE +3273373568,3273373695,GB 3273373696,3273375231,EU 3273375232,3273375551,DE 3273375552,3273375743,EU @@ -83420,9 +95034,7 @@ 3273390208,3273390335,EU 3273390336,3273390463,DE 3273390464,3273391103,EU -3273391104,3273391327,DE -3273391328,3273391343,EU -3273391344,3273391359,DE +3273391104,3273391359,DE 3273391360,3273391871,EU 3273391872,3273392127,DE 3273392128,3273392639,UA @@ -83455,17 +95067,15 @@ 3273438208,3273438719,IL 3273438720,3273439231,PL 3273439232,3273439743,RO +3273439744,3273440255,DE 3273440256,3273440767,RO 3273440768,3273441279,AT -3273441280,3273441463,FR -3273441464,3273441535,GB -3273441536,3273441607,FR -3273441608,3273441615,GB -3273441616,3273441631,FR -3273441632,3273441647,GB +3273441280,3273441599,GB +3273441600,3273441607,FR +3273441608,3273441647,GB 3273441648,3273441759,FR -3273441760,3273441791,GB -3273441792,3273442127,FR +3273441760,3273442111,GB +3273442112,3273442127,FR 3273442128,3273442143,GB 3273442144,3273442151,FR 3273442152,3273442303,GB @@ -83473,14 +95083,12 @@ 3273442332,3273442335,GB 3273442336,3273442367,FR 3273442368,3273442431,GB -3273442432,3273442815,FR -3273442816,3273443071,GB +3273442432,3273442559,FR +3273442560,3273443071,GB 3273443072,3273443080,FR 3273443081,3273443327,GB 3273443328,3273443839,FR -3273443840,3273444095,GB -3273444096,3273444351,FR -3273444352,3273449471,GB +3273443840,3273449471,GB 3273449472,3273457663,CH 3273457664,3273523199,HR 3273523200,3273588735,DE @@ -83736,7 +95344,6 @@ 3274414336,3274414591,CH 3274414592,3274414847,NL 3274414848,3274415103,IE -3274415104,3274415359,GR 3274415360,3274415615,GB 3274415616,3274415871,NL 3274415872,3274416127,SI @@ -83986,7 +95593,7 @@ 3274700800,3274701055,UA 3274701056,3274701311,DE 3274701312,3274701567,TJ -3274701568,3274702079,IT +3274701568,3274701823,IT 3274702080,3274702335,UA 3274702336,3274702591,SE 3274702592,3274702847,KZ @@ -84199,7 +95806,7 @@ 3274964928,3274964991,GB 3274964992,3275030527,DE 3275030528,3275096063,ES -3275096064,3275105279,RU +3275096064,3275104767,RU 3275105280,3275105791,GB 3275105792,3275106303,NL 3275106304,3275106815,RU @@ -84209,7 +95816,6 @@ 3275108352,3275108863,FR 3275108864,3275109375,PL 3275109376,3275109887,UA -3275109888,3275110399,DE 3275110400,3275110911,NL 3275110912,3275111423,GB 3275111424,3275111935,IT @@ -84230,7 +95836,8 @@ 3275141632,3275142143,GE 3275142144,3275142655,KG 3275142656,3275143167,SE -3275143168,3275145215,PL +3275143168,3275144703,PL +3275144704,3275145215,HR 3275145216,3275153407,RU 3275153408,3275161599,GB 3275161600,3275227135,ES @@ -84240,7 +95847,9 @@ 3275371776,3275372031,TJ 3275372032,3275374591,RU 3275374592,3275382783,GB -3275382784,3275390975,SE +3275382784,3275382887,SE +3275382888,3275382891,NO +3275382892,3275390975,SE 3275390976,3275399167,GB 3275399168,3275407359,AT 3275407360,3275415551,GB @@ -84249,40 +95858,42 @@ 3275423752,3275423775,EU 3275423776,3275423807,GB 3275423808,3275423871,EU -3275423872,3275424255,GB -3275424256,3275425791,EU -3275425792,3275426687,GB -3275426688,3275426815,EU -3275426816,3275427271,GB +3275423872,3275424871,GB +3275424872,3275424879,EU +3275424880,3275424975,GB +3275424976,3275425791,EU +3275425792,3275427271,GB 3275427272,3275427279,EU -3275427280,3275427583,GB -3275427584,3275427839,EU -3275427840,3275428375,GB -3275428376,3275428383,EU -3275428384,3275428399,GB -3275428400,3275429887,EU +3275427280,3275427615,GB +3275427616,3275427647,EU +3275427648,3275427711,GB +3275427712,3275427839,EU +3275427840,3275428399,GB +3275428400,3275428415,EU +3275428416,3275428447,GB +3275428448,3275429887,EU 3275429888,3275430143,GB 3275430144,3275430271,EU 3275430272,3275430399,GB 3275430400,3275430591,EU 3275430592,3275430623,GB 3275430624,3275431935,EU -3275431936,3275432703,GB -3275432704,3275433983,EU +3275431936,3275432831,GB +3275432832,3275433983,EU 3275433984,3275437567,GB 3275437568,3275438079,EU -3275438080,3275438607,GB -3275438608,3275440127,EU +3275438080,3275438639,GB +3275438640,3275438719,EU +3275438720,3275439103,GB +3275439104,3275440127,EU 3275440128,3275440639,GB 3275440640,3275442175,EU 3275442176,3275442719,GB 3275442720,3275444223,EU 3275444224,3275444735,GB 3275444736,3275446271,EU -3275446272,3275446991,GB -3275446992,3275447007,EU -3275447008,3275447039,GB -3275447040,3275448319,EU +3275446272,3275447103,GB +3275447104,3275448319,EU 3275448320,3275449519,GB 3275449520,3275449527,FR 3275449528,3275450879,GB @@ -84291,21 +95902,17 @@ 3275451264,3275452415,EU 3275452416,3275454127,GB 3275454128,3275454143,EU -3275454144,3275454263,GB -3275454264,3275454271,EU -3275454272,3275454367,GB -3275454368,3275454463,EU -3275454464,3275456415,GB -3275456416,3275456511,EU -3275456512,3275457023,GB +3275454144,3275457023,GB 3275457024,3275457791,FK 3275457792,3275458559,GB 3275458560,3275460095,IE 3275460096,3275460607,EU 3275460608,3275460863,HK 3275460864,3275463523,GB -3275463524,3275463679,EU -3275463680,3275464031,GB +3275463524,3275463527,EU +3275463528,3275463639,GB +3275463640,3275463647,EU +3275463648,3275464031,GB 3275464032,3275464047,IE 3275464048,3275468655,GB 3275468656,3275468671,IE @@ -84315,10 +95922,8 @@ 3275468768,3275468799,IE 3275468800,3275469071,GB 3275469072,3275469087,IE -3275469088,3275469695,GB -3275469696,3275469951,EU -3275469952,3275469983,GB -3275469984,3275489279,EU +3275469088,3275472895,GB +3275472896,3275489279,EU 3275489280,3275497471,GB 3275497472,3275505663,DE 3275505664,3275506175,PL @@ -84334,14 +95939,16 @@ 3275509984,3275510015,PT 3275510016,3275510079,SE 3275510080,3275510143,ES -3275510208,3275510271,SE -3275510272,3275510399,IE +3275510144,3275510207,FI +3275510336,3275510399,IE 3275510400,3275510463,NL 3275510464,3275510527,GB 3275510528,3275510559,PL 3275510560,3275510591,DE 3275510624,3275510655,EE 3275510656,3275510687,FR +3275510720,3275510751,GB +3275510752,3275510783,NL 3275510784,3275510911,RU 3275510912,3275511167,GB 3275511168,3275511295,LV @@ -84392,7 +95999,6 @@ 3275542528,3275543551,DE 3275543552,3275544575,NL 3275544576,3275545599,PL -3275545600,3275546623,EU 3275546624,3275547647,UA 3275547648,3275548671,RU 3275548672,3275549695,IL @@ -84580,6 +96186,7 @@ 3275628032,3275628543,IL 3275628544,3275629567,RU 3275629568,3275630079,UA +3275630080,3275630591,RU 3275630592,3275631103,PL 3275631104,3275631615,FR 3275631616,3275632127,DE @@ -84625,7 +96232,7 @@ 3275789312,3275789823,UA 3275789824,3275790335,PL 3275790336,3275790847,MD -3275790848,3275791359,DK +3275790848,3275791359,UA 3275791360,3275791871,RU 3275791872,3275792383,PL 3275792384,3275792895,BG @@ -84647,9 +96254,7 @@ 3275808768,3275816959,UA 3275816960,3275818207,CH 3275818208,3275818215,DE -3275818216,3275881335,CH -3275881336,3275881343,DE -3275881344,3275882495,CH +3275818216,3275882495,CH 3275882496,3275884543,DE 3275884544,3275886591,IT 3275886592,3275888639,PL @@ -84669,7 +96274,6 @@ 3275902720,3275902975,UA 3275902976,3275903231,FR 3275903232,3275903487,GB -3275903488,3275903999,DE 3275904000,3275904255,RU 3275904256,3275904511,CH 3275904512,3275904767,PL @@ -84694,7 +96298,6 @@ 3275909888,3275910143,SI 3275910144,3275910399,RU 3275910400,3275910655,DK -3275910656,3275910911,CH 3275910912,3275911167,DE 3275911168,3275911423,FR 3275911424,3275911679,RO @@ -84711,6 +96314,7 @@ 3275914496,3275914751,BG 3275914752,3275915007,RU 3275915008,3275915263,PT +3275915264,3275915775,SA 3275915776,3275916287,SE 3275916288,3275916799,US 3275916800,3275917311,NL @@ -84763,9 +96367,7 @@ 3275930296,3275931647,ME 3275931648,3275939839,UA 3275939840,3275948031,GB -3275948032,3275965267,SE -3275965268,3275965271,FI -3275965272,3276013567,SE +3275948032,3276013567,SE 3276013568,3276014087,FR 3276014088,3276014095,GB 3276014096,3276014151,FR @@ -84774,11 +96376,17 @@ 3276014192,3276014207,GB 3276014208,3276014255,FR 3276014256,3276014263,GB -3276014264,3276014471,FR +3276014264,3276014335,FR +3276014336,3276014343,GB +3276014344,3276014471,FR 3276014472,3276014495,GB -3276014496,3276014887,FR +3276014496,3276014775,FR +3276014776,3276014783,GB +3276014784,3276014887,FR 3276014888,3276014895,IE -3276014896,3276015103,FR +3276014896,3276014943,FR +3276014944,3276014951,GB +3276014952,3276015103,FR 3276015104,3276015119,GB 3276015120,3276015199,FR 3276015200,3276015231,GB @@ -84786,11 +96394,15 @@ 3276015248,3276015263,GB 3276015264,3276015295,FR 3276015296,3276015327,GB -3276015328,3276015415,FR +3276015328,3276015383,FR +3276015384,3276015391,GB +3276015392,3276015415,FR 3276015416,3276015423,GB 3276015424,3276015559,FR -3276015560,3276015583,GB -3276015584,3276015879,FR +3276015560,3276015599,GB +3276015600,3276015855,FR +3276015856,3276015863,GB +3276015864,3276015879,FR 3276015880,3276015887,GB 3276015888,3276016391,FR 3276016392,3276016399,GB @@ -84832,7 +96444,9 @@ 3276018096,3276018127,GB 3276018128,3276018143,FR 3276018144,3276018159,GB -3276018160,3276018375,FR +3276018160,3276018239,FR +3276018240,3276018271,GB +3276018272,3276018375,FR 3276018376,3276018383,GB 3276018384,3276018431,FR 3276018432,3276018447,GB @@ -84850,37 +96464,37 @@ 3276019136,3276019151,GB 3276019152,3276019463,FR 3276019464,3276019471,GB -3276019472,3276019503,FR +3276019472,3276019479,FR +3276019480,3276019487,GB +3276019488,3276019503,FR 3276019504,3276019511,GB 3276019512,3276019535,FR 3276019536,3276019543,GB 3276019544,3276019559,FR 3276019560,3276019599,GB 3276019600,3276019639,FR -3276019640,3276019647,GB -3276019648,3276019679,FR +3276019640,3276019663,GB +3276019664,3276019679,FR 3276019680,3276019687,GB 3276019688,3276019695,FR 3276019696,3276019703,GB -3276019704,3276019823,FR +3276019704,3276019711,FR +3276019712,3276019743,GB +3276019744,3276019823,FR 3276019824,3276019831,GB 3276019832,3276019839,FR 3276019840,3276019855,GB 3276019856,3276019863,FR -3276019864,3276019887,GB -3276019888,3276019919,FR +3276019864,3276019871,GB +3276019872,3276019919,FR 3276019920,3276019927,GB -3276019928,3276020367,FR -3276020368,3276020383,GB -3276020384,3276020399,FR -3276020400,3276020423,GB -3276020424,3276020431,FR -3276020432,3276020439,GB -3276020440,3276020495,FR -3276020496,3276020511,GB -3276020512,3276020559,FR -3276020560,3276020567,GB -3276020568,3276020623,FR +3276019928,3276019959,FR +3276019960,3276019967,GB +3276019968,3276020407,FR +3276020408,3276020415,GB +3276020416,3276020503,FR +3276020504,3276020511,GB +3276020512,3276020623,FR 3276020624,3276020631,GB 3276020632,3276020679,FR 3276020680,3276020687,GB @@ -84892,25 +96506,19 @@ 3276020944,3276020991,GB 3276020992,3276021591,FR 3276021592,3276021599,GB -3276021600,3276021863,FR -3276021864,3276021871,GB -3276021872,3276022039,FR -3276022040,3276022047,GB -3276022048,3276022087,FR -3276022088,3276022095,GB -3276022096,3276022127,FR +3276021600,3276022127,FR 3276022128,3276022143,GB 3276022144,3276022215,FR 3276022216,3276022223,GB 3276022224,3276022255,FR 3276022256,3276022271,GB -3276022272,3276022343,FR -3276022344,3276022351,GB -3276022352,3276022455,FR +3276022272,3276022455,FR 3276022456,3276022463,GB 3276022464,3276022479,FR 3276022480,3276022495,GB -3276022496,3276022519,FR +3276022496,3276022503,FR +3276022504,3276022511,GB +3276022512,3276022519,FR 3276022520,3276022527,GB 3276022528,3276022567,FR 3276022568,3276022639,GB @@ -84928,9 +96536,7 @@ 3276023072,3276023079,GB 3276023080,3276023103,FR 3276023104,3276023279,GB -3276023280,3276023687,FR -3276023688,3276023695,GB -3276023696,3276023727,FR +3276023280,3276023727,FR 3276023728,3276023743,GB 3276023744,3276023759,FR 3276023760,3276023767,GB @@ -84943,8 +96549,8 @@ 3276023952,3276023959,FR 3276023960,3276023967,GB 3276023968,3276024719,FR -3276024720,3276024831,GB -3276024832,3276025111,FR +3276024720,3276024767,GB +3276024768,3276025111,FR 3276025112,3276025135,GB 3276025136,3276025151,FR 3276025152,3276025159,GB @@ -84969,9 +96575,7 @@ 3276026224,3276026319,FR 3276026320,3276026351,GB 3276026352,3276026423,FR -3276026424,3276026431,GB -3276026432,3276026439,FR -3276026440,3276026447,GB +3276026424,3276026447,GB 3276026448,3276026527,FR 3276026528,3276026535,GB 3276026536,3276026543,FR @@ -85081,16 +96685,20 @@ 3276031744,3276032007,FR 3276032008,3276032015,GB 3276032016,3276032023,FR -3276032024,3276032031,GB -3276032032,3276032103,FR +3276032024,3276032047,GB +3276032048,3276032055,FR +3276032056,3276032063,GB +3276032064,3276032103,FR 3276032104,3276032111,GB -3276032112,3276032271,FR -3276032272,3276032303,GB +3276032112,3276032223,FR +3276032224,3276032255,GB +3276032256,3276032263,FR +3276032264,3276032303,GB 3276032304,3276032319,FR 3276032320,3276032343,GB 3276032344,3276032367,FR -3276032368,3276032383,GB -3276032384,3276032431,FR +3276032368,3276032415,GB +3276032416,3276032431,FR 3276032432,3276032479,GB 3276032480,3276032543,FR 3276032544,3276032559,GB @@ -85107,8 +96715,8 @@ 3276033232,3276033247,FR 3276033248,3276033279,GB 3276033280,3276033535,FR -3276033536,3276033647,GB -3276033648,3276033663,FR +3276033536,3276033655,GB +3276033656,3276033663,FR 3276033664,3276033695,GB 3276033696,3276033791,FR 3276033792,3276033823,GB @@ -85120,39 +96728,31 @@ 3276033880,3276033887,GB 3276033888,3276033927,FR 3276033928,3276033951,GB -3276033952,3276036095,FR -3276036096,3276036103,GB -3276036104,3276036111,FR -3276036112,3276036119,GB -3276036120,3276036191,FR -3276036192,3276036207,GB -3276036208,3276036223,FR -3276036224,3276036255,GB -3276036256,3276036271,FR -3276036272,3276036287,GB -3276036288,3276036303,FR -3276036304,3276036335,GB -3276036336,3276036343,FR -3276036344,3276036351,GB -3276036352,3276036383,FR +3276033952,3276036271,FR +3276036272,3276036279,DE +3276036280,3276036383,FR 3276036384,3276036415,GB 3276036416,3276036591,FR 3276036592,3276036607,GB -3276036608,3276037199,FR +3276036608,3276037127,FR +3276037128,3276037135,GB +3276037136,3276037199,FR 3276037200,3276037215,GB 3276037216,3276037359,FR 3276037360,3276037375,GB -3276037376,3276037695,FR -3276037696,3276037743,GB +3276037376,3276037703,FR +3276037704,3276037743,GB 3276037744,3276037887,FR 3276037888,3276037903,GB 3276037904,3276037959,FR 3276037960,3276037983,GB 3276037984,3276038047,FR 3276038048,3276038111,GB -3276038112,3276038143,FR -3276038144,3276038399,GB -3276038400,3276038703,FR +3276038112,3276038159,FR +3276038160,3276038399,GB +3276038400,3276038663,FR +3276038664,3276038671,GB +3276038672,3276038703,FR 3276038704,3276038719,GB 3276038720,3276038735,FR 3276038736,3276038767,GB @@ -85160,21 +96760,19 @@ 3276038800,3276038815,GB 3276038816,3276038847,FR 3276038848,3276038911,GB -3276038912,3276039199,FR -3276039200,3276039247,GB +3276038912,3276038919,FR +3276038920,3276039167,GB +3276039168,3276039215,FR +3276039216,3276039247,GB 3276039248,3276039279,FR 3276039280,3276039295,GB 3276039296,3276039327,FR 3276039328,3276039343,GB 3276039344,3276039391,FR 3276039392,3276039423,GB -3276039424,3276039551,FR -3276039552,3276039567,GB -3276039568,3276039647,FR +3276039424,3276039647,FR 3276039648,3276039663,GB -3276039664,3276039943,FR -3276039944,3276039951,GB -3276039952,3276039967,FR +3276039664,3276039967,FR 3276039968,3276040031,GB 3276040032,3276040063,FR 3276040064,3276040095,GB @@ -85188,7 +96786,9 @@ 3276040320,3276040327,GB 3276040328,3276040335,FR 3276040336,3276040367,GB -3276040368,3276040439,FR +3276040368,3276040391,FR +3276040392,3276040399,GB +3276040400,3276040439,FR 3276040440,3276040495,GB 3276040496,3276040543,FR 3276040544,3276040575,GB @@ -85208,8 +96808,8 @@ 3276041280,3276041311,GB 3276041312,3276041391,FR 3276041392,3276041407,GB -3276041408,3276041487,FR -3276041488,3276041503,GB +3276041408,3276041495,FR +3276041496,3276041503,GB 3276041504,3276041519,FR 3276041520,3276041535,GB 3276041536,3276041551,FR @@ -85222,22 +96822,18 @@ 3276041920,3276041951,GB 3276041952,3276041967,FR 3276041968,3276041983,GB -3276041984,3276041999,FR -3276042000,3276042007,GB -3276042008,3276042015,FR -3276042016,3276042047,GB -3276042048,3276042111,FR -3276042112,3276042143,GB +3276041984,3276042047,FR +3276042048,3276042143,GB 3276042144,3276042175,FR 3276042176,3276042191,GB 3276042192,3276042207,FR 3276042208,3276042239,GB -3276042240,3276042767,FR -3276042768,3276042815,GB +3276042240,3276042775,FR +3276042776,3276042815,GB 3276042816,3276042831,FR 3276042832,3276042847,GB -3276042848,3276044303,FR -3276044304,3276044319,GB +3276042848,3276044311,FR +3276044312,3276044319,GB 3276044320,3276044351,FR 3276044352,3276044359,GB 3276044360,3276044367,FR @@ -85268,10 +96864,8 @@ 3276045024,3276045039,GB 3276045040,3276045063,FR 3276045064,3276045071,GB -3276045072,3276045119,FR -3276045120,3276045127,GB -3276045128,3276045135,FR -3276045136,3276045151,GB +3276045072,3276045111,FR +3276045112,3276045151,GB 3276045152,3276045191,FR 3276045192,3276045199,GB 3276045200,3276045223,FR @@ -85290,9 +96884,9 @@ 3276045480,3276045487,GB 3276045488,3276045543,FR 3276045544,3276045551,GB -3276045552,3276045567,FR -3276045568,3276045599,GB -3276045600,3276045631,FR +3276045552,3276045583,FR +3276045584,3276045607,GB +3276045608,3276045631,FR 3276045632,3276045647,GB 3276045648,3276045767,FR 3276045768,3276045783,GB @@ -85325,10 +96919,7 @@ 3276073472,3276073983,SK 3276073984,3276074495,DE 3276074496,3276075007,GB -3276075008,3276075519,RU -3276075520,3276076031,DE -3276076032,3276076543,GB -3276076544,3276077055,DE +3276075008,3276077055,DE 3276077056,3276077567,UA 3276077568,3276078079,FR 3276078080,3276078591,RU @@ -85372,9 +96963,9 @@ 3276133376,3276134399,GB 3276134400,3276135423,RU 3276135424,3276136447,UA +3276136448,3276137471,NL 3276137472,3276138495,PL 3276138496,3276139519,NL -3276139520,3276140543,IL 3276140544,3276141567,DE 3276141568,3276143615,UA 3276143616,3276144639,GB @@ -87467,7 +99058,8 @@ 3276425472,3276425727,DE 3276425728,3276425983,RU 3276425984,3276426239,IT -3276426240,3276426751,DK +3276426240,3276426495,CZ +3276426496,3276426751,DK 3276426752,3276427007,RO 3276427008,3276427263,PL 3276427264,3276427519,FR @@ -87511,13 +99103,11 @@ 3276474368,3276474623,EU 3276474624,3276474879,GB 3276474880,3276475015,EU -3276475016,3276475063,IT -3276475064,3276475071,EU -3276475072,3276475135,IT -3276475136,3276475903,EU -3276475904,3276475951,IT -3276475952,3276475983,EU -3276475984,3276476039,IT +3276475016,3276475039,IT +3276475040,3276475055,EU +3276475056,3276475071,IT +3276475072,3276475903,EU +3276475904,3276476039,IT 3276476040,3276476047,EU 3276476048,3276476111,IT 3276476112,3276476119,GB @@ -87535,23 +99125,21 @@ 3276479168,3276479199,EU 3276479200,3276479215,FR 3276479216,3276479223,EU -3276479224,3276479343,FR -3276479344,3276479351,EU -3276479352,3276479615,FR +3276479224,3276479279,FR +3276479280,3276479343,EU +3276479344,3276479351,GB +3276479352,3276479359,EU +3276479360,3276479615,FR 3276479616,3276479647,EU 3276479648,3276479743,FR -3276479744,3276480015,EU -3276480016,3276480095,FR -3276480096,3276480111,EU -3276480112,3276480159,FR +3276479744,3276479999,EU +3276480000,3276480143,FR +3276480144,3276480151,EU +3276480152,3276480159,FR 3276480160,3276480191,EU -3276480192,3276480271,FR -3276480272,3276480287,EU -3276480288,3276480295,FR -3276480296,3276480303,EU -3276480304,3276480319,FR -3276480320,3276480351,EU -3276480352,3276480375,FR +3276480192,3276480319,FR +3276480320,3276480335,EU +3276480336,3276480375,FR 3276480376,3276480399,EU 3276480400,3276480439,FR 3276480440,3276480455,EU @@ -87587,25 +99175,33 @@ 3276491392,3276491775,CZ 3276491776,3276491847,GB 3276491848,3276491855,EU -3276491856,3276492055,GB -3276492056,3276492063,EU -3276492064,3276492127,GB +3276491856,3276492047,GB +3276492048,3276492095,EU +3276492096,3276492127,GB 3276492128,3276492143,EU 3276492144,3276492151,GB 3276492152,3276492287,EU -3276492288,3276492487,GB -3276492488,3276492495,EU -3276492496,3276493215,GB +3276492288,3276492831,GB +3276492832,3276492839,EU +3276492840,3276493135,GB +3276493136,3276493151,EU +3276493152,3276493215,GB 3276493216,3276493247,EU -3276493248,3276494383,GB -3276494384,3276494415,EU -3276494416,3276494591,GB -3276494592,3276494847,EU -3276494848,3276495503,GB +3276493248,3276494367,GB +3276494368,3276494415,EU +3276494416,3276494471,GB +3276494472,3276494479,EU +3276494480,3276495439,GB +3276495440,3276495455,EU +3276495456,3276495503,GB 3276495504,3276495519,EU -3276495520,3276495679,GB -3276495680,3276495775,EU -3276495776,3276496639,GB +3276495520,3276495543,GB +3276495544,3276495551,EU +3276495552,3276495763,GB +3276495764,3276495767,EU +3276495768,3276495831,GB +3276495832,3276495839,EU +3276495840,3276496639,GB 3276496640,3276496895,EU 3276496896,3276497151,DE 3276497152,3276497215,EU @@ -87622,9 +99218,7 @@ 3276497664,3276497919,DE 3276497920,3276498047,GB 3276498048,3276498303,EU -3276498304,3276498311,GB -3276498312,3276498319,EU -3276498320,3276498431,GB +3276498304,3276498431,GB 3276498432,3276499199,DE 3276499200,3276499455,EU 3276499456,3276499503,DE @@ -87632,17 +99226,15 @@ 3276499520,3276499615,DE 3276499616,3276499679,EU 3276499680,3276499759,DE -3276499760,3276499775,EU -3276499776,3276499791,DE -3276499792,3276499799,EU -3276499800,3276499823,DE +3276499760,3276499791,EU +3276499792,3276499823,DE 3276499824,3276499935,EU 3276499936,3276499999,DE 3276500000,3276500031,CH 3276500032,3276500095,DE 3276500096,3276500127,EU -3276500128,3276500159,DE -3276500160,3276500479,EU +3276500128,3276500223,DE +3276500224,3276500479,EU 3276500480,3276500735,DE 3276500736,3276500991,EU 3276500992,3276501023,DE @@ -87685,8 +99277,8 @@ 3276508928,3276509183,EU 3276509184,3276510207,IT 3276510208,3276510719,EU -3276510720,3276510735,IT -3276510736,3276510783,EU +3276510720,3276510751,IT +3276510752,3276510783,EU 3276510784,3276510815,IT 3276510816,3276510847,EU 3276510848,3276510911,GB @@ -87726,9 +99318,7 @@ 3276517904,3276517951,NL 3276517952,3276518015,EU 3276518016,3276518023,NL -3276518024,3276518055,EU -3276518056,3276518063,NL -3276518064,3276518095,EU +3276518024,3276518095,EU 3276518096,3276518111,NL 3276518112,3276518127,EU 3276518128,3276518175,NL @@ -87749,8 +99339,8 @@ 3276520192,3276520223,BE 3276520224,3276520255,GB 3276520256,3276520415,BE -3276520416,3276520431,EU -3276520432,3276520447,BE +3276520416,3276520423,EU +3276520424,3276520447,BE 3276520448,3276520463,EU 3276520464,3276520591,SE 3276520592,3276520607,EU @@ -87763,19 +99353,21 @@ 3276520832,3276520927,SE 3276520928,3276520943,EU 3276520944,3276521215,SE -3276521216,3276521983,EU +3276521216,3276521471,EU +3276521472,3276521487,RO +3276521488,3276521983,EU 3276521984,3276523519,NL 3276523520,3276523791,EU 3276523792,3276523911,NO -3276523912,3276523927,EU -3276523928,3276523951,NO +3276523912,3276523919,EU +3276523920,3276523951,NO 3276523952,3276523967,EU 3276523968,3276524031,NO 3276524032,3276524063,EU 3276524064,3276524095,TR 3276524096,3276524191,EU -3276524192,3276524279,TR -3276524280,3276524543,EU +3276524192,3276524287,TR +3276524288,3276524543,EU 3276524544,3276524799,GB 3276524800,3276524855,PT 3276524856,3276525039,EU @@ -87786,7 +99378,9 @@ 3276525528,3276525535,PL 3276525536,3276525567,HR 3276525568,3276526079,EU -3276526080,3276526111,CH +3276526080,3276526087,CH +3276526088,3276526095,EU +3276526096,3276526111,CH 3276526112,3276526143,EU 3276526144,3276526159,CH 3276526160,3276526335,EU @@ -87813,12 +99407,16 @@ 3276528368,3276528399,BE 3276528400,3276528447,EU 3276528448,3276528503,BE -3276528504,3276528559,EU +3276528504,3276528511,EU +3276528512,3276528519,BE +3276528520,3276528559,EU 3276528560,3276528567,BE 3276528568,3276528575,EU 3276528576,3276528719,BE 3276528720,3276528727,EU -3276528728,3276528799,BE +3276528728,3276528735,BE +3276528736,3276528767,EU +3276528768,3276528799,BE 3276528800,3276528815,GB 3276528816,3276528831,EU 3276528832,3276528895,BE @@ -87837,8 +99435,8 @@ 3276529376,3276529391,EU 3276529392,3276529407,TR 3276529408,3276529663,EU -3276529664,3276530455,NL -3276530456,3276530463,EU +3276529664,3276530447,NL +3276530448,3276530463,EU 3276530464,3276530495,NL 3276530496,3276530559,EU 3276530560,3276532735,NL @@ -87858,20 +99456,20 @@ 3276533776,3276533791,GB 3276533792,3276533823,EU 3276533824,3276533887,IE -3276533888,3276533919,EU -3276533920,3276533951,IE +3276533888,3276533927,EU +3276533928,3276533951,IE 3276533952,3276533983,EU 3276533984,3276534015,IE -3276534016,3276534399,EU -3276534400,3276534415,GB +3276534016,3276534271,EU +3276534272,3276534415,GB 3276534416,3276534431,NL 3276534432,3276534463,GB 3276534464,3276534495,FR 3276534496,3276534543,EU 3276534544,3276534591,NL 3276534592,3276534623,EU -3276534624,3276534671,NL -3276534672,3276534687,EU +3276534624,3276534655,NL +3276534656,3276534687,EU 3276534688,3276534719,NL 3276534720,3276534783,EU 3276534784,3276534879,NL @@ -87887,7 +99485,9 @@ 3276535104,3276535311,EU 3276535312,3276535319,FI 3276535320,3276535335,EU -3276535336,3276535359,FI +3276535336,3276535343,FI +3276535344,3276535351,EU +3276535352,3276535359,FI 3276535360,3276535375,EU 3276535376,3276535423,FI 3276535424,3276535551,EU @@ -87895,8 +99495,8 @@ 3276535808,3276536063,FI 3276536064,3276536319,EU 3276536320,3276536430,ES -3276536431,3276536447,EU -3276536448,3276536511,ES +3276536431,3276536439,EU +3276536440,3276536511,ES 3276536512,3276536583,EU 3276536584,3276536591,HR 3276536592,3276536639,EU @@ -87907,8 +99507,8 @@ 3276536736,3276536743,HU 3276536744,3276536831,EU 3276536832,3276536895,ES -3276536896,3276536967,EU -3276536968,3276536991,ES +3276536896,3276536959,EU +3276536960,3276536991,ES 3276536992,3276537151,EU 3276537152,3276537215,AT 3276537216,3276537343,EU @@ -87956,13 +99556,13 @@ 3276697088,3276697599,GB 3276697600,3276698111,UA 3276698112,3276699647,RU -3276700160,3276700671,UA +3276699648,3276700159,NL 3276700672,3276701183,RO 3276701184,3276701695,RU 3276701696,3276709887,SE 3276709888,3276718079,DE 3276718080,3276726271,IT -3276726272,3276727295,DE +3276726272,3276727295,SE 3276727296,3276728319,ES 3276728320,3276729343,UA 3276729344,3276730367,PL @@ -88341,9 +99941,6 @@ 3276799872,3276799999,NL 3276800000,3276824575,GB 3276824576,3276832767,EE -3276832768,3276834495,GB -3276834496,3276834503,FR -3276834504,3276834815,GB 3276836864,3276837887,RU 3276837888,3276838911,EU 3276838912,3276840959,FR @@ -88383,92 +99980,104 @@ 3276869728,3276869855,IT 3276869856,3276869887,GB 3276869888,3276870143,NL -3276870144,3276871679,IT +3276870144,3276871423,IT +3276871424,3276871679,GB 3276871680,3276872479,DE 3276872480,3276872511,GB 3276872512,3276872703,DE 3276872704,3276873727,GB -3276873728,3276874351,ES -3276874352,3276874367,GB -3276874368,3276874751,ES -3276874752,3276875775,NL +3276873728,3276874559,ES +3276874560,3276874751,GB +3276874752,3276875007,NL +3276875008,3276875263,CH +3276875264,3276875775,NL 3276875776,3276876031,GB 3276876032,3276876287,DK -3276876288,3276876799,GB -3276876800,3276876823,AT -3276876824,3276877303,GB -3276877304,3276877311,AT -3276877312,3276877535,GB +3276876288,3276876415,NL +3276876416,3276876431,GB +3276876432,3276876541,NL +3276876542,3276877535,GB 3276877536,3276877551,AT -3276877552,3276877559,GB -3276877560,3276877567,AT -3276877568,3276877815,GB -3276877816,3276877823,AT -3276877824,3276877831,BG -3276877832,3276878079,GB +3276877552,3276878079,GB 3276878080,3276878335,BG -3276878336,3276879359,GB +3276878336,3276878399,GB +3276878400,3276878847,FR +3276878848,3276879359,ES 3276879360,3276879423,TR 3276879424,3276879615,GB 3276879616,3276879871,TR -3276879872,3276880639,DK -3276880640,3276881919,GB -3276881920,3276883391,IT -3276883392,3276883455,GB -3276883456,3276883839,IT -3276883840,3276883967,GB +3276879872,3276880895,DK +3276880896,3276881151,DE +3276881152,3276881279,GB +3276881280,3276881407,DE +3276881408,3276881919,FR +3276881920,3276883967,IT 3276883968,3276884487,PL -3276884488,3276886015,GB +3276884488,3276884735,GB +3276884736,3276884991,PL +3276884992,3276886015,GB 3276886016,3276886271,RO -3276886272,3276887167,GB -3276887168,3276888063,DE +3276886272,3276886943,DE +3276886944,3276886959,GB +3276886960,3276886991,DE +3276886992,3276887047,GB +3276887048,3276887055,DE +3276887056,3276887071,GB +3276887072,3276888063,DE 3276888064,3276888575,GB -3276888576,3276888831,AT -3276888832,3276889087,GB -3276889088,3276890111,AT +3276888576,3276888831,IT +3276888832,3276890111,GB 3276890112,3276890135,US 3276890136,3276890143,GB 3276890144,3276890191,US 3276890192,3276890367,GB 3276890368,3276890623,US 3276890624,3276891135,IT -3276891136,3276891391,GB +3276891136,3276891391,BE 3276891392,3276892159,US -3276892160,3276893695,IT -3276893696,3276894463,GB -3276894464,3276895999,IT +3276892160,3276893950,IT +3276893951,3276893951,GB +3276893952,3276895999,IT 3276896000,3276896255,CZ -3276896256,3276896831,BE +3276896256,3276896767,BE +3276896768,3276896831,GB 3276896832,3276896847,SE 3276896848,3276896895,GB 3276896896,3276896927,BE 3276896928,3276897023,GB -3276897024,3276897279,BE -3276897280,3276898303,GB +3276897024,3276897663,BE +3276897664,3276898047,GB +3276898048,3276898303,CZ 3276898304,3276898775,CH 3276898776,3276898783,GB 3276898784,3276900039,CH 3276900040,3276900047,GB 3276900048,3276900351,CH 3276900352,3276900607,GB -3276900608,3276900799,CH -3276900800,3276900863,GB -3276900864,3276901119,CH -3276901120,3276901375,GB -3276901376,3276901391,CH -3276901392,3276902143,GB -3276902144,3276902151,CH +3276900608,3276901503,CH +3276901504,3276901519,ES +3276901520,3276901551,CH +3276901552,3276901559,GB +3276901560,3276901615,CH +3276901616,3276901631,GB +3276901632,3276902151,CH 3276902152,3276902159,GB -3276902160,3276902175,CH -3276902176,3276902207,GB -3276902208,3276902271,CH -3276902272,3276902399,GB -3276902400,3276902575,SE -3276902576,3276902655,GB -3276902656,3276903422,SE -3276903423,3276903423,GB +3276902160,3276902199,CH +3276902200,3276902399,GB +3276902400,3276902407,SE +3276902408,3276902415,GB +3276902416,3276902583,SE +3276902584,3276902615,GB +3276902616,3276902639,SE +3276902640,3276902655,GB +3276902656,3276903319,SE +3276903320,3276903327,GB +3276903328,3276903359,NO +3276903360,3276903423,GB 3276903424,3276903935,SE -3276903936,3276905311,GB +3276903936,3276904191,GB +3276904192,3276904447,SE +3276904448,3276905311,GB 3276905312,3276905319,ES 3276905320,3276905471,GB 3276905472,3276905727,SE @@ -88477,61 +100086,80 @@ 3276906000,3276906003,BE 3276906004,3276906239,GB 3276906240,3276906279,SE -3276906280,3276906495,GB -3276906496,3276906863,NL -3276906864,3276906879,GB -3276906880,3276907551,NL -3276907552,3276907775,GB -3276907776,3276908159,NL -3276908160,3276908287,GB -3276908288,3276908543,NL -3276908544,3276910079,GB -3276910080,3276910591,NL -3276910592,3276910967,IT -3276910968,3276910975,GB -3276910976,3276912615,IT +3276906280,3276906287,GB +3276906288,3276906295,SE +3276906296,3276906495,GB +3276906496,3276906623,NL +3276906624,3276906751,GB +3276906752,3276906823,NL +3276906824,3276906831,CH +3276906832,3276907551,NL +3276907552,3276907567,BE +3276907568,3276907643,NL +3276907644,3276907647,GB +3276907648,3276907663,NL +3276907664,3276907679,BE +3276907680,3276907687,GB +3276907688,3276908159,NL +3276908160,3276908175,CH +3276908176,3276908183,NL +3276908184,3276908191,GB +3276908192,3276908207,NL +3276908208,3276908223,GB +3276908224,3276909055,NL +3276909056,3276909567,GB +3276909568,3276910591,NL +3276910592,3276912319,IT +3276912320,3276912383,GB +3276912384,3276912615,IT 3276912616,3276912623,GB 3276912624,3276913183,IT 3276913184,3276913215,GB -3276913216,3276913919,IT +3276913216,3276913359,IT +3276913360,3276913375,GB +3276913376,3276913919,IT 3276913920,3276913983,US -3276913984,3276914687,IT -3276914688,3276916175,ES +3276913984,3276914079,IT +3276914080,3276914095,GB +3276914096,3276914143,IT +3276914144,3276914159,GB +3276914160,3276914687,IT +3276914688,3276915567,ES +3276915568,3276915583,NL +3276915584,3276916079,ES +3276916080,3276916095,GB +3276916096,3276916175,ES 3276916176,3276916183,GB 3276916184,3276917231,ES 3276917232,3276917247,GB 3276917248,3276917279,ES 3276917280,3276917287,GB -3276917288,3276917311,ES -3276917312,3276917343,GB +3276917288,3276917327,ES +3276917328,3276917343,GB 3276917344,3276917887,ES 3276917888,3276918015,GB 3276918016,3276918783,ES 3276918784,3276920551,DE 3276920552,3276920559,GB 3276920560,3276921183,DE -3276921184,3276921191,GB -3276921192,3276921239,DE +3276921184,3276921187,GB +3276921188,3276921239,DE 3276921240,3276921247,GB 3276921248,3276921279,DE 3276921280,3276921295,GB -3276921296,3276921303,DE -3276921304,3276921399,GB +3276921296,3276921343,DE +3276921344,3276921399,GB 3276921400,3276921403,DK 3276921404,3276921599,GB -3276921600,3276921607,DE -3276921608,3276921727,GB -3276921728,3276922623,DE +3276921600,3276922623,DE 3276922624,3276923431,FR 3276923432,3276923439,GB -3276923440,3276924071,FR -3276924072,3276924095,GB -3276924096,3276924351,FR -3276924352,3276924415,GB -3276924416,3276925951,FR -3276925952,3276926207,GB -3276926208,3276926735,FR -3276926736,3276931071,GB +3276923440,3276923447,FR +3276923448,3276923455,DE +3276923456,3276924071,FR +3276924072,3276924079,GB +3276924080,3276926847,FR +3276926848,3276931071,GB 3276931072,3276939263,KZ 3276939264,3276955647,DE 3276955648,3276963839,GB @@ -88563,7 +100191,6 @@ 3277179392,3277179647,DE 3277179648,3277180159,BE 3277180160,3277180415,NL -3277180416,3277180671,GB 3277180672,3277180927,FR 3277180928,3277181183,DE 3277181184,3277181439,PL @@ -88685,7 +100312,7 @@ 3277362688,3277363199,IE 3277363200,3277363711,ES 3277363712,3277364223,RU -3277364224,3277364735,GB +3277364224,3277364735,NL 3277364736,3277365247,UA 3277365248,3277365759,NL 3277365760,3277366271,GR @@ -88700,6 +100327,7 @@ 3277370880,3277371391,RO 3277371392,3277371903,RU 3277371904,3277372415,PL +3277372416,3277372927,IR 3277372928,3277373951,RU 3277373952,3277374463,FR 3277374464,3277375999,RU @@ -88734,7 +100362,9 @@ 3277395968,3277452647,GB 3277452648,3277452655,DK 3277452656,3277455359,GB -3277455360,3277463551,DE +3277455360,3277456895,DE +3277456896,3277457151,CH +3277457152,3277463551,DE 3277463552,3277463807,GB 3277463808,3277464063,US 3277464064,3277464575,FR @@ -88823,6 +100453,7 @@ 3277710848,3277711359,PL 3277711360,3277711871,NO 3277711872,3277712383,IL +3277712384,3277712895,PL 3277712896,3277713407,NL 3277713408,3277713919,RU 3277713920,3277714943,DE @@ -88865,14 +100496,12 @@ 3277822208,3277822463,ES 3277822464,3277822719,PL 3277822720,3277822975,RU -3277822976,3277823231,FR 3277823232,3277823487,UA 3277823488,3277823743,SI 3277823744,3277823999,UA 3277824000,3277824255,TR 3277824256,3277824511,SI -3277824512,3277824767,UA -3277824768,3277825023,AT +3277824512,3277825023,AT 3277825024,3277825279,PL 3277825280,3277825535,UA 3277825536,3277826047,RO @@ -88907,7 +100536,6 @@ 3277836288,3277836799,FI 3277836800,3277837311,UA 3277837312,3277838847,RU -3277838848,3277839359,BY 3277839360,3277839871,DE 3277839872,3277840383,UA 3277840384,3277840895,FR @@ -88929,12 +100557,18 @@ 3277881344,3277884175,IT 3277884176,3277884191,IR 3277884192,3277885439,IT -3277885440,3277885951,LB -3277885952,3277886207,IT -3277886208,3277886975,IR -3277886976,3277888255,IT +3277885440,3277885695,IQ +3277885696,3277885727,LB +3277885728,3277885951,IT +3277885952,3277886463,LB +3277886464,3277886719,IQ +3277886720,3277886975,IR +3277886976,3277887487,IQ +3277887488,3277888255,IT 3277888256,3277888319,LB -3277888320,3277889535,IT +3277888320,3277889023,IT +3277889024,3277889279,IQ +3277889280,3277889535,IT 3277889536,3277897727,RU 3277897728,3277905919,IT 3277905920,3277914111,BG @@ -88965,11 +100599,11 @@ 3278116864,3278118399,ES 3278118400,3278119935,SE 3278119936,3278119943,DE -3278119944,3278119967,SE -3278119968,3278119975,NO -3278119976,3278120151,SE +3278119944,3278120151,SE 3278120152,3278120159,DE -3278120160,3278161631,SE +3278120160,3278125055,SE +3278125056,3278125567,NL +3278125568,3278161631,SE 3278161632,3278161647,DE 3278161648,3278168111,SE 3278168112,3278168119,DK @@ -88997,7 +100631,7 @@ 3278769152,3278769663,FR 3278769664,3278770175,DE 3278770176,3278770687,DK -3278770688,3278771199,DE +3278770688,3278771711,DE 3278771712,3278772223,NL 3278772224,3278772735,BG 3278772736,3278773247,DE @@ -89241,8 +100875,7 @@ 3278939048,3278939055,FR 3278939056,3278939063,DE 3278939064,3278939067,ES -3278939068,3278939071,IT -3278939072,3278939075,DE +3278939068,3278939075,DE 3278939076,3278939079,CH 3278939080,3278939083,DE 3278939084,3278939087,IT @@ -89353,14 +100986,14 @@ 3278939712,3278939715,CY 3278939716,3278939723,TR 3278939724,3278939727,MC -3278939728,3278939731,TR +3278939728,3278939731,DE 3278939732,3278939735,AT 3278939736,3278939739,RU 3278939740,3278939743,HU 3278939744,3278939747,GB 3278939748,3278939751,ES 3278939752,3278939755,GR -3278939756,3278939759,AO +3278939756,3278939759,DE 3278939760,3278939763,FR 3278939764,3278939767,GR 3278939768,3278939771,ES @@ -89772,8 +101405,7 @@ 3278942180,3278942183,FR 3278942184,3278942187,DK 3278942188,3278942191,IT -3278942192,3278942199,DE -3278942200,3278942203,GB +3278942192,3278942203,DE 3278942204,3278942207,CH 3278942208,3278942211,TW 3278942212,3278942227,AU @@ -89945,9 +101577,7 @@ 3278942836,3278942837,DE 3278942838,3278942838,ES 3278942839,3278942839,FR -3278942840,3278942841,DE -3278942842,3278942842,IT -3278942843,3278942843,DE +3278942840,3278942843,DE 3278942844,3278942844,ES 3278942845,3278942850,DE 3278942851,3278942851,HU @@ -90068,7 +101698,7 @@ 3278943011,3278943011,DE 3278943012,3278943012,CZ 3278943013,3278943013,IT -3278943014,3278943014,AT +3278943014,3278943014,DE 3278943015,3278943016,ES 3278943017,3278943017,FR 3278943018,3278943018,CH @@ -90403,9 +102033,7 @@ 3278943440,3278943440,DK 3278943441,3278943441,IT 3278943442,3278943442,FR -3278943443,3278943443,DE -3278943444,3278943444,GB -3278943445,3278943445,DE +3278943443,3278943445,DE 3278943446,3278943446,CH 3278943447,3278943447,DE 3278943448,3278943448,FR @@ -90758,8 +102386,7 @@ 3278943889,3278943889,BE 3278943890,3278943890,NL 3278943891,3278943891,ES -3278943892,3278943892,BE -3278943893,3278943893,DE +3278943892,3278943893,DE 3278943894,3278943894,IT 3278943895,3278943895,DE 3278943896,3278943896,PL @@ -90862,8 +102489,7 @@ 3278944016,3278944016,PL 3278944017,3278944017,DE 3278944018,3278944018,BE -3278944019,3278944019,FR -3278944020,3278944020,DE +3278944019,3278944020,DE 3278944021,3278944021,IT 3278944022,3278944022,FR 3278944023,3278944023,AT @@ -90879,7 +102505,7 @@ 3278944036,3278944036,US 3278944037,3278944037,FR 3278944038,3278944038,GB -3278944039,3278944039,ES +3278944039,3278944039,DE 3278944040,3278944040,FR 3278944041,3278944041,DE 3278944042,3278944042,FR @@ -91378,9 +103004,7 @@ 3278945833,3278945833,GB 3278945834,3278945834,NL 3278945835,3278945835,CH -3278945836,3278945838,DE -3278945839,3278945839,CZ -3278945840,3278945840,DE +3278945836,3278945840,DE 3278945841,3278945841,CH 3278945842,3278945844,DE 3278945845,3278945845,ES @@ -91505,7 +103129,6 @@ 3279053312,3279053823,DE 3279053824,3279054335,NL 3279054336,3279054847,GB -3279054848,3279055359,PL 3279055360,3279055871,SA 3279055872,3279056383,TR 3279056384,3279056895,GB @@ -91521,13 +103144,7 @@ 3279077376,3279078399,ES 3279078400,3279078655,IT 3279078656,3279078911,FR -3279078912,3279081215,ES -3279081216,3279081231,DE -3279081232,3279083583,ES -3279083584,3279083599,NL -3279083600,3279083807,ES -3279083808,3279083839,NL -3279083840,3279084543,ES +3279078912,3279084543,ES 3279084544,3279085567,IT 3279085568,3279090687,NL 3279090688,3279090943,DE @@ -91698,8 +103315,8 @@ 3279568896,3279577087,IT 3279577088,3279585279,BE 3279585280,3279585919,DE -3279585920,3279585951,GB -3279585952,3279585991,DE +3279585920,3279585983,GB +3279585984,3279585991,DE 3279585992,3279585999,GB 3279586000,3279586303,DE 3279586304,3279586559,GB @@ -91744,9 +103361,15 @@ 3279601664,3279609855,CZ 3279609856,3279618047,RU 3279618048,3279683583,UA -3279683584,3279752959,DE +3279683584,3279723215,DE +3279723216,3279723223,A2 +3279723224,3279744391,DE +3279744392,3279744399,PL +3279744400,3279752959,DE 3279752960,3279753215,CH -3279753216,3279897583,DE +3279753216,3279840663,DE +3279840664,3279840671,A2 +3279840672,3279897583,DE 3279897584,3279897591,GB 3279897592,3279946751,DE 3279946752,3279947775,SE @@ -91761,7 +103384,35 @@ 3279958016,3279972351,RU 3279972352,3279974399,AT 3279974400,3279976447,PL -3279976448,3279986687,RU +3279976448,3279978495,RU +3279978496,3279978751,SI +3279978752,3279979007,NL +3279979008,3279979263,RO +3279979264,3279979519,SA +3279979520,3279979775,BG +3279979776,3279980031,RU +3279980032,3279980287,BG +3279980288,3279980543,PL +3279980544,3279980799,RO +3279980800,3279981055,RU +3279981056,3279981311,GB +3279981312,3279981567,UA +3279981568,3279981823,PL +3279981824,3279982079,SI +3279982080,3279982335,PL +3279982336,3279982591,FR +3279982592,3279982847,DE +3279982848,3279983103,IL +3279983104,3279983615,FR +3279983616,3279983871,PL +3279983872,3279984127,FR +3279984128,3279984383,AT +3279984384,3279984639,RO +3279984640,3279985151,RU +3279985152,3279985407,PL +3279985408,3279985663,CZ +3279985664,3279985919,DE +3279985920,3279986687,RU 3279986688,3279987199,NL 3279987200,3279987711,RU 3279987712,3279988223,RO @@ -91906,23 +103557,19 @@ 3280347136,3280355327,NO 3280355328,3280371711,GR 3280371712,3280379903,CH -3280379904,3280388127,FR -3280388128,3280388159,GB +3280379904,3280388095,FR +3280388096,3280388159,GB 3280388160,3280388191,FR -3280388192,3280388223,GB -3280388224,3280388759,FR -3280388760,3280388767,GB -3280388768,3280388799,FR -3280388800,3280388831,GB -3280388832,3280390655,FR -3280390656,3280390719,GB +3280388192,3280388735,GB +3280388736,3280388759,FR +3280388760,3280390719,GB 3280390720,3280390751,FR 3280390752,3280390783,GB 3280390784,3280390815,FR 3280390816,3280390879,GB 3280390880,3280390911,FR -3280390912,3280391167,GB -3280391168,3280391551,FR +3280390912,3280391423,GB +3280391424,3280391551,FR 3280391552,3280391583,GB 3280391584,3280391743,FR 3280391744,3280391775,GB @@ -91950,8 +103597,8 @@ 3280393152,3280393343,GB 3280393344,3280393375,FR 3280393376,3280393407,GB -3280393408,3280393535,FR -3280393536,3280393599,GB +3280393408,3280393503,FR +3280393504,3280393599,GB 3280393600,3280393631,FR 3280393632,3280393695,GB 3280393696,3280393727,FR @@ -91962,7 +103609,9 @@ 3280394496,3280394527,GB 3280394528,3280394559,FR 3280394560,3280394623,GB -3280394624,3280395519,FR +3280394624,3280394751,FR +3280394752,3280395263,GB +3280395264,3280395519,FR 3280395520,3280395647,GB 3280395648,3280395839,FR 3280395840,3280396031,GB @@ -91985,10 +103634,8 @@ 3280458752,3280459775,RU 3280459776,3280460799,DK 3280460800,3280462847,DE -3280462848,3280463871,DK 3280463872,3280466943,RU 3280466944,3280467967,UA -3280467968,3280468991,GB 3280468992,3280470015,CY 3280470016,3280535551,PL 3280535552,3280568319,GB @@ -92022,7 +103669,7 @@ 3280583424,3280583679,RU 3280583680,3280583935,PS 3280583936,3280584191,PL -3280584192,3280584447,RO +3280584192,3280584447,KW 3280584448,3280584703,DE 3280584704,3280585215,UA 3280585216,3280585727,DK @@ -92036,7 +103683,7 @@ 3280589312,3280590335,DE 3280590336,3280590847,NL 3280590848,3280591359,DE -3280591360,3280592383,GB +3280591872,3280592383,GB 3280592384,3280592895,TR 3280592896,3280593407,DE 3280593408,3280593919,UA @@ -92060,9 +103707,7 @@ 3280625664,3280633855,MD 3280633856,3280635807,BG 3280635808,3280635815,DE -3280635816,3280638207,BG -3280638208,3280638463,A2 -3280638464,3280642047,BG +3280635816,3280642047,BG 3280642048,3280650239,UA 3280650240,3280650495,RO 3280650496,3280650751,UA @@ -92126,9 +103771,7 @@ 3280796672,3280797695,CZ 3280797696,3280810783,CH 3280810784,3280810799,DE -3280810800,3280844292,CH -3280844293,3280844295,GB -3280844296,3280863231,CH +3280810800,3280863231,CH 3280863232,3280928767,TR 3280928768,3280928768,GB 3280928769,3280928769,DE @@ -92194,8 +103837,8 @@ 3280929552,3280929583,DE 3280929584,3280929599,GB 3280929600,3280929615,DE -3280929616,3280929631,GB -3280929632,3280929641,DE +3280929616,3280929639,GB +3280929640,3280929641,DE 3280929642,3280929642,GB 3280929643,3280929645,DE 3280929646,3280929647,GB @@ -92386,8 +104029,10 @@ 3280933632,3280933647,DE 3280933648,3280933687,GB 3280933688,3280933699,DE -3280933700,3280933703,GB -3280933704,3280933855,DE +3280933700,3280933711,GB +3280933712,3280933807,DE +3280933808,3280933823,GB +3280933824,3280933855,DE 3280933856,3280934219,GB 3280934220,3280934243,DE 3280934244,3280934655,GB @@ -92665,14 +104310,12 @@ 3280948640,3280948719,GB 3280948720,3280948735,DE 3280948736,3280949503,GB -3280949504,3280950015,DE -3280950016,3280950655,GB +3280949504,3280949759,DE +3280949760,3280950655,GB 3280950656,3280950687,DE 3280950688,3280951039,GB -3280951040,3280951807,DE -3280951808,3280951819,GB -3280951820,3280951831,DE -3280951832,3280952067,GB +3280951040,3280952063,DE +3280952064,3280952067,GB 3280952068,3280952079,DE 3280952080,3280952087,GB 3280952088,3280952095,DE @@ -92692,8 +104335,10 @@ 3280952352,3280952359,DE 3280952360,3280952383,GB 3280952384,3280952559,DE -3280952560,3280952575,GB -3280952576,3280952623,DE +3280952560,3280952591,GB +3280952592,3280952607,DE +3280952608,3280952615,GB +3280952616,3280952623,DE 3280952624,3280952631,GB 3280952632,3280952687,DE 3280952688,3280952695,GB @@ -92740,8 +104385,12 @@ 3280954368,3280954495,DE 3280954496,3280955391,GB 3280955392,3280955419,DE -3280955420,3280955423,GB -3280955424,3280955791,DE +3280955420,3280955487,GB +3280955488,3280955503,DE +3280955504,3280955519,GB +3280955520,3280955647,DE +3280955648,3280955663,GB +3280955664,3280955791,DE 3280955792,3280955799,GB 3280955800,3280956143,DE 3280956144,3280956415,GB @@ -92784,9 +104433,13 @@ 3280958880,3280958915,DE 3280958916,3280958919,GB 3280958920,3280958927,DE -3280958928,3280958975,GB -3280958976,3280959199,DE -3280959200,3280959487,GB +3280958928,3280958943,GB +3280958944,3280959111,DE +3280959112,3280959119,GB +3280959120,3280959199,DE +3280959200,3280959263,GB +3280959264,3280959279,DE +3280959280,3280959487,GB 3280959488,3280959711,DE 3280959712,3280959743,GB 3280959744,3280959935,DE @@ -93102,8 +104755,8 @@ 3280981001,3280981001,DE 3280981002,3280981039,GB 3280981040,3280981055,DE -3280981056,3280981087,GB -3280981088,3280981111,DE +3280981056,3280981095,GB +3280981096,3280981111,DE 3280981112,3280981135,GB 3280981136,3280981151,DE 3280981152,3280981179,GB @@ -93596,22 +105249,20 @@ 3281339392,3281339647,PL 3281339648,3281339903,GB 3281339904,3281340159,UA -3281340160,3281340415,SA 3281340416,3281340927,RO 3281340928,3281341183,DE 3281341184,3281341439,AT 3281341440,3281341695,DE 3281341696,3281341951,PL 3281341952,3281342207,DK -3281342208,3281342463,GB 3281342464,3281343231,DE 3281343232,3281343487,FI 3281343488,3281343743,GB 3281343744,3281343999,TR +3281344000,3281344255,FR 3281344256,3281344511,RU 3281344512,3281344767,UA 3281344768,3281345023,RU -3281345024,3281345279,UA 3281345280,3281345535,SA 3281345536,3281345791,CH 3281345792,3281346047,RU @@ -93635,7 +105286,7 @@ 3281351168,3281351423,UA 3281351424,3281351679,AT 3281351680,3281351935,TR -3281351936,3281352191,DE +3281351936,3281352191,UA 3281352192,3281352447,PL 3281352448,3281352703,RO 3281352704,3281352959,DE @@ -93648,6 +105299,9 @@ 3281354752,3281359071,SE 3281359072,3281359103,AN 3281359104,3281371135,SE +3281371136,3281372159,RS +3281372160,3281372671,RU +3281372672,3281373183,PL 3281373184,3281375231,RU 3281375232,3281377279,ES 3281377280,3281379327,AT @@ -93749,12 +105403,10 @@ 3282119424,3282119679,KZ 3282119680,3282149455,RU 3282149456,3282149471,KG -3282149472,3282149599,RU -3282149600,3282149631,GB -3282149632,3282173951,RU +3282149472,3282173951,RU 3282173952,3282174463,UA 3282174464,3282174975,GB -3282174976,3282177023,RU +3282175488,3282177023,RU 3282177024,3282177535,GB 3282177536,3282178047,KZ 3282178048,3282178559,PL @@ -93782,22 +105434,15 @@ 3282206720,3282223103,CH 3282223104,3282231295,BE 3282231296,3282239487,DE -3282239488,3282242223,SE -3282242224,3282242227,NO -3282242228,3282284543,SE -3282284544,3282284551,FI -3282284552,3282284567,SE -3282284568,3282284575,FR -3282284576,3282284579,FI +3282239488,3282284567,SE +3282284568,3282284579,FI 3282284580,3282284591,SE -3282284592,3282284595,FR +3282284592,3282284595,FI 3282284596,3282284599,SE -3282284600,3282284603,FR +3282284600,3282284603,FI 3282284604,3282284735,SE 3282284736,3282284783,FI -3282284784,3282286975,SE -3282286976,3282287007,FI -3282287008,3282287615,SE +3282284784,3282287615,SE 3282287616,3282287759,FI 3282287760,3282305023,SE 3282305024,3282370559,PL @@ -93873,7 +105518,7 @@ 3282743040,3282743295,CH 3282743296,3282743551,CY 3282743552,3282743807,SI -3282743808,3282744063,MD +3282743808,3282744063,BG 3282744064,3282744319,UA 3282744320,3282744575,SA 3282744576,3282744831,LT @@ -93925,7 +105570,6 @@ 3283210752,3283211263,PL 3283211264,3283211775,GB 3283211776,3283212287,NL -3283212288,3283212799,RU 3283212800,3283213311,BG 3283213312,3283213823,ES 3283213824,3283214335,UA @@ -94015,7 +105659,7 @@ 3283485184,3283485439,DE 3283485440,3283485695,UA 3283485696,3283485951,GB -3283485952,3283486207,SE +3283485952,3283486207,US 3283486208,3283486463,AT 3283486464,3283486719,UA 3283486720,3283486975,RU @@ -94052,7 +105696,6 @@ 3283495680,3283495935,NL 3283495936,3283496191,BG 3283496192,3283496447,DE -3283496448,3283496703,FR 3283496704,3283496959,LV 3283496960,3283497215,DE 3283497216,3283497471,GB @@ -94119,15 +105762,11 @@ 3283550624,3283550655,FR 3283550656,3283550719,GB 3283550720,3283552255,AT -3283552256,3283552279,IT -3283552280,3283552287,EU -3283552288,3283552319,IT +3283552256,3283552319,IT 3283552320,3283552351,EU -3283552352,3283552415,IT -3283552416,3283552447,EU -3283552448,3283552495,IT -3283552496,3283552511,EU -3283552512,3283552575,IT +3283552352,3283552431,IT +3283552432,3283552447,EU +3283552448,3283552575,IT 3283552576,3283552639,DE 3283552640,3283552671,IT 3283552672,3283552703,CH @@ -94293,8 +105932,7 @@ 3283584032,3283584063,DE 3283584064,3283584127,IE 3283584128,3283585023,ZA -3283585024,3283585031,EU -3283585032,3283585279,ES +3283585024,3283585279,ES 3283585280,3283585535,ZA 3283585536,3283585679,ES 3283585680,3283585695,IE @@ -94311,7 +105949,8 @@ 3283586504,3283586559,EU 3283586560,3283586815,FR 3283586816,3283587071,DE -3283587072,3283587231,NL +3283587072,3283587199,EU +3283587200,3283587231,NL 3283587232,3283587327,EU 3283587328,3283587335,NL 3283587336,3283587343,GB @@ -94342,15 +105981,12 @@ 3283588480,3283588543,AT 3283588544,3283588607,GB 3283588608,3283589119,BE -3283589120,3283589151,EU -3283589152,3283589791,DK +3283589120,3283589791,DK 3283589792,3283589823,DE 3283589824,3283589839,EU 3283589840,3283589887,DE 3283589888,3283590143,DK -3283590144,3283590159,EU -3283590160,3283590167,SE -3283590168,3283590175,EU +3283590144,3283590175,EU 3283590176,3283590207,SE 3283590208,3283590271,EU 3283590272,3283590319,SE @@ -94465,7 +106101,7 @@ 3283635200,3283635711,GB 3283635712,3283636223,RU 3283636224,3283636735,UA -3283636736,3283637247,PL +3283636736,3283637759,PL 3283637760,3283638271,UA 3283638272,3283638783,PL 3283638784,3283639295,RU @@ -94583,6 +106219,7 @@ 3283960832,3283961855,KZ 3283961856,3283962879,RU 3283962880,3283963903,PL +3283963904,3283964927,BG 3283964928,3283966975,PL 3283966976,3283967999,DE 3283968000,3283969023,UA @@ -94682,11 +106319,11 @@ 3284025440,3284025471,DE 3284025472,3284025535,GB 3284025536,3284025567,DE -3284025568,3284026111,GB -3284026112,3284026479,DE +3284025568,3284026399,GB +3284026400,3284026479,DE 3284026480,3284026495,GB -3284026496,3284026623,DE -3284026624,3284026815,GB +3284026496,3284026559,DE +3284026560,3284026815,GB 3284026816,3284026879,DE 3284026880,3284027231,GB 3284027232,3284027359,DE @@ -94702,15 +106339,15 @@ 3284028912,3284028927,DE 3284028928,3284029215,GB 3284029216,3284029311,DE -3284029312,3284029695,GB -3284029696,3284029791,DE -3284029792,3284029951,GB -3284029952,3284030463,DE +3284029312,3284029759,GB +3284029760,3284029791,DE +3284029792,3284030207,GB +3284030208,3284030463,DE 3284030464,3284030655,GB 3284030656,3284030687,DE -3284030688,3284030975,GB -3284030976,3284031167,DE -3284031168,3284031551,GB +3284030688,3284031039,GB +3284031040,3284031103,DE +3284031104,3284031551,GB 3284031552,3284031615,DE 3284031616,3284031743,GB 3284031744,3284032031,DE @@ -94728,6 +106365,7 @@ 3284041984,3284042239,SI 3284042240,3284042495,GB 3284042496,3284042751,AT +3284042752,3284043007,RU 3284043008,3284043263,DE 3284043264,3284043519,EE 3284043520,3284043775,DE @@ -94746,7 +106384,6 @@ 3284047104,3284047359,DK 3284047360,3284047615,DE 3284047616,3284047871,NL -3284047872,3284048127,HU 3284048128,3284048383,DK 3284048384,3284048639,GB 3284048640,3284049151,FR @@ -94768,7 +106405,7 @@ 3284079616,3284080127,DE 3284080128,3284080639,BE 3284080640,3284081151,UA -3284081152,3284081663,CH +3284081152,3284081663,DE 3284081664,3284082175,IE 3284082176,3284082687,NO 3284082688,3284083199,RU @@ -94791,7 +106428,7 @@ 3284092416,3284092927,GB 3284092928,3284093439,UA 3284093440,3284093951,IR -3284093952,3284094463,RU +3284093952,3284094975,RU 3284094976,3284095487,UA 3284095488,3284095999,RU 3284096000,3284096511,IT @@ -94850,9 +106487,10 @@ 3284125184,3284125695,RO 3284125696,3284126207,UA 3284126208,3284127231,CZ -3284127232,3284127743,NL +3284127232,3284127743,HK 3284127744,3284128255,RU 3284128256,3284128767,GB +3284128768,3284129279,SE 3284129280,3284129791,UA 3284129792,3284130303,DE 3284130304,3284130815,GB @@ -94957,9 +106595,7 @@ 3284811776,3284819967,KE 3284819968,3284820479,GB 3284820480,3284820495,DE -3284820496,3284822527,GB -3284822528,3284822783,DE -3284822784,3284823519,GB +3284820496,3284823519,GB 3284823520,3284823527,DE 3284823528,3284825343,GB 3284825344,3284825359,DE @@ -94976,7 +106612,9 @@ 3284869632,3284869887,IT 3284869888,3284872959,DE 3284872960,3284873471,IT -3284873472,3284926463,DE +3284873472,3284913919,DE +3284913920,3284914175,GB +3284914176,3284926463,DE 3284926464,3284991999,NO 3284992000,3285057535,PL 3285057536,3285065727,IT @@ -95062,7 +106700,6 @@ 3285388288,3285389311,CH 3285389312,3285390335,FI 3285390336,3285391359,RU -3285391360,3285392383,AM 3285392384,3285393407,RU 3285393408,3285394431,AT 3285394432,3285396479,RU @@ -95087,7 +106724,7 @@ 3285419008,3285420031,SE 3285420032,3285424127,UA 3285424128,3285425151,RO -3285425152,3285427199,UA +3285426176,3285427199,UA 3285427200,3285428223,GB 3285428224,3285429247,RU 3285429248,3285430271,UA @@ -95109,21 +106746,16 @@ 3285453056,3285453119,EU 3285453120,3285453415,GB 3285453416,3285453423,EU -3285453424,3285454047,GB -3285454048,3285454079,EU -3285454080,3285454175,GB -3285454176,3285454207,EU -3285454208,3285454847,GB -3285454848,3285455695,DE -3285455696,3285455711,EU -3285455712,3285455743,DE +3285453424,3285454847,GB +3285454848,3285455103,EU +3285455104,3285455743,DE 3285455744,3285455871,EU 3285455872,3285455887,DE 3285455888,3285455895,EU 3285455896,3285455903,GB 3285455904,3285455935,EU -3285455936,3285456015,DE -3285456016,3285456031,EU +3285455936,3285456023,DE +3285456024,3285456031,EU 3285456032,3285456255,DE 3285456256,3285456287,EU 3285456288,3285456351,DE @@ -95131,19 +106763,16 @@ 3285456384,3285456639,DE 3285456640,3285456703,DK 3285456704,3285456735,EU -3285456736,3285456743,DK -3285456744,3285456751,EU -3285456752,3285456767,DK +3285456736,3285456767,DK 3285456768,3285456831,EU 3285456832,3285456871,DK 3285456872,3285456879,EU 3285456880,3285456895,DK 3285456896,3285456959,GB 3285456960,3285456975,EU -3285456976,3285457023,GB -3285457024,3285457055,EU -3285457056,3285457151,GB -3285457152,3285457183,SE +3285456976,3285457151,GB +3285457152,3285457167,EU +3285457168,3285457183,SE 3285457184,3285457231,EU 3285457232,3285457247,SE 3285457248,3285457279,EU @@ -95152,17 +106781,13 @@ 3285457664,3285457759,IT 3285457760,3285457791,EU 3285457792,3285457919,IT -3285457920,3285457951,GB -3285457952,3285457983,EU -3285457984,3285458095,GB -3285458096,3285458103,EU -3285458104,3285458111,GB -3285458112,3285458175,EU +3285457920,3285458127,GB +3285458128,3285458175,EU 3285458176,3285458943,GB 3285458944,3285458975,DK 3285458976,3285459007,EU -3285459008,3285459071,DK -3285459072,3285459119,EU +3285459008,3285459079,DK +3285459080,3285459119,EU 3285459120,3285459327,DK 3285459328,3285459391,EU 3285459392,3285459535,DK @@ -95198,9 +106823,7 @@ 3285461992,3285461999,GB 3285462000,3285462007,NL 3285462008,3285462015,EU -3285462016,3285462175,DE -3285462176,3285462191,EU -3285462192,3285462207,DE +3285462016,3285462207,DE 3285462208,3285462223,GB 3285462224,3285462367,DE 3285462368,3285462399,EU @@ -95209,9 +106832,7 @@ 3285462544,3285462655,DE 3285462656,3285462783,EU 3285462784,3285462831,AT -3285462832,3285462839,EU -3285462840,3285462847,AT -3285462848,3285462951,EU +3285462832,3285462951,EU 3285462952,3285462959,AT 3285462960,3285463007,EU 3285463008,3285463039,AT @@ -95221,20 +106842,22 @@ 3285463136,3285463295,EU 3285463296,3285463311,FR 3285463312,3285463319,BE -3285463320,3285463327,FR -3285463328,3285463359,EU +3285463320,3285463359,EU 3285463360,3285463455,BE -3285463456,3285463519,EU +3285463456,3285463487,EU +3285463488,3285463503,GB +3285463504,3285463519,EU 3285463520,3285463615,BE 3285463616,3285463647,FR -3285463648,3285463663,EU -3285463664,3285463743,BE +3285463648,3285463663,BE +3285463664,3285463671,EU +3285463672,3285463743,BE 3285463744,3285463775,EU 3285463776,3285463839,BE 3285463840,3285463855,EU 3285463856,3285463991,BE -3285463992,3285464015,EU -3285464016,3285464063,BE +3285463992,3285464031,EU +3285464032,3285464063,BE 3285464064,3285464071,EU 3285464072,3285464095,BE 3285464096,3285464127,GB @@ -95253,12 +106876,14 @@ 3285465216,3285465231,DK 3285465232,3285465247,EU 3285465248,3285465343,DK -3285465344,3285465663,EU -3285465664,3285465727,DE +3285465344,3285465631,EU +3285465632,3285465727,DE 3285465728,3285465855,EU 3285465856,3285465903,DE 3285465904,3285465911,EU -3285465912,3285466367,DE +3285465912,3285465951,DE +3285465952,3285465983,EU +3285465984,3285466367,DE 3285466368,3285466447,CH 3285466448,3285466455,EU 3285466456,3285466463,CH @@ -95268,9 +106893,7 @@ 3285466624,3285466879,AT 3285466880,3285466895,BG 3285466896,3285466911,EU -3285466912,3285466943,BG -3285466944,3285466951,EU -3285466952,3285466959,BG +3285466912,3285466959,BG 3285466960,3285466983,EU 3285466984,3285467007,BG 3285467008,3285467015,EU @@ -95279,7 +106902,9 @@ 3285467136,3285467391,DE 3285467392,3285467663,EU 3285467664,3285467679,DE -3285467680,3285467831,EU +3285467680,3285467711,EU +3285467712,3285467823,DE +3285467824,3285467831,EU 3285467832,3285467839,DE 3285467840,3285467935,EU 3285467936,3285467951,DE @@ -95287,38 +106912,35 @@ 3285467960,3285467967,EU 3285467968,3285468511,DE 3285468512,3285468575,EU -3285468576,3285468591,DE -3285468592,3285468599,EU -3285468600,3285468615,DE -3285468616,3285468623,GB -3285468624,3285468639,EU -3285468640,3285469695,DE +3285468576,3285468599,DE +3285468600,3285468607,EU +3285468608,3285468615,DE +3285468616,3285468623,EU +3285468624,3285469695,DE 3285469696,3285469727,EU 3285469728,3285471007,DE 3285471008,3285471039,EU -3285471040,3285471055,DE -3285471056,3285471103,EU +3285471040,3285471071,DE +3285471072,3285471103,EU 3285471104,3285471743,DE 3285471744,3285471807,EU 3285471808,3285471871,DE 3285471872,3285471935,EU -3285471936,3285471967,DE -3285471968,3285471999,EU -3285472000,3285472127,DE +3285471936,3285472127,DE 3285472128,3285472159,EU 3285472160,3285472175,DE 3285472176,3285472183,EU 3285472184,3285472223,DE 3285472224,3285472255,EU 3285472256,3285472287,DE -3285472288,3285472367,EU +3285472288,3285472319,EU +3285472320,3285472351,DE +3285472352,3285472367,EU 3285472368,3285472511,DE 3285472512,3285473327,EU 3285473328,3285473343,DE 3285473344,3285473439,EU -3285473440,3285473527,DE -3285473528,3285473535,EU -3285473536,3285473567,DE +3285473440,3285473567,DE 3285473568,3285473583,EU 3285473584,3285473591,GB 3285473592,3285473599,DE @@ -95326,19 +106948,19 @@ 3285473632,3285473663,DE 3285473664,3285473791,EU 3285473792,3285474047,DE -3285474048,3285474079,EU -3285474080,3285474095,DE -3285474096,3285474175,EU -3285474176,3285474231,DE -3285474232,3285474239,EU -3285474240,3285474271,DE +3285474048,3285474095,EU +3285474096,3285474111,DE +3285474112,3285474175,EU +3285474176,3285474271,DE 3285474272,3285474303,EU 3285474304,3285474319,DE 3285474320,3285474335,EU -3285474336,3285474815,DE +3285474336,3285474367,DE +3285474368,3285474383,EU +3285474384,3285474815,DE 3285474816,3285475071,EU -3285475072,3285475127,DE -3285475128,3285475143,EU +3285475072,3285475135,DE +3285475136,3285475143,EU 3285475144,3285475167,DE 3285475168,3285475199,EU 3285475200,3285475207,DE @@ -95347,7 +106969,9 @@ 3285475328,3285475623,EU 3285475624,3285475647,AT 3285475648,3285475679,EU -3285475680,3285475711,AT +3285475680,3285475695,AT +3285475696,3285475703,EU +3285475704,3285475711,AT 3285475712,3285475775,EU 3285475776,3285475783,AT 3285475784,3285475807,EU @@ -95364,11 +106988,9 @@ 3285476896,3285477023,EU 3285477024,3285477087,AT 3285477088,3285477151,EU -3285477152,3285477263,IT -3285477264,3285477279,EU -3285477280,3285477319,IT -3285477320,3285477335,EU -3285477336,3285477343,IT +3285477152,3285477319,IT +3285477320,3285477327,EU +3285477328,3285477343,IT 3285477344,3285477359,EU 3285477360,3285477375,IT 3285477376,3285477631,FR @@ -95418,27 +107040,28 @@ 3285485640,3285485647,SK 3285485648,3285485727,EU 3285485728,3285485743,SK -3285485744,3285485799,EU +3285485744,3285485751,EU +3285485752,3285485759,SK +3285485760,3285485799,EU 3285485800,3285485815,SK 3285485816,3285486591,EU 3285486592,3285487103,IT 3285487104,3285487359,HU -3285487360,3285487391,NL -3285487392,3285487423,EU +3285487360,3285487375,NL +3285487376,3285487423,EU 3285487424,3285487487,GB 3285487488,3285487615,EU 3285487616,3285487679,NL 3285487680,3285487743,EU 3285487744,3285488127,NL -3285488128,3285488895,EU -3285488896,3285489663,GB +3285488128,3285488639,EU +3285488640,3285489663,GB 3285489664,3285490175,EU 3285490176,3285490319,RU 3285490320,3285490335,EU 3285490336,3285490463,RU 3285490464,3285490495,EU -3285490496,3285490511,RU -3285490512,3285490519,EU +3285490496,3285490519,RU 3285490520,3285490527,LT 3285490528,3285490535,LV 3285490536,3285490543,RU @@ -95455,38 +107078,28 @@ 3285492696,3285492735,GB 3285492736,3285493759,EU 3285493760,3285493775,ES -3285493776,3285493783,EU -3285493784,3285493791,ES -3285493792,3285493807,EU -3285493808,3285493887,ES -3285493888,3285493967,EU -3285493968,3285493983,ES -3285493984,3285493991,GB -3285493992,3285493999,EU +3285493776,3285493791,EU +3285493792,3285493887,ES +3285493888,3285493951,EU +3285493952,3285493983,ES +3285493984,3285493999,EU 3285494000,3285494015,ES 3285494016,3285494079,IT 3285494080,3285494111,EU 3285494112,3285494783,IT 3285494784,3285495807,EU 3285495808,3285496319,DE -3285496320,3285496335,ES -3285496336,3285496351,EU -3285496352,3285496383,ES -3285496384,3285496463,EU -3285496464,3285496471,ES -3285496472,3285496479,EU -3285496480,3285496495,ES +3285496320,3285496383,ES +3285496384,3285496447,EU +3285496448,3285496471,ES +3285496472,3285496495,EU 3285496496,3285496527,FR 3285496528,3285496543,EU 3285496544,3285496575,FR 3285496576,3285496607,EU -3285496608,3285496815,DE -3285496816,3285496831,EU -3285496832,3285497855,DE +3285496608,3285497855,DE 3285497856,3285497887,EU -3285497888,3285498031,DE -3285498032,3285498047,EU -3285498048,3285498079,DE +3285497888,3285498079,DE 3285498080,3285498095,EU 3285498096,3285498111,DE 3285498112,3285498367,IT @@ -95505,9 +107118,7 @@ 3285500288,3285500415,CZ 3285500416,3285500927,GB 3285500928,3285501183,DK -3285501184,3285501311,CZ -3285501312,3285501319,EU -3285501320,3285501327,CZ +3285501184,3285501327,CZ 3285501328,3285501335,EU 3285501336,3285501343,CZ 3285501344,3285501375,GB @@ -96392,7 +108003,8 @@ 3285766656,3285767679,UA 3285767680,3285768191,FR 3285768192,3285768703,RU -3285768704,3285769215,CH +3285768704,3285768959,RO +3285768960,3285769215,PL 3285769216,3285769727,DE 3285769728,3285770239,RO 3285770240,3285770495,NL @@ -96439,13 +108051,15 @@ 3285910304,3285910335,GB 3285910336,3285910399,ES 3285910400,3285910407,IT -3285910408,3285910463,GB +3285910408,3285910431,GB +3285910432,3285910463,NG 3285910464,3285910527,ES 3285910528,3285911551,GB 3285911552,3285912575,EU 3285912576,3285913087,GB 3285913088,3285913215,ES -3285913216,3285913343,EU +3285913216,3285913231,GB +3285913232,3285913343,EU 3285913344,3285913599,GB 3285913600,3285915647,EU 3285915648,3285915903,GB @@ -96457,7 +108071,8 @@ 3285916712,3285916719,CY 3285916720,3285916735,ES 3285916736,3285916799,GB -3285916800,3285917183,EU +3285916800,3285916927,EU +3285916928,3285917183,GB 3285917184,3285917439,ES 3285917440,3285917695,YE 3285917696,3285918719,EU @@ -96467,9 +108082,7 @@ 3285919488,3285919743,UA 3285919744,3285921791,QA 3285921792,3285921823,CZ -3285921824,3285921919,EU -3285921920,3285921983,GB -3285921984,3285922111,EU +3285921824,3285922111,GB 3285922112,3285922175,FR 3285922176,3285922183,GB 3285922184,3285922191,RU @@ -96490,7 +108103,14 @@ 3285926408,3285926415,ES 3285926416,3285926431,GB 3285926432,3285926463,CH -3285926464,3285926847,EU +3285926464,3285926511,GB +3285926512,3285926639,EU +3285926640,3285926671,GB +3285926672,3285926687,EU +3285926688,3285926719,IN +3285926720,3285926783,EU +3285926784,3285926815,GB +3285926816,3285926847,EU 3285926848,3285926911,GB 3285926912,3285927423,DE 3285927424,3285927679,GB @@ -96502,11 +108122,12 @@ 3285928224,3285928255,DE 3285928256,3285928271,GB 3285928272,3285928287,DE -3285928288,3285928447,EU +3285928288,3285928319,GB +3285928320,3285928447,EU 3285928448,3285928959,ES 3285928960,3285929983,EU -3285929984,3285930495,GB -3285930496,3285930559,EU +3285929984,3285930511,GB +3285930512,3285930559,EU 3285930560,3285930575,ES 3285930576,3285930623,GB 3285930624,3285930631,BE @@ -96515,7 +108136,8 @@ 3285930656,3285930671,NL 3285930672,3285930679,BE 3285930680,3285930687,DE -3285930688,3285930751,EU +3285930688,3285930719,GB +3285930720,3285930751,EU 3285930752,3285931007,GB 3285931008,3285932031,EU 3285932032,3285932287,NL @@ -96540,22 +108162,22 @@ 3285938944,3285938951,NG 3285938952,3285938959,NL 3285938960,3285938975,US -3285938976,3285939039,ES -3285939040,3285939199,EU +3285938976,3285939071,ES +3285939072,3285939199,EU 3285939200,3285939711,ES 3285939712,3285940223,EU -3285940224,3285940735,ES -3285940736,3285941247,GB +3285940224,3285940479,ES +3285940480,3285941247,GB 3285941248,3285942655,EU 3285942656,3285942783,IR 3285942784,3285943039,ES 3285943040,3285943295,SE 3285943296,3285943551,ES -3285943552,3285943559,DK -3285943560,3285943567,EU +3285943552,3285943567,GB 3285943568,3285943575,ES 3285943576,3285943583,DE -3285943584,3285943679,EU +3285943584,3285943631,GB +3285943632,3285943679,EU 3285943680,3285943807,GB 3285943808,3285944319,EU 3285944320,3285944831,US @@ -96563,8 +108185,8 @@ 3285945344,3285945599,ES 3285945600,3285945663,EU 3285945664,3285945695,FR -3285945696,3285945727,GB -3285945728,3285945855,EU +3285945696,3285945743,GB +3285945744,3285945855,EU 3285945856,3285946111,GB 3285946112,3285946367,ES 3285946368,3285946879,GB @@ -96580,21 +108202,27 @@ 3285949696,3285949823,ES 3285949824,3285949855,EU 3285949856,3285949887,ES -3285949888,3285949951,EU +3285949888,3285949903,GB +3285949904,3285949951,EU 3285949952,3285950463,ES 3285950464,3285950719,GB 3285950720,3285950783,US -3285950784,3285950975,EU +3285950784,3285950799,GB +3285950800,3285950959,EU +3285950960,3285950975,GB 3285950976,3285951231,NL 3285951232,3285951487,IT -3285951488,3285951615,EU +3285951488,3285951503,GB +3285951504,3285951615,EU 3285951616,3285951647,GB 3285951648,3285951679,ES -3285951680,3285951743,EU +3285951680,3285951695,GB +3285951696,3285951743,EU 3285951744,3285951999,GB 3285952000,3285952255,IT 3285952256,3285952511,SA -3285952512,3285955583,EU +3285952512,3285953535,CA +3285953536,3285955583,EU 3285955584,3285955839,DE 3285955840,3285956095,ES 3285956096,3285956351,FR @@ -96603,7 +108231,11 @@ 3285956864,3285957631,PT 3285957632,3285957887,PL 3285957888,3285958143,GB -3285958144,3285958847,EU +3285958144,3285958655,EU +3285958656,3285958671,GB +3285958672,3285958783,EU +3285958784,3285958799,GB +3285958800,3285958847,EU 3285958848,3285958895,NL 3285958896,3285959039,GB 3285959040,3285959167,DE @@ -96612,7 +108244,8 @@ 3285959936,3285960191,ES 3285960192,3285960447,FR 3285960448,3285960703,GB -3285960704,3285962751,EU +3285960704,3285961727,CA +3285961728,3285962751,EU 3285962752,3285963775,DE 3285963776,3285964287,GB 3285964288,3285964799,FR @@ -96623,7 +108256,10 @@ 3285967616,3285968383,BE 3285968384,3285968639,ES 3285968640,3285968895,PL -3285968896,3285971199,EU +3285968896,3285971007,EU +3285971008,3285971023,GB +3285971024,3285971183,EU +3285971184,3285971199,GB 3285971200,3285971455,FR 3285971456,3285971711,DE 3285971712,3285971967,GB @@ -96631,7 +108267,13 @@ 3285972224,3285972479,EU 3285972480,3285972735,PL 3285972736,3285972991,FR -3285972992,3285975039,GB +3285972992,3285973095,GB +3285973096,3285973247,EU +3285973248,3285973767,GB +3285973768,3285973791,EU +3285973792,3285973823,GB +3285973824,3285974015,EU +3285974016,3285975039,GB 3285975040,3286106111,FR 3286106112,3286106687,EE 3286106688,3286106691,FI @@ -96673,7 +108315,6 @@ 3286313984,3286314495,CH 3286314496,3286315007,IL 3286315008,3286315519,UA -3286315520,3286316031,DE 3286316032,3286316543,UA 3286316544,3286317055,NL 3286317056,3286317567,RU @@ -96757,7 +108398,7 @@ 3286423808,3286424063,CZ 3286424064,3286424319,LV 3286424320,3286424575,FR -3286424576,3286424831,UA +3286424576,3286424831,RU 3286424832,3286425087,TR 3286425088,3286425343,RU 3286425344,3286425599,IT @@ -96781,7 +108422,6 @@ 3286654976,3286655231,UA 3286655232,3286655487,KZ 3286655488,3286655743,LT -3286655744,3286655999,UA 3286656000,3286656255,CH 3286656256,3286656511,RU 3286656512,3286656767,GR @@ -96863,7 +108503,76 @@ 3286790912,3286791679,GB 3286791680,3286791935,AT 3286791936,3286794239,GB -3286794240,3286892543,DE +3286794240,3286795263,DE +3286795264,3286795519,LR +3286795520,3286795775,DE +3286795776,3286796031,LR +3286796032,3286796287,DE +3286796288,3286796543,LR +3286796544,3286796799,DE +3286796800,3286797055,RO +3286797056,3286797311,DE +3286797312,3286797567,HU +3286797568,3286798847,DE +3286798848,3286799359,IT +3286799360,3286801407,DE +3286801408,3286801663,NL +3286801664,3286802943,DE +3286802944,3286803199,AU +3286803200,3286805503,DE +3286805504,3286806527,GB +3286806528,3286808063,DE +3286808064,3286808575,GR +3286808576,3286809087,EG +3286809088,3286809599,DE +3286809600,3286809855,GB +3286809856,3286810111,PT +3286810112,3286812927,DE +3286812928,3286813183,PT +3286813184,3286813695,EG +3286813696,3286813951,DE +3286813952,3286814207,AU +3286814208,3286814719,HU +3286814720,3286819839,DE +3286819840,3286820863,NZ +3286820864,3286826751,DE +3286826752,3286827007,IT +3286827008,3286827263,DE +3286827264,3286827519,GB +3286827520,3286832127,DE +3286832128,3286832895,GB +3286832896,3286835711,DE +3286835712,3286836223,ES +3286836224,3286836479,IT +3286836480,3286836735,DE +3286836736,3286836991,IT +3286836992,3286837247,DE +3286837248,3286839295,GB +3286839296,3286839807,DE +3286839808,3286840319,ES +3286840320,3286841087,DE +3286841088,3286841343,IT +3286841344,3286842623,DE +3286842624,3286843391,IT +3286843392,3286844415,IE +3286844416,3286844671,IT +3286844672,3286847487,DE +3286847488,3286848511,GB +3286848512,3286849535,DE +3286849536,3286849791,IT +3286849792,3286851583,DE +3286851584,3286852607,IE +3286852608,3286855679,DE +3286855680,3286857727,IE +3286857728,3286864895,DE +3286864896,3286865151,IT +3286865152,3286872063,DE +3286872064,3286879231,IE +3286879232,3286882303,DE +3286882304,3286883327,IE +3286883328,3286888447,DE +3286888448,3286889471,IE +3286889472,3286892543,DE 3286892544,3286893055,LI 3286893056,3286893567,RU 3286893568,3286894591,UA @@ -97061,9 +108770,7 @@ 3287219712,3287220223,SE 3287220224,3287259375,RU 3287259376,3287259383,DK -3287259384,3287267191,RU -3287267192,3287267201,KZ -3287267202,3287271119,RU +3287259384,3287271119,RU 3287271120,3287271127,UZ 3287271128,3287285759,RU 3287285760,3287416831,NL @@ -97099,11 +108806,12 @@ 3287448064,3287448575,GB 3287448576,3287449087,PL 3287449088,3287449599,BG +3287449600,3287450111,PL 3287450112,3287450623,DK 3287450624,3287451135,SE 3287451136,3287451647,PL 3287451648,3287452159,ES -3287452160,3287452671,FR +3287452160,3287452671,PL 3287452672,3287453183,CH 3287453184,3287454207,RU 3287454208,3287454719,SE @@ -97146,7 +108854,6 @@ 3287468032,3287469055,UA 3287469056,3287471103,DE 3287471104,3287472127,GB -3287472128,3287473151,FI 3287473152,3287474175,GB 3287474176,3287476223,DE 3287476224,3287477247,PL @@ -97155,16 +108862,11 @@ 3287479296,3287480319,RO 3287480320,3287481343,AT 3287481344,3287482367,PL -3287482368,3287499279,DE -3287499280,3287499287,FR -3287499288,3287499295,US -3287499296,3287499439,DE +3287482368,3287499439,DE 3287499440,3287499471,GB 3287499472,3287499487,DE 3287499488,3287499503,GB -3287499504,3287501359,DE -3287501360,3287501367,NL -3287501368,3287507983,DE +3287499504,3287507983,DE 3287507984,3287507991,FR 3287507992,3287515375,DE 3287515376,3287515383,CZ @@ -97178,9 +108880,7 @@ 3287541088,3287541095,CZ 3287541096,3287542815,DE 3287542816,3287542831,US -3287542832,3287544647,DE -3287544648,3287544655,CH -3287544656,3287548927,DE +3287542832,3287548927,DE 3287548928,3287549439,UA 3287549440,3287549951,SE 3287549952,3287550463,UA @@ -97245,7 +108945,7 @@ 3287664896,3287665151,GB 3287665152,3287665407,NO 3287665408,3287665919,PL -3287666176,3287666431,RU +3287665920,3287666431,RU 3287666432,3287666687,DK 3287666688,3287666943,SI 3287666944,3287667199,CZ @@ -97258,6 +108958,7 @@ 3287668736,3287668991,SI 3287668992,3287669247,PL 3287669248,3287669503,LI +3287669504,3287669759,MD 3287669760,3287670015,RO 3287670016,3287670271,UA 3287670272,3287670527,PL @@ -97329,9 +109030,7 @@ 3287713612,3287713615,FR 3287713616,3287713623,GB 3287713624,3287713667,FR -3287713668,3287713711,GB -3287713712,3287713727,FR -3287713728,3287713775,GB +3287713668,3287713775,GB 3287713776,3287713791,FR 3287713792,3287714047,GB 3287714048,3287715071,FR @@ -97363,7 +109062,7 @@ 3287736832,3287737343,LV 3287737344,3287737855,GB 3287737856,3287738367,FR -3287738368,3287738879,GB +3287738368,3287738879,CH 3287738880,3287739391,DE 3287739392,3287739903,NL 3287739904,3287740415,PT @@ -97453,14 +109152,12 @@ 3287950080,3287950335,DE 3287950336,3287950591,UA 3287950592,3287950847,PL -3287950848,3287951103,DE 3287951104,3287951359,HU 3287951360,3287951615,FR 3287951616,3287951871,CH 3287951872,3287952127,RU 3287952128,3287952383,UA -3287952384,3287953151,CH -3287953152,3287953407,IL +3287952384,3287953407,CH 3287953408,3287953663,DE 3287953664,3287953919,GB 3287953920,3287954175,DE @@ -97532,9 +109229,7 @@ 3288401152,3288401407,RU 3288401408,3288401663,SA 3288401664,3288401919,MU -3288401920,3288403711,ZA -3288403712,3288403967,MU -3288403968,3288406527,ZA +3288401920,3288406527,ZA 3288406528,3288407039,KE 3288407040,3288408063,NA 3288408064,3288413183,ZA @@ -97569,8 +109264,8 @@ 3288436224,3288436479,US 3288436480,3288436735,EG 3288436736,3288440831,ZA -3288440832,3288441103,VC -3288441104,3288442879,BB +3288440832,3288441343,VC +3288441344,3288442879,BB 3288442880,3288443135,KN 3288443136,3288443647,VC 3288443648,3288444927,BB @@ -97712,6 +109407,7 @@ 3290118400,3290120191,US 3290120192,3290128383,MU 3290128384,3290136575,ZW +3290136576,3290169343,NG 3290169344,3290171135,ZA 3290171136,3290171391,SZ 3290171392,3290171647,ZA @@ -97776,6 +109472,20 @@ 3291203328,3291203583,ZW 3291203584,3291203839,ZA 3291203840,3291204095,EG +3291204096,3291204351,KE +3291204352,3291204863,ZA +3291204864,3291205119,KE +3291205120,3291205631,GH +3291205632,3291206143,ZA +3291206144,3291206399,AO +3291206400,3291206911,KE +3291207168,3291207423,MG +3291207424,3291207679,NG +3291207680,3291207935,BW +3291207936,3291208447,KE +3291208448,3291208703,EG +3291208704,3291208959,KE +3291208960,3291209215,TZ 3291217920,3291230207,ZA 3291230208,3291234303,GH 3291234304,3291242495,ZA @@ -97849,7 +109559,7 @@ 3291437568,3291437823,NA 3291437824,3291439103,ZA 3291447296,3291463679,CI -3291742208,3292004351,ZA +3291480064,3292528639,ZA 3300917248,3300921343,MU 3300925440,3300929535,MG 3300933632,3300950015,MU @@ -97925,6 +109635,9 @@ 3302535168,3302536191,UG 3302536192,3302537215,GH 3302537216,3302538239,NG +3302538240,3302539263,GH +3302551552,3302552063,EG +3302552064,3302552575,KE 3302552576,3302552831,TZ 3302552832,3302553087,KE 3302553088,3302553343,EG @@ -97949,7 +109662,10 @@ 3302753616,3302760447,NG 3302760448,3302768639,ZA 3302768640,3302776831,NG -3302809600,3302817791,NG +3302776832,3302785023,ZW +3302801408,3302805503,NG +3302805504,3302809599,MW +3302813696,3302817791,NG 3302817792,3302883327,EG 3302883328,3302948863,MA 3302948864,3302949119,MU @@ -97970,18 +109686,59 @@ 3302953728,3302953983,AO 3302953984,3302954239,SD 3302954240,3302954495,KE -3302987264,3302987775,MU +3302954496,3302955007,ZA +3302955008,3302955263,LS +3302955264,3302955519,UG 3305111552,3307208703,TN +3307208704,3309305855,EG +3309305856,3312451583,ZA +3312451584,3312975871,DZ +3312975872,3313500159,EG 3313500160,3313762303,MA +3313762304,3314024447,EG +3314024448,3314286591,KE +3314286592,3314548735,DZ 3315597312,3316121599,EG 3316121600,3316645887,ZA 3316645888,3317170175,KE 3317694464,3318218751,EG 3318218752,3318743039,DZ +3319398400,3319529471,MZ +3319529472,3319537663,ZM +3319537664,3319545855,UG +3319545856,3319554047,SO +3319554048,3319562239,KE +3319562240,3319570431,LS +3319570432,3319578623,GH +3319578624,3319595007,ZM +3319595008,3319611391,ZA +3319611392,3319619583,GH +3319619584,3319627775,ZA +3319652352,3319660543,ZW +3319660544,3319791615,EG 3319791616,3320053759,MU -3320053760,3320315903,ZA 3320578048,3320643583,ZA -3321886720,3321888767,MU +3320643584,3320709119,KE +3320709120,3320840191,ZA +3321364480,3321430015,KE +3321430016,3321495551,MZ +3321495552,3321561087,TZ +3321561088,3321593855,SD +3321626624,3321692159,SD +3321692160,3321708543,NG +3321708544,3321724927,GH +3321724928,3321757695,MA +3321757696,3321790463,KE +3321790464,3321806847,LS +3321806848,3321823231,SD +3321823232,3321839615,NG +3321839616,3321855999,GH +3321856000,3321860095,CV +3321860096,3321864191,ZA +3321864192,3321868287,NG +3321868288,3321872383,CG +3321872384,3321876479,GM +3321876480,3321880575,NG 3321954304,3321970687,US 3322019840,3322023935,US 3322023936,3322028031,CL @@ -98004,7 +109761,8 @@ 3322675200,3322683391,US 3322683392,3322691583,BR 3322740736,3322773503,US -3322806272,3322875903,US +3322806272,3322871807,US +3322873856,3322875903,US 3322875904,3322888191,AU 3322937344,3322945535,US 3323003136,3323003391,JP @@ -98068,7 +109826,13 @@ 3323461632,3323659263,US 3323659264,3323660543,NZ 3323662336,3323674623,US -3323723776,3324051455,US +3323723776,3324011007,US +3324011008,3324011263,KN +3324011264,3324019711,US +3324019712,3324019967,KN +3324019968,3324036351,US +3324036352,3324047615,KN +3324047616,3324051455,US 3324051456,3324182527,CA 3324182528,3324256255,US 3324256256,3324259327,SA @@ -98079,7 +109843,9 @@ 3324379136,3324380159,CA 3324380160,3324391423,US 3324395520,3324399615,US -3324411904,3324579839,US +3324411904,3324470271,US +3324470272,3324471295,GB +3324471296,3324579839,US 3324579840,3324583935,NZ 3324583936,3324588031,CL 3324592128,3324596223,US @@ -98402,7 +110168,32 @@ 3330778880,3330779135,GB 3330779136,3330791423,US 3330791424,3330791679,CA -3330791680,3331102463,US +3330791680,3330883583,US +3330883584,3330884351,NL +3330884352,3330884863,US +3330884864,3330885119,GB +3330885120,3330888063,US +3330888064,3330888127,NL +3330888128,3330888191,US +3330888192,3330888703,AU +3330888704,3330888959,US +3330888960,3330889215,CH +3330889216,3330889471,GB +3330889472,3330890239,JP +3330890240,3330890751,BE +3330890752,3330891263,GB +3330891264,3330892287,US +3330892288,3330892543,FR +3330892544,3330893567,US +3330893568,3330893823,NL +3330893824,3330894079,CA +3330894080,3330894591,GB +3330894592,3330894847,DE +3330894848,3330897919,US +3330897920,3330898175,CA +3330898176,3330898431,DE +3330898432,3330898943,FR +3330898944,3331102463,US 3331102464,3331102719,CA 3331102720,3331194879,US 3331194880,3331260415,AU @@ -98444,8 +110235,8 @@ 3333012992,3333029887,CA 3333029888,3333212415,US 3333212416,3333212927,A1 -3333212928,3333213119,US -3333213120,3333213439,A1 +3333212928,3333213055,US +3333213056,3333213439,A1 3333213440,3333213695,US 3333213696,3333214079,A1 3333214080,3333385983,US @@ -98670,9 +110461,7 @@ 3339093504,3339094015,NL 3339094016,3339142655,US 3339142656,3339142911,NL -3339142912,3339145727,US -3339145728,3339145983,NL -3339145984,3339146239,US +3339142912,3339146239,US 3339146496,3339147007,US 3339147008,3339147775,CA 3339147776,3339148031,MS @@ -98690,17 +110479,25 @@ 3339179008,3339180031,US 3339180032,3339181055,CA 3339181056,3339184127,US -3339184128,3339186175,CA +3339184128,3339184639,CA +3339184640,3339184895,US +3339184896,3339186175,CA 3339186176,3339669503,US 3339669504,3339671807,CA 3339672576,3339673599,US 3339681792,3339747327,US -3339747328,3339748351,CA +3339747328,3339747583,CA +3339747584,3339747839,FR +3339747840,3339748351,CA 3339748352,3339753471,US 3339753472,3339754495,CA 3339754496,3339760639,US 3339760640,3339761663,CA -3339761664,3339923455,US +3339761664,3339778303,US +3339778304,3339778367,GB +3339778368,3339778431,US +3339778432,3339778495,CY +3339778496,3339923455,US 3339923456,3339927551,CA 3339943936,3339952127,US 3339952128,3339956223,CA @@ -98784,8 +110581,7 @@ 3340926160,3340926175,AR 3340926176,3340926199,US 3340926200,3340926207,DE -3340926208,3340926215,US -3340926216,3340926223,BO +3340926208,3340926223,US 3340926224,3340926231,PT 3340926232,3340926247,CA 3340926248,3340926255,AR @@ -98868,11 +110664,17 @@ 3341778944,3341807615,US 3341807616,3341808639,CA 3341808640,3341828095,US -3341844480,3341863935,US +3341844480,3341854079,US +3341854080,3341854207,SG +3341854208,3341854551,US +3341854552,3341854559,SG +3341854560,3341863935,US 3341863936,3341864959,AG 3341864960,3341867007,US 3341867008,3341869055,CA -3341869056,3342139391,US +3341869056,3341873151,US +3341873152,3341875199,A1 +3341875200,3342139391,US 3342139392,3342204927,CH 3342204928,3342483455,US 3342499840,3342505983,US @@ -98885,26 +110687,104 @@ 3342526464,3342528511,CA 3342528512,3342548991,US 3342565376,3342567423,CA -3342567424,3342578687,US +3342567424,3342569471,US +3342569472,3342569727,CR +3342569728,3342579711,US 3342579712,3342581759,CA +3342581760,3342595071,US +3342595072,3342595839,CA +3342595840,3342596095,FR +3342596096,3342598143,US 3342598144,3342603263,CA 3342603264,3342604799,US 3342604800,3342605311,CA 3342605312,3342605567,US 3342605568,3342663679,CA -3342663680,3343319295,US +3342663680,3343007743,US +3343024128,3343046915,US +3343046916,3343046919,GB +3343046920,3343046927,IT +3343046928,3343046939,US +3343046940,3343046943,RU +3343046944,3343046947,KW +3343046948,3343046951,PT +3343046952,3343046955,US +3343046956,3343046959,IT +3343046960,3343046963,BE +3343046964,3343046967,US +3343046968,3343046971,NL +3343046972,3343046979,US +3343046980,3343046983,GB +3343046984,3343046987,US +3343046988,3343046991,CA +3343046992,3343046999,US +3343047000,3343047003,RU +3343047004,3343047011,US +3343047012,3343047015,AU +3343047016,3343047039,US +3343047040,3343047047,CA +3343047048,3343047079,US +3343047080,3343047087,GR +3343047088,3343047111,US +3343047112,3343047127,SG +3343047128,3343047143,US +3343047144,3343047159,IT +3343047160,3343047327,US +3343047328,3343047343,IT +3343047344,3343047423,US +3343047424,3343047439,RU +3343047440,3343047455,UA +3343047456,3343047471,IE +3343047472,3343047519,US +3343047520,3343047535,IN +3343047536,3343047599,US +3343047600,3343047615,GB +3343047616,3343047687,US +3343047688,3343047695,CA +3343047696,3343047727,US +3343047728,3343047735,CA +3343047736,3343047743,US +3343047744,3343047751,AU +3343047752,3343047759,BR +3343047760,3343047791,US +3343047792,3343047799,PL +3343047800,3343047847,US +3343047848,3343047855,IT +3343047856,3343047863,US +3343047864,3343047871,RU +3343047872,3343047879,AU +3343047880,3343047903,US +3343047904,3343047911,AR +3343047912,3343047935,US +3343047936,3343047967,CA +3343047968,3343055871,US +3343055872,3343056895,CA +3343056896,3343167487,US +3343167488,3343169535,CA +3343169536,3343171583,US +3343171584,3343172607,BM +3343172608,3343172735,US +3343172736,3343172751,HK +3343172752,3343319295,US 3343319296,3343364095,CA 3343364096,3343365119,US 3343365632,3343372543,CA 3343373312,3343376383,US 3343380480,3343384575,CA -3343384576,3343922175,US -3343922176,3343922303,PA -3343922304,3343922975,US +3343384576,3343922975,US 3343922976,3343923007,PA 3343923008,3343923135,US 3343923136,3343923199,HK -3343923200,3344171007,US +3343923200,3344140287,US +3344140288,3344141311,CA +3344141312,3344144383,US +3344144384,3344146431,CA +3344146432,3344154623,US +3344154624,3344156671,GD +3344156672,3344158719,CA +3344158720,3344166911,US +3344166912,3344168959,CA +3344168960,3344171007,US 3344171008,3344255999,CA 3344256000,3344257023,US 3344261120,3344268543,CA @@ -98920,11 +110800,23 @@ 3344299776,3344300543,CA 3344300544,3344300799,US 3344300800,3344302079,CA -3344302080,3344486399,US +3344302080,3344406527,US +3344406528,3344408575,CA +3344408576,3344429055,US +3344429056,3344431103,CA +3344431104,3344486399,US 3344486400,3344488447,NL 3344488448,3344633855,US 3344633856,3344637951,CH 3344637952,3344642047,US +3344662528,3344670719,US +3344670720,3344671743,GP +3344671744,3344676863,US +3344676864,3344678911,CA +3344678912,3344681983,US +3344681984,3344685055,CA +3344685056,3344694271,US +3344694272,3344695295,CA 3344695296,3344937471,US 3344937472,3344937983,EG 3344937984,3344938239,US @@ -98934,8 +110826,26 @@ 3344955648,3344964607,US 3344964608,3344965631,CA 3344965632,3344969727,US -3345022976,3345367039,US -3345416192,3345418239,US +3344990208,3345007615,US +3345007616,3345008639,CA +3345008640,3345010687,US +3345010688,3345011711,CA +3345011712,3345301503,US +3345317888,3345327103,US +3345327104,3345328127,CA +3345328128,3345333247,US +3345333248,3345334271,MF +3345334272,3345339391,US +3345339392,3345340415,CA +3345340416,3345367039,US +3345383424,3345384447,CA +3345384448,3345390591,US +3345390592,3345391615,CA +3345391616,3345398783,US +3345398784,3345399807,BS +3345399808,3345401855,PR +3345401856,3345403903,CA +3345403904,3345418239,US 3345418240,3345419519,NL 3345419520,3345422847,US 3345423360,3345424383,TC @@ -98977,12 +110887,55 @@ 3345666592,3345666639,NO 3345666640,3345667103,US 3345667104,3345667119,IN -3345667120,3346282495,US +3345667120,3346219007,US +3346235392,3346241535,US +3346241536,3346243583,CA +3346243584,3346282495,US 3346282496,3346284543,PR -3346333696,3346923519,US +3346300928,3346323455,US +3346323456,3346325503,CA +3346325504,3346327551,US +3346327552,3346328575,CA +3346328576,3346481151,US +3346497536,3346498559,CA +3346498560,3346499583,US +3346499584,3346501631,VI +3346501632,3346506047,US +3346506048,3346506055,CA +3346506056,3346510271,US +3346510272,3346510335,IL +3346510336,3346520063,US +3346520064,3346521087,CA +3346521088,3346522347,US +3346522348,3346522350,BD +3346522351,3346522401,US +3346522402,3346522404,IN +3346522405,3346522691,US +3346522692,3346522704,PT +3346522705,3346522773,US +3346522774,3346522783,PT +3346522784,3346523113,US +3346523114,3346523121,TH +3346523122,3346523135,US +3346523136,3346523391,BO +3346523392,3346523647,RU +3346523648,3346523903,US +3346523904,3346524159,FR +3346524160,3346525183,CA +3346525184,3346528255,US +3346528256,3346529279,PR +3346529280,3346530303,CA +3346530304,3346923519,US 3346923520,3346989055,CA 3346989056,3347005439,US -3347054592,3349268479,US +3347021824,3347022847,CA +3347022848,3347030527,US +3347030528,3347030783,IN +3347030784,3347033087,US +3347033088,3347034111,CA +3347034112,3347039231,US +3347039232,3347040255,DM +3347040256,3349268479,US 3349268480,3349268991,CA 3349268992,3349273087,US 3349273088,3349273343,CA @@ -98999,7 +110952,17 @@ 3349608448,3349609215,US 3349609216,3349610495,CA 3349610496,3349614591,US -3349676032,3349987327,US +3349643264,3349644287,CA +3349644288,3349645311,US +3349645312,3349647359,CA +3349647360,3349649407,US +3349649408,3349653503,CA +3349653504,3349692415,US +3349708800,3349731327,US +3349731328,3349733375,CA +3349733376,3349739519,US +3349739520,3349740543,CA +3349740544,3349987327,US 3349987328,3349996543,BM 3349996544,3349997055,KY 3349997056,3350003711,BM @@ -99016,6 +110979,7 @@ 3350470656,3350475775,US 3350475776,3350476799,CA 3350476800,3350478847,US +3350495232,3350511615,US 3350528000,3350593535,US 3350593536,3350609919,CA 3350614016,3350618111,US @@ -99027,10 +110991,8 @@ 3350862080,3350864639,CL 3350864640,3350953983,US 3350986752,3350994943,US -3350994944,3350995199,CA -3350995200,3350997503,US -3350997504,3350997759,CA -3350997760,3350999039,US +3350994944,3350998015,CA +3350998016,3350999039,US 3351052288,3351068671,US 3351117824,3351232511,US 3351232512,3351232767,IL @@ -99146,7 +111108,9 @@ 3351524352,3351642111,US 3351642112,3351698431,CA 3351698432,3351904255,US -3351904256,3351969791,CA +3351912448,3351927551,CA +3351927552,3351927807,US +3351927808,3351969791,CA 3351969792,3352035327,IL 3352035328,3352036351,CA 3352036352,3352046591,US @@ -99157,7 +111121,9 @@ 3352066048,3352067071,CA 3352067072,3352068095,US 3352068096,3352069119,CA -3352069120,3352082431,US +3352069120,3352069919,US +3352069920,3352069935,CO +3352069936,3352082431,US 3352082432,3352083455,JM 3352083456,3352088575,US 3352088576,3352090623,CA @@ -99560,7 +111526,6 @@ 3356157952,3356158207,CL 3356158208,3356158463,MX 3356158464,3356158719,CL -3356158720,3356158975,AR 3356158976,3356159743,CL 3356159744,3356160255,MX 3356160256,3356160511,GT @@ -99692,9 +111657,16 @@ 3356379648,3356380159,AR 3356380160,3356380927,CL 3356380928,3356381183,DO -3356381184,3356389375,CL +3356381184,3356381439,CL +3356381440,3356381695,PA +3356381696,3356381951,UY +3356381952,3356382207,EC +3356382208,3356389375,CL 3356389376,3356389887,CO -3356389888,3356391423,CL +3356389888,3356390399,CL +3356390400,3356390655,AR +3356390656,3356391167,CL +3356391168,3356391423,PA 3356391424,3356393471,CO 3356393472,3356413183,CL 3356413184,3356413951,CO @@ -99706,9 +111678,19 @@ 3356493824,3356495871,ZA 3356495872,3356499967,AR 3356499968,3356508159,MX -3356508160,3356514303,AR +3356508160,3356508671,AR +3356508672,3356509183,CR +3356509184,3356510207,VE +3356510208,3356511999,AR +3356512000,3356512255,CO +3356512256,3356514303,AR 3356514304,3356514559,US -3356516352,3356557311,AR +3356514560,3356514815,AR +3356516352,3356520447,AR +3356520448,3356521471,CL +3356521472,3356521727,AR +3356521728,3356522495,CO +3356522496,3356557311,AR 3356557312,3356819455,BR 3356819456,3356884991,CO 3356884992,3356950527,CL @@ -100123,6 +112105,7 @@ 3359481856,3359498239,AR 3359498240,3359501311,PY 3359501312,3359502335,SR +3359502336,3359504383,AR 3359506432,3359508479,US 3359508480,3359514623,VE 3359514624,3359516671,GT @@ -100405,7 +112388,7 @@ 3362529280,3362533375,PA 3362537472,3362545663,AR 3362545664,3362549759,PE -3362549760,3362551807,AR +3362549760,3362553855,AR 3362553856,3362557951,PY 3362562048,3362563071,BZ 3362563072,3362563199,PA @@ -100483,13 +112466,14 @@ 3363471360,3363487743,CR 3363487744,3363504127,CO 3363504128,3363512319,PE -3363520512,3363553791,AR +3363512320,3363553791,AR 3363553792,3363554047,PE 3363554048,3363557375,AR 3363561472,3363565567,CO 3363569664,3363577855,PA 3363577856,3363586047,CL 3363586048,3363594239,BZ +3363594240,3363598335,AR 3363602432,3363610623,AN 3363610624,3363614719,CO 3363618816,3363622911,UY @@ -100508,6 +112492,11 @@ 3363733504,3363831807,AR 3363831808,3378511871,BR 3378511872,3383754751,MX +3384279040,3384410111,CO +3384541184,3384672255,CL +3384672256,3384688639,HN +3384688640,3384705023,CO +3384705024,3384737791,PA 3384737792,3385851903,CR 3385851904,3386114047,VE 3386114048,3386245119,AR @@ -100601,6 +112590,7 @@ 3389016576,3389017087,AU 3389017088,3389017343,JP 3389017344,3389017855,HK +3389017856,3389018111,VN 3389018112,3389018367,PG 3389018368,3389018623,ID 3389018624,3389019135,AU @@ -100684,6 +112674,7 @@ 3389195776,3389196287,HK 3389196288,3389197567,AU 3389197568,3389197823,IN +3389197824,3389198079,ID 3389198080,3389198335,IN 3389198336,3389202431,NZ 3389202432,3389210623,AU @@ -100774,10 +112765,10 @@ 3389412352,3389412863,NZ 3389412864,3389413119,AU 3389413120,3389413375,NZ -3389413376,3389413887,AP +3389413376,3389413887,CN 3389413888,3389414143,TH 3389414144,3389414655,AU -3389414656,3389414911,NZ +3389414656,3389414911,CN 3389414912,3389415167,HK 3389415168,3389415423,KR 3389415424,3389415935,VN @@ -100827,12 +112818,15 @@ 3389528576,3389529087,JP 3389529088,3389529599,ID 3389529600,3389529855,PH -3389529856,3389530111,AP +3389529856,3389530111,HK 3389530112,3389532159,AU 3389532160,3389533183,SG 3389533184,3389534207,NZ 3389534208,3389538303,JP -3389538304,3389541375,TH +3389538304,3389538559,AU +3389538560,3389540351,TH +3389540352,3389541375,KH +3389541376,3389541631,AU 3389541632,3389541887,JP 3389541888,3389542399,TH 3389542400,3389543423,JP @@ -100859,7 +112853,7 @@ 3389607424,3389607679,AU 3389607680,3389608191,VN 3389608192,3389608447,TH -3389608448,3389608703,AP +3389608448,3389608703,HK 3389608704,3389608959,AU 3389608960,3389609215,VN 3389609216,3389609471,ID @@ -100893,11 +112887,13 @@ 3389789696,3389790719,AU 3389790720,3389790975,BN 3389790976,3389791231,JP -3389791232,3389791999,AP +3389791232,3389791743,AU +3389791744,3389791999,JP 3389792000,3389801983,AU 3389801984,3389802239,NZ 3389802240,3389802751,AU 3389802752,3389803263,TH +3389803264,3389803519,ID 3389803520,3389806079,NZ 3389806080,3389807359,AU 3389807360,3389807615,NZ @@ -100908,6 +112904,7 @@ 3389809152,3389809919,AU 3389809920,3389810175,IN 3389810176,3389810431,AU +3389810432,3389810687,IN 3389810688,3389811199,NZ 3389811200,3389811711,AU 3389811712,3389811967,NZ @@ -100937,7 +112934,9 @@ 3389936896,3389937663,PH 3389937664,3389937919,CN 3389937920,3389938175,AU -3389939456,3389939711,AU +3389938176,3389938687,KR +3389938688,3389939199,ID +3389939200,3389939711,AU 3389939712,3389940223,NZ 3389940224,3389940479,AU 3389940480,3389940991,NZ @@ -100958,19 +112957,22 @@ 3389950976,3389951743,NZ 3389951744,3389953279,AU 3389953280,3389953535,NZ -3389953792,3389954303,AU +3389953536,3389954303,AU 3389954304,3389954815,SG 3389954816,3389956607,AU 3389956608,3389957375,TH 3389957376,3389957631,KR 3389957632,3389957887,AU 3389957888,3389958399,NZ -3389958400,3389970431,AU +3389958400,3389969663,AU +3389969664,3389969919,CN +3389969920,3389970431,AU 3389970432,3389971199,NZ 3389971200,3389971967,AU 3389971968,3389972223,HK 3389972224,3389972479,AU -3389972480,3389973759,NZ +3389972480,3389972735,IN +3389972736,3389973759,NZ 3389973760,3389975295,AU 3389975296,3389976319,CN 3389976320,3389979647,AU @@ -101063,14 +113065,25 @@ 3390832640,3390963711,TH 3390963712,3391094783,KR 3391094784,3391356927,JP -3391356928,3391469055,NZ +3391356928,3391414783,NZ +3391414784,3391415039,AU +3391415040,3391441407,NZ +3391441408,3391441663,PH +3391441664,3391444479,NZ +3391444480,3391444991,VN +3391444992,3391453183,NZ +3391453184,3391453439,ID +3391453440,3391469055,NZ 3391469056,3391469311,AU 3391469312,3391487999,NZ 3391488000,3391492095,CN 3391492096,3391496191,HK 3391496192,3391500287,SG 3391500288,3391504383,PK -3391504384,3391524863,CN +3391504384,3391523583,CN +3391523584,3391523839,AU +3391523840,3391524863,CN +3391524864,3391525375,AU 3391525376,3391525887,CN 3391525888,3391526143,AU 3391526144,3391526655,CN @@ -101113,7 +113126,7 @@ 3391725568,3391733759,TH 3391733760,3391734015,IN 3391734016,3391734783,AU -3391734784,3391736831,JP +3391735808,3391736831,JP 3391736832,3391737855,IN 3391737856,3391741951,JP 3391741952,3391744959,IN @@ -101168,7 +113181,11 @@ 3391909888,3391910911,IO 3391910912,3391911935,AU 3391911936,3391913983,HK -3391913984,3391920127,TH +3391913984,3391915519,TH +3391915520,3391915775,AU +3391915776,3391916287,TH +3391916288,3391916543,VN +3391916544,3391920127,TH 3391920128,3391930367,AU 3391930368,3391946751,TH 3391946752,3391947007,DE @@ -101218,7 +113235,7 @@ 3392086016,3392094207,AU 3392094208,3392098559,ID 3392098560,3392098815,AU -3392098816,3392099327,PH +3392098816,3392099327,CN 3392099328,3392100095,AU 3392100096,3392100351,VN 3392100352,3392100607,ID @@ -101245,9 +113262,15 @@ 3392143360,3392208895,JP 3392208896,3392286975,NZ 3392286976,3392287231,US -3392287232,3392295935,NZ +3392287232,3392287743,NZ +3392287744,3392288767,NP +3392288768,3392295935,NZ 3392295936,3392296191,AU -3392296192,3392339967,NZ +3392296192,3392324607,NZ +3392324608,3392325119,AU +3392325120,3392325631,NZ +3392325632,3392326655,ID +3392326656,3392339967,NZ 3392339968,3392340991,NP 3392340992,3392344063,JP 3392344064,3392348159,ID @@ -101255,6 +113278,7 @@ 3392354304,3392356351,ID 3392356352,3392364543,NP 3392364544,3392372735,ID +3392372736,3392380927,HK 3392380928,3392385023,AU 3392385024,3392389119,BD 3392389120,3392401407,ID @@ -101363,7 +113387,7 @@ 3392670848,3392671743,HK 3392671744,3392675839,JP 3392675840,3392681983,NZ -3392681984,3392682239,AP +3392681984,3392682239,SG 3392682240,3392682495,VN 3392682496,3392683007,IN 3392683008,3392684031,AU @@ -101379,6 +113403,7 @@ 3392765952,3392782335,TH 3392782336,3392790527,HK 3392790528,3392794623,JP +3392794624,3392798719,CN 3392798720,3392798975,LA 3392798976,3392799231,JP 3392799232,3392799487,PH @@ -101392,7 +113417,7 @@ 3392815104,3392819199,ID 3392819200,3392823295,MY 3392823296,3392824319,KH -3392824320,3392824831,AU +3392824320,3392824575,AU 3392824832,3392825343,IN 3392825344,3392826367,JP 3392826368,3392827391,PH @@ -101414,7 +113439,7 @@ 3392864512,3392864767,AU 3392864768,3392865279,IN 3392865280,3392866303,NU -3392868352,3392880639,AU +3392866304,3392880639,AU 3392880640,3392888831,PK 3392888832,3392892927,AU 3392892928,3392897023,JP @@ -101430,7 +113455,7 @@ 3392922624,3392922879,IN 3392922880,3392923135,AU 3392923136,3392923391,BN -3392923392,3392923647,AP +3392923392,3392923647,IN 3392923648,3392924159,CN 3392924160,3392924671,JP 3392924672,3392924927,PH @@ -101452,6 +113477,7 @@ 3392944128,3392945151,MY 3392945152,3392946175,IN 3392946176,3392954367,AU +3392954368,3392956415,CN 3392956416,3392958463,VN 3392958464,3392962559,CN 3392962560,3392970751,IN @@ -101474,7 +113500,7 @@ 3393021440,3393021695,IN 3393021696,3393021951,HK 3393021952,3393022463,ID -3393022464,3393022975,AP +3393022464,3393022975,SG 3393022976,3393023231,PH 3393023232,3393023487,AU 3393023488,3393023743,SG @@ -101496,6 +113522,7 @@ 3393069056,3393077247,AU 3393077248,3393085439,IN 3393085440,3393089535,LA +3393089536,3393090559,CN 3393090560,3393091071,IN 3393091072,3393093631,FJ 3393093632,3393101823,AU @@ -101506,10 +113533,11 @@ 3393123328,3393123583,IN 3393123584,3393123839,NZ 3393123840,3393124351,IN +3393124352,3393125375,CN 3393125376,3393125631,IN 3393125632,3393125887,JP 3393125888,3393126143,AU -3393126144,3393126399,FJ +3393126144,3393126399,CN 3393126400,3393134591,HK 3393134592,3393146879,AU 3393146880,3393150975,PK @@ -101574,6 +113602,7 @@ 3393593344,3393597439,MN 3393597440,3393601535,ID 3393601536,3393609727,NP +3393609728,3393613823,CN 3393613824,3393617919,AS 3393617920,3393618431,AU 3393618432,3393618687,NZ @@ -101639,6 +113668,7 @@ 3393814528,3393815551,HK 3393815552,3393816575,KR 3393816576,3393818623,JP +3393818624,3393822719,AU 3393822720,3393830911,PH 3393830912,3393835007,NZ 3393835008,3393839103,JP @@ -101661,8 +113691,7 @@ 3393859328,3393859583,JP 3393859584,3393860095,AU 3393860096,3393860607,HK -3393860608,3393860863,AU -3393860864,3393861631,IN +3393860608,3393861631,IN 3393861632,3393861887,VN 3393861888,3393862143,AU 3393862144,3393862655,VN @@ -101755,6 +113784,7 @@ 3394284352,3394285567,SG 3394285568,3394289663,AU 3394289664,3394290687,HK +3394290688,3394293759,CN 3394293760,3394297855,ID 3394297856,3394306047,TH 3394306048,3394307071,HK @@ -101786,6 +113816,7 @@ 3394501632,3394507263,HK 3394507264,3394507775,JP 3394507776,3394508799,PH +3394508800,3394510847,CN 3394510848,3394514943,BD 3394514944,3394519039,JP 3394519040,3394521087,BD @@ -101823,6 +113854,7 @@ 3394697472,3394697727,PK 3394697728,3394697983,AU 3394697984,3394698239,IN +3394698240,3394699263,CN 3394699264,3394700287,HK 3394700288,3394707455,AU 3394707456,3394715647,IN @@ -101865,7 +113897,7 @@ 3394838528,3394846719,NZ 3394846720,3394850815,IN 3394850816,3394854911,JP -3394855936,3394856959,AP +3394855936,3394856959,AU 3394856960,3394859007,IN 3394859008,3394860031,JP 3394860032,3394860543,ID @@ -101889,6 +113921,9 @@ 3394905088,3394905343,BN 3394905344,3394906111,AU 3394906112,3394906367,IN +3394906368,3394906623,AU +3394906624,3394907135,IN +3394907136,3394908159,NZ 3394908160,3394910207,AU 3394910208,3394912255,PH 3394912256,3394920447,PF @@ -101920,6 +113955,7 @@ 3394971648,3394973695,SG 3394973696,3394977791,JP 3394977792,3394985983,IN +3394985984,3394990079,CN 3394990080,3394994175,JP 3394994176,3394995199,CN 3394995200,3394998271,IN @@ -101965,6 +114001,25 @@ 3395166208,3395170303,AU 3395170304,3395174399,JP 3395174400,3395174911,AU +3395174912,3395175167,NP +3395175168,3395175679,IN +3395175680,3395175935,AU +3395175936,3395176191,SG +3395176192,3395176703,AU +3395176704,3395176959,TH +3395176960,3395177215,IN +3395177216,3395177471,HK +3395177472,3395177983,TH +3395177984,3395178495,AU +3395178496,3395178751,ID +3395178752,3395179007,MH +3395179008,3395179263,VN +3395179264,3395180031,ID +3395180032,3395180287,JP +3395180288,3395180543,HK +3395180544,3395181055,VN +3395181056,3395181567,HK +3395181568,3395182591,CN 3395182592,3395190783,SG 3395190784,3395198975,JP 3395198976,3395203071,MY @@ -102013,7 +114068,6 @@ 3397070848,3397074943,PH 3397074944,3397083135,HK 3397083136,3397087231,CN -3397087232,3397091327,JP 3397091328,3397099519,GU 3397099520,3397103615,HK 3397103616,3397105663,LA @@ -102022,7 +114076,7 @@ 3397115904,3397119999,ID 3397120000,3397124095,PK 3397124096,3397128191,JP -3397130240,3397131263,CN +3397128192,3397131263,CN 3397131264,3397132287,HK 3397132288,3397136383,AU 3397136384,3397140479,JP @@ -102056,8 +114110,7 @@ 3397213184,3397213439,IN 3397213440,3397213695,AU 3397213696,3397214207,ID -3397214208,3397214719,AP -3397214720,3397215231,AU +3397214208,3397215231,AU 3397215232,3397215743,ID 3397215744,3397216255,PH 3397216256,3397216767,AU @@ -102110,7 +114163,9 @@ 3397349376,3397363711,CN 3397363712,3397365759,HK 3397365760,3397369855,JP -3397369856,3397386239,CN +3397369856,3397374463,CN +3397374464,3397374975,AU +3397374976,3397386239,CN 3397386240,3397394431,GU 3397394432,3397402623,PH 3397402624,3397410815,GU @@ -102166,7 +114221,6 @@ 3397525504,3397526527,AU 3397526528,3397527039,VN 3397527040,3397527295,AU -3397527296,3397527551,JP 3397527552,3397528575,IN 3397528576,3397530623,AU 3397530624,3397531647,ID @@ -102274,6 +114328,7 @@ 3397963776,3397971967,CN 3397971968,3397974015,LA 3397974016,3397975039,IN +3397975040,3397976063,AU 3397976064,3397984255,ID 3397984256,3397992447,JP 3397992448,3398004735,AU @@ -102288,6 +114343,7 @@ 3398033664,3398033919,ID 3398033920,3398034943,IN 3398034944,3398035199,ID +3398035200,3398035455,CN 3398035456,3398037503,IN 3398037504,3398039551,NZ 3398039552,3398040575,IN @@ -102340,6 +114396,7 @@ 3398481920,3398483967,LA 3398483968,3398488063,MY 3398488064,3398492159,TW +3398492160,3398500351,JP 3398500352,3398504447,ID 3398504448,3398508543,JP 3398508544,3398565887,TW @@ -102356,6 +114413,7 @@ 3398612992,3398613503,PH 3398613504,3398613759,NZ 3398613760,3398614015,AU +3398614016,3398615039,CN 3398615040,3398619135,IN 3398619136,3398621183,AU 3398621184,3398623231,HK @@ -102490,13 +114548,15 @@ 3398647296,3398647551,TW 3398647552,3398647807,AP 3398647808,3398668287,AU +3398668288,3398672383,CN 3398672384,3398680575,PK 3398680576,3398684671,ID 3398684672,3398688767,JP 3398688768,3398705151,ID +3398705152,3398709247,CN 3398709248,3398711295,AU 3398711296,3398713343,BD -3398721536,3398729727,CN +3398713344,3398729727,CN 3398729728,3398737919,AU 3398737920,3398742015,SG 3398742016,3398746111,TH @@ -102515,7 +114575,7 @@ 3398828032,3398829055,KH 3398829056,3398830079,IN 3398830080,3398831103,KH -3398831104,3398832127,AP +3398831104,3398832127,JP 3398832128,3398836223,CN 3398836224,3398840319,ID 3398840320,3398842367,JP @@ -102525,6 +114585,7 @@ 3398852608,3398860799,NZ 3398860800,3398873087,ID 3398873088,3398877183,KR +3398877184,3398881279,CN 3398881280,3398885375,SG 3398885376,3398894591,ID 3398894592,3398895615,TH @@ -102620,6 +114681,7 @@ 3399332864,3399333375,HK 3399333376,3399335423,MY 3399335424,3399335935,IN +3399335936,3399344127,CN 3399344128,3399352319,JP 3399352320,3399389183,ID 3399389184,3399393279,KR @@ -102677,10 +114739,12 @@ 3399614464,3399622655,MY 3399622656,3399626751,ID 3399626752,3399630847,IN -3399630848,3399631871,AU +3399630848,3399631615,AU +3399631616,3399631871,CN 3399631872,3399632895,SG 3399632896,3399633407,NZ 3399633408,3399633663,AU +3399633664,3399633919,CN 3399633920,3399634943,TH 3399634944,3399639039,JP 3399639040,3399643135,AU @@ -102705,6 +114769,7 @@ 3399752704,3399753727,NZ 3399753728,3399761919,IN 3399761920,3399770111,JP +3399770112,3399778303,CN 3399778304,3399786495,IN 3399786496,3399794687,PH 3399794688,3399798783,AU @@ -102807,7 +114872,7 @@ 3400183808,3400187903,JP 3400187904,3400191999,AU 3400192000,3400194047,JP -3400194048,3400196095,CN +3400194048,3400204287,CN 3400204288,3400212479,ID 3400212480,3400220671,MY 3400220672,3400221055,NC @@ -102819,10 +114884,12 @@ 3400245248,3400253439,AU 3400253440,3400257535,MY 3400257536,3400259583,HK +3400259584,3400261631,CN 3400261632,3400263679,JP 3400263680,3400263935,AU 3400263936,3400264191,ID 3400264192,3400264447,IN +3400264448,3400264703,CN 3400264704,3400265215,ID 3400265216,3400265471,AU 3400265472,3400265727,IN @@ -102849,7 +114916,7 @@ 3400341504,3400343551,AU 3400343552,3400351743,TW 3400351744,3400359935,ID -3400359936,3400368127,JP +3400359936,3400364031,JP 3400368128,3400388607,AU 3400388608,3400392703,TH 3400392704,3400400895,CN @@ -103106,6 +115173,7 @@ 3400536064,3400548351,JP 3400548352,3400581119,TH 3400581120,3400589311,SG +3400589312,3400597503,CN 3400597504,3400605695,HK 3400605696,3400607743,JP 3400607744,3400608767,AU @@ -103158,16 +115226,18 @@ 3400826880,3400835071,CN 3400835072,3400839167,HK 3400839168,3400847359,JP +3400847360,3400849407,CN 3400849408,3400851455,MN -3400851456,3400867839,AU -3400876032,3400884223,AU +3400851456,3400884223,AU 3400884224,3400888319,JP 3400888320,3400892415,CN 3400892416,3400925183,HK 3400925184,3400933375,TH +3400933376,3400937471,CN 3400937472,3400941567,ID 3400941568,3400966143,AU 3400966144,3400974335,ID +3400974336,3400982527,CN 3400982528,3400990719,HK 3400990720,3400998911,ID 3400998912,3401003007,PH @@ -103177,6 +115247,7 @@ 3401015296,3401023487,AU 3401023488,3401056255,TH 3401056256,3401383935,MY +3401383936,3401400319,CN 3401400320,3401404415,AU 3401404416,3401408511,CN 3401408512,3401416703,HK @@ -103184,10 +115255,12 @@ 3401420800,3401424895,JP 3401424896,3401428991,NZ 3401428992,3401431039,JP +3401431040,3401433087,CN 3401433088,3401441279,JP 3401441280,3401449471,IN 3401449472,3401515007,MY 3401515008,3401515263,DE +3401515264,3401515519,AU 3401515520,3401516031,ID 3401516032,3401519103,AU 3401519104,3401523199,JP @@ -103208,23 +115281,61 @@ 3404857956,3404857966,JP 3404857967,3404857967,IN 3404857968,3405774847,JP -3405774848,3406071807,AU +3405774848,3405795583,AU +3405795584,3405796095,CN +3405796096,3405846783,AU +3405846784,3405847039,ID +3405847040,3405934591,AU +3405934592,3405936639,CN +3405936640,3406005247,AU +3406005248,3406005503,HK +3406005504,3406071807,AU 3406071808,3406073855,US 3406073856,3406077951,AU 3406077952,3406078207,TH -3406078208,3406327039,AU +3406078208,3406109695,AU +3406109696,3406109951,NZ +3406109952,3406205951,AU +3406205952,3406206463,ID +3406206464,3406271231,AU +3406271232,3406271487,CN +3406271488,3406277375,AU +3406277376,3406277631,ID +3406277632,3406327039,AU 3406327040,3406327295,IN -3406327296,3406384639,AU +3406327296,3406327807,CN +3406327808,3406328831,AU +3406328832,3406329343,IN +3406329344,3406331647,AU +3406331648,3406331903,VN +3406331904,3406343167,AU +3406343168,3406343423,VN +3406343424,3406350591,AU +3406350592,3406350847,IN +3406350848,3406380799,AU +3406380800,3406381055,CN +3406381056,3406382591,AU +3406382592,3406383103,CN +3406383104,3406384639,AU 3406384640,3406385151,SG 3406385152,3406409727,AU 3406409728,3406411775,NZ 3406411776,3406434303,AU 3406434304,3406436351,MY -3406436352,3406542847,AU +3406436352,3406445055,AU +3406445056,3406445311,MY +3406445312,3406512383,AU +3406512384,3406512639,IN +3406512640,3406514687,AU +3406514688,3406514943,TH +3406514944,3406521343,AU +3406521344,3406522367,CN +3406522368,3406542847,AU 3406542848,3406543103,SG 3406543104,3406565887,AU 3406565888,3406566143,PH 3406566144,3406566399,AU +3406566400,3406566911,ID 3406566912,3406591487,AU 3406591488,3406591743,NP 3406591744,3406617599,AU @@ -103233,7 +115344,9 @@ 3406618112,3406618623,IN 3406618624,3406625023,AU 3406625024,3406625279,NF -3406625280,3406669823,AU +3406625280,3406637055,AU +3406637056,3406637311,IN +3406637312,3406669823,AU 3406669824,3406670847,IN 3406670848,3406696959,AU 3406696960,3406697215,IN @@ -103245,30 +115358,57 @@ 3406739200,3406739455,ID 3406739456,3406746623,AU 3406746624,3406746879,HK -3406746880,3406865663,AU +3406746880,3406832127,AU +3406832128,3406832383,PK +3406832384,3406865663,AU 3406865664,3406865919,IN -3406865920,3406946815,AU +3406865920,3406884607,AU +3406884608,3406884863,HK +3406884864,3406894335,AU +3406894336,3406894591,ID +3406894592,3406896895,AU +3406896896,3406897151,IN +3406897152,3406923775,AU +3406923776,3406924031,CN +3406924032,3406938623,AU +3406938624,3406938879,IN +3406938880,3406946815,AU 3406946816,3406947071,KR 3406947072,3406950399,AU 3406950400,3406951423,NF -3406951424,3406961151,AU +3406951424,3406952703,AU +3406952704,3406952959,PH +3406952960,3406961151,AU 3406961152,3406961407,IN 3406961408,3406967295,AU 3406967296,3406967551,CN -3406967552,3406989567,AU +3406967552,3406967807,IN +3406967808,3406989567,AU 3406989568,3406989823,IN 3406989824,3407020287,AU 3407020288,3407020543,SG 3407020544,3407020799,AU 3407020800,3407021055,IN 3407021056,3407021311,ID -3407021312,3407045887,AU +3407021312,3407027711,AU +3407027712,3407027967,CN +3407027968,3407045887,AU 3407045888,3407046143,HK 3407046144,3407057663,AU 3407057664,3407057919,JP -3407057920,3407096831,AU +3407057920,3407058175,AU +3407058176,3407058431,CN +3407058432,3407059967,AU +3407059968,3407060223,CN +3407060224,3407078399,AU +3407078400,3407079423,CN +3407079424,3407085311,AU +3407085312,3407085567,CN +3407085568,3407096831,AU 3407096832,3407097087,JP -3407097088,3407112447,AU +3407097088,3407101183,AU +3407101184,3407101439,CN +3407101440,3407112447,AU 3407112448,3407112703,SG 3407112704,3407152895,AU 3407152896,3407153151,IN @@ -103308,79 +115448,202 @@ 3407159232,3407159239,NZ 3407159240,3407159263,AU 3407159264,3407159295,NZ -3407159296,3407243263,AU +3407159296,3407161599,AU +3407161600,3407161855,CN +3407161856,3407162367,TH +3407162368,3407170047,AU +3407170048,3407170559,ID +3407170560,3407240959,AU +3407240960,3407241215,CN +3407241216,3407243263,AU 3407243264,3407243775,HK -3407243776,3407268863,AU +3407243776,3407250175,AU +3407250176,3407250431,CN +3407250432,3407268863,AU 3407268864,3407269119,US -3407269120,3407367167,AU +3407269120,3407294207,AU +3407294208,3407294463,CN +3407294464,3407310847,AU +3407310848,3407311103,CN +3407311104,3407315455,AU +3407315456,3407315711,CN +3407315712,3407326207,AU +3407326208,3407326463,CN +3407326464,3407328767,AU +3407328768,3407329023,CN +3407329024,3407329791,AU +3407330048,3407330303,CN +3407330304,3407360511,AU +3407360512,3407361023,ID +3407361024,3407362047,AU +3407362048,3407362303,CN +3407362304,3407367167,AU 3407367168,3407367679,ID 3407367680,3407367935,AU -3407368192,3407369983,AU +3407367936,3407368447,CN +3407368448,3407369983,AU 3407369984,3407370239,IN -3407370240,3407498495,AU +3407370240,3407370751,AU +3407370752,3407371007,CN +3407371008,3407386623,AU +3407386624,3407386879,CN +3407386880,3407388927,AU +3407388928,3407389183,CN +3407389184,3407398655,AU +3407398656,3407398911,CN +3407398912,3407440383,AU +3407440384,3407440639,CN +3407440640,3407464191,AU +3407464192,3407464447,CN +3407464448,3407466495,AU +3407466496,3407470591,CN +3407470592,3407475199,AU +3407475200,3407475455,CN +3407475456,3407495423,AU +3407495424,3407495679,CN +3407495680,3407498495,AU 3407498496,3407498751,PK -3407498752,3407524607,AU +3407498752,3407499263,AU +3407499264,3407499519,CN +3407499520,3407504895,AU +3407504896,3407505407,CN +3407505408,3407508223,AU +3407508224,3407508479,CN +3407508480,3407523071,AU +3407523072,3407523327,CN +3407523328,3407524607,AU 3407524608,3407524863,NZ -3407524864,3407602943,AU +3407524864,3407545855,AU +3407545856,3407546367,ID +3407546368,3407546879,AU +3407546880,3407547135,CN +3407547136,3407574271,AU +3407574272,3407574527,CN +3407574528,3407575807,AU +3407575808,3407576063,CN +3407576064,3407602943,AU 3407602944,3407603199,JP 3407603200,3407604479,AU 3407604480,3407604735,IN 3407604736,3407608715,AU 3407608716,3407608736,JP -3407608737,3407682047,AU +3407608737,3407642623,AU +3407642624,3407643135,TH +3407643136,3407675903,AU +3407675904,3407676159,CN +3407676160,3407678975,AU +3407678976,3407679231,CN +3407679232,3407682047,AU 3407682048,3407682559,ID -3407682560,3407732223,AU +3407682560,3407682815,CN +3407682816,3407701759,AU +3407701760,3407702015,CN +3407702016,3407704063,AU +3407704064,3407704319,CN +3407704320,3407727871,AU +3407727872,3407728127,CN +3407728128,3407729151,AU +3407729152,3407729407,CN +3407729408,3407732223,AU 3407732224,3407732479,HK -3407732480,3407750655,AU +3407732480,3407747839,AU +3407747840,3407748095,CN +3407748096,3407750655,AU 3407750656,3407751167,SG 3407751168,3407753215,AU 3407753216,3407753727,HK -3407753728,3407785471,AU +3407753728,3407779839,AU +3407779840,3407780095,CN +3407780096,3407780863,AU +3407780864,3407781119,CN +3407781120,3407785471,AU 3407785472,3407785727,NZ -3407785728,3407801343,AU +3407785728,3407790591,AU +3407790592,3407790847,CN +3407790848,3407797247,AU +3407797248,3407797503,CN +3407797504,3407801087,AU +3407801088,3407801343,CN 3407801344,3407801855,ID 3407801856,3407805951,AU 3407805952,3407806463,ID -3407806464,3407814655,AU +3407806464,3407808511,AU +3407808512,3407809023,IN +3407809024,3407814655,AU 3407814656,3407815167,HK -3407815168,3407828991,AU +3407815168,3407824127,AU +3407824128,3407824383,CN +3407824384,3407828991,AU 3407828992,3407829503,US 3407829504,3407837183,AU 3407837184,3407837439,US -3407837440,3407848447,AU +3407837440,3407847935,AU +3407847936,3407848191,CN +3407848192,3407848447,AU 3407848448,3407848959,ID -3407848960,3407866367,AU +3407848960,3407862783,AU +3407862784,3407863039,CN +3407863040,3407866367,AU 3407866368,3407866623,GB 3407866624,3407873023,AU 3407873024,3407873535,IN -3407873536,3407928575,AU +3407873536,3407877119,AU +3407877120,3407877375,CN +3407877376,3407887871,AU +3407887872,3407888127,CN +3407888128,3407905279,AU +3407905280,3407905535,CN +3407905536,3407907839,AU +3407907840,3407908095,CN +3407908096,3407919615,AU +3407919616,3407920127,CN +3407920128,3407928575,AU 3407928576,3407928831,IN -3407928832,3407985919,AU +3407928832,3407977471,AU +3407977472,3407977727,CN +3407977728,3407985919,AU 3407985920,3407986175,KH 3407986176,3407987711,AU 3407987712,3407987967,PH 3407987968,3407988223,AU 3407988224,3407988735,IN -3407988736,3407998975,AU +3407988736,3407989759,AU +3407989760,3407990015,CN +3407990016,3407994879,AU +3407994880,3407995135,CN +3407995136,3407997183,AU +3407997184,3407997439,CN +3407997440,3407998975,AU 3407998976,3407999231,TH -3407999232,3408012543,AU +3407999232,3408009983,AU +3408009984,3408010239,CN +3408010240,3408012543,AU 3408012544,3408012799,MN -3408012800,3408023807,AU +3408012800,3408020735,AU +3408020736,3408020991,CN +3408020992,3408023807,AU 3408023808,3408024063,JP -3408024064,3408032767,AU +3408024064,3408031999,AU +3408032000,3408032255,CN +3408032256,3408032767,AU 3408032768,3408033279,IN 3408033280,3408033791,ID 3408033792,3408039935,AU 3408039936,3408040191,VN 3408040192,3408040703,AU +3408040704,3408040959,CN 3408040960,3408041983,AU 3408041984,3408042495,SG 3408042496,3408042751,HK -3408042752,3408066047,AU +3408042752,3408064511,AU +3408064512,3408064767,CN +3408064768,3408066047,AU 3408066048,3408066303,PH 3408066304,3409396479,AU 3409396480,3409396735,PH -3409396736,3409418495,AU +3409396736,3409409023,AU +3409409024,3409409535,CN +3409409536,3409418495,AU 3409418496,3409418751,PL 3409418752,3409420287,AU 3409420288,3409420543,IN @@ -103388,9 +115651,21 @@ 3409423616,3409423871,IN 3409423872,3409425663,AU 3409425664,3409425919,AP -3409425920,3409491711,AU +3409425920,3409429503,AU +3409429504,3409429759,CN +3409429760,3409435135,AU +3409435136,3409435391,CN +3409435392,3409466623,AU +3409466624,3409466879,CN +3409466880,3409475839,AU +3409475840,3409476095,CN +3409476096,3409488127,AU +3409488128,3409488383,CN +3409488384,3409491711,AU 3409491712,3409491967,SG -3409491968,3409503999,AU +3409491968,3409498111,AU +3409498112,3409498879,CN +3409498880,3409503999,AU 3409504000,3409504255,HK 3409504256,3409505023,AU 3409505024,3409505279,US @@ -103402,26 +115677,45 @@ 3409510368,3409510383,IN 3409510384,3409516543,AU 3409516544,3409517055,ID -3409517056,3409547519,AU +3409517056,3409520383,AU +3409520384,3409520639,CN +3409520640,3409522175,AU +3409522176,3409522431,CN +3409522432,3409547519,AU 3409547520,3409547775,NZ -3409547776,3409802831,AU +3409547776,3409550591,AU +3409550592,3409550847,CN +3409550848,3409567231,AU +3409567232,3409567487,CN +3409567488,3409574143,AU +3409574144,3409574399,CN +3409574400,3409802831,AU 3409802832,3409802847,MT 3409802848,3409838335,AU 3409838336,3409838591,MY +3409838592,3409838847,CN 3409838848,3409876991,AU 3409876992,3409878015,TH 3409878016,3409882111,AU 3409882112,3409883135,IN 3409883136,3409887999,AU 3409888000,3409888255,SG -3409888256,3409969151,AU +3409888256,3409896447,AU +3409896448,3409897471,CN +3409897472,3409897983,AU +3409897984,3409898239,CN +3409898240,3409901055,AU +3409901056,3409901311,CN +3409901312,3409969151,AU 3409969152,3410755583,TW 3410755584,3410771967,AU 3410771968,3410780159,JP 3410780160,3410788351,BD 3410788352,3410792447,IN 3410792448,3410796543,BD +3410796544,3410797567,CN 3410797568,3410798591,JP +3410798592,3410799615,CN 3410799616,3410800639,SG 3410800640,3410804735,IN 3410804736,3410821119,PH @@ -103442,6 +115736,7 @@ 3410888704,3410890751,SG 3410890752,3410894847,AU 3410894848,3410898943,HK +3410898944,3410903039,CN 3410903040,3410911231,HK 3410911232,3410915327,TH 3410915328,3410919423,ID @@ -103468,8 +115763,10 @@ 3411019776,3411021823,ID 3411021824,3411023871,MY 3411023872,3411025919,JP +3411025920,3411030015,CN 3411030016,3411032063,NC 3411032064,3411032319,TH +3411032320,3411032575,CN 3411032576,3411033087,AU 3411033088,3411034111,NZ 3411034112,3411050495,HK @@ -103480,6 +115777,7 @@ 3411062784,3411063231,HK 3411063232,3411063295,PK 3411063296,3411083263,HK +3411083264,3411085311,CN 3411085312,3411086335,KR 3411086336,3411087359,JP 3411087360,3411091455,CN @@ -103492,12 +115790,12 @@ 3411128320,3411130367,HK 3411130368,3411132415,ID 3411132416,3411144703,PK -3411144704,3411146751,JP 3411146752,3411147775,ID 3411147776,3411149311,HK 3411149312,3411149823,MV 3411149824,3411150847,IN 3411150848,3411152895,HK +3411152896,3411154943,CN 3411154944,3411156991,JP 3411156992,3411161087,PH 3411161088,3411165183,PK @@ -103516,7 +115814,6 @@ 3411212800,3411213311,IN 3411213312,3411215359,HK 3411215360,3411216383,AU -3411216384,3411218431,JP 3411218432,3411220479,PG 3411220480,3411226623,ID 3411226624,3411228671,IO @@ -103559,6 +115856,7 @@ 3411472384,3411475199,JP 3411475200,3411475455,AU 3411475456,3411475967,HK +3411475968,3411476479,CN 3411476480,3411509247,AU 3411509248,3411542015,PH 3411542016,3411550207,IN @@ -103673,6 +115971,7 @@ 3411608576,3411608831,IN 3411608832,3411609087,AU 3411609088,3411609599,HK +3411609600,3411611647,CN 3411611648,3411615743,ID 3411615744,3411623935,JP 3411623936,3411640319,AU @@ -103680,6 +115979,7 @@ 3411641344,3411641599,IN 3411641600,3411641855,HK 3411641856,3411642367,IN +3411642368,3411643391,CN 3411643392,3411644415,VN 3411644416,3411644927,AU 3411644928,3411645951,ID @@ -103690,6 +115990,7 @@ 3411673088,3411674111,CN 3411674112,3411674623,IN 3411674624,3411675135,HK +3411675136,3411676159,CN 3411676160,3411677183,PK 3411677184,3411679231,JP 3411679232,3411681279,AU @@ -103862,7 +116163,7 @@ 3412253696,3412254719,JP 3412254720,3412262911,NR 3412262912,3412264959,JP -3412267008,3412271103,CN +3412264960,3412271103,CN 3412271104,3412273151,NZ 3412273152,3412275199,IN 3412275200,3412279295,PK @@ -103888,12 +116189,13 @@ 3412327936,3412328191,HK 3412328192,3412328447,WS 3412328448,3412336639,AU -3412336640,3412340735,CN +3412336640,3412342783,CN 3412342784,3412343039,AU 3412343040,3412343295,IN 3412343296,3412343551,AP 3412343552,3412344319,AU 3412344320,3412344575,SG +3412344576,3412344831,CN 3412344832,3412348927,IN 3412348928,3412361215,CN 3412361216,3412369407,AP @@ -103908,16 +116210,19 @@ 3412451328,3412594687,AU 3412594688,3412596735,IN 3412596736,3412598783,MV +3412598784,3412602879,CN 3412602880,3412606975,NC 3412606976,3412615167,PH 3412615168,3412656127,JP 3412656128,3412672511,HK 3412672512,3412680703,JP +3412680704,3412697087,CN 3412697088,3412705279,IN 3412705280,3412713471,AU 3412713472,3412721663,TW 3412721664,3412787199,MY 3412787200,3412803583,TW +3412803584,3412819967,CN 3412819968,3412852735,TH 3412852736,3412918271,AU 3412918272,3412926463,KR @@ -103932,10 +116237,13 @@ 3413032960,3413037055,AU 3413037056,3413041151,IN 3413041152,3413043199,JP -3413043200,3413044223,AU +3413043200,3413043711,AU +3413043712,3413043967,CN +3413043968,3413044223,AU 3413044224,3413045247,AP 3413045248,3413047295,IN 3413047296,3413098495,AU +3413098496,3413102591,JP 3413102592,3413106687,TW 3413106688,3413110783,PH 3413110784,3413112831,JP @@ -103943,6 +116251,7 @@ 3413113856,3413133311,JP 3413133312,3413135359,BD 3413135360,3413139455,HK +3413139456,3413147647,AU 3413147648,3413155839,IN 3413155840,3413164031,SG 3413164032,3413172223,BD @@ -103973,6 +116282,7 @@ 3413557248,3413565439,CN 3413565440,3413569535,TW 3413569536,3413569791,SG +3413569792,3413570047,CN 3413570048,3413570303,KH 3413570304,3413570559,AU 3413570560,3413571583,PH @@ -103987,7 +116297,9 @@ 3413576704,3413576959,AU 3413576960,3413577215,ID 3413577216,3413577727,AU -3413577728,3413579775,AP +3413577728,3413579007,AP +3413579008,3413579263,AU +3413579264,3413579775,JP 3413579776,3413582847,CN 3413582848,3413583871,VN 3413583872,3413584127,JP @@ -104001,8 +116313,7 @@ 3413587968,3413588223,NZ 3413588224,3413588479,MY 3413588480,3413593087,VN -3413593088,3413593343,AU -3413593344,3413593599,AP +3413593088,3413593599,AU 3413593600,3413593855,SG 3413593856,3413594111,KH 3413594112,3413595135,CN @@ -104010,11 +116321,12 @@ 3413595392,3413595647,CN 3413595648,3413595903,AU 3413595904,3413596159,HK -3413596160,3413596671,AP -3413596672,3413597183,NP -3413597184,3413597695,AP +3413596160,3413597183,NP +3413597184,3413597695,AU 3413597696,3413597951,TW 3413597952,3413602303,AU +3413602304,3413602559,ID +3413602560,3413639167,CN 3413639168,3413704703,SG 3413704704,3413737471,MY 3413737472,3413753855,TH @@ -104055,7 +116367,9 @@ 3414171648,3414179839,CN 3414179840,3414188031,ID 3414188032,3414196223,CN +3414196224,3414204415,AU 3414204416,3414220799,KR +3414220800,3414222847,CN 3414222848,3414223871,AU 3414223872,3414224895,KR 3414224896,3414226943,VN @@ -104063,6 +116377,7 @@ 3414227968,3414230015,PK 3414230016,3414230527,PH 3414230528,3414231039,KR +3414231040,3414233087,CN 3414233088,3414245375,AU 3414245376,3414253567,HK 3414253568,3414261759,JP @@ -104108,7 +116423,7 @@ 3414667264,3414669311,ID 3414669312,3414670335,AU 3414670336,3414670591,IN -3414670592,3414670847,AP +3414670592,3414670847,SG 3414670848,3414671359,MY 3414671360,3415080959,JP 3415080960,3415083007,MY @@ -104144,6 +116459,7 @@ 3415228416,3415236607,KH 3415236608,3415244799,IN 3415244800,3415277567,TH +3415277568,3415285759,CN 3415285760,3415293951,AU 3415293952,3415302143,HK 3415302144,3415306239,AU @@ -104163,7 +116479,9 @@ 3415441408,3415474175,AU 3415474176,3415490559,CN 3415490560,3415491583,PK +3415491584,3415495679,CN 3415495680,3415496191,ID +3415496192,3415496703,CN 3415496704,3415497727,MY 3415497728,3415497983,TW 3415497984,3415498751,AU @@ -104177,6 +116495,7 @@ 3415605248,3415752703,TH 3415752704,3415760895,CN 3415760896,3415769087,NZ +3415769088,3415777279,CN 3415777280,3415785471,KR 3415785472,3415793663,JP 3415793664,3415801855,AU @@ -104222,8 +116541,10 @@ 3416274944,3416276991,ID 3416276992,3416285183,HK 3416285184,3416287231,VN +3416287232,3416289279,CN 3416289280,3416293375,NZ 3416293376,3416293631,ID +3416293632,3416293887,CN 3416293888,3416294399,PH 3416294400,3416295423,AU 3416295424,3416295679,IN @@ -104232,6 +116553,7 @@ 3416296448,3416297471,KR 3416297472,3416301567,TW 3416301568,3416309759,PH +3416309760,3416317951,CN 3416317952,3416326143,TW 3416326144,3416327167,VN 3416327168,3416328191,HK @@ -104242,7 +116564,7 @@ 3416338688,3416339967,SG 3416339968,3416342527,IN 3416342528,3416371199,AU -3416371200,3416371711,AP +3416371200,3416371711,PH 3416371712,3416371967,VN 3416371968,3416372223,IN 3416372224,3416372479,CN @@ -104463,6 +116785,7 @@ 3416489775,3416489783,AU 3416489784,3416489787,JP 3416489788,3416489983,AU +3416489984,3416506367,VN 3416506368,3416514559,TW 3416514560,3416522751,IN 3416522752,3416588287,AU @@ -104487,6 +116810,7 @@ 3416727552,3416735743,JP 3416735744,3416752127,PH 3416752128,3416784895,NZ +3416784896,3416793087,CN 3416793088,3416801279,AU 3416801280,3416817663,JP 3416817664,3416850431,HK @@ -104520,7 +116844,7 @@ 3416922112,3416922367,AU 3416922368,3416922623,IN 3416922624,3416923135,VN -3416923136,3416924159,AP +3416923136,3416924159,HK 3416924160,3416928255,JP 3416928256,3416928511,IN 3416928512,3416928767,HK @@ -104528,6 +116852,7 @@ 3416929280,3416930303,JP 3416930304,3416930559,NZ 3416930560,3416930815,AU +3416930816,3416931327,CN 3416931328,3416932351,IN 3416932352,3416936447,PK 3416936448,3416938495,AU @@ -104567,6 +116892,7 @@ 3417137152,3417145343,KR 3417145344,3417178111,NZ 3417178112,3417179135,PH +3417179136,3417179391,CN 3417179392,3417179647,ID 3417179648,3417179903,IN 3417179904,3417180159,CN @@ -104601,7 +116927,7 @@ 3417289728,3417291263,IN 3417291264,3417291775,AU 3417291776,3417292799,KR -3417292800,3417309183,CN +3417292800,3417333759,CN 3417333760,3417337855,AU 3417337856,3417338367,IN 3417338368,3417338879,HK @@ -104659,6 +116985,7 @@ 3418157056,3418161663,BD 3418161664,3418162431,AU 3418162432,3418162687,IN +3418162688,3418163199,CN 3418163200,3418165247,PH 3418165248,3418167295,MY 3418167296,3418167551,IN @@ -104672,6 +116999,7 @@ 3418184192,3418184959,IN 3418184960,3418185727,AU 3418185728,3418189823,PK +3418189824,3418190847,CN 3418190848,3418191871,TH 3418191872,3418192895,ID 3418192896,3418193919,AU @@ -104679,6 +117007,7 @@ 3418202112,3418206207,HK 3418206208,3418208255,IN 3418208256,3418210303,LK +3418210304,3418218495,CN 3418218496,3418227711,BD 3418227712,3418228735,TW 3418228736,3418230783,BD @@ -104866,6 +117195,7 @@ 3418453760,3418456063,HK 3418456064,3418472447,IN 3418472448,3418480639,AU +3418480640,3418488831,CN 3418488832,3418505215,AU 3418505216,3418506831,JP 3418506832,3418506879,ID @@ -104937,17 +117267,21 @@ 3418513232,3418513407,JP 3418513408,3418517503,IN 3418517504,3418519551,MN +3418519552,3418521599,CN 3418521600,3418524574,HK 3418524575,3418524606,CN 3418524607,3418524638,TH 3418524639,3418554367,HK +3418554368,3418570751,VN +3418570752,3418578943,CN 3418578944,3418583039,TH +3418583040,3418585087,CN 3418585088,3418586111,TH 3418586112,3418586367,AU 3418586368,3418586623,SG 3418586624,3418586879,PK 3418586880,3418587135,AU -3418619904,3418621951,CN +3418587136,3418623999,CN 3418624000,3418626047,JP 3418626048,3418628095,KI 3418628096,3418636287,AU @@ -105005,13 +117339,12 @@ 3418955776,3418959871,TW 3418959872,3418960383,BD 3418960384,3418960895,ID -3418960896,3418961919,SG +3418960896,3418961919,JP 3418961920,3418962943,VN 3418962944,3418963967,IN 3418963968,3418988543,AU 3418988544,3418992639,ID 3418992640,3418993919,SG -3418993920,3418994175,MN 3418994176,3418994431,MY 3418994432,3418994687,AU 3418994688,3418995711,MY @@ -105040,6 +117373,7 @@ 3419357184,3419411455,CN 3419411456,3419411711,HK 3419411712,3419411967,NZ +3419411968,3419412223,HK 3419412224,3419412479,JP 3419412480,3419414527,PH 3419414528,3419422719,CN @@ -105059,7 +117393,7 @@ 3419512832,3419516927,AU 3419516928,3419517951,JP 3419517952,3419518975,VN -3419518976,3419519999,TW +3419518976,3419519999,JP 3419520000,3419520767,ID 3419520768,3419521023,TH 3419521024,3419529215,AU @@ -105101,8 +117435,9 @@ 3419877632,3419877887,KH 3419877888,3419878143,ID 3419878144,3419878399,IN +3419878400,3419879423,GU 3419879424,3419880447,JP -3419880448,3419881471,MY +3419880448,3419881471,MM 3419881472,3419897855,PH 3419897856,3419899903,JP 3419899904,3419900159,FR @@ -105119,6 +117454,7 @@ 3419906048,3419914239,PK 3419914240,3419922431,KR 3419922432,3419924479,JP +3419924480,3419926527,CN 3419926528,3419930623,HK 3419930624,3419971583,JP 3419971584,3419979775,KR @@ -105294,6 +117630,7 @@ 3420372992,3420377087,HK 3420377088,3420389375,JP 3420389376,3420393471,US +3420393472,3420395519,CN 3420395520,3420397567,JP 3420397568,3420401663,KH 3420401664,3420411903,JP @@ -105312,9 +117649,7 @@ 3420437504,3420438527,IN 3420438528,3420454911,HK 3420454912,3422552063,KR -3422552064,3422717439,US -3422717440,3422717695,A1 -3422717696,3422848511,US +3422552064,3422848511,US 3422848512,3422848767,GB 3422848768,3422955519,US 3422955520,3422956799,FR @@ -105334,14 +117669,22 @@ 3423161480,3423161487,HK 3423161488,3423161613,US 3423161614,3423161621,CA -3423161622,3423182847,US +3423161622,3423162159,US +3423162160,3423162167,MX +3423162168,3423162303,US +3423162304,3423162311,GB +3423162312,3423162367,US +3423162368,3423163391,CA +3423163392,3423182847,US 3423182848,3423183199,CA 3423183200,3423183231,BM 3423183232,3423183263,CA -3423183264,3423183295,BM -3423183296,3423183743,CA +3423183264,3423183279,EE +3423183280,3423183743,CA 3423183744,3423183871,EE -3423183872,3423184175,CA +3423183872,3423183935,CA +3423183936,3423183967,EE +3423183968,3423184175,CA 3423184176,3423184191,US 3423184192,3423184207,CA 3423184208,3423184215,EE @@ -105372,14 +117715,12 @@ 3423236096,3423238143,JM 3423238144,3423258623,US 3423258624,3423260671,CA -3423262720,3423264831,US +3423260672,3423264831,US 3423264832,3423264863,NG 3423264864,3423265247,US 3423265248,3423265263,EC 3423265264,3423266815,US -3423268864,3423269135,CA -3423269136,3423269151,US -3423269152,3423269887,CA +3423268864,3423269887,CA 3423269888,3423285247,US 3423285248,3423285527,CA 3423285528,3423285535,NL @@ -105401,7 +117742,9 @@ 3423286208,3423286527,CA 3423286528,3423286655,GB 3423286656,3423287295,CA -3423287296,3423303679,US +3423287296,3423291983,US +3423291984,3423291991,IL +3423291992,3423303679,US 3423303680,3423304703,CA 3423304704,3423311871,US 3423311872,3423313151,VI @@ -105417,7 +117760,9 @@ 3423339376,3423339383,DE 3423339384,3423340399,US 3423340400,3423340407,AU -3423340408,3423341511,US +3423340408,3423341015,US +3423341016,3423341023,CA +3423341024,3423341511,US 3423341512,3423341519,PE 3423341520,3423341543,US 3423341544,3423341551,GB @@ -105438,7 +117783,9 @@ 3423343152,3423343167,RO 3423343168,3423343327,US 3423343328,3423343343,AU -3423343344,3423344767,US +3423343344,3423344007,US +3423344008,3423344023,CA +3423344024,3423344767,US 3423344768,3423344791,PK 3423344792,3423344807,CA 3423344808,3423344991,US @@ -105453,7 +117800,8 @@ 3423345432,3423345439,GT 3423345440,3423345503,US 3423345504,3423345535,AU -3423345536,3423345583,US +3423345536,3423345551,CA +3423345552,3423345583,US 3423345584,3423345591,JO 3423345592,3423345623,US 3423345624,3423345631,GB @@ -105463,9 +117811,12 @@ 3423346128,3423346143,CA 3423346144,3423346319,US 3423346320,3423346327,DK -3423346328,3423346487,US +3423346328,3423346431,US +3423346432,3423346447,GB +3423346448,3423346487,US 3423346488,3423346495,AE -3423346496,3423346831,US +3423346496,3423346503,SA +3423346504,3423346831,US 3423346832,3423346847,IM 3423346848,3423346943,US 3423346944,3423346951,CA @@ -105478,13 +117829,19 @@ 3423347448,3423347455,CA 3423347456,3423347503,US 3423347504,3423347519,DE -3423347520,3423347783,US +3423347520,3423347639,US +3423347640,3423347663,GB +3423347664,3423347783,US 3423347784,3423347791,SA 3423347792,3423347823,US 3423347824,3423347831,FR -3423347832,3423347919,US +3423347832,3423347879,US +3423347880,3423347903,CA +3423347904,3423347919,US 3423347920,3423347927,AU -3423347928,3423348007,US +3423347928,3423347951,US +3423347952,3423347959,TH +3423347960,3423348007,US 3423348008,3423348023,GB 3423348024,3423348071,US 3423348072,3423348095,AU @@ -105506,19 +117863,28 @@ 3423350720,3423350727,CA 3423350728,3423350735,US 3423350736,3423350743,SA -3423350744,3423351831,US +3423350744,3423351551,US +3423351552,3423351615,PR +3423351616,3423351831,US 3423351832,3423351839,AU -3423351840,3423352047,US +3423351840,3423352023,US +3423352024,3423352047,CA 3423352048,3423352063,GB -3423352064,3423352255,US +3423352064,3423352071,US +3423352072,3423352079,CA +3423352080,3423352255,US 3423352256,3423352271,CA 3423352272,3423352439,US 3423352440,3423352447,IL -3423352448,3423352503,US +3423352448,3423352495,US +3423352496,3423352503,CA 3423352504,3423352511,IL 3423352512,3423352679,US 3423352680,3423352687,NL -3423352688,3423353031,US +3423352688,3423352695,US +3423352696,3423352703,MX +3423352704,3423352711,BR +3423352712,3423353031,US 3423353032,3423353039,AU 3423353040,3423353143,US 3423353144,3423353151,KH @@ -105528,15 +117894,19 @@ 3423353352,3423353367,PA 3423353368,3423353471,US 3423353472,3423353479,KH -3423353480,3423353543,US +3423353480,3423353503,US +3423353504,3423353511,GB +3423353512,3423353543,US 3423353544,3423353551,IN 3423353552,3423353791,US 3423353792,3423353807,GB -3423353808,3423353919,US +3423353808,3423353855,US +3423353856,3423353871,CA +3423353872,3423353919,US 3423353920,3423353927,BB 3423353928,3423354031,US 3423354032,3423354039,IL -3423354040,3423354047,US +3423354040,3423354047,PT 3423354048,3423354063,PK 3423354064,3423354095,US 3423354096,3423354103,CA @@ -105546,18 +117916,30 @@ 3423354336,3423354359,PE 3423354360,3423354583,US 3423354584,3423354591,AU -3423354592,3423354655,US +3423354592,3423354623,GB +3423354624,3423354655,US 3423354656,3423354663,AE -3423354664,3423354783,US +3423354664,3423354719,US +3423354720,3423354727,BR +3423354728,3423354783,US 3423354784,3423354791,PA -3423354792,3423357111,US +3423354792,3423356087,US +3423356088,3423356119,BR +3423356120,3423356287,US +3423356288,3423356319,CA +3423356320,3423356383,US +3423356384,3423356399,IN +3423356400,3423357111,US 3423357112,3423357127,AE -3423357128,3423357311,US -3423357312,3423357319,CO -3423357320,3423357511,US +3423357128,3423357511,US 3423357512,3423357519,DE -3423357520,3423357527,CO -3423357528,3423363463,US +3423357520,3423357839,US +3423357840,3423357855,IN +3423357856,3423357863,US +3423357864,3423357871,AE +3423357872,3423361023,US +3423361024,3423361279,AU +3423361280,3423363463,US 3423363464,3423363471,AU 3423363472,3423363487,CA 3423363488,3423363511,US @@ -105570,15 +117952,21 @@ 3423365776,3423365783,CA 3423365784,3423365903,US 3423365904,3423365911,AE -3423365912,3423366223,US +3423365912,3423366127,US +3423366128,3423366135,SA +3423366136,3423366223,US 3423366224,3423366239,AU -3423366240,3423366351,US +3423366240,3423366295,US +3423366296,3423366303,CA +3423366304,3423366351,US 3423366352,3423366367,AU 3423366368,3423366479,US 3423366480,3423366495,IT 3423366496,3423366703,US 3423366704,3423366711,GB -3423366712,3423366991,US +3423366712,3423366855,US +3423366856,3423366871,BR +3423366872,3423366991,US 3423366992,3423366999,CA 3423367000,3423367223,US 3423367224,3423367231,AU @@ -105640,13 +118028,11 @@ 3423401184,3423401191,RU 3423401192,3423402943,US 3423402944,3423402951,RU -3423402952,3423412223,US -3423414272,3423416319,US +3423402952,3423416319,US +3423416320,3423417343,CA 3423417344,3423417470,US 3423417471,3423417480,AU -3423417481,3423417975,US -3423417976,3423417995,RO -3423417996,3423462655,US +3423417481,3423462655,US 3423462656,3423462671,CA 3423462672,3423473663,US 3423473664,3423474655,CA @@ -105674,9 +118060,7 @@ 3423493912,3423493919,TT 3423493920,3423493967,US 3423493968,3423493975,AT -3423493976,3423498079,US -3423498080,3423498087,CA -3423498088,3423533055,US +3423493976,3423533055,US 3423533056,3423535103,AI 3423535104,3423540087,US 3423540088,3423540095,HN @@ -105688,8 +118072,7 @@ 3423544512,3423544543,CA 3423544544,3423544551,US 3423544552,3423545343,CA -3423545344,3423549439,US -3423551488,3423554183,US +3423545344,3423554183,US 3423554184,3423554191,CA 3423554192,3423554271,US 3423554272,3423554279,GB @@ -105698,8 +118081,8 @@ 3423554768,3423571967,US 3423571968,3423574015,PR 3423574016,3423582207,US -3423582208,3423584343,CA -3423584344,3423584351,US +3423582208,3423584335,CA +3423584336,3423584351,US 3423584352,3423584359,AU 3423584360,3423584367,CA 3423584368,3423584375,US @@ -105707,23 +118090,19 @@ 3423584424,3423584431,US 3423584432,3423584447,CA 3423584448,3423584455,US -3423584456,3423584503,CA -3423584504,3423584511,US -3423584512,3423584687,CA +3423584456,3423584687,CA 3423584688,3423584703,US 3423584704,3423584719,CA 3423584720,3423584735,US 3423584736,3423584751,CA 3423584752,3423584767,US 3423584768,3423585535,CA -3423585536,3423585551,IR +3423585536,3423585551,MY 3423585552,3423585631,CA 3423585632,3423585647,US 3423585648,3423585775,CA -3423585776,3423585791,IR -3423585792,3423585879,CA -3423585880,3423585887,US -3423585888,3423585895,CA +3423585776,3423585791,MY +3423585792,3423585895,CA 3423585896,3423585903,NL 3423585904,3423585911,CA 3423585912,3423585919,ES @@ -105735,7 +118114,7 @@ 3423586016,3423586031,US 3423586032,3423586039,NZ 3423586040,3423586159,CA -3423586160,3423586167,IR +3423586160,3423586167,MY 3423586168,3423586303,CA 3423586304,3423589151,US 3423589152,3423589159,GB @@ -105769,19 +118148,39 @@ 3423651840,3423651967,CA 3423651968,3423651999,US 3423652000,3423653887,CA -3423653888,3423797247,US -3423797248,3423827711,CA +3423653888,3423705599,US +3423705600,3423705855,CA +3423705856,3423797503,US +3423797504,3423801087,CA +3423801088,3423801343,US +3423801344,3423823359,CA +3423823360,3423823871,US +3423823872,3423827711,CA 3423827712,3423827967,US -3423827968,3423848447,CA +3423827968,3423830271,CA +3423830272,3423830527,US +3423830528,3423838719,CA +3423838720,3423838975,US +3423838976,3423848447,CA 3423848448,3423849471,KN -3423849984,3423858175,CA +3423849984,3423850495,CA +3423850496,3423850751,US +3423850752,3423854335,CA +3423854336,3423854591,US +3423854592,3423858175,CA 3423858176,3423858687,US -3423858688,3423862783,CA -3423862784,3424334847,US +3423858688,3423858943,CA +3423858944,3423859455,US +3423859456,3423859711,CA +3423859712,3423859967,US +3423859968,3423862527,CA +3423862528,3424334847,US 3424334848,3424335871,CA 3424335872,3424378879,US 3424378880,3424379135,PR -3424379136,3424493823,US +3424379136,3424412415,US +3424412416,3424412671,CA +3424412672,3424493823,US 3424493824,3424494079,CA 3424494080,3424494335,US 3424494592,3425173503,US @@ -105793,7 +118192,9 @@ 3425830816,3425830831,US 3425830832,3425855231,CA 3425855232,3425855487,US -3425855488,3425869167,CA +3425855488,3425864711,CA +3425864712,3425864719,US +3425864720,3425869167,CA 3425869168,3425869183,US 3425869184,3425875391,CA 3425875392,3425875407,US @@ -105812,17 +118213,20 @@ 3426013184,3426013439,IL 3426013440,3426387967,US 3426387968,3426388991,MX -3426388992,3426646015,US +3426388992,3426617855,US +3426618368,3426618687,US +3426618688,3426618703,NZ +3426618704,3426618735,US +3426618736,3426618751,NZ +3426618752,3426618911,US +3426618912,3426619071,NZ +3426619072,3426619167,US +3426619168,3426619231,NZ +3426619232,3426646015,US 3426646016,3426647039,CA -3426647040,3426680831,US -3426680832,3426682111,KN -3426682112,3426682367,US -3426682368,3426682879,KN -3426682880,3426683647,US -3426683648,3426683903,KN -3426683904,3426684159,US -3426684160,3426684415,KN -3426684416,3426744319,US +3426647040,3426729471,US +3426729472,3426729983,CA +3426729984,3426744319,US 3426744320,3426746367,CA 3426746368,3427127295,US 3427127296,3427127551,CA @@ -105830,7 +118234,9 @@ 3427128064,3427128831,US 3427129344,3427618303,US 3427618304,3427618559,CA -3427618560,3427729407,US +3427618560,3427647743,US +3427648000,3427648511,CA +3427648512,3427729407,US 3427729408,3427729663,CA 3427729664,3427730431,US 3427730432,3427730687,BE @@ -105871,8 +118277,7 @@ 3427750912,3427751423,US 3427751424,3427751519,BE 3427751520,3427752447,US -3427752448,3427752703,NL -3427752704,3427752959,GB +3427752448,3427752959,GB 3427752960,3427753215,US 3427753216,3427753471,JP 3427753472,3427753727,FI @@ -105931,8 +118336,7 @@ 3427773696,3427773951,FR 3427773952,3427774719,US 3427774720,3427775231,DE -3427775232,3427775999,US -3427776000,3427776511,HK +3427775232,3427776511,US 3427776512,3427776767,CZ 3427776768,3427777023,US 3427777024,3427777279,NL @@ -106043,7 +118447,9 @@ 3428587776,3428588287,CA 3428588288,3428588543,US 3428588544,3428589055,CA -3428589056,3428591623,US +3428589056,3428589311,US +3428589312,3428589567,CA +3428589568,3428591623,US 3428591624,3428591663,CA 3428591664,3428591679,US 3428591680,3428591695,CA @@ -106138,8 +118544,8 @@ 3428606384,3428606415,US 3428606416,3428606431,CA 3428606432,3428606463,US -3428606464,3428606559,CA -3428606560,3428606655,US +3428606464,3428606591,CA +3428606592,3428606655,US 3428606656,3428606687,CA 3428606688,3428606911,US 3428606912,3428606975,IS @@ -106147,8 +118553,8 @@ 3428607744,3428607871,CA 3428607872,3428607999,US 3428608000,3428609023,CA -3428609024,3428610303,US -3428610304,3428611071,CA +3428609024,3428610047,US +3428610048,3428611071,CA 3428611072,3428611583,US 3428611584,3428611839,CA 3428611840,3428612607,US @@ -106164,8 +118570,8 @@ 3428623616,3428623871,US 3428623872,3428624639,CA 3428624640,3428625407,US -3428625408,3428627199,CA -3428627200,3428630015,US +3428625408,3428628223,CA +3428628224,3428630015,US 3428630016,3428634623,CA 3428634624,3428634879,US 3428634880,3428635135,CA @@ -106215,7 +118621,7 @@ 3428646016,3428646079,CA 3428646080,3428646143,US 3428646144,3428646911,CA -3428646912,3428739327,US +3428679680,3428739327,US 3428739328,3428739343,GB 3428739344,3428743167,US 3428743168,3428744191,CA @@ -106243,7 +118649,9 @@ 3429411584,3429411839,DE 3429411840,3429500927,US 3429500928,3429502975,A2 -3429502976,3429775359,US +3429502976,3429774599,US +3429774600,3429774607,BD +3429774608,3429775359,US 3429775360,3429777407,TC 3429777408,3429892095,US 3429892096,3429957631,CA @@ -106262,9 +118670,13 @@ 3430468864,3430468871,PR 3430468872,3430701055,US 3430701056,3430702079,CA -3430702080,3430705151,US +3430702080,3430703871,US +3430703872,3430704127,PR +3430704128,3430705151,US 3430705152,3430706175,MX -3430706176,3430747903,US +3430706176,3430722303,US +3430722304,3430722559,CA +3430722560,3430747903,US 3430747904,3430748159,CA 3430748160,3430749951,US 3430749952,3430750207,CA @@ -106306,23 +118718,39 @@ 3430807296,3430807551,CA 3430807552,3430809087,US 3430809088,3430809343,CA -3430809344,3430812159,US +3430809344,3430812671,US 3430812672,3430813183,MX 3430813184,3430842367,US 3430842368,3430842879,DO 3430842880,3430845439,US 3430845440,3430845951,MX -3430845952,3431114495,US +3430845952,3430849535,US +3430849536,3430850047,CA +3430850048,3431114495,US 3431114496,3431114751,CA -3431114752,3431467519,US +3431114752,3431468031,US 3431468032,3431469055,CA -3431469056,3431596031,US -3431596032,3431613439,CA +3431469056,3431596287,US +3431596288,3431602687,CA +3431602688,3431602943,US +3431602944,3431613439,CA 3431613440,3431613695,US -3431613696,3431657471,CA +3431613696,3431620095,CA +3431620096,3431620351,US +3431620352,3431621375,CA +3431621376,3431622399,US +3431622400,3431622655,CA +3431622656,3431622911,US +3431622912,3431624703,CA +3431624704,3431624959,US +3431624960,3431638783,CA +3431638784,3431639039,US +3431639040,3431641855,CA +3431641856,3431642623,US +3431642624,3431657471,CA 3431657472,3431658495,US -3431658496,3431661567,CA -3431661568,3431745023,US +3431658496,3431661311,CA +3431661312,3431745023,US 3431745024,3431745279,BE 3431745280,3431745791,US 3431745792,3431746047,GB @@ -106340,7 +118768,7 @@ 3431759616,3431759871,DE 3431759872,3431783431,US 3431783432,3431783435,NL -3431783436,3432003839,US +3431783436,3432004607,US 3432004608,3432005631,CA 3432005632,3432009215,US 3432009216,3432009471,PR @@ -106378,19 +118806,33 @@ 3432572800,3432572927,DO 3432572928,3432585215,US 3432585216,3432585727,MX -3432586240,3432660991,US +3432585728,3432613631,US +3432613632,3432613887,CA +3432613888,3432634111,US +3432634112,3432634367,CA +3432634368,3432660991,US 3432660992,3432662527,DE 3432662528,3432662531,PT 3432662532,3432663039,DE -3432663040,3432806655,US +3432663040,3432689151,US +3432689152,3432689663,CA +3432689664,3432807423,US 3432807424,3432808447,CA 3432808448,3433581312,US 3433581313,3433581567,CA -3433581568,3433955327,US -3433955328,3433981951,CA +3433581568,3433955583,US +3433955584,3433964799,CA +3433964800,3433965055,US +3433965056,3433967359,CA +3433967360,3433967615,US +3433967616,3433981951,CA 3433981952,3433983999,US -3433984000,3434020863,CA -3434020864,3434096063,US +3433984000,3434012671,CA +3434012672,3434012927,US +3434012928,3434014719,CA +3434014720,3434015231,US +3434015232,3434020607,CA +3434020608,3434096063,US 3434096064,3434096079,AU 3434096080,3434097919,US 3434097920,3434097983,GB @@ -106444,17 +118886,21 @@ 3434917376,3434917887,AG 3434917888,3435069439,US 3435069440,3435134975,CA -3435134976,3435507711,US +3435134976,3435271423,US +3435271424,3435271679,CA +3435271680,3435507711,US 3435507712,3435511807,CA -3435511808,3436249087,US -3436249088,3436255743,CA +3435511808,3435518463,US +3435518464,3435518527,GI +3435518528,3436249343,US +3436249344,3436255743,CA 3436255744,3436256255,US 3436256256,3436282367,CA 3436282368,3436282623,US 3436282624,3436289791,CA 3436289792,3436290047,US -3436290048,3436314623,CA -3436314624,3436476415,US +3436290048,3436314367,CA +3436314368,3436476415,US 3436476416,3436478463,AW 3436478464,3436492799,US 3436492800,3436493055,NL @@ -106493,7 +118939,9 @@ 3437332480,3437332735,US 3437332736,3437334015,CA 3437334016,3437334271,US -3437334272,3437336063,CA +3437334272,3437334783,CA +3437334784,3437335551,US +3437335552,3437336063,CA 3437336064,3437336319,US 3437336320,3437341695,CA 3437341696,3437341951,US @@ -106578,7 +119026,9 @@ 3437756160,3437756415,IE 3437756416,3437772799,US 3437772800,3437776895,CA -3437776896,3437789863,US +3437776896,3437789847,US +3437789848,3437789855,IN +3437789856,3437789863,US 3437789864,3437789871,AU 3437789872,3437790143,US 3437790144,3437790159,CA @@ -106600,7 +119050,9 @@ 3437792280,3437792287,SE 3437792288,3437792415,US 3437792416,3437792423,AU -3437792424,3437792735,US +3437792424,3437792527,US +3437792528,3437792535,MX +3437792536,3437792735,US 3437792736,3437792743,CA 3437792744,3437792775,US 3437792776,3437792783,CA @@ -106727,7 +119179,9 @@ 3437805232,3437805239,FR 3437805240,3437805271,US 3437805272,3437805279,IL -3437805280,3437815807,US +3437805280,3437814623,US +3437814624,3437814631,CA +3437814632,3437815807,US 3437815808,3437815815,IN 3437815816,3437815991,US 3437815992,3437815999,CA @@ -106750,7 +119204,9 @@ 3437817648,3437817663,FR 3437817664,3437817855,US 3437817856,3437817983,BD -3437817984,3437819871,US +3437817984,3437819471,US +3437819472,3437819479,IL +3437819480,3437819871,US 3437819872,3437819887,FR 3437819888,3437821823,US 3437821824,3437821887,BD @@ -106793,13 +119249,19 @@ 3438550448,3438550463,US 3438550464,3438552271,CA 3438552272,3438552287,US -3438552288,3438570031,CA +3438552288,3438559647,CA +3438559648,3438559679,US +3438559680,3438570031,CA 3438570032,3438570039,MY -3438570040,3438590975,CA +3438570040,3438570495,CA +3438570496,3438570527,US +3438570528,3438590975,CA 3438590976,3438591231,TC 3438591232,3438592255,CA 3438592256,3438592263,US -3438592264,3438600319,CA +3438592264,3438592527,CA +3438592528,3438592535,US +3438592536,3438600319,CA 3438600320,3438600351,US 3438600352,3438608383,CA 3438608384,3438813183,US @@ -106961,7 +119423,9 @@ 3448563016,3448563031,GB 3448563032,3448569055,US 3448569056,3448569087,MX -3448569088,3449001245,US +3448569088,3448569735,US +3448569736,3448569743,GB +3448569744,3449001245,US 3449001246,3449001246,MC 3449001247,3449159679,US 3449159680,3449160703,CA @@ -107187,8 +119651,8 @@ 3451371776,3451482111,US 3451482112,3451486207,CA 3451486208,3451506687,US -3451506688,3451507199,BR -3451507200,3451715583,US +3451506688,3451507711,BR +3451507712,3451715583,US 3451715584,3451737343,CA 3451737344,3451737599,US 3451737600,3451744255,CA @@ -107304,7 +119768,11 @@ 3453039168,3453039183,AU 3453039184,3453039199,US 3453039200,3453039215,CA -3453039216,3453091839,US +3453039216,3453039623,US +3453039624,3453039631,AU +3453039632,3453039919,US +3453039920,3453039935,AU +3453039936,3453091839,US 3453091840,3453101055,CA 3453101056,3453101311,US 3453101312,3453139455,CA @@ -107543,7 +120011,12 @@ 3453555712,3453555767,GB 3453555768,3453599999,US 3453600000,3453600767,GB -3453600768,3453607935,US +3453600768,3453601863,US +3453601864,3453601871,GB +3453601872,3453601879,CH +3453601880,3453602175,US +3453602176,3453602183,GB +3453602184,3453607935,US 3453607936,3453608959,KN 3453608960,3453609983,LC 3453609984,3453610495,AG @@ -107595,9 +120068,9 @@ 3454703136,3454703143,IN 3454703144,3454703255,US 3454703256,3454703263,CA -3454703264,3454703807,US -3454703808,3454703823,AF -3454703824,3454705151,US +3454703264,3454703647,US +3454703648,3454703663,CA +3454703664,3454705151,US 3454705152,3454705215,GB 3454705216,3454708927,US 3454708928,3454708991,IN @@ -107772,9 +120245,7 @@ 3456303104,3456311295,JP 3456311296,3456892927,US 3456892928,3456958463,CA -3456958464,3457040383,US -3457040384,3457040639,A1 -3457040640,3457246367,US +3456958464,3457246367,US 3457246368,3457246383,SE 3457246384,3457312191,US 3457312192,3457312255,IE @@ -107814,7 +120285,9 @@ 3457859840,3457860095,CA 3457860096,3457862847,US 3457862848,3457862911,CA -3457862912,3458141631,US +3457862912,3458084927,US +3458084928,3458084935,CA +3458084936,3458141631,US 3458141632,3458141655,GB 3458141656,3458143863,US 3458143864,3458143871,AE @@ -107828,7 +120301,11 @@ 3458144112,3458144119,CA 3458144120,3458144415,US 3458144416,3458144423,DE -3458144424,3458195455,US +3458144424,3458145727,US +3458145728,3458145735,DE +3458145736,3458145743,US +3458145744,3458145759,DE +3458145760,3458195455,US 3458195456,3458196479,SG 3458196480,3458765631,US 3458765632,3458765695,CA @@ -107876,7 +120353,7 @@ 3459266624,3459266655,KN 3459266656,3459267327,AG 3459267328,3459267583,AI -3459267584,3459267839,LC +3459267584,3459267839,AG 3459267840,3459268095,DM 3459268096,3459268607,AG 3459268608,3459273727,US @@ -107995,7 +120472,8 @@ 3459373312,3459375103,CL 3459375104,3459376127,VE 3459376128,3459448831,US -3459448832,3459450623,CA +3459448832,3459449087,PR +3459449088,3459450623,CA 3459450624,3459450879,US 3459450880,3459455487,CA 3459455488,3459455743,US @@ -108015,7 +120493,9 @@ 3459731456,3459735551,CA 3459735552,3459745535,US 3459745536,3459745791,IT -3459745792,3460104703,US +3459745792,3459850431,US +3459850432,3459850495,CA +3459850496,3460104703,US 3460104704,3460105215,MX 3460105216,3460108895,US 3460108896,3460108903,FI @@ -108026,8 +120506,8 @@ 3460113048,3460114431,US 3460114432,3460116479,SR 3460116480,3460161535,US -3460161536,3460163583,PR -3460163584,3460374527,US +3460161536,3460165631,PR +3460165632,3460374527,US 3460374528,3460375551,MX 3460375552,3460453631,US 3460453632,3460453887,BS @@ -108039,14 +120519,18 @@ 3460854832,3460854847,VE 3460854848,3460854911,US 3460854912,3460854943,GB -3460854944,3460855247,US +3460854944,3460855015,US +3460855016,3460855031,AU +3460855032,3460855195,US +3460855196,3460855199,AU +3460855200,3460855247,US 3460855248,3460855255,AU 3460855256,3460855263,VE 3460855264,3460855271,US 3460855272,3460855279,GB 3460855280,3460855287,CA 3460855288,3460855311,US -3460855312,3460855319,CA +3460855312,3460855319,NL 3460855320,3460855463,US 3460855464,3460855471,SA 3460855472,3460855495,US @@ -108055,20 +120539,21 @@ 3460855536,3460855543,MX 3460855544,3460855551,AU 3460855552,3460855631,US -3460855632,3460855647,IT +3460855632,3460855647,CA 3460855648,3460855703,US 3460855704,3460855711,AU 3460855712,3460855743,US 3460855744,3460855775,CA 3460855776,3460855807,US 3460855808,3460855815,GB -3460855816,3460855823,NZ -3460855824,3460855855,US +3460855816,3460855855,US 3460855856,3460855863,GB 3460855864,3460855871,US 3460855872,3460855879,GB 3460855880,3460855887,GU -3460855888,3460856007,US +3460855888,3460855991,US +3460855992,3460855999,GB +3460856000,3460856007,US 3460856008,3460856015,CA 3460856016,3460856119,US 3460856120,3460856127,GB @@ -108079,21 +120564,28 @@ 3460856216,3460856223,GB 3460856224,3460856287,US 3460856288,3460856295,IN -3460856296,3460856383,US +3460856296,3460856351,US +3460856352,3460856355,TZ +3460856356,3460856383,US 3460856384,3460856399,GB 3460856400,3460856447,US 3460856448,3460856495,GB 3460856496,3460856559,US 3460856560,3460856575,CA -3460856576,3460856607,US -3460856608,3460856639,NZ +3460856576,3460856623,US +3460856624,3460856639,NZ 3460856640,3460856815,US 3460856816,3460856831,NZ 3460856832,3460857055,US 3460857056,3460857087,NZ 3460857088,3460857151,US 3460857152,3460857183,CA -3460857184,3460857431,US +3460857184,3460857343,US +3460857344,3460857359,CA +3460857360,3460857367,US +3460857368,3460857375,PL +3460857376,3460857383,GB +3460857384,3460857431,US 3460857432,3460857439,VE 3460857440,3460857463,US 3460857464,3460857471,GB @@ -108448,9 +120940,15 @@ 3461286336,3461286399,US 3461286400,3461286463,FR 3461286464,3461286471,GB -3461286472,3461330943,US +3461286472,3461286503,US +3461286504,3461286511,GB +3461286512,3461286519,US +3461286520,3461286543,GB +3461286544,3461330943,US 3461330944,3461331199,SG -3461331200,3461331295,US +3461331200,3461331247,US +3461331248,3461331263,SG +3461331264,3461331295,US 3461331296,3461331311,SG 3461331312,3461331327,US 3461331328,3461331551,SG @@ -108472,7 +120970,9 @@ 3461514752,3461516287,CA 3461516288,3461516543,IL 3461516544,3461517055,CA -3461517056,3461554175,US +3461517056,3461532607,US +3461532608,3461532623,CA +3461532624,3461554175,US 3461554176,3461556223,CA 3461558272,3461597887,US 3461597888,3461597951,CO @@ -108570,15 +121070,22 @@ 3462571664,3462571671,CA 3462571672,3462593791,US 3462593792,3462594559,GN -3462594560,3462633727,US +3462594560,3462633471,US +3462633472,3462633727,SG 3462633728,3462633799,BV 3462633800,3462633823,US 3462633824,3462633855,SG -3462633856,3462634247,US +3462633856,3462633983,US +3462633984,3462634239,SG +3462634240,3462634247,US 3462634248,3462634271,SG 3462634272,3462634367,AE 3462634368,3462634495,SG -3462634496,3462889479,US +3462634496,3462634751,US +3462634752,3462635007,SG +3462635008,3462635263,US +3462635264,3462635519,SG +3462635520,3462889479,US 3462889480,3462889487,GB 3462889488,3462991183,US 3462991184,3462991191,CA @@ -108629,8 +121136,8 @@ 3464128000,3464128255,DE 3464128256,3464129535,US 3464129536,3464130047,DE -3464130048,3464167423,US -3464167424,3464171775,CA +3464130048,3464167679,US +3464167680,3464171775,CA 3464171776,3464172031,US 3464172032,3464180735,CA 3464180736,3464184487,US @@ -108640,13 +121147,18 @@ 3464185760,3464185791,PR 3464185792,3464190463,US 3464190464,3464190719,CA -3464190720,3464191799,US +3464190720,3464191775,US +3464191776,3464191783,ES +3464191784,3464191799,US 3464191800,3464191807,AF 3464191808,3464191815,US 3464191816,3464191823,CA 3464191824,3464191831,US -3464191832,3464191847,CA -3464191848,3464195543,US +3464191832,3464191839,CA +3464191840,3464191911,US +3464191912,3464191919,ES +3464191920,3464191927,SG +3464191928,3464195543,US 3464195544,3464195551,IT 3464195552,3464195887,US 3464195888,3464195895,PR @@ -108658,7 +121170,7 @@ 3464196160,3464196175,US 3464196176,3464196183,AU 3464196184,3464196191,IT -3464196192,3464208383,US +3464196192,3464200191,US 3464208384,3464216575,CA 3464216576,3464309903,US 3464309904,3464309911,CA @@ -108670,18 +121182,28 @@ 3464340480,3464341503,CA 3464341504,3464341759,US 3464341760,3464341775,JP -3464341776,3464341823,US +3464341776,3464341783,AU +3464341784,3464341807,US +3464341808,3464341815,JP +3464341816,3464341823,US 3464341824,3464341831,PT -3464341832,3464342543,US +3464341832,3464341871,US +3464341872,3464341879,VN +3464341880,3464341895,US +3464341896,3464341903,GB +3464341904,3464341927,US +3464341928,3464341935,CV +3464341936,3464341951,US +3464341952,3464341959,CZ +3464341960,3464342543,US 3464342544,3464342559,SE -3464342560,3464342703,US +3464342560,3464342567,US +3464342568,3464342575,PT +3464342576,3464342703,US 3464342704,3464342711,JP -3464342712,3464342871,US -3464342872,3464342879,ZA +3464342712,3464342879,US 3464342880,3464342887,GB -3464342888,3464343111,US -3464343112,3464343119,CN -3464343120,3464343215,US +3464342888,3464343215,US 3464343216,3464343223,CA 3464343224,3464343239,US 3464343240,3464343247,MX @@ -108751,7 +121273,8 @@ 3465177088,3465179135,PE 3465179136,3465412607,US 3465412608,3465412871,HK -3465412872,3465412927,US +3465412872,3465412895,GB +3465412896,3465412927,US 3465412928,3465413055,HK 3465413056,3465413119,US 3465413120,3465413127,HK @@ -108759,7 +121282,21 @@ 3465413376,3465413383,HK 3465413384,3465462783,US 3465462784,3465463039,GB -3465463040,3465510911,US +3465463040,3465463279,US +3465463280,3465463295,GB +3465463296,3465466687,US +3465466688,3465466703,GB +3465466704,3465466879,US +3465466880,3465466975,GB +3465466976,3465467071,US +3465467072,3465467079,GB +3465467080,3465468079,US +3465468080,3465468087,GB +3465468088,3465468351,US +3465468352,3465468367,FI +3465468368,3465468383,US +3465468384,3465468399,GB +3465468400,3465510911,US 3465510912,3465543679,JP 3465543680,3465982991,US 3465982992,3465983007,GB @@ -108785,7 +121322,9 @@ 3466283328,3466283391,CA 3466283392,3466286103,US 3466286104,3466286111,DE -3466286112,3466313727,US +3466286112,3466290687,US +3466290688,3466290943,CH +3466290944,3466313727,US 3466313728,3466317823,CA 3466317824,3466489855,US 3466489856,3466490111,CA @@ -108805,7 +121344,9 @@ 3466756096,3466772479,CA 3466772480,3466846207,US 3466846208,3466854399,CA -3466854400,3467051007,US +3466854400,3466958079,US +3466958080,3466958335,CA +3466958336,3467051007,US 3467051008,3467116543,CA 3467116544,3467145351,US 3467145352,3467145359,DE @@ -109135,9 +121676,7 @@ 3468128256,3468296191,US 3468296192,3468309503,CA 3468309504,3468309759,US -3468309760,3468319999,CA -3468320000,3468320255,US -3468320256,3468320351,CA +3468309760,3468320351,CA 3468320352,3468320383,US 3468320384,3468361727,CA 3468361728,3468427359,US @@ -109202,9 +121741,7 @@ 3468628512,3468628607,US 3468628608,3468628927,CA 3468628928,3468628991,US -3468628992,3468629311,CA -3468629312,3468629319,US -3468629320,3468631583,CA +3468628992,3468631583,CA 3468631584,3468631615,US 3468631616,3468631679,CA 3468631680,3468631695,US @@ -109242,18 +121779,19 @@ 3469901824,3470131199,US 3470131200,3470137343,AG 3470137344,3470139391,VG -3470139392,3470143487,US -3470147584,3470148095,US +3470139392,3470148095,US 3470148096,3470148351,CA 3470148352,3470148863,US 3470148864,3470149119,CA 3470149120,3470150655,US 3470150656,3470150911,CA -3470150912,3470151935,US -3470151936,3470152703,CA -3470152704,3470153983,US -3470153984,3470154239,CA -3470154240,3470184454,US +3470150912,3470151295,US +3470151296,3470151359,CA +3470151360,3470151679,US +3470151680,3470152703,CA +3470152704,3470152959,US +3470152960,3470152975,CA +3470152976,3470184454,US 3470184455,3470184458,LK 3470184459,3470184460,RU 3470184461,3470184476,US @@ -109727,64 +122265,65 @@ 3470188522,3470188541,HK 3470188542,3470192639,US 3470192640,3470196735,CA -3470196736,3470360631,US -3470360632,3470360639,CA +3470196736,3470360623,US +3470360624,3470360639,CA 3470360640,3470360687,US 3470360688,3470360695,AF 3470360696,3470360799,US 3470360800,3470360807,CA -3470360808,3470361039,US +3470360808,3470360815,US +3470360816,3470360823,AU +3470360824,3470361039,US 3470361040,3470361055,CA -3470361056,3470361655,US -3470361656,3470361671,CA +3470361056,3470361487,US +3470361488,3470361495,SG +3470361496,3470361663,US +3470361664,3470361671,CA 3470361672,3470361703,US 3470361704,3470361711,AF -3470361712,3470361935,US -3470361936,3470361951,CA -3470361952,3470361983,US -3470361984,3470361991,CA -3470361992,3470362111,US +3470361712,3470362111,US 3470362112,3470362119,CA 3470362120,3470362127,AU 3470362128,3470362135,US 3470362136,3470362143,NL 3470362144,3470362159,US 3470362160,3470362167,AF -3470362168,3470362263,US +3470362168,3470362175,US +3470362176,3470362191,CA +3470362192,3470362263,US 3470362264,3470362271,NZ 3470362272,3470362319,US 3470362320,3470362335,AF 3470362336,3470362455,US -3470362456,3470362479,CA -3470362480,3470362495,US -3470362496,3470362503,CA -3470362504,3470362559,US +3470362456,3470362471,CA +3470362472,3470362487,US +3470362488,3470362495,ES +3470362496,3470362559,US 3470362560,3470362623,CA -3470362624,3470362783,US -3470362784,3470362791,AF -3470362792,3470362847,US -3470362848,3470362895,CA -3470362896,3470363295,US -3470363296,3470363303,BR -3470363304,3470363391,US -3470363392,3470363399,MX -3470363400,3470363407,GB -3470363408,3470363423,US -3470363424,3470363455,CA -3470363456,3470363535,US +3470362624,3470362791,US +3470362792,3470362799,SG +3470362800,3470362847,US +3470362848,3470362855,AR +3470362856,3470362895,US +3470362896,3470362911,AU +3470362912,3470363423,US +3470363424,3470363439,CA +3470363440,3470363535,US 3470363536,3470363543,CA -3470363544,3470363551,AF -3470363552,3470363559,US +3470363544,3470363555,AF +3470363556,3470363559,US 3470363560,3470363567,CA -3470363568,3470363871,US -3470363872,3470363879,CA -3470363880,3470363967,US +3470363568,3470363903,US +3470363904,3470363919,CA +3470363920,3470363967,US 3470363968,3470363983,CA 3470363984,3470364415,US 3470364416,3470364479,CA -3470364480,3470364495,HN +3470364480,3470364495,US 3470364496,3470364503,CA -3470364504,3470458879,US +3470364504,3470364655,US +3470364656,3470364663,CA +3470364664,3470458879,US 3470458880,3470475263,KR 3470475264,3470558207,US 3470558208,3470559231,HK @@ -109797,9 +122336,8 @@ 3470643648,3470645511,US 3470645512,3470645519,GB 3470645520,3470645527,FR -3470645528,3470645535,BR -3470645536,3470645559,US -3470645560,3470645567,IT +3470645528,3470645559,US +3470645560,3470645567,RU 3470645568,3470645575,CA 3470645576,3470645583,US 3470645584,3470645591,FR @@ -109808,7 +122346,8 @@ 3470645632,3470645655,US 3470645656,3470645663,RU 3470645664,3470645687,US -3470645688,3470645703,ES +3470645688,3470645695,ES +3470645696,3470645703,NL 3470645704,3470645731,US 3470645732,3470645735,AU 3470645736,3470645739,CN @@ -109864,8 +122403,7 @@ 3470646608,3470646623,ZA 3470646624,3470646631,DE 3470646632,3470646639,BR -3470646640,3470646663,US -3470646664,3470646671,PL +3470646640,3470646671,US 3470646672,3470646679,BR 3470646680,3470646687,CA 3470646688,3470646703,US @@ -109888,8 +122426,8 @@ 3470646912,3470646919,RU 3470646920,3470646935,US 3470646936,3470646943,CA -3470646944,3470646959,BR -3470646960,3470646983,US +3470646944,3470646951,BR +3470646952,3470646983,US 3470646984,3470646991,AR 3470646992,3470646999,CN 3470647000,3470651391,US @@ -109935,8 +122473,7 @@ 3470659488,3470659519,IL 3470659520,3470659567,US 3470659568,3470659575,BR -3470659576,3470659583,DE -3470659584,3470659711,US +3470659576,3470659711,US 3470659712,3470659719,BD 3470659720,3470659735,US 3470659736,3470659743,AU @@ -110029,11 +122566,7 @@ 3470754304,3470754559,PE 3470754560,3470755839,US 3470755840,3470756095,ZA -3470756096,3470757887,US -3470757888,3470760959,KN -3470760960,3470761215,US -3470761216,3470761727,KN -3470761728,3470761983,US +3470756096,3470761983,US 3470761984,3470762751,CA 3470762752,3470762759,NL 3470762760,3470767871,CA @@ -110139,7 +122672,9 @@ 3474548224,3474548479,JP 3474548480,3474623599,US 3474623600,3474623615,CA -3474623616,3475112191,US +3474623616,3475029927,US +3475029928,3475029935,CA +3475029936,3475112191,US 3475112192,3475113215,CA 3475113216,3475115007,US 3475115008,3475120127,CA @@ -110166,7 +122701,9 @@ 3475745536,3475752703,US 3475752704,3475752959,AN 3475752960,3475881983,US -3475881984,3475883487,CA +3475881984,3475883007,CA +3475883008,3475883039,US +3475883040,3475883487,CA 3475883488,3475883519,US 3475883520,3475884031,CA 3475884032,3475884287,US @@ -110203,7 +122740,9 @@ 3476451376,3476455423,CA 3476455424,3476718616,US 3476718617,3476718617,IN -3476718618,3476720363,US +3476718618,3476720125,US +3476720126,3476720126,GB +3476720127,3476720363,US 3476720364,3476720367,LV 3476720368,3476720377,US 3476720378,3476720381,PT @@ -110226,19 +122765,23 @@ 3476722192,3476722207,BE 3476722208,3476722239,IT 3476722240,3476722255,SA -3476722256,3476722271,US -3476722272,3476722319,IT +3476722256,3476722287,US +3476722288,3476722319,IT 3476722320,3476722527,US 3476722528,3476722543,AU 3476722544,3476722591,US 3476722592,3476722607,GB -3476722608,3476722759,US +3476722608,3476722719,US +3476722720,3476722727,CO +3476722728,3476722759,US 3476722760,3476722767,IN 3476722768,3476722775,US 3476722776,3476722783,GB 3476722784,3476723263,US 3476723264,3476723271,NL -3476723272,3476725183,US +3476723272,3476723670,US +3476723671,3476723674,GB +3476723675,3476725183,US 3476725184,3476725215,ZA 3476725216,3476725247,US 3476725248,3476725255,CA @@ -110252,9 +122795,23 @@ 3476725400,3476725415,CA 3476725416,3476725423,US 3476725424,3476725431,GB -3476725432,3476732373,US +3476725432,3476731909,US +3476731910,3476731913,IN +3476731914,3476732049,US +3476732050,3476732053,IN +3476732054,3476732073,US +3476732074,3476732077,IN +3476732078,3476732113,US +3476732114,3476732117,IN +3476732118,3476732341,US +3476732342,3476732345,MX +3476732346,3476732373,US 3476732374,3476732377,MX -3476732378,3476881407,US +3476732378,3476733603,US +3476733604,3476733604,MX +3476733605,3476733913,US +3476733914,3476733914,MX +3476733915,3476881407,US 3476881408,3476946943,CA 3476946944,3477161503,US 3477161504,3477161519,TN @@ -110262,19 +122819,25 @@ 3477161552,3477161567,TN 3477161568,3477161615,US 3477161616,3477161623,TN -3477161624,3477161631,US -3477161632,3477161663,TN -3477161664,3477161775,US +3477161624,3477161775,US 3477161776,3477161791,TN 3477161792,3477311871,US 3477311872,3477312255,A1 3477312256,3477312511,US 3477312512,3477313023,A1 -3477313024,3478114303,US +3477313024,3477313279,US +3477313280,3477313535,A1 +3477313536,3478114303,US 3478114304,3478118399,PE 3478118400,3478192127,US 3478192128,3478257663,CA -3478257664,3478294527,US +3478257664,3478261855,US +3478261856,3478261887,SG +3478261888,3478261903,US +3478261904,3478261935,SG +3478261936,3478262271,US +3478262272,3478262279,SG +3478262280,3478294527,US 3478294528,3478294543,GB 3478294544,3478323391,US 3478323392,3478323399,CA @@ -110320,7 +122883,9 @@ 3479290744,3479290751,EC 3479290752,3479290767,US 3479290768,3479290783,CA -3479290784,3479291263,US +3479290784,3479291071,US +3479291072,3479291087,CA +3479291088,3479291263,US 3479291264,3479291287,CA 3479291288,3479291671,US 3479291672,3479291679,CA @@ -110371,13 +122936,16 @@ 3479294664,3479294671,AU 3479294672,3479294775,US 3479294776,3479294783,CA -3479294784,3479295015,US +3479294784,3479294911,US +3479294912,3479294919,CA +3479294920,3479295015,US 3479295016,3479295023,MY 3479295024,3479295071,US 3479295072,3479295079,CR 3479295080,3479295095,US 3479295096,3479295103,PR -3479295104,3479295359,US +3479295104,3479295111,CA +3479295112,3479295359,US 3479295360,3479295367,AU 3479295368,3479295519,US 3479295520,3479295527,CA @@ -110385,7 +122953,9 @@ 3479295584,3479295591,NL 3479295592,3479295703,US 3479295704,3479295735,MY -3479295736,3479296007,US +3479295736,3479295767,US +3479295768,3479295775,MY +3479295776,3479296007,US 3479296008,3479296015,CA 3479296016,3479296071,US 3479296072,3479296079,GB @@ -110477,7 +123047,9 @@ 3479923072,3479923079,US 3479923080,3479961599,CA 3479961600,3480223743,US -3480223744,3480226959,CA +3480223744,3480226415,CA +3480226416,3480226423,US +3480226424,3480226959,CA 3480226960,3480226967,US 3480226968,3480227455,CA 3480227456,3480227463,US @@ -110487,7 +123059,9 @@ 3480256512,3480284159,US 3480284160,3480284671,CA 3480284672,3480444927,US -3480444928,3480446335,CA +3480444928,3480446231,CA +3480446232,3480446239,US +3480446240,3480446335,CA 3480446336,3480446463,US 3480446464,3480446575,CA 3480446576,3480446583,ES @@ -110687,9 +123261,7 @@ 3482775552,3482778375,PR 3482778376,3482778383,US 3482778384,3482779647,PR -3482779648,3482864191,US -3482864192,3482864255,A1 -3482864256,3482910719,US +3482779648,3482910719,US 3482910720,3482927103,CA 3482927104,3483296004,US 3483296005,3483296005,BE @@ -110722,7 +123294,11 @@ 3483877376,3483893759,CA 3483893760,3484013055,US 3484013056,3484013567,DE -3484013568,3484450815,US +3484013568,3484438527,US +3484438528,3484438783,ZM +3484438784,3484439551,US +3484439552,3484439807,ZM +3484439808,3484450815,US 3484450816,3484451839,CA 3484451840,3484451871,US 3484451872,3484455263,CA @@ -110823,9 +123399,7 @@ 3484472184,3484472199,US 3484472200,3484472223,CA 3484472224,3484472263,US -3484472264,3484472311,CA -3484472312,3484472319,US -3484472320,3484472839,CA +3484472264,3484472839,CA 3484472840,3484472855,US 3484472856,3484473007,CA 3484473008,3484473015,US @@ -110835,11 +123409,11 @@ 3484473048,3484473055,US 3484473056,3484473087,CA 3484473088,3484473151,US -3484473152,3484473343,CA -3484473344,3484473727,US +3484473152,3484473599,CA +3484473600,3484473727,US 3484473728,3484473791,CA -3484473792,3484474111,US -3484474112,3484477183,CA +3484473792,3484473855,US +3484473856,3484477183,CA 3484477184,3484477695,US 3484477696,3484478207,CA 3484478208,3484478719,US @@ -111029,7 +123603,7 @@ 3486612992,3486613247,US 3486613248,3486613759,GB 3486613760,3486614015,ES -3486614016,3486614271,DE +3486614016,3486614271,US 3486614272,3486614527,GB 3486614528,3486614783,US 3486614784,3486615039,FR @@ -111167,7 +123741,17 @@ 3487203072,3487203327,DK 3487203328,3487236095,US 3487236096,3487301631,CA -3487301632,3487766527,US +3487301632,3487507327,US +3487507328,3487507335,CA +3487507336,3487507343,US +3487507344,3487507359,CA +3487507360,3487507375,US +3487507376,3487507391,CA +3487507392,3487559711,US +3487559712,3487559743,AU +3487559744,3487559855,US +3487559856,3487559871,AU +3487559872,3487766527,US 3487766528,3487768575,CA 3487768576,3487842303,US 3487842304,3487858687,CA @@ -111282,9 +123866,7 @@ 3490732432,3490732447,CA 3490732448,3490786047,US 3490786048,3490786303,PR -3490786304,3490796799,US -3490796800,3490797055,CA -3490797056,3490879231,US +3490786304,3490879231,US 3490879232,3490879487,PR 3490879488,3490922495,US 3490922496,3490924543,CO @@ -111314,7 +123896,9 @@ 3491637248,3491637759,CO 3491637760,3491651583,US 3491651584,3491659775,VI -3491659776,3491736063,US +3491659776,3491712927,US +3491712928,3491712959,TW +3491712960,3491736063,US 3491736064,3491736319,PR 3491736320,3491743743,US 3491743744,3491745791,CO @@ -111324,7 +123908,9 @@ 3491780608,3491781631,EC 3491781632,3491826687,US 3491826688,3491826943,AN -3491826944,3491921663,US +3491826944,3491832575,US +3491832576,3491832583,PR +3491832584,3491921663,US 3491921664,3491921919,PR 3491921920,3491955711,US 3491955712,3491956735,CO @@ -111363,7 +123949,9 @@ 3492646624,3492646639,IL 3492646640,3492669695,US 3492669696,3492671487,PA -3492671488,3492795775,US +3492671488,3492730415,US +3492730416,3492730431,CA +3492730432,3492795775,US 3492795776,3492795903,AR 3492795904,3492827391,US 3492827392,3492827423,CA @@ -111374,7 +123962,13 @@ 3492827520,3492827647,AU 3492827648,3492827903,US 3492827904,3492827967,AU -3492827968,3493018639,US +3492827968,3492924991,US +3492924992,3492925007,DE +3492925008,3492947087,US +3492947088,3492947103,DE +3492947104,3492963087,US +3492963088,3492963103,FR +3492963104,3493018639,US 3493018640,3493018655,AE 3493018656,3493069055,US 3493069056,3493069311,A2 @@ -111393,18 +123987,13 @@ 3493081600,3493082623,PY 3493082624,3493089023,US 3493089024,3493089279,A2 -3493089280,3493091327,US -3493091328,3493092351,BO -3493092352,3493092607,NA -3493092608,3493138207,US +3493089280,3493138207,US 3493138208,3493138239,DE 3493138240,3493141279,US 3493141280,3493141311,CY 3493141312,3493244927,US 3493244928,3493249023,PR -3493249024,3493728959,US -3493728960,3493728991,A2 -3493728992,3493866495,US +3493249024,3493866495,US 3493866496,3493867519,VG 3493867520,3493874687,US 3493874688,3493875711,BM @@ -111416,7 +124005,9 @@ 3493901024,3493901031,HK 3493901032,3493901311,US 3493901312,3493901567,AE -3493901568,3493901599,IL +3493901568,3493901579,US +3493901580,3493901583,TT +3493901584,3493901599,VG 3493901600,3493901759,US 3493901760,3493901767,AE 3493901768,3493901791,US @@ -111425,17 +124016,18 @@ 3493901952,3493901983,CA 3493901984,3493902215,US 3493902216,3493902223,CA -3493902224,3493903551,US +3493902224,3493902295,US +3493902296,3493902303,NG +3493902304,3493903551,US 3493903552,3493903567,KW -3493903568,3493906431,US -3493906944,3493907199,US -3493907200,3493907231,GB -3493907232,3493907263,US -3493907328,3493914111,US -3493914112,3493914367,CA -3493914368,3493936127,US +3493903568,3493914239,US +3493914240,3493914367,CA +3493914368,3493916671,US +3493918720,3493936127,US 3493936128,3493937151,CA -3493937152,3493982207,US +3493937152,3493980159,US +3493980160,3493981183,CA +3493981184,3493982207,US 3493982208,3493984255,CA 3493984256,3493986303,US 3493986304,3493986623,CA @@ -111457,14 +124049,15 @@ 3494044672,3494045695,CA 3494045696,3494049791,US 3494049792,3494051839,CA -3494051840,3494072319,US -3494074368,3494075391,US +3494051840,3494075391,US 3494075392,3494076415,CA 3494076416,3494088703,US 3494088704,3494090751,CA 3494090752,3494094847,US 3494094848,3494095871,CA -3494095872,3494101319,US +3494095872,3494101089,US +3494101090,3494101097,JM +3494101098,3494101319,US 3494101320,3494101327,GB 3494101328,3494101377,US 3494101378,3494101385,JM @@ -111472,26 +124065,23 @@ 3494101408,3494101415,CO 3494101416,3494101429,US 3494101430,3494101437,GB -3494101438,3494102623,US +3494101438,3494102481,US +3494102482,3494102489,CA +3494102490,3494102623,US 3494102624,3494102639,SB -3494102640,3494102735,US -3494102736,3494102751,VI -3494102752,3494109540,US -3494109541,3494109548,GB -3494109549,3494109697,US -3494109698,3494109722,GB -3494109723,3494109795,US -3494109796,3494109825,LB -3494109826,3494109859,US -3494109860,3494109869,GB -3494109870,3494109925,US +3494102640,3494102687,US +3494102688,3494102701,PE +3494102702,3494102703,US +3494102704,3494102711,CA +3494102712,3494102735,US +3494102736,3494102743,VI +3494102744,3494109925,US 3494109926,3494109942,CA 3494109943,3494110091,US 3494110092,3494110109,CA 3494110110,3494110145,US 3494110146,3494110161,CA -3494110162,3494114303,US -3494115328,3494115471,US +3494110162,3494115471,US 3494115472,3494115487,AU 3494115488,3494115495,US 3494115496,3494115503,CA @@ -111537,11 +124127,7 @@ 3494197561,3494197569,FR 3494197570,3494197604,CA 3494197605,3494197614,US -3494197615,3494197617,CA -3494197618,3494197632,US -3494197633,3494197684,CA -3494197685,3494197694,US -3494197695,3494197760,CA +3494197615,3494197760,CA 3494197761,3494197777,AE 3494197778,3494197953,CA 3494197954,3494197967,US @@ -111599,9 +124185,7 @@ 3494291744,3494291751,GB 3494291752,3494291903,US 3494291904,3494291967,GB -3494291968,3494295039,US -3494295040,3494295551,UM -3494295552,3494299663,US +3494291968,3494299663,US 3494299664,3494299679,TH 3494299680,3494299687,US 3494299688,3494299695,SC @@ -111609,9 +124193,7 @@ 3494299728,3494299735,SC 3494299736,3494300367,US 3494300368,3494300383,TW -3494300384,3494300927,US -3494300928,3494301055,TW -3494301056,3494301247,US +3494300384,3494301247,US 3494301248,3494301311,SG 3494301312,3494301439,US 3494301440,3494301695,TW @@ -111651,9 +124233,25 @@ 3494361088,3494362111,CA 3494362112,3494380543,US 3494380544,3494381567,CA -3494381568,3494409215,US +3494381568,3494410239,US 3494410240,3494412287,CA -3494412288,3494418951,US +3494412288,3494418511,US +3494418512,3494418527,GB +3494418528,3494418575,US +3494418576,3494418591,AU +3494418592,3494418623,CA +3494418624,3494418631,BE +3494418632,3494418639,US +3494418640,3494418655,AU +3494418656,3494418711,US +3494418712,3494418719,CO +3494418720,3494418727,AU +3494418728,3494418735,US +3494418736,3494418743,NZ +3494418744,3494418855,US +3494418856,3494418863,GR +3494418864,3494418871,CA +3494418872,3494418951,US 3494418952,3494418959,CA 3494418960,3494419007,US 3494419008,3494419039,ID @@ -111682,8 +124280,8 @@ 3494420224,3494420239,BO 3494420240,3494420415,US 3494420416,3494420447,CA -3494420448,3494424575,US -3494424576,3494425599,CA +3494420448,3494422527,US +3494422528,3494425599,CA 3494425600,3494427199,US 3494427200,3494427215,CA 3494427216,3494428223,US @@ -111698,21 +124296,29 @@ 3494438032,3494438063,GP 3494438064,3494438071,KN 3494438072,3494438143,GP -3494438144,3494438399,VC +3494438144,3494438399,DM 3494438400,3494438655,KN 3494438656,3494438911,DM 3494438912,3494439935,CA -3494439936,3494449151,US -3494449152,3494451199,CA +3494439936,3494449287,US +3494449288,3494449311,CA +3494449312,3494449439,US +3494449440,3494449663,CA +3494449664,3494449695,US +3494449696,3494450431,CA +3494450432,3494450471,US +3494450472,3494450479,CA +3494450480,3494450495,US +3494450496,3494451199,CA 3494451200,3494454128,US 3494454129,3494454158,PH 3494454159,3494455295,US 3494455296,3494456319,CA -3494456320,3494457779,US +3494456320,3494457368,US +3494457369,3494457379,GB +3494457380,3494457779,US 3494457780,3494457787,GB -3494457788,3494458121,US -3494458122,3494458185,PH -3494458186,3494458201,US +3494457788,3494458201,US 3494458202,3494458211,FR 3494458212,3494458231,US 3494458232,3494458255,DE @@ -111720,13 +124326,14 @@ 3494459392,3494460415,CA 3494460416,3494464511,US 3494464512,3494465535,CA -3494465536,3494467583,US -3494469632,3494501023,US +3494465536,3494501023,US 3494501024,3494501039,AU 3494501040,3494510591,US 3494510592,3494512639,CA -3494512640,3494513135,US -3494513136,3494513151,NO +3494512640,3494512895,US +3494512896,3494512911,NO +3494512912,3494512919,US +3494512920,3494513151,NO 3494513152,3494516735,US 3494516736,3494517759,CA 3494517760,3494539263,US @@ -111816,7 +124423,7 @@ 3494744064,3494744399,US 3494744400,3494744407,AU 3494744408,3494744703,US -3494744704,3494744711,DK +3494744704,3494744711,DE 3494744712,3494745151,US 3494745152,3494745159,AU 3494745160,3494745303,US @@ -111829,7 +124436,9 @@ 3494745952,3494745959,GB 3494745960,3494746019,US 3494746020,3494746023,AU -3494746024,3494757375,US +3494746024,3494747135,US +3494747136,3494748159,CA +3494748160,3494757375,US 3494757376,3494758399,CA 3494758400,3494763007,US 3494763008,3494763015,ES @@ -111869,24 +124478,19 @@ 3494852608,3494854655,CA 3494854656,3494861087,US 3494861088,3494861095,CA -3494861096,3494861111,US -3494861112,3494861119,AU -3494861120,3494862639,US +3494861096,3494862639,US 3494862640,3494862647,JP -3494862648,3494862815,US -3494862816,3494862823,AU -3494862824,3494862847,US -3494862848,3494863615,VC -3494863616,3494863871,DM +3494862648,3494862847,US +3494862848,3494863871,DM 3494863872,3494866943,US 3494866944,3494867967,CA 3494867968,3494893567,US 3494893568,3494894591,CA -3494894592,3494906367,US -3494906368,3494906431,IL -3494906432,3494917119,US -3494917120,3494918143,CA -3494918144,3494928383,US +3494894592,3494906455,US +3494906456,3494906463,GB +3494906464,3494917119,US +3494917120,3494917631,CA +3494917632,3494928383,US 3494928384,3494930431,CA 3494930432,3494935746,US 3494935747,3494935747,GB @@ -111898,13 +124502,17 @@ 3494936515,3494936515,GB 3494936516,3494938623,US 3494938624,3494939647,CA -3494939648,3494950655,US +3494939648,3494949889,US +3494949890,3494949952,GB +3494949953,3494949972,US +3494949973,3494950142,GB +3494950143,3494950655,US 3494950656,3494950911,PH 3494950912,3494964223,US 3494964224,3494965247,PR 3494965248,3494968319,US 3494968320,3494972415,CA -3494972416,3494978559,US +3494972416,3494979583,US 3494979584,3494981631,CA 3494981632,3495000063,US 3495000064,3495001087,CA @@ -111918,7 +124526,9 @@ 3495014449,3495014456,SG 3495014457,3495023615,US 3495023616,3495024639,CA -3495024640,3495065599,US +3495024640,3495057407,US +3495057408,3495059455,CA +3495059456,3495065599,US 3495065600,3495066623,CA 3495066624,3495068031,US 3495068032,3495068047,PL @@ -111934,9 +124544,7 @@ 3495098368,3495100415,CA 3495100416,3495120895,US 3495120896,3495122943,AG -3495122944,3495136455,US -3495136456,3495136463,IN -3495136464,3495136471,US +3495122944,3495136471,US 3495136472,3495136479,AR 3495136480,3495136495,US 3495136496,3495136503,IN @@ -111946,39 +124554,69 @@ 3495153664,3495155711,CA 3495155712,3495157039,US 3495157040,3495157047,SE -3495157048,3495164239,US +3495157048,3495159807,US +3495159808,3495159815,ES +3495159816,3495159839,US +3495159840,3495159847,BR +3495159848,3495159871,US +3495159872,3495159879,AE +3495159880,3495159895,US +3495159896,3495159903,IN +3495159904,3495160111,US +3495160112,3495160119,NZ +3495160120,3495160303,US +3495160304,3495160319,TR +3495160320,3495160367,US +3495160368,3495160383,ZA +3495160384,3495160447,US +3495160448,3495160455,BR +3495160456,3495160463,US +3495160464,3495160479,TR +3495160480,3495160511,CA +3495160512,3495160535,US +3495160536,3495160543,BR +3495160544,3495160863,US +3495160864,3495160895,TR +3495160896,3495161055,US +3495161056,3495161087,TR +3495161088,3495161151,US +3495161152,3495161167,TR +3495161168,3495161599,US +3495161600,3495161855,BR +3495161856,3495164239,US 3495164240,3495164247,CA -3495164248,3495190527,US +3495164248,3495187199,US +3495187200,3495187455,IM +3495187456,3495192575,US 3495192576,3495193599,CA 3495193600,3495215103,US 3495215104,3495217151,VI 3495217152,3495219199,VC -3495219200,3495235663,US -3495235664,3495235671,BR +3495219200,3495235671,US 3495235672,3495235679,AU -3495235680,3495235687,BR +3495235680,3495235687,US 3495235688,3495235695,IN 3495235696,3495235703,FR -3495235704,3495235775,US -3495235776,3495235783,MY +3495235704,3495235783,US 3495235784,3495235791,HR -3495235792,3495235799,US -3495235800,3495235807,ES -3495235808,3495235823,US +3495235792,3495235823,US 3495235824,3495235831,GB 3495235832,3495235903,US 3495235904,3495235911,CA -3495235912,3495235991,US -3495235992,3495235999,CA -3495236000,3495236015,US -3495236016,3495236023,GB -3495236024,3495236111,US -3495236112,3495236119,CZ -3495236120,3495236135,US -3495236136,3495236143,CR -3495236144,3495236367,US +3495235912,3495235975,US +3495235976,3495235983,VN +3495235984,3495235999,US +3495236000,3495236007,HK +3495236008,3495236015,US +3495236016,3495236031,GB +3495236032,3495236247,US +3495236248,3495236255,AZ +3495236256,3495236367,US 3495236368,3495236375,CA -3495236376,3495251967,US +3495236376,3495236423,US +3495236424,3495236431,SG +3495236432,3495236439,IN +3495236440,3495251967,US 3495251968,3495254015,CA 3495254016,3495260159,US 3495260160,3495261183,CA @@ -111986,14 +124624,38 @@ 3495276288,3495276351,IN 3495276352,3495286783,US 3495286784,3495288831,CA -3495288832,3495331839,US +3495288832,3495292927,US +3495292928,3495292943,GB +3495292944,3495292959,US +3495292960,3495292975,PH +3495292976,3495293071,US +3495293072,3495293087,CA +3495293088,3495293167,US +3495293168,3495293183,IN +3495293184,3495293359,US +3495293360,3495293375,IN +3495293376,3495293487,US +3495293488,3495293503,GB +3495293504,3495293663,US +3495293664,3495293679,GB +3495293680,3495293727,US +3495293728,3495293743,GB +3495293744,3495293759,US +3495293760,3495293791,AU +3495293792,3495308447,US +3495308448,3495308463,HK +3495308464,3495308607,US +3495308608,3495308671,IL +3495308672,3495331839,US 3495331840,3495332863,A2 3495332864,3495333887,CA 3495333888,3495349247,US 3495349248,3495350271,CA 3495350272,3495358463,US 3495358464,3495359487,CA -3495359488,3495362623,US +3495359488,3495361023,US +3495361024,3495361055,CA +3495361056,3495362623,US 3495362624,3495362631,BD 3495362632,3495362639,AR 3495362640,3495362711,US @@ -112054,15 +124716,27 @@ 3495441920,3495441935,PL 3495441936,3495442319,US 3495442320,3495442335,PL -3495442336,3495454719,US -3495454720,3495456767,CA +3495442336,3495455743,US +3495455744,3495456767,CA 3495456768,3495463935,US 3495463936,3495464959,CA 3495464960,3495475199,US -3495475200,3495477247,CA +3495475200,3495475711,CA +3495475712,3495476223,EE +3495476224,3495477247,CA 3495477248,3495478271,US 3495478272,3495479295,CA -3495479296,3495505919,US +3495479296,3495485599,US +3495485600,3495485615,GB +3495485616,3495485631,US +3495485632,3495485663,VG +3495485664,3495486079,US +3495486080,3495486143,PA +3495486144,3495486207,US +3495486208,3495486239,AI +3495486240,3495486335,US +3495486336,3495486399,VG +3495486400,3495505919,US 3495505920,3495507967,CA 3495507968,3495515135,US 3495515136,3495516159,CA @@ -112084,13 +124758,22 @@ 3495547472,3495547479,GB 3495547480,3495547605,US 3495547606,3495547606,BD -3495547607,3495548205,US +3495547607,3495547633,US +3495547634,3495547635,CO +3495547636,3495548126,US +3495548127,3495548129,NO +3495548130,3495548205,US 3495548206,3495548207,ID -3495548208,3495548544,US +3495548208,3495548437,US +3495548438,3495548438,ES +3495548439,3495548544,US 3495548545,3495548545,BD -3495548546,3495548549,US +3495548546,3495548548,US +3495548549,3495548549,ES 3495548550,3495548550,BD -3495548551,3495548586,US +3495548551,3495548558,US +3495548559,3495548559,ES +3495548560,3495548586,US 3495548587,3495548588,LK 3495548589,3495548635,US 3495548636,3495548637,BD @@ -112122,17 +124805,15 @@ 3495620608,3495622655,CA 3495622656,3495653375,US 3495653376,3495654399,CA -3495655424,3495657551,US +3495654400,3495657551,US 3495657552,3495657567,GB -3495657568,3495658015,US -3495658016,3495658023,IN -3495658024,3495658319,US -3495658320,3495658327,IN -3495658328,3495673855,US +3495657568,3495658527,US +3495658528,3495658559,FR +3495658560,3495673855,US 3495673856,3495674623,GP 3495674624,3495674879,MF -3495674880,3495686143,US -3495687168,3495688191,US +3495674880,3495675903,VG +3495675904,3495688191,US 3495688192,3495689215,CA 3495689216,3495694335,US 3495694336,3495696383,CA @@ -112140,7 +124821,8 @@ 3495703552,3495704575,CA 3495704576,3495718911,US 3495718912,3495719151,A2 -3495719152,3495720959,CA +3495719152,3495719423,CA +3495719424,3495720959,A2 3495720960,3495724031,US 3495724032,3495724735,CA 3495724736,3495724799,US @@ -112150,23 +124832,17 @@ 3495741440,3495749631,US 3495749632,3495749735,CA 3495749736,3495749745,US -3495749746,3495749767,CA -3495749768,3495749777,US -3495749778,3495749785,CA +3495749746,3495749785,CA 3495749786,3495749829,GB 3495749830,3495749908,CA 3495749909,3495749933,GB -3495749934,3495749941,CA -3495749942,3495749951,US -3495749952,3495749959,CA +3495749934,3495749959,CA 3495749960,3495749990,GB 3495749991,3495749991,CA 3495749992,3495750021,GB 3495750022,3495750026,CA 3495750027,3495750051,US -3495750052,3495750074,CA -3495750075,3495750109,GB -3495750110,3495750189,CA +3495750052,3495750189,CA 3495750190,3495750204,PA 3495750205,3495750267,CA 3495750268,3495750277,US @@ -112182,7 +124858,9 @@ 3495781376,3495812879,US 3495812880,3495812895,GB 3495812896,3495815167,US -3495815168,3495815615,CA +3495815168,3495815407,CA +3495815408,3495815411,US +3495815412,3495815615,CA 3495815616,3495815619,US 3495815620,3495817215,CA 3495817216,3495828479,US @@ -112196,12 +124874,12 @@ 3495859652,3495862271,US 3495862272,3495864319,CA 3495864320,3495864831,DM -3495864832,3495865343,GP -3495865344,3495865599,CA -3495865600,3495865631,BD -3495865632,3495866207,CA -3495866208,3495866239,BD -3495866240,3495866359,CA +3495864832,3495865343,MF +3495865344,3495865439,CA +3495865440,3495865471,BD +3495865472,3495866047,CA +3495866048,3495866079,US +3495866080,3495866359,CA 3495866360,3495866363,US 3495866364,3495866367,CA 3495866368,3495868415,VC @@ -112246,12 +124924,14 @@ 3496873984,3496878079,A2 3496878080,3496882175,CA 3496882176,3496886399,US -3496886400,3496886463,TR +3496886400,3496886407,TR +3496886408,3496886423,US +3496886424,3496886431,TR +3496886432,3496886447,US +3496886448,3496886463,TR 3496886464,3496886495,US 3496886496,3496886503,CA -3496886504,3496886511,US -3496886512,3496886527,GB -3496886528,3496886607,US +3496886504,3496886607,US 3496886608,3496886623,CA 3496886624,3496886655,US 3496886656,3496886671,IN @@ -112259,9 +124939,7 @@ 3496886712,3496886727,AU 3496886728,3496886823,US 3496886824,3496886831,IN -3496886832,3496886919,US -3496886920,3496886927,PK -3496886928,3496886935,US +3496886832,3496886935,US 3496886936,3496886943,PK 3496886944,3496887135,US 3496887136,3496887167,AU @@ -112280,8 +124958,7 @@ 3496887552,3496887559,TR 3496887560,3496887575,US 3496887576,3496887583,AU -3496887584,3496887615,US -3496887616,3496887623,AT +3496887584,3496887623,US 3496887624,3496887631,MY 3496887632,3496887639,RU 3496887640,3496887655,US @@ -112292,8 +124969,7 @@ 3496887808,3496887935,AU 3496887936,3496887975,US 3496887976,3496887983,AU -3496887984,3496887999,US -3496888000,3496888063,IN +3496887984,3496888063,US 3496888064,3496888095,AU 3496888096,3496888103,PT 3496888104,3496888111,GB @@ -112420,7 +125096,15 @@ 3497156864,3497156879,NL 3497156880,3497156983,US 3497156984,3497157006,DZ -3497157007,3497161607,US +3497157007,3497157375,US +3497157376,3497158655,A2 +3497158656,3497160191,US +3497160192,3497160351,NL +3497160352,3497161215,US +3497161216,3497161343,HK +3497161344,3497161375,US +3497161376,3497161407,HK +3497161408,3497161607,US 3497161608,3497161615,NO 3497161616,3497161703,US 3497161704,3497161711,GB @@ -112437,7 +125121,18 @@ 3497161920,3497161927,US 3497161928,3497161935,GB 3497161936,3497161943,MT -3497161944,3497163311,US +3497161944,3497162495,US +3497162496,3497162751,GB +3497162752,3497163007,NL +3497163008,3497163039,US +3497163040,3497163047,ES +3497163048,3497163103,US +3497163104,3497163111,NO +3497163112,3497163135,US +3497163136,3497163151,GB +3497163152,3497163167,US +3497163168,3497163175,GB +3497163176,3497163311,US 3497163312,3497163319,NO 3497163320,3497163351,US 3497163352,3497163359,ES @@ -112454,9 +125149,14 @@ 3497163664,3497163679,DK 3497163680,3497163695,US 3497163696,3497163703,DK -3497163704,3497164287,US +3497163704,3497163711,ES +3497163712,3497164287,US 3497164288,3497164295,GB -3497164296,3497164799,US +3497164296,3497164463,US +3497164464,3497164479,ES +3497164480,3497164487,US +3497164488,3497164495,ES +3497164496,3497164799,US 3497164800,3497181183,CA 3497181184,3497226295,US 3497226296,3497226303,SG @@ -112494,15 +125194,15 @@ 3497447424,3497451519,CA 3497451520,3497713415,US 3497713416,3497713423,EC -3497713424,3497717759,US +3497713424,3497713543,US +3497713544,3497713551,CA +3497713552,3497717759,US 3497717760,3497719807,A2 3497719808,3497719839,MR 3497719840,3497721343,A2 3497721344,3497721599,NG 3497721600,3497721855,A2 -3497721856,3497739327,US -3497739328,3497739351,IN -3497739352,3497739679,US +3497721856,3497739679,US 3497739680,3497739687,CA 3497739688,3497820159,US 3497820160,3497852927,CA @@ -112564,7 +125264,10 @@ 3500016384,3500016639,KN 3500016640,3500016895,AG 3500016896,3500017151,DM -3500017152,3500019711,AG +3500017152,3500018943,AG +3500018944,3500019199,LC +3500019200,3500019455,AG +3500019456,3500019711,LC 3500019712,3500076415,US 3500076416,3500076543,SG 3500076544,3500126207,US @@ -112601,12 +125304,21 @@ 3500809992,3500809999,CA 3500810000,3500810247,US 3500810248,3500810255,CA -3500810256,3500921279,US +3500810256,3500812175,US +3500812176,3500812183,GB +3500812184,3500921279,US 3500921280,3500921311,AU -3500921312,3501181703,US +3500921312,3501146951,US +3501146952,3501146959,CA +3501146960,3501146975,GB +3501146976,3501147039,US +3501147040,3501147071,CA +3501147072,3501181703,US 3501181704,3501181711,AU 3501181712,3501181727,KR -3501181728,3501182975,US +3501181728,3501181743,US +3501181744,3501181791,JP +3501181792,3501182975,US 3501182976,3501183007,SG 3501183008,3501183023,US 3501183024,3501183047,SG @@ -112771,7 +125483,9 @@ 3506058816,3506058823,AF 3506058824,3506135263,US 3506135264,3506135295,GB -3506135296,3506177967,US +3506135296,3506161975,US +3506161976,3506161983,AF +3506161984,3506177967,US 3506177968,3506177983,DE 3506177984,3506192639,US 3506192640,3506192895,A2 @@ -112795,15 +125509,9 @@ 3507101920,3507101935,IL 3507101936,3507290111,US 3507290112,3507355647,AR -3507355648,3507479079,US -3507479080,3507479080,CA -3507479081,3507479108,US -3507479109,3507479109,CA -3507479110,3507482153,US -3507482154,3507482155,CA -3507482156,3507485103,US -3507485104,3507485119,CA -3507485120,3507540015,US +3507355648,3507470335,US +3507470336,3507486719,CA +3507486720,3507540015,US 3507540016,3507540031,IN 3507540032,3507585023,US 3507585024,3507598911,CA @@ -113556,9 +126264,7 @@ 3509775649,3509775664,CA 3509775665,3509775792,US 3509775793,3509775870,CA -3509775871,3509775871,US -3509775872,3509775879,RU -3509775880,3509775903,US +3509775871,3509775903,US 3509775904,3509775919,AU 3509775920,3509775943,US 3509775944,3509775951,IT @@ -113573,14 +126279,11 @@ 3509776120,3509777159,US 3509777160,3509777167,CN 3509777168,3509777175,RU -3509777176,3509777207,US -3509777208,3509777215,IN +3509777176,3509777215,US 3509777216,3509777223,TH 3509777224,3509777271,US 3509777272,3509777279,IT -3509777280,3509777327,US -3509777328,3509777335,GB -3509777336,3509777449,US +3509777280,3509777449,US 3509777450,3509777545,ID 3509777546,3509777584,US 3509777585,3509777648,ID @@ -113588,17 +126291,19 @@ 3509778400,3509778431,NL 3509778432,3509778703,US 3509778704,3509778711,CA -3509778712,3509778903,US +3509778712,3509778847,US +3509778848,3509778855,CO +3509778856,3509778903,US 3509778904,3509778911,RU 3509778912,3509778919,US 3509778920,3509778927,GB 3509778928,3509779007,US 3509779008,3509779039,IN -3509779040,3509821911,US -3509821912,3509821919,BM -3509821920,3509822335,US +3509779040,3509822335,US 3509822336,3509822351,DE -3509822352,3509829503,US +3509822352,3509826047,US +3509826048,3509826303,CN +3509826304,3509829503,US 3509829504,3509829535,GB 3509829536,3509830287,US 3509830288,3509830295,BE @@ -113648,7 +126353,11 @@ 3509837752,3509837759,GB 3509837760,3509846015,US 3509846016,3509977087,CA -3510042624,3510239231,US +3509977088,3509993471,US +3509993472,3509997567,CA +3509997568,3510005759,US +3510005760,3510009855,CA +3510009856,3510239231,US 3510239232,3510240703,CA 3510240704,3510240735,AM 3510240736,3510240767,CA @@ -113698,7 +126407,11 @@ 3510327296,3510328319,AG 3510328320,3510328575,KN 3510328576,3510328831,MS -3510328832,3510329599,AG +3510328832,3510329279,AG +3510329280,3510329295,MS +3510329296,3510329303,AG +3510329304,3510329311,MS +3510329312,3510329599,AG 3510329600,3510329855,MS 3510329856,3510331391,AG 3510331392,3510332415,DM @@ -114097,17 +126810,13 @@ 3510844416,3510844927,CA 3510844928,3510846527,US 3510846528,3510846559,CA -3510846560,3510886271,US -3510886272,3510886399,BR -3510886400,3510897442,US +3510846560,3510897442,US 3510897443,3510897443,IE 3510897444,3510935551,US 3510935552,3510943743,CA 3510943744,3511129087,US -3511129088,3511129183,CA -3511129184,3511129199,US -3511129200,3511131135,CA -3511131136,3511132159,US +3511129088,3511131135,CA +3511131136,3511140351,US 3511140352,3511156735,CA 3511156736,3511331199,US 3511331200,3511331231,CA @@ -114129,8 +126838,7 @@ 3512011808,3512011823,TW 3512011824,3512011855,US 3512011856,3512011871,SE -3512011872,3512011903,IN -3512011904,3512012095,US +3512011872,3512012095,US 3512012096,3512012159,GB 3512012160,3512012175,MX 3512012176,3512012255,US @@ -114141,9 +126849,7 @@ 3512013648,3512013663,CA 3512013664,3512013679,US 3512013680,3512013695,GR -3512013696,3512013791,US -3512013792,3512013823,IN -3512013824,3512016543,US +3512013696,3512016543,US 3512016544,3512016559,IT 3512016560,3512016575,US 3512016576,3512016591,TW @@ -114183,9 +126889,7 @@ 3512020096,3512020223,ES 3512020224,3512020479,US 3512020480,3512020511,GB -3512020512,3512020543,US -3512020544,3512020607,CA -3512020608,3512021503,US +3512020512,3512021503,US 3512021504,3512021759,GB 3512021760,3512022335,US 3512022336,3512022399,ES @@ -114260,9 +126964,7 @@ 3512222272,3512222335,KN 3512222336,3512222463,AG 3512222464,3512222975,AI -3512222976,3512223231,AG -3512223232,3512223487,LC -3512223488,3512223743,AG +3512222976,3512223743,AG 3512223744,3512225791,ZA 3512225792,3512227839,PR 3512227840,3512229887,ZW @@ -114333,9 +127035,13 @@ 3512269824,3512270847,US 3512270848,3512336383,CA 3512336384,3512369151,US -3512369152,3512385535,CA +3512369152,3512378435,CA +3512378436,3512378436,US +3512378437,3512385535,CA 3512385536,3512397823,US -3512397824,3512401919,CA +3512397824,3512399375,CA +3512399376,3512399383,US +3512399384,3512401919,CA 3512401920,3512418303,US 3512418304,3512451071,CA 3512451072,3512467455,PR @@ -114803,9 +127509,11 @@ 3514007552,3514040319,CA 3514040320,3514367999,US 3514368000,3514433535,CA -3514433536,3514583479,US -3514583480,3514583487,PA -3514583488,3514587511,US +3514433536,3514583535,US +3514583536,3514583543,JE +3514583544,3514585359,US +3514585360,3514585375,GB +3514585376,3514587511,US 3514587512,3514587519,PA 3514587520,3514589439,US 3514589440,3514589695,GT @@ -114853,6 +127561,11 @@ 3515456704,3515456767,JP 3515456768,3515596799,US 3515596800,3515613183,CA +3515613184,3515686911,US +3515686912,3515695103,CA +3515695104,3515711487,US +3515711488,3515731967,CA +3515731968,3515736063,US 3515744256,3515793351,US 3515793352,3515793359,MO 3515793360,3515867151,US @@ -114878,6 +127591,7 @@ 3515956400,3515965439,US 3515965440,3515973631,CA 3515973632,3515990015,US +3515990016,3516006399,CA 3516006400,3516039167,US 3516039168,3516071935,CA 3516071936,3516139007,US @@ -114898,11 +127612,12 @@ 3516355664,3516355679,CA 3516355680,3516357631,US 3516357632,3516357887,MY -3516357888,3516358143,US -3516358144,3516358399,CA +3516357888,3516358399,CA 3516358400,3516366847,US 3516366848,3516370943,CA -3516370944,3516514303,US +3516370944,3516394239,US +3516394240,3516394247,IS +3516394248,3516514303,US 3516514304,3516530687,CA 3516530688,3516899327,US 3516899328,3516899839,A2 @@ -114938,7 +127653,9 @@ 3517100620,3517100635,CA 3517100636,3517100648,US 3517100649,3517100668,CA -3517100669,3517100811,US +3517100669,3517100720,US +3517100721,3517100730,CA +3517100731,3517100811,US 3517100812,3517100829,GB 3517100830,3517101597,US 3517101598,3517101613,GB @@ -115061,8 +127778,8 @@ 3517416712,3517416727,US 3517416728,3517416735,CA 3517416736,3517416743,US -3517416744,3517416775,CA -3517416776,3517416783,US +3517416744,3517416767,CA +3517416768,3517416783,US 3517416784,3517416791,CA 3517416792,3517416799,US 3517416800,3517416823,CA @@ -115181,9 +127898,7 @@ 3517437136,3517437143,US 3517437144,3517437151,CA 3517437152,3517437175,US -3517437176,3517438015,CA -3517438016,3517438079,US -3517438080,3517438143,CA +3517437176,3517438143,CA 3517438144,3517438207,US 3517438208,3517438463,CA 3517438464,3517438527,US @@ -115223,9 +127938,7 @@ 3517446912,3517447167,US 3517447168,3517447727,CA 3517447728,3517447743,US -3517447744,3517447759,CA -3517447760,3517447767,US -3517447768,3517447783,CA +3517447744,3517447783,CA 3517447784,3517447791,US 3517447792,3517447847,CA 3517447848,3517447863,US @@ -115235,8 +127948,8 @@ 3517523184,3517523671,US 3517523672,3517523679,KY 3517523680,3517523935,US -3517523936,3517523951,BZ -3517523952,3517524175,US +3517523936,3517523943,BZ +3517523944,3517524175,US 3517524176,3517524183,GT 3517524184,3517524191,VI 3517524192,3517524431,US @@ -115249,18 +127962,22 @@ 3517597184,3517597695,US 3517597696,3517598207,SE 3517598208,3517598463,IE -3517598464,3517598591,SE +3517598464,3517598527,SE +3517598528,3517598559,FR +3517598560,3517598591,SE 3517598592,3517599231,US 3517599232,3517599263,BG -3517599264,3517600767,SE +3517599264,3517599359,SE +3517599360,3517599487,US +3517599488,3517600767,SE 3517600768,3517601279,US 3517601280,3517602047,SE 3517602048,3517602303,DE 3517602304,3517602559,US 3517602560,3517602623,SE 3517602624,3517602815,US -3517602816,3517603327,SE -3517603328,3517603615,US +3517602816,3517603071,SE +3517603072,3517603615,US 3517603616,3517603647,DE 3517603648,3517603711,US 3517603712,3517603775,SE @@ -115274,8 +127991,8 @@ 3517605376,3517605775,SE 3517605776,3517605791,US 3517605792,3517605887,SE -3517605888,3517606207,US -3517606208,3517606271,SE +3517605888,3517606143,US +3517606144,3517606271,SE 3517606272,3517606399,US 3517606400,3517606911,SE 3517606912,3517607935,US @@ -115283,7 +128000,9 @@ 3517608192,3517608447,US 3517608448,3517608703,GB 3517608704,3517609743,US -3517609744,3517609855,SE +3517609744,3517609759,SE +3517609760,3517609791,US +3517609792,3517609855,SE 3517609856,3517610047,US 3517610048,3517610191,SE 3517610192,3517610199,US @@ -115291,7 +128010,7 @@ 3517610240,3517610495,US 3517610496,3517611263,IE 3517611264,3517611295,SE -3517611296,3517611303,US +3517611296,3517611303,DE 3517611304,3517611311,CA 3517611312,3517611367,SE 3517611368,3517611383,US @@ -115349,10 +128068,7 @@ 3518759408,3518759423,CY 3518759424,3518760511,US 3518760512,3518760575,AU -3518760576,3518760647,HU -3518760648,3518760655,US -3518760656,3518760703,HU -3518760704,3518762495,US +3518760576,3518762495,US 3518762496,3518762751,GB 3518762752,3518764671,US 3518764672,3518764703,NL @@ -115360,9 +128076,7 @@ 3518765312,3518765567,CA 3518765568,3518766879,US 3518766880,3518766911,TH -3518766912,3518892223,US -3518892224,3518892231,CL -3518892232,3518892415,US +3518766912,3518892415,US 3518892416,3518892423,GB 3518892424,3518894439,US 3518894440,3518894447,TR @@ -115373,27 +128087,21 @@ 3518896216,3518896223,CA 3518896224,3518896231,US 3518896232,3518896239,CN -3518896240,3518896895,US -3518896896,3518896903,GB -3518896904,3518897119,US +3518896240,3518897119,US 3518897120,3518897127,IT -3518897128,3518898143,US -3518898144,3518898151,BR -3518898152,3518903191,US +3518897128,3518903191,US 3518903192,3518903199,JP -3518903200,3518903871,US -3518903872,3518903879,PK -3518903880,3518903927,US +3518903200,3518903927,US 3518903928,3518903935,RU 3518903936,3518904015,US 3518904016,3518904031,EG -3518904032,3518911743,US +3518904032,3518905599,US +3518905600,3518905855,GB +3518905856,3518911743,US 3518911744,3518911999,GB 3518912000,3518912511,US 3518912512,3518912767,IN -3518912768,3518921447,US -3518921448,3518921455,CN -3518921456,3518929535,US +3518912768,3518929535,US 3518929536,3518929599,CA 3518929600,3518995695,US 3518995696,3518995703,GB @@ -115413,15 +128121,13 @@ 3519381504,3519397887,CA 3519397888,3519406079,US 3519406080,3519406143,IT -3519406144,3519406207,US -3519406208,3519406215,SA -3519406216,3519406255,US +3519406144,3519406255,US 3519406256,3519406263,SA 3519406264,3519406295,US 3519406296,3519406303,TH 3519406304,3519406335,US -3519406336,3519406359,DE -3519406360,3519406375,US +3519406336,3519406351,DE +3519406352,3519406375,US 3519406376,3519406383,IT 3519406384,3519406391,IN 3519406392,3519406407,GB @@ -115481,12 +128187,15 @@ 3519412736,3519412751,RU 3519412752,3519412799,US 3519412800,3519412815,RU -3519412816,3519413759,US +3519412816,3519412999,US +3519413000,3519413007,CY +3519413008,3519413759,US 3519413760,3519414271,CA -3519414272,3519417087,US +3519414272,3519417071,US +3519417072,3519417075,PT +3519417076,3519417087,US 3519417088,3519417151,IT -3519417152,3519417183,DE -3519417184,3519420767,US +3519417152,3519420767,US 3519420768,3519420775,HK 3519420776,3519422495,US 3519422496,3519422527,CA @@ -115497,41 +128206,17 @@ 3519578368,3519578623,NA 3519578624,3519578879,US 3519578880,3519579135,CA -3519579136,3519579583,US -3519579584,3519579591,CR -3519579592,3519579967,US +3519579136,3519579967,US 3519579968,3519579983,CY -3519579984,3519579991,CR -3519579992,3519580031,US -3519580032,3519580047,CY -3519580048,3519580063,CR -3519580064,3519583999,US -3519584000,3519584255,CA -3519584256,3519586047,US -3519586048,3519586559,GB -3519586560,3519586815,US -3519586816,3519587007,GB -3519587008,3519587071,AG -3519587072,3519588351,US -3519588352,3519588367,CR -3519588368,3519588391,US -3519588392,3519588399,CR -3519588400,3519588447,US -3519588448,3519588463,CR -3519588464,3519588639,US +3519579984,3519586303,US +3519586304,3519586559,GB +3519586560,3519587039,US +3519587040,3519587071,AG +3519587072,3519588639,US 3519588640,3519588671,GB -3519588672,3519588687,US -3519588688,3519588703,CY -3519588704,3519590655,US +3519588672,3519590655,US 3519590656,3519590911,CA -3519590912,3519590927,GB -3519590928,3519590943,EE -3519590944,3519590959,AG -3519590960,3519591071,US -3519591072,3519591087,IM -3519591088,3519591167,US -3519591168,3519591423,GB -3519591424,3519603204,US +3519590912,3519603204,US 3519603205,3519603212,VN 3519603213,3519603255,US 3519603256,3519603265,BR @@ -115571,9 +128256,7 @@ 3519879768,3519879775,US 3519879776,3519879807,CA 3519879808,3519879815,US -3519879816,3519879863,CA -3519879864,3519879871,US -3519879872,3519880767,CA +3519879816,3519880767,CA 3519880768,3519880831,DE 3519880832,3519881375,CA 3519881376,3519881407,US @@ -115589,8 +128272,8 @@ 3520020656,3520020663,US 3520020664,3520020719,CA 3520020720,3520020727,US -3520020728,3520020983,CA -3520020984,3520021015,US +3520020728,3520020991,CA +3520020992,3520021015,US 3520021016,3520021055,CA 3520021056,3520021071,US 3520021072,3520021183,CA @@ -115601,21 +128284,19 @@ 3520021384,3520021415,US 3520021416,3520021471,CA 3520021472,3520021479,US -3520021480,3520021487,CA -3520021488,3520021503,US +3520021480,3520021495,CA +3520021496,3520021503,US 3520021504,3520021687,CA 3520021688,3520021695,US 3520021696,3520021839,CA 3520021840,3520021847,US -3520021848,3520021863,CA -3520021864,3520021871,US -3520021872,3520021895,CA +3520021848,3520021895,CA 3520021896,3520021903,US 3520021904,3520021911,CA -3520021912,3520021935,US -3520021936,3520021943,CA -3520021944,3520021951,US -3520021952,3520021967,CA +3520021912,3520021919,US +3520021920,3520021927,CA +3520021928,3520021935,US +3520021936,3520021967,CA 3520021968,3520021975,US 3520021976,3520021983,CA 3520021984,3520021991,US @@ -115642,16 +128323,16 @@ 3520022936,3520023047,CA 3520023048,3520023063,US 3520023064,3520023087,CA -3520023088,3520023119,US +3520023088,3520023103,US +3520023104,3520023111,CA +3520023112,3520023119,US 3520023120,3520023127,CA 3520023128,3520023135,US 3520023136,3520023151,CA 3520023152,3520023159,US 3520023160,3520023383,CA 3520023384,3520023415,US -3520023416,3520023647,CA -3520023648,3520023655,US -3520023656,3520023879,CA +3520023416,3520023879,CA 3520023880,3520023887,US 3520023888,3520023911,CA 3520023912,3520023919,US @@ -115659,13 +128340,11 @@ 3520024216,3520024231,US 3520024232,3520024487,CA 3520024488,3520024495,US -3520024496,3520024799,CA -3520024800,3520024815,US +3520024496,3520024807,CA +3520024808,3520024815,US 3520024816,3520025191,CA 3520025192,3520025199,US -3520025200,3520025239,CA -3520025240,3520025247,US -3520025248,3520025295,CA +3520025200,3520025295,CA 3520025296,3520025303,US 3520025304,3520025343,CA 3520025344,3520025359,US @@ -115677,15 +128356,13 @@ 3520025624,3520025631,US 3520025632,3520025639,CA 3520025640,3520025647,US -3520025648,3520025767,CA -3520025768,3520025775,US -3520025776,3520025791,CA +3520025648,3520025791,CA 3520025792,3520025799,US 3520025800,3520026671,CA 3520026672,3520026679,US -3520026680,3520026719,CA -3520026720,3520026727,US -3520026728,3520026783,CA +3520026680,3520026703,CA +3520026704,3520026711,US +3520026712,3520026783,CA 3520026784,3520026791,US 3520026792,3520026895,CA 3520026896,3520026903,US @@ -115703,9 +128380,7 @@ 3520027440,3520027447,US 3520027448,3520027711,CA 3520027712,3520027727,US -3520027728,3520027783,CA -3520027784,3520027791,US -3520027792,3520027815,CA +3520027728,3520027815,CA 3520027816,3520027823,US 3520027824,3520027839,CA 3520027840,3520027887,US @@ -115723,8 +128398,8 @@ 3520028544,3520028551,US 3520028552,3520028655,CA 3520028656,3520028671,US -3520028672,3520028687,CA -3520028688,3520028711,US +3520028672,3520028695,CA +3520028696,3520028711,US 3520028712,3520029167,CA 3520029168,3520029175,IL 3520029176,3520030719,CA @@ -115847,14 +128522,14 @@ 3520075456,3520075471,CA 3520075472,3520075743,US 3520075744,3520075775,NL -3520075776,3520078911,US +3520075776,3520078031,US +3520078032,3520078047,BS +3520078048,3520078911,US 3520078912,3520078927,AU 3520078928,3520078943,EC 3520078944,3520081455,US 3520081456,3520081471,BR -3520081472,3520081743,US -3520081744,3520081759,VG -3520081760,3520082151,US +3520081472,3520082151,US 3520082152,3520082167,CA 3520082168,3520086271,US 3520086272,3520086527,CA @@ -115862,9 +128537,7 @@ 3520086960,3520086975,CA 3520086976,3520088447,US 3520088448,3520088463,ES -3520088464,3520092991,US -3520092992,3520093007,IL -3520093008,3520095455,US +3520088464,3520095455,US 3520095456,3520095471,NL 3520095472,3520097135,US 3520097136,3520097151,CA @@ -115874,7 +128547,9 @@ 3520100032,3520100039,LB 3520100040,3520101839,US 3520101840,3520101855,CA -3520101856,3520112975,US +3520101856,3520101919,US +3520101920,3520101927,BR +3520101928,3520112975,US 3520112976,3520112991,ES 3520112992,3520114399,US 3520114400,3520114407,VG @@ -115922,23 +128597,34 @@ 3520999424,3521003519,CA 3521003520,3521003583,US 3521003584,3521003647,IL -3521003648,3521007103,US -3521007104,3521007111,IN -3521007112,3521011743,US +3521003648,3521005319,US +3521005320,3521005327,GB +3521005328,3521009663,US +3521009664,3521009671,AR +3521009672,3521011719,US +3521011720,3521011727,BR +3521011728,3521011735,AU +3521011736,3521011743,US 3521011744,3521011751,PK -3521011752,3521011759,GB -3521011760,3521011791,US -3521011792,3521011799,CA -3521011800,3521011967,US +3521011752,3521011759,US +3521011760,3521011767,GB +3521011768,3521011791,US +3521011792,3521011799,NZ +3521011800,3521011807,BR +3521011808,3521011967,US 3521011968,3521011975,IL -3521011976,3521013559,US -3521013560,3521013567,GB -3521013568,3521013951,US +3521011976,3521013951,US 3521013952,3521013959,AU 3521013960,3521014127,US 3521014128,3521014135,GR 3521014136,3521014143,CA -3521014144,3521028095,US +3521014144,3521014655,US +3521014656,3521014671,HK +3521014672,3521014687,US +3521014688,3521014703,GB +3521014704,3521018495,US +3521018496,3521018511,IN +3521018512,3521028095,US 3521028096,3521032191,CA 3521032192,3521044479,US 3521044480,3521048575,CA @@ -115995,16 +128681,18 @@ 3521377408,3521377439,IT 3521377440,3521835903,US 3521835904,3521835967,CA -3521835968,3521836351,US -3521836352,3521836415,IL -3521836416,3521836687,US +3521835968,3521836687,US 3521836688,3521836703,GB 3521836704,3521904639,US 3521904640,3521921023,JM 3521921024,3521933321,US 3521933322,3521933329,PK 3521933330,3521933345,MA -3521933346,3521933413,US +3521933346,3521933357,US +3521933358,3521933365,AE +3521933366,3521933389,US +3521933390,3521933397,AE +3521933398,3521933413,US 3521933414,3521933421,IN 3521933422,3521933429,MA 3521933430,3521933437,CA @@ -116013,15 +128701,15 @@ 3521933506,3521933537,GB 3521933538,3521933577,US 3521933578,3521933585,EG -3521933586,3521933589,US -3521933590,3521933597,IN -3521933598,3521933605,US +3521933586,3521933605,US 3521933606,3521933613,AE 3521933614,3521933621,US 3521933622,3521933629,IN 3521933630,3521933645,US -3521933646,3521933653,GB -3521933654,3521933725,US +3521933646,3521933653,PE +3521933654,3521933661,US +3521933662,3521933669,MA +3521933670,3521933725,US 3521933726,3521933733,GB 3521933734,3521933741,US 3521933742,3521933785,GB @@ -116029,15 +128717,20 @@ 3521933834,3521933841,EG 3521933842,3521933929,US 3521933930,3521933937,IN -3521933938,3521933981,US +3521933938,3521933945,GB +3521933946,3521933981,US 3521933982,3521933989,IN 3521933990,3521934089,US 3521934090,3521934097,EG -3521934098,3521934169,US +3521934098,3521934137,US +3521934138,3521934145,GR +3521934146,3521934169,US 3521934170,3521934177,EG 3521934178,3521934421,US 3521934422,3521934429,EG -3521934430,3521934477,US +3521934430,3521934437,US +3521934438,3521934445,IN +3521934446,3521934477,US 3521934478,3521934485,ID 3521934486,3521934509,US 3521934510,3521934517,IN @@ -116045,18 +128738,50 @@ 3521934736,3521934743,EG 3521934744,3521934768,US 3521934769,3521934776,MA -3521934777,3521935237,US -3521935238,3521935245,EG -3521935246,3521965055,US +3521934777,3521935310,US +3521935311,3521935318,EG +3521935319,3521935717,US +3521935718,3521935725,IN +3521935726,3521935993,US +3521935994,3521936025,EG +3521936026,3521936162,US +3521936163,3521936194,EG +3521936195,3521936243,US +3521936244,3521936251,IN +3521936252,3521936291,US +3521936292,3521936299,IN +3521936300,3521936393,US +3521936394,3521936425,EG +3521936426,3521936669,US +3521936670,3521936677,PK +3521936678,3521936766,US +3521936767,3521936774,PE +3521936775,3521936827,US +3521936828,3521936860,EG +3521936861,3521936957,US +3521936958,3521936965,PE +3521936966,3521936969,US +3521936970,3521936977,PK +3521936978,3521936993,US +3521936994,3521937001,LK +3521937002,3521937005,US +3521937006,3521937013,EG +3521937014,3521937017,US +3521937018,3521937025,SG +3521937026,3521937161,US +3521937162,3521937252,EG +3521937253,3521937260,US +3521937261,3521937406,EG +3521937407,3521965055,US 3521965056,3521966079,DE -3521966080,3522029439,US +3521966080,3521989631,US +3521989632,3521989887,A2 +3521989888,3522029439,US 3522029440,3522029503,FI 3522029504,3522029567,CA 3522029568,3522029823,US 3522029824,3522029855,A1 -3522029856,3522031871,US -3522031872,3522032127,AT -3522032128,3522034447,US +3522029856,3522034447,US 3522034448,3522034463,GB 3522034464,3522101247,US 3522101248,3522109439,CA @@ -116067,19 +128792,20 @@ 3522121216,3522121471,US 3522121472,3522121983,LY 3522121984,3522122239,AW -3522122240,3522131711,US +3522122240,3522131615,US +3522131616,3522131647,BR +3522131648,3522131711,US 3522131712,3522131743,GB -3522131744,3522131775,DE -3522131776,3522131807,BR -3522131808,3522132479,US +3522131744,3522132479,US 3522132480,3522132543,CO -3522132544,3522132575,US -3522132576,3522132607,UA +3522132544,3522132607,US 3522132608,3522132639,CA 3522132640,3522132671,BO 3522132672,3522132703,BR 3522132704,3522132735,LK -3522132736,3522133599,US +3522132736,3522133023,US +3522133024,3522133055,BR +3522133056,3522133599,US 3522133600,3522133631,JP 3522133632,3522133639,US 3522133640,3522133647,DE @@ -116094,13 +128820,13 @@ 3522195456,3522199551,CA 3522199552,3522759591,US 3522759592,3522759599,CA -3522759600,3522763263,US -3522763264,3522763519,CA -3522763520,3522854911,US +3522759600,3522854911,US 3522854912,3522859999,CA 3522860000,3522860031,IN 3522860032,3522871295,CA -3522871296,3522937855,US +3522871296,3522902015,US +3522902016,3522903039,CA +3522903040,3522937855,US 3522937856,3522938367,GB 3522938368,3523215359,US 3523215360,3523223551,AU @@ -116111,10 +128837,13 @@ 3523297280,3523317759,PH 3523317760,3523330047,JP 3523330048,3523338239,AU -3523340288,3523341311,AP +3523338240,3523340287,MY +3523340288,3523341311,AU +3523341312,3523342335,JP 3523342336,3523346431,BD 3523346432,3523354623,CN 3523354624,3523362815,KR +3523362816,3523379199,VN 3523379200,3523395583,PK 3523395584,3523411967,JP 3523411968,3523477503,HK @@ -116397,6 +129126,7 @@ 3528396800,3528400895,AU 3528400896,3528404991,JP 3528404992,3528407039,NZ +3528407040,3528409087,AU 3528409088,3528425471,CN 3528425472,3528445951,JP 3528445952,3528450047,ID @@ -116423,7 +129153,6 @@ 3528884224,3528908799,TH 3528908800,3528912895,VN 3528912896,3528933375,AU -3528933376,3528949759,JP 3528949760,3528966143,CN 3528966144,3528974335,KR 3528974336,3528978431,JP @@ -116476,7 +129205,7 @@ 3536945152,3536977919,TW 3536977920,3537010687,IN 3537010688,3537027071,ID -3537027072,3537043455,KR +3537027072,3537047551,KR 3537047552,3537049599,ID 3537049600,3537051647,HK 3537051648,3537059839,JP @@ -116495,7 +129224,8 @@ 3539337216,3539353599,NZ 3539353600,3539402751,TH 3539402752,3539435519,JP -3539435520,3539468287,AU +3539435520,3539464191,AU +3539464192,3539468287,ID 3539468288,3541303295,JP 3541303296,3541565439,TW 3541565440,3541696511,MY @@ -116532,7 +129262,7 @@ 3556851712,3556868095,UA 3556868096,3556876287,GB 3556876288,3556884479,NL -3556884480,3556900863,RU +3556892672,3556900863,RU 3556900864,3556909055,GB 3556909056,3556925439,DE 3556925440,3556933631,PL @@ -116544,17 +129274,27 @@ 3556974592,3556982783,ES 3556982784,3556984623,DE 3556984624,3556984639,FR -3556984640,3556990975,DE +3556984640,3556984647,DE +3556984648,3556984651,FR +3556984652,3556984655,DE +3556984656,3556984719,FR +3556984720,3556985127,DE +3556985128,3556985135,ES +3556985136,3556985207,DE +3556985208,3556985215,ES +3556985216,3556985663,DE +3556985664,3556985671,HU +3556985672,3556990975,DE 3556990976,3556999167,UA 3556999168,3557007359,RU -3557007360,3557015551,GB +3557007360,3557015551,IT 3557015552,3557023743,DE 3557023744,3557023879,BE 3557023880,3557023903,GB 3557023904,3557023999,BE 3557024000,3557024255,GB -3557024256,3557025279,BE -3557025280,3557025791,GB +3557024256,3557024767,BE +3557024768,3557025791,GB 3557025792,3557026047,BE 3557026048,3557026303,GB 3557026304,3557026815,BE @@ -116567,17 +129307,13 @@ 3557028032,3557028063,GB 3557028064,3557028095,BE 3557028096,3557028351,GB -3557028352,3557028543,BE -3557028544,3557028607,GB -3557028608,3557028735,BE +3557028352,3557028735,BE 3557028736,3557028799,GB 3557028800,3557028911,BE 3557028912,3557028927,GB 3557028928,3557029059,BE 3557029060,3557029071,GB -3557029072,3557029567,BE -3557029568,3557029631,GB -3557029632,3557029887,BE +3557029072,3557029887,BE 3557029888,3557029951,GB 3557029952,3557030079,BE 3557030080,3557030143,GB @@ -116585,9 +129321,7 @@ 3557030720,3557030751,GB 3557030752,3557030767,BE 3557030768,3557030783,GB -3557030784,3557030975,BE -3557030976,3557031039,GB -3557031040,3557031807,BE +3557030784,3557031807,BE 3557031808,3557031935,GB 3557031936,3557033575,IT 3557033576,3557033583,GB @@ -116623,8 +129357,8 @@ 3557174528,3557174783,IR 3557174784,3557175039,AE 3557175040,3557176063,IR -3557176064,3557176319,IT -3557176320,3557176619,NE +3557176064,3557176575,IT +3557176576,3557176619,NE 3557176620,3557176831,IT 3557176832,3557177023,IQ 3557177024,3557177199,IT @@ -116640,7 +129374,9 @@ 3557244928,3557253119,IT 3557253120,3557261311,RU 3557261312,3557277695,DE -3557277696,3557280334,NL +3557277696,3557278710,NL +3557278711,3557278714,CH +3557278715,3557280334,NL 3557280335,3557280336,IN 3557280337,3557285887,NL 3557285888,3557294079,RU @@ -116648,18 +129384,22 @@ 3557302272,3557310463,UA 3557310464,3557326847,ES 3557326848,3557335039,DE -3557335040,3557335391,BE +3557335040,3557335295,BE +3557335296,3557335327,EU +3557335328,3557335391,BE 3557335392,3557335455,EU 3557335456,3557335951,BE 3557335952,3557335967,LU -3557335968,3557336191,BE +3557335968,3557336063,BE +3557336064,3557336127,EU +3557336128,3557336191,BE 3557336192,3557336255,EU 3557336256,3557336319,BE 3557336320,3557336575,EU -3557336576,3557336655,BE -3557336656,3557336703,EU -3557336704,3557336767,BE -3557336768,3557338111,EU +3557336576,3557336671,BE +3557336672,3557336703,EU +3557336704,3557336831,BE +3557336832,3557338111,EU 3557338112,3557338367,BE 3557338368,3557338495,EU 3557338496,3557339175,BE @@ -116667,16 +129407,16 @@ 3557339184,3557339199,BE 3557339200,3557339215,EU 3557339216,3557339223,BE -3557339224,3557339231,EU -3557339232,3557339267,BE +3557339224,3557339239,EU +3557339240,3557339247,BE +3557339248,3557339259,EU +3557339260,3557339267,BE 3557339268,3557339271,EU 3557339272,3557340159,BE 3557340160,3557340191,EU 3557340192,3557340927,BE 3557340928,3557341183,EU -3557341184,3557341439,BE -3557341440,3557341471,EU -3557341472,3557341527,BE +3557341184,3557341527,BE 3557341528,3557341535,EU 3557341536,3557341551,BE 3557341552,3557341559,EU @@ -116684,9 +129424,7 @@ 3557341568,3557341663,EU 3557341664,3557341695,BE 3557341696,3557341951,EU -3557341952,3557342479,BE -3557342480,3557342495,EU -3557342496,3557342511,BE +3557341952,3557342511,BE 3557342512,3557342527,EU 3557342528,3557342543,BE 3557342544,3557342559,EU @@ -116695,8 +129433,12 @@ 3557342720,3557343231,BE 3557343232,3557351423,DE 3557351424,3557359615,RU -3557359616,3557359743,GB -3557359744,3557359871,JE +3557359616,3557359647,GB +3557359648,3557359655,JE +3557359656,3557359671,GB +3557359672,3557359695,JE +3557359696,3557359703,GB +3557359704,3557359871,JE 3557359872,3557360055,GB 3557360056,3557360063,JE 3557360064,3557360406,GB @@ -116711,19 +129453,19 @@ 3557360536,3557360543,JE 3557360544,3557360559,GB 3557360560,3557360575,JE -3557360576,3557360623,GB -3557360624,3557360639,JE -3557360640,3557360680,GB +3557360576,3557360680,GB 3557360681,3557360687,JE -3557360688,3557360815,GB -3557360816,3557360895,JE +3557360688,3557360875,GB +3557360876,3557360879,JE +3557360880,3557360887,GB +3557360888,3557360895,JE 3557360896,3557360927,GB 3557360928,3557360943,JE 3557360944,3557360959,GB 3557360960,3557360967,JE 3557360968,3557361055,GB -3557361056,3557361151,JE -3557361152,3557361159,GB +3557361056,3557361087,JE +3557361088,3557361159,GB 3557361160,3557361167,JE 3557361168,3557361183,GB 3557361184,3557361215,JE @@ -116740,17 +129482,17 @@ 3557361984,3557362047,GB 3557362048,3557362431,JE 3557362432,3557362687,GB -3557362688,3557363455,JE -3557363456,3557363471,GB +3557362688,3557363199,JE +3557363200,3557363471,GB 3557363472,3557363479,JE 3557363480,3557363655,GB 3557363656,3557363663,JE 3557363664,3557363671,GB 3557363672,3557363679,JE -3557363680,3557363687,GB -3557363688,3557363783,JE -3557363784,3557363791,GB -3557363792,3557364223,JE +3557363680,3557364103,GB +3557364104,3557364107,JE +3557364108,3557364143,GB +3557364144,3557364223,JE 3557364224,3557364479,GB 3557364480,3557364495,JE 3557364496,3557364527,GB @@ -116776,18 +129518,20 @@ 3557365104,3557365111,GB 3557365112,3557365119,JE 3557365120,3557365183,GB -3557365184,3557365247,JE -3557365248,3557365423,GB +3557365184,3557365375,JE +3557365376,3557365423,GB 3557365424,3557365503,JE 3557365504,3557365511,GB 3557365512,3557365519,JE 3557365520,3557365551,GB -3557365552,3557365559,JE -3557365560,3557365631,GB +3557365552,3557365567,JE +3557365568,3557365631,GB 3557365632,3557365695,JE -3557365696,3557365847,GB -3557365848,3557365863,JE -3557365864,3557365887,GB +3557365696,3557365807,GB +3557365808,3557365823,JE +3557365824,3557365847,GB +3557365848,3557365871,JE +3557365872,3557365887,GB 3557365888,3557365895,JE 3557365896,3557365911,GB 3557365912,3557365919,JE @@ -116869,9 +129613,26 @@ 3557834752,3557842943,IR 3557842944,3557851135,FI 3557851136,3557859327,HU -3557859328,3557860831,SE +3557859328,3557859839,SE +3557859840,3557860095,NO +3557860096,3557860159,SE +3557860160,3557860167,DK +3557860168,3557860607,SE +3557860608,3557860623,FI +3557860624,3557860831,SE 3557860832,3557860847,FI -3557860848,3557867519,SE +3557860848,3557860863,SE +3557860864,3557861119,NO +3557861120,3557863887,SE +3557863888,3557863903,NO +3557863904,3557863919,FI +3557863920,3557864287,SE +3557864288,3557864303,DK +3557864304,3557864311,SE +3557864312,3557864319,FI +3557864320,3557864799,SE +3557864800,3557864831,FI +3557864832,3557867519,SE 3557867520,3557875711,RU 3557875712,3557883903,DE 3557883904,3557892095,RU @@ -116922,14 +129683,78 @@ 3558154624,3558154751,CI 3558154752,3558154879,CM 3558154880,3558155007,SD -3558155008,3558155135,A2 +3558155008,3558155023,MM +3558155024,3558155027,NG +3558155028,3558155031,AF +3558155032,3558155039,DE +3558155040,3558155047,MR +3558155048,3558155055,A2 +3558155056,3558155059,AF +3558155060,3558155063,DE +3558155064,3558155103,A2 +3558155104,3558155119,DE +3558155120,3558155135,A2 3558155136,3558155263,SD 3558155264,3558155391,ET -3558155392,3558155519,A2 +3558155392,3558155399,A2 +3558155400,3558155407,KE +3558155408,3558155423,A2 +3558155424,3558155431,MM +3558155432,3558155487,A2 +3558155488,3558155503,SO +3558155504,3558155511,A2 +3558155512,3558155515,DE +3558155516,3558155519,A2 3558155520,3558156031,SD -3558156032,3558156032,A2 -3558156033,3558156287,KG -3558156288,3558162431,A2 +3558156032,3558156287,KG +3558156288,3558156375,GB +3558156376,3558156383,AF +3558156384,3558156391,A2 +3558156392,3558156399,DK +3558156400,3558156455,AF +3558156456,3558156471,KE +3558156472,3558156479,A2 +3558156480,3558156511,GB +3558156512,3558156527,NP +3558156528,3558156543,A2 +3558156544,3558156671,KN +3558156672,3558156927,SM +3558156928,3558157183,AF +3558157184,3558157311,SM +3558157312,3558157319,A2 +3558157320,3558157327,DE +3558157328,3558157335,SL +3558157336,3558157375,A2 +3558157376,3558157391,UG +3558157392,3558157407,AF +3558157408,3558157439,SD +3558157440,3558157567,SZ +3558157568,3558157583,A2 +3558157584,3558157599,MM +3558157600,3558157727,SD +3558157728,3558157759,SO +3558157760,3558157791,A2 +3558157792,3558158079,SL +3558158080,3558158207,GB +3558158208,3558158239,SC +3558158240,3558158327,A2 +3558158328,3558158331,SC +3558158332,3558158335,A2 +3558158336,3558158847,SE +3558158848,3558159359,DE +3558159360,3558159519,AF +3558159520,3558159807,A2 +3558159808,3558159839,DE +3558159840,3558159871,A2 +3558159872,3558160127,SL +3558160128,3558160383,DE +3558160384,3558161151,A2 +3558161152,3558161407,AF +3558161408,3558162143,A2 +3558162144,3558162175,SO +3558162176,3558162207,BI +3558162208,3558162303,A2 +3558162304,3558162431,BI 3558162432,3558170623,DE 3558170624,3558178815,GB 3558178816,3558187007,BG @@ -116953,9 +129778,7 @@ 3558196368,3558196415,IT 3558196416,3558196543,ES 3558196544,3558196607,IT -3558196608,3558196719,ES -3558196720,3558196727,IT -3558196728,3558196735,ES +3558196608,3558196735,ES 3558196736,3558203391,US 3558203392,3558211583,ES 3558211584,3558219775,GB @@ -116999,9 +129822,7 @@ 3558288488,3558288639,US 3558288640,3558288671,BE 3558288672,3558288687,DE -3558288688,3558288703,BE -3558288704,3558288719,GB -3558288720,3558288895,BE +3558288688,3558288895,BE 3558288896,3558289111,FR 3558289112,3558289119,GB 3558289120,3558289151,FR @@ -117040,17 +129861,21 @@ 3558291264,3558291279,AT 3558291280,3558291295,GB 3558291296,3558291455,CH -3558291456,3558292223,GB +3558291456,3558291459,DE +3558291460,3558291463,GB +3558291464,3558291471,DE +3558291472,3558292223,GB 3558292224,3558292287,SE 3558292288,3558292543,NL 3558292544,3558292607,GB 3558292608,3558292735,NL 3558292736,3558292863,GB -3558292864,3558293143,NL +3558292864,3558292871,CH +3558292872,3558293119,NL +3558293120,3558293143,CH 3558293144,3558293151,GB -3558293152,3558293199,NL -3558293200,3558293247,GB -3558293248,3558293503,NL +3558293152,3558293247,NL +3558293248,3558293503,GB 3558293504,3558301695,RU 3558301696,3558310319,DE 3558310320,3558310327,CH @@ -117312,13 +130137,7 @@ 3558785024,3558801407,IS 3558801408,3558809599,TR 3558809600,3558817791,ES -3558817792,3558821655,AT -3558821656,3558821663,DE -3558821664,3558821795,AT -3558821796,3558821799,DE -3558821800,3558821823,AT -3558821824,3558821831,DE -3558821832,3558825983,AT +3558817792,3558825983,AT 3558825984,3558827807,CY 3558827808,3558827815,A2 3558827816,3558828287,CY @@ -117403,7 +130222,9 @@ 3559088376,3559088379,GB 3559088380,3559089023,BE 3559089024,3559089027,GB -3559089028,3559089351,BE +3559089028,3559089079,BE +3559089080,3559089087,GB +3559089088,3559089351,BE 3559089352,3559089359,GB 3559089360,3559089407,BE 3559089408,3559089411,GB @@ -117419,22 +130240,17 @@ 3559089608,3559089611,GB 3559089612,3559089623,BE 3559089624,3559089627,GB -3559089628,3559089631,BE -3559089632,3559089639,FR +3559089628,3559089639,BE 3559089640,3559089643,GB 3559089644,3559089655,BE 3559089656,3559089659,GB 3559089660,3559090071,BE 3559090072,3559090079,NL -3559090080,3559090127,BE -3559090128,3559090135,GB -3559090136,3559090439,BE +3559090080,3559090439,BE 3559090440,3559090443,GB 3559090444,3559090463,BE 3559090464,3559090467,GB -3559090468,3559090471,BE -3559090472,3559090479,GB -3559090480,3559090483,BE +3559090468,3559090483,BE 3559090484,3559090487,GB 3559090488,3559090587,BE 3559090588,3559090591,GB @@ -117444,9 +130260,7 @@ 3559090776,3559090779,GB 3559090780,3559090803,BE 3559090804,3559090807,GB -3559090808,3559090831,BE -3559090832,3559090839,GB -3559090840,3559090863,BE +3559090808,3559090863,BE 3559090864,3559090871,GB 3559090872,3559090895,BE 3559090896,3559090899,GB @@ -117458,9 +130272,7 @@ 3559091012,3559091015,GB 3559091016,3559091087,BE 3559091088,3559091091,GB -3559091092,3559091159,BE -3559091160,3559091167,GB -3559091168,3559091203,BE +3559091092,3559091203,BE 3559091204,3559091207,GB 3559091208,3559091211,BE 3559091212,3559091215,GB @@ -117470,25 +130282,29 @@ 3559091424,3559091427,GB 3559091428,3559091439,BE 3559091440,3559091447,ES -3559091448,3559091507,BE +3559091448,3559091495,BE +3559091496,3559091503,GB +3559091504,3559091507,BE 3559091508,3559091511,GB -3559091512,3559091535,BE -3559091536,3559091543,GB +3559091512,3559091527,BE +3559091528,3559091543,GB 3559091544,3559091571,BE 3559091572,3559091575,GB 3559091576,3559091591,BE 3559091592,3559091615,GB 3559091616,3559091631,BE 3559091632,3559091639,LU -3559091640,3559091855,BE -3559091856,3559091863,GB -3559091864,3559092159,BE +3559091640,3559091815,BE +3559091816,3559091823,GB +3559091824,3559092159,BE 3559092160,3559092160,GB 3559092161,3559092222,BE 3559092223,3559092223,GB -3559092224,3559092295,BE -3559092296,3559092303,GB -3559092304,3559092399,BE +3559092224,3559092287,BE +3559092288,3559092303,GB +3559092304,3559092311,BE +3559092312,3559092319,GB +3559092320,3559092399,BE 3559092400,3559092407,GB 3559092408,3559092735,BE 3559092736,3559092739,GB @@ -117528,9 +130344,13 @@ 3559093216,3559093219,GB 3559093220,3559093239,BE 3559093240,3559093243,GB -3559093244,3559093567,BE +3559093244,3559093511,BE +3559093512,3559093535,GB +3559093536,3559093567,BE 3559093568,3559093599,IT -3559093600,3559093687,BE +3559093600,3559093663,BE +3559093664,3559093671,GB +3559093672,3559093687,BE 3559093688,3559093699,GB 3559093700,3559094019,BE 3559094020,3559094023,GB @@ -117601,6 +130421,7 @@ 3559096320,3559103231,RO 3559103232,3559103487,GB 3559103488,3559104511,RO +3559104512,3559112703,RU 3559112704,3559120895,IT 3559120896,3559129087,GB 3559129088,3559137279,BG @@ -117608,17 +130429,13 @@ 3559145472,3559153663,ES 3559153664,3559161855,GB 3559161856,3559161887,FR -3559161888,3559161919,GB -3559161920,3559161983,SE -3559161984,3559162047,GB +3559161888,3559162047,GB 3559162048,3559162079,BE 3559162080,3559163903,GB 3559163904,3559163935,FR 3559163936,3559163999,GB 3559164000,3559164031,NL -3559164032,3559164087,GB -3559164088,3559164095,SE -3559164096,3559164151,GB +3559164032,3559164151,GB 3559164152,3559164159,IT 3559164160,3559166335,GB 3559166336,3559166351,CH @@ -117638,8 +130455,8 @@ 3559174944,3559174951,IT 3559174952,3559174975,GB 3559174976,3559174983,DE -3559174984,3559175071,GB -3559175072,3559175095,FR +3559174984,3559175079,GB +3559175080,3559175095,FR 3559175096,3559175127,GB 3559175128,3559175135,DE 3559175136,3559175143,FR @@ -117653,6 +130470,7 @@ 3559186432,3559194623,RU 3559194624,3559202815,SE 3559202816,3559211007,DE +3559211008,3559219199,SK 3559219200,3559227391,SE 3559227392,3559235583,DK 3559235584,3559243775,DE @@ -117670,7 +130488,8 @@ 3559288832,3559289855,AZ 3559289856,3559292927,RU 3559292928,3559301119,JO -3559301120,3559309311,GB +3559301120,3559303167,DE +3559303168,3559309311,US 3559309312,3559317503,PL 3559317504,3559325695,FI 3559325696,3559333887,IT @@ -117698,31 +130517,28 @@ 3559490688,3559490719,ES 3559490720,3559490751,NL 3559490752,3559490783,ES -3559490784,3559490791,CH +3559490784,3559490791,NL 3559490792,3559490799,BE -3559490800,3559491135,NL -3559491136,3559491199,ES -3559491200,3559491327,NL -3559491328,3559491359,ES -3559491360,3559491439,NL +3559490800,3559490815,NL +3559490816,3559491071,ES +3559491072,3559491135,NL +3559491136,3559491167,ES +3559491168,3559491439,NL 3559491440,3559491455,ES 3559491456,3559491647,NL 3559491648,3559491711,ES 3559491712,3559491727,NL 3559491728,3559491735,ES -3559491736,3559491839,NL -3559491840,3559491871,ES +3559491736,3559491871,NL 3559491872,3559491903,GB -3559491904,3559491967,ES -3559491968,3559492003,NL +3559491904,3559491999,ES +3559492000,3559492003,NL 3559492004,3559492007,ES 3559492008,3559492013,NL 3559492014,3559492015,ES 3559492016,3559492023,NL 3559492024,3559492031,ES -3559492032,3559493151,NL -3559493152,3559493167,ES -3559493168,3559493247,NL +3559492032,3559493247,NL 3559493248,3559493279,ES 3559493280,3559493311,GB 3559493312,3559493349,NL @@ -117778,7 +130594,9 @@ 3559727104,3559735295,NL 3559735296,3559743487,BG 3559743488,3559745535,IT -3559745536,3559747583,DE +3559745536,3559746099,DE +3559746100,3559746103,GB +3559746104,3559747583,DE 3559747584,3559751679,DK 3559751680,3559759871,IT 3559759872,3559768063,NO @@ -117786,7 +130604,9 @@ 3559776256,3559792639,RU 3559792640,3559800831,SA 3559800832,3559809023,IT -3559809024,3559817215,DE +3559809024,3559815595,DE +3559815596,3559815599,NL +3559815600,3559817215,DE 3559817216,3559825407,GB 3559825408,3559833599,IT 3559833600,3559849983,RU @@ -117798,9 +130618,7 @@ 3559877968,3559882751,LT 3559882752,3559890943,AZ 3559890944,3559899135,CH -3559899136,3559899391,UA -3559899392,3559899395,EE -3559899396,3559899487,UA +3559899136,3559899487,UA 3559899488,3559899519,EE 3559899520,3559899903,UA 3559899904,3559899907,EE @@ -117845,22 +130663,24 @@ 3559902056,3559902071,UA 3559902072,3559902079,EE 3559902080,3559902175,UA -3559902176,3559902187,EE -3559902188,3559902191,UA -3559902192,3559902207,EE -3559902208,3559902975,UA -3559902976,3559903231,EE -3559903232,3559903487,UA -3559903488,3559903551,EE -3559903552,3559903743,UA -3559903744,3559904023,EE -3559904024,3559904255,UA -3559904256,3559904511,EE -3559904512,3559904607,UA -3559904608,3559904639,EE -3559904640,3559905019,UA +3559902176,3559902183,EE +3559902184,3559902191,UA +3559902192,3559902215,EE +3559902216,3559902223,UA +3559902224,3559902239,EE +3559902240,3559902431,UA +3559902432,3559902463,EE +3559902464,3559902975,UA +3559902976,3559903999,EE +3559904000,3559904015,UA +3559904016,3559904023,EE +3559904024,3559904127,UA +3559904128,3559904815,EE +3559904816,3559905019,UA 3559905020,3559905031,EE -3559905032,3559905055,UA +3559905032,3559905047,UA +3559905048,3559905051,EE +3559905052,3559905055,UA 3559905056,3559905139,EE 3559905140,3559905143,DE 3559905144,3559905151,UA @@ -117870,21 +130690,24 @@ 3559905226,3559905231,UA 3559905232,3559905247,EE 3559905248,3559905255,UA -3559905256,3559905297,EE +3559905256,3559905263,EE +3559905264,3559905271,UA +3559905272,3559905297,EE 3559905298,3559905299,UA 3559905300,3559905317,EE 3559905318,3559905319,LT -3559905320,3559905323,EE -3559905324,3559905535,UA +3559905320,3559905323,UA +3559905324,3559905331,EE +3559905332,3559905535,UA 3559905536,3559905623,EE 3559905624,3559905631,UA -3559905632,3559905975,EE -3559905976,3559905983,UA -3559905984,3559906257,EE +3559905632,3559905695,EE +3559905696,3559905703,UA +3559905704,3559905903,EE +3559905904,3559905911,UA +3559905912,3559906257,EE 3559906258,3559906259,UA -3559906260,3559906799,EE -3559906800,3559906815,UA -3559906816,3559906975,EE +3559906260,3559906975,EE 3559906976,3559907071,UA 3559907072,3559907327,EE 3559907328,3559915519,FR @@ -117997,11 +130820,11 @@ 3560710144,3560718335,CH 3560718336,3560726527,GM 3560726528,3560734719,DK -3560734720,3560742623,DE -3560742624,3560742631,GB -3560742632,3560742911,DE +3560734720,3560742911,DE 3560742912,3560751103,AT -3560751104,3560767487,DE +3560751104,3560761856,DE +3560761857,3560761857,A2 +3560761858,3560767487,DE 3560767488,3560832791,NL 3560832792,3560832799,BE 3560832800,3560833023,NL @@ -118048,8 +130871,7 @@ 3560939656,3560939659,CH 3560939660,3560939663,DE 3560939664,3560939667,DK -3560939668,3560939675,DE -3560939676,3560939679,PL +3560939668,3560939679,DE 3560939680,3560939683,IT 3560939684,3560939687,AT 3560939688,3560939691,ES @@ -118310,9 +131132,7 @@ 3560940996,3560940999,DK 3560941000,3560941003,ES 3560941004,3560941007,PL -3560941008,3560941011,DE -3560941012,3560941015,FR -3560941016,3560941019,DE +3560941008,3560941019,DE 3560941020,3560941023,IT 3560941024,3560941027,FR 3560941028,3560941031,CH @@ -118338,8 +131158,7 @@ 3560941124,3560941127,FR 3560941128,3560941131,DE 3560941132,3560941135,GB -3560941136,3560941139,ES -3560941140,3560941147,DE +3560941136,3560941147,DE 3560941148,3560941151,IT 3560941152,3560941155,DK 3560941156,3560941159,ES @@ -118733,8 +131552,8 @@ 3560943076,3560943079,ES 3560943080,3560943095,DE 3560943096,3560943099,PL -3560943100,3560943109,DE -3560943110,3560943111,ES +3560943100,3560943110,DE +3560943111,3560943111,ES 3560943112,3560943113,DE 3560943114,3560943115,ES 3560943116,3560943116,DK @@ -118800,7 +131619,7 @@ 3560943189,3560943192,DE 3560943193,3560943193,ES 3560943194,3560943194,AT -3560943195,3560943195,PL +3560943195,3560943195,DE 3560943196,3560943197,IT 3560943198,3560943198,DE 3560943199,3560943199,PT @@ -119461,13 +132280,13 @@ 3560944648,3560944651,TR 3560944652,3560944655,HU 3560944656,3560944659,TR -3560944660,3560944663,MZ +3560944660,3560944663,DE 3560944664,3560944667,FR 3560944668,3560944671,TR 3560944672,3560944675,KZ 3560944676,3560944679,GR 3560944680,3560944687,TR -3560944688,3560944691,FR +3560944688,3560944691,DE 3560944692,3560944695,SA 3560944696,3560944699,TR 3560944700,3560944703,CU @@ -120010,7 +132829,14 @@ 3560951112,3560951115,FR 3560951116,3560951119,SE 3560951120,3560951123,CZ -3560951124,3560951195,SE +3560951124,3560951127,GB +3560951128,3560951131,SE +3560951132,3560951135,ES +3560951136,3560951143,SE +3560951144,3560951147,BR +3560951148,3560951155,SE +3560951156,3560951159,US +3560951160,3560951195,SE 3560951196,3560951199,DK 3560951200,3560951203,SE 3560951204,3560951207,AE @@ -120034,13 +132860,17 @@ 3560951408,3560951423,SE 3560951424,3560951427,NL 3560951428,3560951431,DK -3560951432,3560951440,SE +3560951432,3560951435,SE +3560951436,3560951439,DK +3560951440,3560951440,SE 3560951441,3560951442,JP 3560951443,3560951444,SE 3560951445,3560951446,HU 3560951447,3560951447,SE 3560951448,3560951451,FR -3560951452,3560951551,SE +3560951452,3560951459,SE +3560951460,3560951463,FI +3560951464,3560951551,SE 3560951552,3560951555,ES 3560951556,3560951559,NO 3560951560,3560951583,SE @@ -120064,21 +132894,27 @@ 3560951836,3560951915,SE 3560951916,3560951919,PL 3560951920,3560951935,SE -3560951936,3560951940,NL -3560951941,3560951943,SE +3560951936,3560951939,NL +3560951940,3560951943,SE 3560951944,3560951947,NO -3560951948,3560952223,SE +3560951948,3560951995,SE +3560951996,3560951999,US +3560952000,3560952039,SE +3560952040,3560952043,FI +3560952044,3560952223,SE 3560952224,3560952227,CZ 3560952228,3560952231,SE 3560952232,3560952235,US 3560952236,3560952239,PT 3560952240,3560952255,SE 3560952256,3560952259,PL -3560952260,3560953103,SE +3560952260,3560952295,SE +3560952296,3560952299,NL +3560952300,3560952431,SE +3560952432,3560952435,DK +3560952436,3560953103,SE 3560953104,3560953119,JP -3560953120,3560954239,SE -3560954240,3560954367,AX -3560954368,3560955903,SE +3560953120,3560955903,SE 3560955904,3560964095,BE 3560964096,3560996863,NL 3560996864,3561005055,GB @@ -120114,9 +132950,13 @@ 3561201664,3561206655,NL 3561206656,3561206663,BE 3561206664,3561209855,NL -3561209856,3561218047,GB +3561209856,3561214975,GB +3561214976,3561215230,ES +3561215231,3561218047,GB 3561218048,3561226239,AT -3561226240,3561234431,FI +3561226240,3561228663,FI +3561228664,3561228671,AX +3561228672,3561234431,FI 3561234432,3561242623,TR 3561242624,3561259007,DE 3561259008,3561267199,IL @@ -120135,7 +132975,9 @@ 3561381888,3561382479,AT 3561382480,3561382495,DE 3561382496,3561390079,AT -3561390080,3561396223,BG +3561390080,3561395455,BG +3561395456,3561395711,GR +3561395712,3561396223,BG 3561396224,3561396480,MK 3561396481,3561398271,BG 3561398272,3561406463,LV @@ -120218,7 +133060,9 @@ 3561562112,3561570303,ES 3561570304,3561578495,AM 3561578496,3561586687,RU -3561586688,3561594879,BG +3561586688,3561590591,BG +3561590592,3561590623,CY +3561590624,3561594879,BG 3561594880,3561594935,SE 3561594936,3561594939,DK 3561594940,3561594975,SE @@ -120240,8 +133084,8 @@ 3561607344,3561607359,GB 3561607360,3561607679,FR 3561607680,3561607711,GB -3561607712,3561607727,FR -3561607728,3561607775,GB +3561607712,3561607759,FR +3561607760,3561607775,GB 3561607776,3561610239,FR 3561610240,3561610495,US 3561610496,3561610527,FR @@ -120267,13 +133111,15 @@ 3561616896,3561616959,FR 3561616960,3561617151,GB 3561617152,3561617407,FR -3561617408,3561617919,CH +3561617408,3561617663,FI +3561617664,3561617919,LU 3561617920,3561618175,SE 3561618176,3561618431,IE 3561618432,3561618687,DK 3561618688,3561618815,FR 3561618816,3561618943,PL -3561618944,3561640575,GB +3561618944,3561618951,ES +3561618952,3561640575,GB 3561640576,3561640831,FR 3561640832,3561652223,GB 3561652224,3561668607,CH @@ -120298,7 +133144,8 @@ 3561783296,3561799679,RU 3561799680,3561807871,DE 3561807872,3561816063,BE -3561816064,3561824255,VA +3561816064,3561823999,VA +3561824000,3561824255,IT 3561824256,3561832447,LI 3561832448,3561840639,IT 3561840640,3561848831,PL @@ -120321,8 +133168,8 @@ 3561922816,3561922847,GB 3561922848,3561922863,NL 3561922864,3561922871,FR -3561922872,3561922911,GB -3561922912,3561922975,NL +3561922872,3561922927,GB +3561922928,3561922975,NL 3561922976,3561922991,GB 3561922992,3561923015,NL 3561923016,3561923063,GB @@ -120333,12 +133180,11 @@ 3561923404,3561923407,NL 3561923408,3561923423,GB 3561923424,3561923551,NL -3561923552,3561923583,GB -3561923584,3561923679,NL +3561923552,3561923647,GB +3561923648,3561923679,NL 3561923680,3561923711,GB 3561923712,3561923743,FR -3561923744,3561923775,NL -3561923776,3561923839,GB +3561923744,3561923839,GB 3561923840,3561924351,NL 3561924352,3561924607,GB 3561924608,3561924647,NL @@ -120358,8 +133204,8 @@ 3561926944,3561926975,NL 3561926976,3561926983,GB 3561926984,3561926999,NL -3561927000,3561927007,GB -3561927008,3561927039,NL +3561927000,3561927015,GB +3561927016,3561927039,NL 3561927040,3561927103,GB 3561927104,3561927167,NL 3561927168,3561927551,GB @@ -120392,15 +133238,15 @@ 3561938944,3561940991,IE 3561940992,3561942015,GB 3561942016,3561947135,IE -3561947136,3561963143,DE -3561963144,3561963151,AU -3561963152,3561963519,DE +3561947136,3561963519,DE 3561963520,3561971711,BE 3561971712,3561975807,CZ 3561975808,3561979903,UA 3561979904,3561988095,ES 3561988096,3562004479,DE -3562004480,3562012671,NL +3562004480,3562010495,NL +3562010496,3562010623,DE +3562010624,3562012671,NL 3562012672,3562020095,IR 3562020096,3562020351,AE 3562020352,3562020863,IR @@ -120458,7 +133304,8 @@ 3562098432,3562098687,GB 3562098688,3562098879,FR 3562098880,3562098895,BE -3562098896,3562098911,FR +3562098896,3562098903,GB +3562098904,3562098911,FR 3562098912,3562099199,GB 3562099200,3562099359,FR 3562099360,3562099391,GB @@ -120477,8 +133324,10 @@ 3562100544,3562100575,FR 3562100576,3562100703,GB 3562100704,3562100735,FR -3562100736,3562100863,GB -3562100864,3562101215,FR +3562100736,3562100991,GB +3562100992,3562101055,FR +3562101056,3562101087,GB +3562101088,3562101215,FR 3562101216,3562101375,GB 3562101376,3562101439,FR 3562101440,3562101471,GB @@ -120539,9 +133388,7 @@ 3562106144,3562106159,FR 3562106160,3562106191,GB 3562106192,3562106271,FR -3562106272,3562106367,GB -3562106368,3562106495,FR -3562106496,3562106527,GB +3562106272,3562106527,GB 3562106528,3562106559,FR 3562106560,3562106623,GB 3562106624,3562106911,FR @@ -120562,7 +133409,9 @@ 3562107712,3562107775,GB 3562107776,3562107807,FR 3562107808,3562107887,GB -3562107888,3562108063,FR +3562107888,3562107967,FR +3562107968,3562108031,GB +3562108032,3562108063,FR 3562108064,3562108159,GB 3562108160,3562108415,FR 3562108416,3562108959,GB @@ -120597,16 +133446,15 @@ 3562192896,3562201087,UA 3562201088,3562209279,DE 3562209280,3562217471,RU -3562217472,3562220287,DE -3562220288,3562220799,CH -3562220800,3562225663,DE +3562217472,3562225663,DE 3562225664,3562233855,NL 3562233856,3562242047,FI 3562242048,3562258431,FR 3562258432,3562263975,NL 3562263976,3562263983,BE -3562263984,3562283007,NL -3562283008,3562291199,IT +3562263984,3562274767,NL +3562274768,3562274775,DE +3562274776,3562283007,NL 3562291200,3562307583,GB 3562307584,3562315775,NL 3562315776,3562321231,GB @@ -120673,9 +133521,7 @@ 3562668032,3562676223,IT 3562676224,3562684415,UA 3562684416,3562692607,FI -3562692608,3562695375,UA -3562695376,3562695379,CZ -3562695380,3562700799,UA +3562692608,3562700799,UA 3562700800,3562708991,DE 3562708992,3562717183,UA 3562717184,3562725375,CH @@ -120722,7 +133568,8 @@ 3563006592,3563006719,CA 3563006720,3563006729,DE 3563006730,3563006847,CN -3563006848,3563007487,DE +3563006848,3563006911,US +3563006912,3563007487,DE 3563007488,3563007999,TR 3563008000,3563008255,DE 3563008256,3563008511,PL @@ -120770,7 +133617,6 @@ 3563097344,3563102207,DE 3563102208,3563110399,CZ 3563110400,3563118591,RU -3563118592,3563126783,DE 3563126784,3563134975,KG 3563134976,3563143167,IT 3563143168,3563151359,GB @@ -120799,9 +133645,7 @@ 3563372544,3563380735,SA 3563380736,3563381951,GB 3563381952,3563381959,IT -3563381960,3563382383,GB -3563382384,3563382391,AU -3563382392,3563382495,GB +3563381960,3563382495,GB 3563382496,3563382503,AT 3563382504,3563382583,GB 3563382584,3563382587,AT @@ -120957,13 +133801,11 @@ 3563848320,3563848327,ES 3563848328,3563848383,NL 3563848384,3563848447,ES -3563848448,3563848495,NL -3563848496,3563848511,ES -3563848512,3563848575,NL +3563848448,3563848575,NL 3563848576,3563848583,ES -3563848584,3563848655,NL -3563848656,3563848959,ES -3563848960,3563848979,NL +3563848584,3563848671,NL +3563848672,3563848703,ES +3563848704,3563848979,NL 3563848980,3563848983,ES 3563848984,3563848987,NL 3563848988,3563848999,ES @@ -120974,8 +133816,19 @@ 3563849216,3563849727,GB 3563849728,3563849999,NL 3563850000,3563850007,FI -3563850008,3563851023,NL -3563851024,3563851135,ES +3563850008,3563850015,NL +3563850016,3563850047,ES +3563850048,3563850111,NL +3563850112,3563850239,ES +3563850240,3563850751,GB +3563850752,3563850767,NL +3563850768,3563850783,ES +3563850784,3563850815,NL +3563850816,3563850831,ES +3563850832,3563850847,NL +3563850848,3563850879,ES +3563850880,3563851007,NL +3563851008,3563851135,ES 3563851136,3563851839,NL 3563851840,3563851903,ES 3563851904,3563852031,NL @@ -120991,7 +133844,9 @@ 3563853328,3563853375,NL 3563853376,3563853439,ES 3563853440,3563853567,NL -3563853568,3563854103,ES +3563853568,3563854079,ES +3563854080,3563854095,NL +3563854096,3563854103,ES 3563854104,3563854175,NL 3563854176,3563854239,ES 3563854240,3563854259,NL @@ -121033,19 +133888,24 @@ 3564024096,3564024103,IT 3564024104,3564024135,GB 3564024136,3564024143,IT -3564024144,3564024447,GB -3564024448,3564024463,IT -3564024464,3564027903,GB -3564027904,3564041215,DE +3564024144,3564027903,GB +3564027904,3564036351,DE +3564036352,3564039423,A2 +3564039424,3564039679,DE +3564039680,3564041215,A2 3564041216,3564041727,RU -3564041728,3564044287,DE +3564041728,3564043263,A2 +3564043264,3564043519,DE +3564043520,3564044287,A2 3564044288,3564052479,CZ 3564052480,3564060671,GB 3564060672,3564068863,RU 3564068864,3564077055,ES 3564077056,3564093439,GB 3564093440,3564101631,UA -3564101632,3564109823,DE +3564101632,3564103743,DE +3564103744,3564103759,A2 +3564103760,3564109823,DE 3564109824,3564126207,SE 3564126208,3564128287,IT 3564128288,3564128303,BG @@ -121063,9 +133923,17 @@ 3564153088,3564153151,NO 3564153152,3564153199,SE 3564153200,3564153207,NL -3564153208,3564157207,SE +3564153208,3564156415,SE +3564156416,3564156419,NO +3564156420,3564156815,SE +3564156816,3564156819,FI +3564156820,3564156919,SE +3564156920,3564156927,FI +3564156928,3564157207,SE 3564157208,3564157215,NO -3564157216,3564158975,SE +3564157216,3564158951,SE +3564158952,3564158955,NO +3564158956,3564158975,SE 3564158976,3564161855,DE 3564161856,3564161891,NL 3564161892,3564165119,DE @@ -121100,23 +133968,17 @@ 3564331008,3564339199,ES 3564339200,3564339967,GB 3564339968,3564339999,NL -3564340000,3564340351,GB -3564340352,3564340415,NL -3564340416,3564340479,GB +3564340000,3564340479,GB 3564340480,3564340735,NL 3564340736,3564340991,GB 3564340992,3564341119,NL 3564341120,3564341183,GB 3564341184,3564341247,NL -3564341248,3564341759,GB -3564341760,3564342063,NL -3564342064,3564342207,GB -3564342208,3564342271,NL -3564342272,3564342335,GB +3564341248,3564342015,GB +3564342016,3564342063,NL +3564342064,3564342335,GB 3564342336,3564342431,NL -3564342432,3564342527,GB -3564342528,3564342783,NL -3564342784,3564343583,GB +3564342432,3564343583,GB 3564343584,3564343615,NL 3564343616,3564343679,GB 3564343680,3564343743,NL @@ -121132,9 +133994,7 @@ 3564344224,3564344231,NL 3564344232,3564344239,GB 3564344240,3564344247,NL -3564344248,3564344575,GB -3564344576,3564344831,NL -3564344832,3564344895,GB +3564344248,3564344895,GB 3564344896,3564344959,NL 3564344960,3564345023,GB 3564345024,3564345087,NL @@ -121142,8 +134002,8 @@ 3564345128,3564345131,NL 3564345132,3564345135,GB 3564345136,3564345151,NL -3564345152,3564345215,GB -3564345216,3564345343,NL +3564345152,3564345247,GB +3564345248,3564345343,NL 3564345344,3564346143,GB 3564346144,3564346175,NL 3564346176,3564346207,GB @@ -121152,9 +134012,7 @@ 3564346272,3564346303,NL 3564346304,3564347391,GB 3564347392,3564347583,NL -3564347584,3564347647,GB -3564347648,3564348159,NL -3564348160,3564348191,GB +3564347584,3564348191,GB 3564348192,3564348239,NL 3564348240,3564348255,GB 3564348256,3564348287,NL @@ -121166,8 +134024,8 @@ 3564348528,3564348543,NL 3564348544,3564348559,GB 3564348560,3564348639,NL -3564348640,3564348671,GB -3564348672,3564348991,NL +3564348640,3564348927,GB +3564348928,3564348991,NL 3564348992,3564349183,GB 3564349184,3564349311,NL 3564349312,3564349375,GB @@ -121216,14 +134074,16 @@ 3564353408,3564353487,NL 3564353488,3564353503,GB 3564353504,3564353535,NL -3564353536,3564353791,GB -3564353792,3564353919,NL +3564353536,3564353855,GB +3564353856,3564353919,NL 3564353920,3564354063,GB 3564354064,3564354079,NL 3564354080,3564354303,GB 3564354304,3564354335,NL 3564354336,3564354367,GB -3564354368,3564354559,NL +3564354368,3564354431,NL +3564354432,3564354495,GB +3564354496,3564354559,NL 3564354560,3564354943,GB 3564354944,3564355039,NL 3564355040,3564355135,GB @@ -121316,16 +134176,12 @@ 3564544000,3564560383,DE 3564560384,3564560391,US 3564560392,3564560399,CA -3564560400,3564560415,US -3564560416,3564560511,GB +3564560400,3564560431,US +3564560432,3564560511,GB 3564560512,3564560527,US 3564560528,3564560543,GB 3564560544,3564560607,US -3564560608,3564560927,GB -3564560928,3564560959,US -3564560960,3564561039,GB -3564561040,3564561055,US -3564561056,3564561071,GB +3564560608,3564561071,GB 3564561072,3564561087,US 3564561088,3564561151,GB 3564561152,3564561407,US @@ -121334,8 +134190,7 @@ 3564561672,3564561679,GB 3564561680,3564561687,US 3564561688,3564561695,GB -3564561696,3564561791,US -3564561792,3564561919,GB +3564561696,3564561919,US 3564561920,3564562431,CH 3564562432,3564562687,GB 3564562688,3564562831,US @@ -121345,13 +134200,19 @@ 3564563712,3564563967,US 3564563968,3564564223,GB 3564564224,3564564239,US -3564564240,3564565231,GB +3564564240,3564564351,GB +3564564352,3564564415,US +3564564416,3564565231,GB 3564565232,3564565239,US 3564565240,3564565247,GB 3564565248,3564565279,US 3564565280,3564565327,GB -3564565328,3564565407,US -3564565408,3564566047,GB +3564565328,3564565439,US +3564565440,3564565567,GB +3564565568,3564565631,US +3564565632,3564565663,GB +3564565664,3564565679,US +3564565680,3564566047,GB 3564566048,3564566079,US 3564566080,3564566143,GB 3564566144,3564566175,US @@ -121360,15 +134221,15 @@ 3564566528,3564567047,GB 3564567048,3564567055,US 3564567056,3564567079,GB -3564567080,3564567087,US -3564567088,3564567143,GB +3564567080,3564567095,US +3564567096,3564567143,GB 3564567144,3564567151,US 3564567152,3564567183,GB 3564567184,3564567199,US 3564567200,3564567247,GB 3564567248,3564567255,US -3564567256,3564567295,GB -3564567296,3564567551,US +3564567256,3564567263,GB +3564567264,3564567551,US 3564567552,3564567807,GB 3564567808,3564567935,US 3564567936,3564568039,GB @@ -121391,7 +134252,11 @@ 3564571592,3564571599,FR 3564571600,3564572271,GB 3564572272,3564572287,DE -3564572288,3564576767,GB +3564572288,3564572415,GB +3564572416,3564572543,DE +3564572544,3564573695,GB +3564573696,3564574079,DE +3564574080,3564576767,GB 3564576768,3564584959,RU 3564584960,3564593151,SA 3564593152,3564601343,RU @@ -121449,8 +134314,8 @@ 3564736872,3564736887,GB 3564736888,3564736895,DE 3564736896,3564736903,GB -3564736904,3564736911,DE -3564736912,3564736959,GB +3564736904,3564736927,DE +3564736928,3564736959,GB 3564736960,3564736967,DE 3564736968,3564736975,GB 3564736976,3564736991,DE @@ -121493,8 +134358,8 @@ 3564855296,3564862863,DE 3564862864,3564862871,AE 3564862872,3564863487,DE -3564863488,3564880935,NL -3564880936,3564880943,GB +3564863488,3564880927,NL +3564880928,3564880943,GB 3564880944,3564880951,NL 3564880952,3564880967,FR 3564880968,3564880975,NL @@ -121508,15 +134373,15 @@ 3564881232,3564881247,NL 3564881248,3564881343,GB 3564881344,3564881359,NL -3564881360,3564881375,GB -3564881376,3564881439,NL +3564881360,3564881391,GB +3564881392,3564881439,NL 3564881440,3564881455,GB 3564881456,3564881463,NL 3564881464,3564881471,GB 3564881472,3564881551,NL 3564881552,3564881599,GB -3564881600,3564881631,NL -3564881632,3564881663,GB +3564881600,3564881615,NL +3564881616,3564881663,GB 3564881664,3564881727,NL 3564881728,3564881935,GB 3564881936,3564881939,NL @@ -121530,9 +134395,7 @@ 3564882128,3564882135,NL 3564882136,3564882143,GB 3564882144,3564882239,NL -3564882240,3564882255,GB -3564882256,3564882271,NL -3564882272,3564882431,GB +3564882240,3564882431,GB 3564882432,3564882943,NL 3564882944,3564883007,GB 3564883008,3564883039,NL @@ -121710,8 +134573,8 @@ 3564896256,3564904447,RU 3564904448,3564912639,DE 3564912640,3564920831,BG -3564920832,3564922879,ES -3564922880,3564929023,US +3564920832,3564921855,ES +3564921856,3564929023,US 3564929024,3564937215,AT 3564937216,3564945407,RS 3564945408,3564947175,GB @@ -121727,8 +134590,8 @@ 3564953744,3564953744,GB 3564953745,3564953759,AT 3564953760,3564953791,GB -3564953792,3564953855,AT -3564953856,3564954111,GB +3564953792,3564953919,AT +3564953920,3564954111,GB 3564954112,3564954131,AT 3564954132,3564954139,GB 3564954140,3564954143,AT @@ -121917,7 +134780,9 @@ 3564994560,3565002751,NL 3565002752,3565007247,NO 3565007248,3565007251,SE -3565007252,3565027327,NO +3565007252,3565012663,NO +3565012664,3565012667,SE +3565012668,3565027327,NO 3565027328,3565035519,PL 3565035520,3565036287,IE 3565036288,3565036543,GB @@ -121928,7 +134793,11 @@ 3565037568,3565037823,IE 3565037824,3565038591,GB 3565038592,3565038663,IE -3565038664,3565039615,GB +3565038664,3565038687,GB +3565038688,3565038719,IE +3565038720,3565038727,GB +3565038728,3565038735,IE +3565038736,3565039615,GB 3565039616,3565042175,IE 3565042176,3565043711,GB 3565043712,3565047807,AT @@ -121943,9 +134812,9 @@ 3565093392,3565093399,NO 3565093400,3565096759,GB 3565096760,3565096767,IE -3565096768,3565099647,GB -3565099648,3565099651,US -3565099652,3565101055,GB +3565096768,3565097151,GB +3565097152,3565097167,TZ +3565097168,3565101055,GB 3565101056,3565109247,DE 3565109248,3565117439,PL 3565117440,3565125631,TR @@ -121962,7 +134831,8 @@ 3565486336,3565486975,FR 3565486976,3565487615,NL 3565487616,3565487871,SE -3565487872,3565488383,GB +3565487872,3565488127,SK +3565488128,3565488383,GB 3565488384,3565488639,ES 3565488640,3565488895,GB 3565488896,3565489535,DE @@ -122289,15 +135159,11 @@ 3566739456,3566747647,RU 3566747648,3566764031,GR 3566764032,3566796799,AT -3566796800,3566803455,NL -3566803456,3566803711,A2 -3566803712,3566816511,NL +3566796800,3566816511,NL 3566816512,3566816767,US 3566816768,3566862335,NL 3566862336,3566895103,TR -3566895104,3566897279,KZ -3566897280,3566897311,KG -3566897312,3566927871,KZ +3566895104,3566927871,KZ 3566927872,3566993407,FR 3566993408,3567058943,TR 3567058944,3567103047,FR @@ -122479,9 +135345,7 @@ 3567388032,3567388159,GB 3567388160,3567388399,DE 3567388400,3567388415,GB -3567388416,3567388511,DE -3567388512,3567388543,GB -3567388544,3567388607,DE +3567388416,3567388607,DE 3567388608,3567388671,GB 3567388672,3567388927,CZ 3567388928,3567389183,DE @@ -122501,7 +135365,9 @@ 3567392768,3567393023,DE 3567393024,3567393279,FR 3567393280,3567393535,HU -3567393536,3567394975,GB +3567393536,3567393791,GB +3567393792,3567394047,SI +3567394048,3567394975,GB 3567394976,3567395007,DE 3567395008,3567395071,GB 3567395072,3567395327,DE @@ -122547,22 +135413,16 @@ 3567403008,3567419391,IT 3567419392,3567427583,SA 3567427584,3567435775,SE -3567435776,3567436543,GB -3567436544,3567436595,IN -3567436596,3567436599,GB -3567436600,3567436603,IN -3567436604,3567436799,GB -3567436800,3567436895,IN -3567436896,3567441375,GB +3567435776,3567441375,GB 3567441376,3567441407,NL 3567441408,3567444223,GB 3567444224,3567444479,TZ 3567444480,3567445951,GB 3567445952,3567445983,NL -3567445984,3567452031,GB -3567452032,3567452047,GR -3567452048,3567452159,GB -3567452160,3567507455,ES +3567445984,3567452159,GB +3567452160,3567463135,ES +3567463136,3567463151,IT +3567463152,3567507455,ES 3567507456,3567509503,NL 3567509504,3567512575,ES 3567512576,3567513599,NL @@ -122585,8 +135445,9 @@ 3567587328,3567591423,GB 3567591424,3567599615,IT 3567599616,3567615999,NL -3567616000,3567616511,BD -3567616512,3567616527,A2 +3567616000,3567616255,CG +3567616256,3567616263,CD +3567616264,3567616527,A2 3567616528,3567616535,GB 3567616536,3567616575,A2 3567616576,3567616583,GB @@ -122624,8 +135485,14 @@ 3567620960,3567620991,A2 3567620992,3567621055,NG 3567621056,3567621119,KE -3567621120,3567621375,GB -3567621376,3567621631,A2 +3567621120,3567621263,GB +3567621264,3567621279,CG +3567621280,3567621375,GB +3567621376,3567621391,A2 +3567621392,3567621399,CG +3567621400,3567621407,A2 +3567621408,3567621423,CG +3567621424,3567621631,A2 3567621632,3567621887,ID 3567621888,3567621895,TZ 3567621896,3567621903,KE @@ -122666,7 +135533,10 @@ 3567626240,3567627008,NG 3567627009,3567629311,A2 3567629312,3567630207,TJ -3567630208,3567647487,A2 +3567630208,3567635711,A2 +3567635712,3567635839,CG +3567635840,3567635967,CD +3567635968,3567647487,A2 3567647488,3567648767,GB 3567648768,3567665151,BE 3567665152,3567673343,ES @@ -122729,14 +135599,10 @@ 3568595080,3568595087,A2 3568595088,3568599039,FR 3568599040,3568631807,PL -3568631808,3568650695,SE -3568650696,3568650699,US -3568650700,3568697343,SE +3568631808,3568697343,SE 3568697344,3568730111,PL 3568730112,3568746495,NL -3568746496,3568752895,FI -3568752896,3568752959,EE -3568752960,3568762879,FI +3568746496,3568762879,FI 3568762880,3568795647,AT 3568795648,3568803839,GB 3568803840,3568812031,IT @@ -122787,7 +135653,9 @@ 3569241584,3569241599,LU 3569241600,3569241887,BE 3569241888,3569241903,LU -3569241904,3569242047,BE +3569241904,3569241907,BE +3569241908,3569241911,LU +3569241912,3569242047,BE 3569242048,3569242111,LU 3569242112,3569243903,BE 3569243904,3569244031,NL @@ -122816,18 +135684,14 @@ 3569271912,3569271919,DE 3569271920,3569271935,BE 3569271936,3569271943,IT -3569271944,3569272063,BE -3569272064,3569272079,LU -3569272080,3569273167,BE +3569271944,3569273167,BE 3569273168,3569273183,LU 3569273184,3569273791,BE 3569273792,3569273823,LU -3569273824,3569273935,BE -3569273936,3569273951,LI -3569273952,3569274303,BE +3569273824,3569274303,BE 3569274304,3569274311,LU -3569274312,3569274335,BE -3569274336,3569274383,LU +3569274312,3569274367,BE +3569274368,3569274383,LU 3569274384,3569274495,BE 3569274496,3569274559,LU 3569274560,3569274687,BE @@ -123109,7 +135973,9 @@ 3569830528,3569839187,IL 3569839188,3569839191,A2 3569839192,3569839359,IL -3569839360,3569839615,A2 +3569839360,3569839475,A2 +3569839476,3569839479,IL +3569839480,3569839615,A2 3569839616,3569846527,IL 3569846528,3569846783,A2 3569846784,3569851935,IL @@ -123124,17 +135990,17 @@ 3569873280,3569873407,A2 3569873408,3569876991,IL 3569876992,3569942527,RS -3569942528,3570064759,DE -3570064760,3570064767,A2 -3570064768,3570073599,DE +3569942528,3570038463,DE +3570038464,3570038464,A2 +3570038465,3570073599,DE 3570073600,3570081791,NL -3570081792,3570102463,CH -3570102464,3570102479,ES -3570102480,3570106367,CH +3570081792,3570106367,CH 3570106368,3570139135,PL 3570139136,3570170079,DE 3570170080,3570170111,BE -3570170112,3570171903,DE +3570170112,3570171655,DE +3570171656,3570171663,AU +3570171664,3570171903,DE 3570171904,3570204671,NL 3570204672,3570215679,GR 3570215680,3570215807,DE @@ -123163,9 +136029,9 @@ 3570617344,3570617855,GB 3570617856,3570622463,DE 3570622464,3570630655,GB -3570630656,3570633343,DE -3570633344,3570633471,CH -3570633472,3570663423,DE +3570630656,3570640383,DE +3570640384,3570640415,CH +3570640416,3570663423,DE 3570663424,3570728959,GB 3570728960,3570729983,FI 3570729984,3570731007,SE @@ -123241,9 +136107,7 @@ 3571322016,3571322111,DE 3571322112,3571322559,GB 3571322560,3571322591,DE -3571322592,3571322879,GB -3571322880,3571323135,DE -3571323136,3571323391,GB +3571322592,3571323391,GB 3571323392,3571323455,DE 3571323456,3571323487,GB 3571323488,3571323519,DE @@ -123314,8 +136178,8 @@ 3571332608,3571332735,GB 3571332736,3571332751,DE 3571332752,3571332831,GB -3571332832,3571333631,DE -3571333632,3571333759,GB +3571332832,3571332863,DE +3571332864,3571333759,GB 3571333760,3571333791,DE 3571333792,3571333887,GB 3571333888,3571333951,DE @@ -123367,9 +136231,7 @@ 3571340800,3571341375,DE 3571341376,3571341487,GB 3571341488,3571341503,DE -3571341504,3571341567,GB -3571341568,3571341823,DE -3571341824,3571342015,GB +3571341504,3571342015,GB 3571342016,3571342047,DE 3571342048,3571342079,GB 3571342080,3571342591,DE @@ -123396,7 +136258,9 @@ 3571344128,3571344191,GB 3571344192,3571344255,DE 3571344256,3571345215,GB -3571345216,3571346463,DE +3571345216,3571345407,DE +3571345408,3571346431,GB +3571346432,3571346463,DE 3571346464,3571346495,GB 3571346496,3571346559,DE 3571346560,3571346591,GB @@ -123480,8 +136344,8 @@ 3571357696,3571357791,GB 3571357792,3571357855,DE 3571357856,3571357871,GB -3571357872,3571357951,DE -3571357952,3571358047,GB +3571357872,3571357919,DE +3571357920,3571358047,GB 3571358048,3571358079,DE 3571358080,3571358223,GB 3571358224,3571358255,DE @@ -123494,7 +136358,9 @@ 3571358448,3571358463,GB 3571358464,3571358495,DE 3571358496,3571358503,GB -3571358504,3571358559,DE +3571358504,3571358527,DE +3571358528,3571358531,GB +3571358532,3571358559,DE 3571358560,3571358575,GB 3571358576,3571358591,DE 3571358592,3571358975,GB @@ -123654,15 +136520,21 @@ 3571473152,3571473407,NL 3571473408,3571482367,DE 3571482368,3571482623,CH -3571482624,3571515391,BE +3571482624,3571485191,BE +3571485192,3571485195,NL +3571485196,3571515391,BE 3571515392,3571548159,GB 3571548160,3571580927,ES 3571580928,3571595727,FI 3571595728,3571595743,AX 3571595744,3571646463,FI -3571646464,3571675679,DE +3571646464,3571655560,DE +3571655561,3571655561,RO +3571655562,3571675679,DE 3571675680,3571675687,GB -3571675688,3571711999,DE +3571675688,3571710207,DE +3571710208,3571710463,GB +3571710464,3571711999,DE 3571712000,3571843071,GB 3571843072,3571974143,ES 3571974144,3571978239,RU @@ -123712,24 +136584,14 @@ 3572629504,3572695039,DK 3572695040,3572704951,CH 3572704952,3572704959,DE -3572704960,3572705479,CH -3572705480,3572705487,NL -3572705488,3572715519,CH +3572704960,3572715519,CH 3572715520,3572715775,GB 3572715776,3572760575,CH 3572760576,3572826111,PL 3572826112,3572891647,IT 3572891648,3572957175,FI 3572957176,3572957183,AX -3572957184,3572975359,SE -3572975360,3572975615,A2 -3572975616,3572980991,SE -3572980992,3572981247,A2 -3572981248,3572984319,SE -3572984320,3572984575,A2 -3572984576,3572986367,SE -3572986368,3572986623,A2 -3572986624,3573022719,SE +3572957184,3573022719,SE 3573022720,3573055487,RU 3573055488,3573088255,GB 3573088256,3573088263,CH @@ -123816,9 +136678,7 @@ 3574161108,3574161111,NL 3574161112,3574161335,DE 3574161336,3574161339,AI -3574161340,3574161391,DE -3574161392,3574161395,NO -3574161396,3574169599,DE +3574161340,3574169599,DE 3574169600,3574202367,ES 3574202368,3574267903,NL 3574267904,3574333439,FR @@ -123828,21 +136688,9 @@ 3574348544,3574398975,EU 3574398976,3574464511,PT 3574464512,3574530047,TR -3574530048,3574563679,SE -3574563680,3574563695,FI -3574563696,3574563727,SE -3574563728,3574563775,FI -3574563776,3574563807,SE +3574530048,3574563807,SE 3574563808,3574563823,FI -3574563824,3574563839,SE -3574563840,3574564863,FI -3574564864,3574565887,SE -3574565888,3574565951,FI -3574565952,3574566207,SE -3574566208,3574566271,FI -3574566272,3574566447,SE -3574566448,3574566463,FI -3574566464,3574594559,SE +3574563824,3574594559,SE 3574594560,3574595583,GB 3574595584,3574596351,FR 3574596352,3574596607,MQ @@ -123865,7 +136713,8 @@ 3574693888,3574726655,PL 3574726656,3574792191,GB 3574792192,3574824959,CZ -3574824960,3574825279,GB +3574824960,3574825023,NL +3574825024,3574825279,GB 3574825280,3574825407,NL 3574825408,3574825471,GB 3574825472,3574826111,NL @@ -123906,31 +136755,27 @@ 3574956032,3574972415,IT 3574972416,3574988799,LV 3574988800,3575054335,PT -3575054336,3575086175,DE -3575086176,3575086207,MT -3575086208,3575119871,DE +3575054336,3575119871,DE 3575119872,3575185407,RU 3575185408,3575250943,PL 3575250944,3575316479,IT 3575316480,3575349247,RU 3575349248,3575351679,ES 3575351680,3575351687,NL -3575351688,3575355231,ES +3575351688,3575354599,ES +3575354600,3575354607,GB +3575354608,3575355231,ES 3575355232,3575355247,GB 3575355248,3575360199,ES 3575360200,3575360207,FR 3575360208,3575367111,ES 3575367112,3575367119,DE -3575367120,3575372159,ES -3575372160,3575372167,GB -3575372168,3575372239,ES +3575367120,3575372239,ES 3575372240,3575372247,PT 3575372248,3575382015,ES 3575382016,3575412991,FI 3575412992,3575413119,RU -3575413120,3575414375,FI -3575414376,3575414383,AX -3575414384,3575419903,FI +3575413120,3575419903,FI 3575419904,3575419919,AX 3575419920,3575420127,FI 3575420128,3575420159,AX @@ -124681,9 +137526,7 @@ 3576091408,3576091423,GB 3576091424,3576091455,EU 3576091456,3576091479,GB -3576091480,3576091519,EU -3576091520,3576091535,GB -3576091536,3576091967,EU +3576091480,3576091967,EU 3576091968,3576091983,GB 3576091984,3576091999,EU 3576092000,3576092031,GB @@ -124736,8 +137579,8 @@ 3576105600,3576105727,FR 3576105728,3576105759,GB 3576105760,3576105855,FR -3576105856,3576105991,GB -3576105992,3576106047,FR +3576105856,3576105999,GB +3576106000,3576106047,FR 3576106048,3576106055,GB 3576106056,3576106111,FR 3576106112,3576106239,GB @@ -124773,9 +137616,12 @@ 3576108864,3576108991,GB 3576108992,3576109023,FR 3576109024,3576109055,DE -3576109056,3576109567,FR +3576109056,3576109311,GB +3576109312,3576109567,FR 3576109568,3576109695,GB -3576109696,3576109791,FR +3576109696,3576109727,FR +3576109728,3576109759,GB +3576109760,3576109791,FR 3576109792,3576109799,GB 3576109800,3576109815,FR 3576109816,3576110079,GB @@ -124796,41 +137642,106 @@ 3576111680,3576111711,FR 3576111712,3576111727,GB 3576111728,3576111807,FR -3576111808,3576112383,GB -3576112384,3576112543,FR +3576111808,3576112511,GB +3576112512,3576112543,FR 3576112544,3576113407,GB 3576113408,3576113535,FR -3576113536,3576119295,GB -3576119296,3576119455,CH +3576113536,3576119439,GB +3576119440,3576119455,CH 3576119456,3576119471,BE -3576119472,3576127487,CH -3576127488,3576127615,GB +3576119472,3576119487,CH +3576119488,3576119871,GB +3576119872,3576119911,CH +3576119912,3576120319,GB +3576120320,3576120591,CH +3576120592,3576120831,GB +3576120832,3576121119,CH +3576121120,3576121151,GB +3576121152,3576121199,CH +3576121200,3576121247,GB +3576121248,3576121263,CH +3576121264,3576121271,GB +3576121272,3576121295,CH +3576121296,3576121311,GB +3576121312,3576121471,CH +3576121472,3576121855,GB +3576121856,3576122111,CH +3576122112,3576122143,GB +3576122144,3576122175,CH +3576122176,3576122367,GB +3576122368,3576122495,CH +3576122496,3576122527,GB +3576122528,3576122623,CH +3576122624,3576122695,GB +3576122696,3576122703,CH +3576122704,3576127615,GB 3576127616,3576127647,FR 3576127648,3576127679,GB 3576127680,3576127687,FR 3576127688,3576127695,GB 3576127696,3576127703,FR 3576127704,3576131583,GB -3576131584,3576135679,CH +3576131584,3576131839,CH +3576131840,3576131999,GB +3576132000,3576132015,CH +3576132016,3576132031,GB +3576132032,3576132223,CH +3576132224,3576132271,GB +3576132272,3576132287,CH +3576132288,3576132479,GB +3576132480,3576132543,CH +3576132544,3576132927,GB +3576132928,3576132935,CH +3576132936,3576132943,GB +3576132944,3576132959,CH +3576132960,3576132991,GB +3576132992,3576133119,CH +3576133120,3576133375,GB +3576133376,3576133503,CH +3576133504,3576133631,GB +3576133632,3576133663,CH +3576133664,3576133695,GB +3576133696,3576133775,CH +3576133776,3576133823,GB +3576133824,3576134143,CH +3576134144,3576134207,GB +3576134208,3576134239,CH +3576134240,3576134367,GB +3576134368,3576134783,CH +3576134784,3576135199,GB +3576135200,3576135215,CH +3576135216,3576135231,GB +3576135232,3576135359,CH +3576135360,3576135375,GB +3576135376,3576135383,CH +3576135384,3576135679,GB 3576135680,3576168447,DE 3576168448,3576233983,GB -3576233984,3576236671,FR -3576236672,3576236703,GB -3576236704,3576236879,FR -3576236880,3576236927,GB +3576233984,3576236703,FR +3576236704,3576236719,GB +3576236720,3576236743,FR +3576236744,3576236751,GB +3576236752,3576236775,FR +3576236776,3576236783,GB +3576236784,3576236887,FR +3576236888,3576236927,GB 3576236928,3576237063,FR 3576237064,3576237071,GB 3576237072,3576237087,FR 3576237088,3576237119,GB 3576237120,3576237231,FR -3576237232,3576237279,GB -3576237280,3576237455,FR +3576237232,3576237311,GB +3576237312,3576237455,FR 3576237456,3576237503,GB -3576237504,3576237615,FR -3576237616,3576237631,GB -3576237632,3576237711,FR +3576237504,3576237599,FR +3576237600,3576237631,GB +3576237632,3576237663,FR +3576237664,3576237679,GB +3576237680,3576237711,FR 3576237712,3576237743,GB -3576237744,3576238143,FR +3576237744,3576237919,FR +3576237920,3576237935,GB +3576237936,3576238143,FR 3576238144,3576238159,GB 3576238160,3576238305,FR 3576238306,3576238335,GB @@ -124840,10 +137751,8 @@ 3576238512,3576238527,GB 3576238528,3576238559,FR 3576238560,3576238575,GB -3576238576,3576238607,FR -3576238608,3576238623,GB -3576238624,3576238639,FR -3576238640,3576238655,GB +3576238576,3576238647,FR +3576238648,3576238655,GB 3576238656,3576238863,FR 3576238864,3576238879,GB 3576238880,3576238895,FR @@ -124895,14 +137804,12 @@ 3576242320,3576242327,GB 3576242328,3576242335,FR 3576242336,3576242343,GB -3576242344,3576243967,FR -3576243968,3576243999,GB -3576244000,3576244031,FR -3576244032,3576244047,GB -3576244048,3576244127,FR +3576242344,3576244103,FR +3576244104,3576244111,GB +3576244112,3576244127,FR 3576244128,3576244143,GB -3576244144,3576246399,FR -3576246400,3576246463,GB +3576244144,3576246407,FR +3576246408,3576246463,GB 3576246464,3576246656,FR 3576246657,3576246727,GB 3576246728,3576246743,FR @@ -124912,8 +137819,8 @@ 3576249368,3576249463,FR 3576249464,3576249471,GB 3576249472,3576249527,FR -3576249528,3576249535,GB -3576249536,3576249743,FR +3576249528,3576249567,GB +3576249568,3576249743,FR 3576249744,3576249791,GB 3576249792,3576249807,FR 3576249808,3576249823,GB @@ -124931,15 +137838,13 @@ 3576251616,3576251647,GB 3576251648,3576252415,FR 3576252416,3576252671,GB -3576252672,3576254551,FR -3576254552,3576254559,GB +3576252672,3576254543,FR +3576254544,3576254559,GB 3576254560,3576254607,FR 3576254608,3576254615,GB 3576254616,3576254623,FR 3576254624,3576254647,GB -3576254648,3576254655,FR -3576254656,3576254687,GB -3576254688,3576254847,FR +3576254648,3576254847,FR 3576254848,3576254855,GB 3576254856,3576254863,FR 3576254864,3576254879,GB @@ -124948,18 +137853,24 @@ 3576254904,3576255151,FR 3576255152,3576255199,GB 3576255200,3576255215,FR -3576255216,3576255263,GB -3576255264,3576255375,FR +3576255216,3576255231,GB +3576255232,3576255375,FR 3576255376,3576255383,GB 3576255384,3576255407,FR 3576255408,3576255423,GB 3576255424,3576255431,FR 3576255432,3576255439,GB -3576255440,3576255519,FR +3576255440,3576255447,FR +3576255448,3576255455,GB +3576255456,3576255471,FR +3576255472,3576255479,GB +3576255480,3576255519,FR 3576255520,3576255527,GB 3576255528,3576255543,FR 3576255544,3576255551,GB -3576255552,3576255631,FR +3576255552,3576255575,FR +3576255576,3576255583,GB +3576255584,3576255631,FR 3576255632,3576255647,GB 3576255648,3576255671,FR 3576255672,3576255679,GB @@ -124993,11 +137904,7 @@ 3576256896,3576256959,GB 3576256960,3576256991,FR 3576256992,3576257007,GB -3576257008,3576257079,FR -3576257080,3576257087,GB -3576257088,3576257103,FR -3576257104,3576257111,GB -3576257112,3576257135,FR +3576257008,3576257135,FR 3576257136,3576257151,GB 3576257152,3576257159,FR 3576257160,3576257167,GB @@ -125010,9 +137917,7 @@ 3576257376,3576257455,FR 3576257456,3576257471,GB 3576257472,3576257487,FR -3576257488,3576257495,GB -3576257496,3576257503,FR -3576257504,3576257535,GB +3576257488,3576257535,GB 3576257536,3576257551,FR 3576257552,3576257583,GB 3576257584,3576257631,FR @@ -125025,13 +137930,9 @@ 3576257856,3576257871,GB 3576257872,3576257887,FR 3576257888,3576257903,GB -3576257904,3576257983,FR -3576257984,3576257999,GB -3576258000,3576258055,FR -3576258056,3576258063,GB -3576258064,3576258079,FR -3576258080,3576258095,GB -3576258096,3576258167,FR +3576257904,3576257975,FR +3576257976,3576258015,GB +3576258016,3576258167,FR 3576258168,3576258175,GB 3576258176,3576258351,FR 3576258352,3576258399,GB @@ -125049,16 +137950,16 @@ 3576258672,3576258687,GB 3576258688,3576258703,FR 3576258704,3576258783,GB -3576258784,3576258815,FR -3576258816,3576258847,GB +3576258784,3576258823,FR +3576258824,3576258847,GB 3576258848,3576258863,FR 3576258864,3576258895,GB 3576258896,3576258943,FR 3576258944,3576259007,GB 3576259008,3576259023,FR 3576259024,3576259039,GB -3576259040,3576259071,FR -3576259072,3576259087,GB +3576259040,3576259079,FR +3576259080,3576259087,GB 3576259088,3576259103,FR 3576259104,3576259199,GB 3576259200,3576259231,FR @@ -125093,7 +137994,9 @@ 3576260272,3576260287,GB 3576260288,3576260303,FR 3576260304,3576260335,GB -3576260336,3576260463,FR +3576260336,3576260415,FR +3576260416,3576260447,GB +3576260448,3576260463,FR 3576260464,3576260543,GB 3576260544,3576260559,FR 3576260560,3576260607,GB @@ -125117,17 +138020,13 @@ 3576261080,3576261095,GB 3576261096,3576261103,FR 3576261104,3576261111,GB -3576261112,3576261375,FR -3576261376,3576261631,GB -3576261632,3576261927,FR -3576261928,3576261935,GB -3576261936,3576263439,FR -3576263440,3576263487,GB -3576263488,3576263519,FR +3576261112,3576261391,FR +3576261392,3576261631,GB +3576261632,3576263463,FR +3576263464,3576263471,GB +3576263472,3576263519,FR 3576263520,3576263527,GB -3576263528,3576263535,FR -3576263536,3576263551,GB -3576263552,3576263567,FR +3576263528,3576263567,FR 3576263568,3576263575,GB 3576263576,3576263583,FR 3576263584,3576263599,GB @@ -125138,34 +138037,32 @@ 3576263744,3576263751,FR 3576263752,3576263759,GB 3576263760,3576263791,FR -3576263792,3576263887,GB -3576263888,3576263911,FR +3576263792,3576263903,GB +3576263904,3576263911,FR 3576263912,3576263919,GB 3576263920,3576264295,FR 3576264296,3576264319,GB 3576264320,3576264383,FR 3576264384,3576264399,GB 3576264400,3576264447,FR -3576264448,3576264511,GB -3576264512,3576264543,FR +3576264448,3576264527,GB +3576264528,3576264543,FR 3576264544,3576264559,GB 3576264560,3576264575,FR 3576264576,3576264623,GB 3576264624,3576264639,FR 3576264640,3576264687,GB -3576264688,3576265287,FR -3576265288,3576265295,GB -3576265296,3576265303,FR +3576264688,3576265303,FR 3576265304,3576265311,GB -3576265312,3576265327,FR -3576265328,3576265335,GB -3576265336,3576265343,FR -3576265344,3576265367,GB +3576265312,3576265319,FR +3576265320,3576265367,GB 3576265368,3576265375,FR 3576265376,3576265383,GB 3576265384,3576265399,FR 3576265400,3576265431,GB -3576265432,3576265463,FR +3576265432,3576265439,FR +3576265440,3576265455,GB +3576265456,3576265463,FR 3576265464,3576265471,GB 3576265472,3576265759,FR 3576265760,3576265775,GB @@ -125177,10 +138074,12 @@ 3576265848,3576265863,GB 3576265864,3576265879,FR 3576265880,3576265903,GB -3576265904,3576266663,FR -3576266664,3576266671,GB -3576266672,3576266687,FR -3576266688,3576266751,GB +3576265904,3576265919,FR +3576265920,3576265935,GB +3576265936,3576266255,FR +3576266256,3576266495,GB +3576266496,3576266663,FR +3576266664,3576266751,GB 3576266752,3576299519,FR 3576299520,3576365055,AE 3576365056,3576430591,TR @@ -125217,14 +138116,12 @@ 3576889344,3576954879,NL 3576954880,3576987647,NO 3576987648,3577001983,GB -3577001984,3577003583,NL -3577003584,3577003711,GB -3577003712,3577003727,NL -3577003728,3577003735,GB -3577003736,3577003767,NL +3577001984,3577003647,NL +3577003648,3577003711,GB +3577003712,3577003767,NL 3577003768,3577003771,GB -3577003772,3577003775,NL -3577003776,3577020415,GB +3577003772,3577004031,NL +3577004032,3577020415,GB 3577020416,3577085951,NL 3577085952,3577151487,DE 3577151488,3577167871,FR @@ -125247,9 +138144,13 @@ 3577546240,3577546367,US 3577546368,3577547455,DE 3577547456,3577547519,FR -3577547520,3577551407,DE +3577547520,3577550983,DE +3577550984,3577550991,CH +3577550992,3577551407,DE 3577551408,3577551411,US -3577551412,3577557215,DE +3577551412,3577553599,DE +3577553600,3577553607,DK +3577553608,3577557215,DE 3577557216,3577557231,US 3577557232,3577559775,DE 3577559776,3577559783,FR @@ -125257,17 +138158,19 @@ 3577562392,3577562399,GB 3577562400,3577567711,DE 3577567712,3577567719,IT -3577567720,3577577231,DE +3577567720,3577571391,DE +3577571392,3577571399,DK +3577571400,3577572391,DE +3577572392,3577572399,GB +3577572400,3577577231,DE 3577577232,3577577247,US -3577577248,3577580887,DE -3577580888,3577580895,DK -3577580896,3577592431,DE +3577577248,3577592431,DE 3577592432,3577592447,FR 3577592448,3577592743,DE 3577592744,3577592751,IE -3577592752,3577606599,DE -3577606600,3577606607,GB -3577606608,3577608743,DE +3577592752,3577607559,DE +3577607560,3577607567,NL +3577607568,3577608743,DE 3577608744,3577608751,ES 3577608752,3577610367,DE 3577610368,3577610495,GB @@ -125325,11 +138228,8 @@ 3577625208,3577625215,GB 3577625216,3577625231,EU 3577625232,3577625599,GB -3577625600,3577625823,EU -3577625824,3577625839,GB -3577625840,3577625855,DE -3577625856,3577626367,GB -3577626368,3577626623,EU +3577625600,3577625791,EU +3577625792,3577626623,GB 3577626624,3577627135,FR 3577627136,3577627391,EU 3577627392,3577627647,GB @@ -125370,19 +138270,15 @@ 3577640720,3577640735,EU 3577640736,3577641151,FR 3577641152,3577641159,EU -3577641160,3577641175,FR -3577641176,3577641183,EU -3577641184,3577641199,FR -3577641200,3577641215,EU -3577641216,3577641391,FR +3577641160,3577641391,FR 3577641392,3577641399,EU -3577641400,3577641423,FR -3577641424,3577641983,EU -3577641984,3577642023,GB -3577642024,3577642031,EU -3577642032,3577642111,GB -3577642112,3577642175,EU -3577642176,3577642239,GB +3577641400,3577641439,FR +3577641440,3577641983,EU +3577641984,3577642007,GB +3577642008,3577642015,EU +3577642016,3577642055,GB +3577642056,3577642063,EU +3577642064,3577642239,GB 3577642240,3577642495,EU 3577642496,3577642623,FR 3577642624,3577642751,EU @@ -125445,7 +138341,8 @@ 3577659392,3577659679,GR 3577659680,3577659711,EU 3577659712,3577659743,GR -3577659744,3577660159,EU +3577659744,3577659903,EU +3577659904,3577660159,GB 3577660160,3577660607,BE 3577660608,3577660671,EU 3577660672,3577661439,BE @@ -125491,9 +138388,7 @@ 3578208128,3578208191,PK 3578208192,3578234759,DE 3578234760,3578234767,US -3578234768,3578236791,DE -3578236792,3578236799,PL -3578236800,3578265599,DE +3578234768,3578265599,DE 3578265600,3578331135,GB 3578331136,3578339327,PL 3578339328,3578347519,ES @@ -125545,9 +138440,7 @@ 3579193728,3579193815,NL 3579193816,3579193823,ES 3579193824,3579193855,NL -3579193856,3579194039,GB -3579194040,3579194047,SE -3579194048,3579194103,GB +3579193856,3579194103,GB 3579194104,3579194111,US 3579194112,3579197055,GB 3579197056,3579197183,US @@ -125788,14 +138681,14 @@ 3580199424,3580199935,SE 3580199936,3580200447,EE 3580200448,3580200959,SE -3580200960,3580201471,LT -3580201472,3580203519,SE +3580200960,3580201983,LT +3580201984,3580203519,SE 3580203520,3580204543,RU -3580204544,3580205055,SE +3580204544,3580205055,NL 3580205056,3580207103,HR 3580207104,3580208127,SE -3580208128,3580208639,EE -3580208640,3580213247,SE +3580208128,3580209151,EE +3580209152,3580213247,SE 3580213248,3580214271,CH 3580214272,3580214783,LV 3580214784,3580223487,SE @@ -125816,9 +138709,16 @@ 3580252672,3580254207,EE 3580254208,3580260351,DE 3580260352,3580265727,AT -3580265728,3580338175,SE -3580338176,3580339199,HR -3580339200,3580362751,SE +3580265728,3580268543,SE +3580268544,3580272639,LV +3580272640,3580280831,SE +3580280832,3580329983,RU +3580329984,3580338175,SE +3580338176,3580339711,HR +3580339712,3580340223,SE +3580340224,3580344319,LT +3580344320,3580354559,SE +3580354560,3580362751,LT 3580362752,3580473375,GB 3580473376,3580473391,IE 3580473392,3580473503,GB @@ -125885,7 +138785,7 @@ 3580686336,3580688383,BG 3580688384,3580698623,RU 3580698624,3580702719,PL -3580706816,3580710911,RU +3580702720,3580710911,RU 3580710912,3580715007,UA 3580715008,3580719103,RU 3580719104,3580723199,NL @@ -125957,7 +138857,15 @@ 3582050304,3582058495,NL 3582058496,3582066687,AT 3582066688,3582074879,UA -3582074880,3582078631,GB +3582074880,3582076079,GB +3582076080,3582076095,AE +3582076096,3582076863,GB +3582076864,3582076895,DE +3582076896,3582076927,GB +3582076928,3582077111,ES +3582077112,3582077439,GB +3582077440,3582077471,DE +3582077472,3582078631,GB 3582078632,3582078639,DE 3582078640,3582081023,GB 3582081024,3582081535,ES @@ -125967,7 +138875,9 @@ 3582091264,3582099455,QA 3582099456,3582107647,GB 3582107648,3582115839,NL -3582115840,3582116863,SE +3582115840,3582116095,SE +3582116096,3582116351,EE +3582116352,3582116863,SE 3582116864,3582117887,EE 3582117888,3582119423,LT 3582119424,3582120959,SE @@ -125982,25 +138892,13 @@ 3582156800,3582164991,GB 3582164992,3582173183,SE 3582173184,3582181375,GB -3582181376,3582190847,DE -3582190848,3582190879,CH -3582190880,3582190927,DE +3582181376,3582190927,DE 3582190928,3582190931,FR -3582190932,3582191023,DE -3582191024,3582191031,BE -3582191032,3582192127,DE +3582190932,3582192127,DE 3582192128,3582192143,NL -3582192144,3582192287,DE -3582192288,3582192303,CH -3582192304,3582194775,DE +3582192144,3582194775,DE 3582194776,3582194783,CY -3582194784,3582194863,DE -3582194864,3582194879,CH -3582194880,3582195135,DE -3582195136,3582195143,CH -3582195144,3582196183,DE -3582196184,3582196191,BE -3582196192,3582197127,DE +3582194784,3582197127,DE 3582197128,3582197135,BZ 3582197136,3582197759,DE 3582197760,3582205951,DK @@ -126014,7 +138912,11 @@ 3582223088,3582223095,NL 3582223096,3582223967,SE 3582223968,3582223975,NO -3582223976,3582226599,SE +3582223976,3582224375,SE +3582224376,3582224379,FI +3582224380,3582225719,SE +3582225720,3582225727,FI +3582225728,3582226599,SE 3582226600,3582226607,FI 3582226608,3582230527,SE 3582230528,3582238719,BE @@ -126026,20 +138928,119 @@ 3582287872,3582296063,DE 3582296064,3582304255,GB 3582304256,3582312447,UA -3582312448,3582312703,GB -3582312704,3582312959,JE -3582312960,3582314495,GB -3582314496,3582314751,JE -3582314752,3582315775,GB +3582312448,3582313249,JE +3582313250,3582313250,GB +3582313251,3582313256,JE +3582313257,3582313260,GB +3582313261,3582313271,JE +3582313272,3582313342,GB +3582313343,3582313343,JE +3582313344,3582313470,GB +3582313471,3582313471,JE +3582313472,3582313559,GB +3582313560,3582313567,JE +3582313568,3582313599,GB +3582313600,3582313695,JE +3582313696,3582313726,GB +3582313727,3582313727,JE +3582313728,3582313743,GB +3582313744,3582313759,JE +3582313760,3582313775,GB +3582313776,3582313791,JE +3582313792,3582313799,GB +3582313800,3582313807,JE +3582313808,3582313871,GB +3582313872,3582313967,JE +3582313968,3582313982,GB +3582313983,3582313991,JE +3582313992,3582314007,GB +3582314008,3582314015,JE +3582314016,3582314079,GB +3582314080,3582314095,JE +3582314096,3582314119,GB +3582314120,3582314127,JE +3582314128,3582314167,GB +3582314168,3582314175,JE +3582314176,3582314187,GB +3582314188,3582314195,JE +3582314196,3582314199,GB +3582314200,3582314207,JE +3582314208,3582314235,GB +3582314236,3582314239,JE +3582314240,3582314263,GB +3582314264,3582314271,JE +3582314272,3582314303,GB +3582314304,3582314311,JE +3582314312,3582314343,GB +3582314344,3582314383,JE +3582314384,3582314407,GB +3582314408,3582314415,JE +3582314416,3582314443,GB +3582314444,3582314447,JE +3582314448,3582314451,GB +3582314452,3582314455,JE +3582314456,3582314491,GB +3582314492,3582314783,JE +3582314784,3582314879,GB +3582314880,3582314911,JE +3582314912,3582314943,GB +3582314944,3582314991,JE +3582314992,3582314999,GB +3582315000,3582315023,JE +3582315024,3582315063,GB +3582315064,3582315079,JE +3582315080,3582315095,GB +3582315096,3582315135,JE +3582315136,3582315191,GB +3582315192,3582315271,JE +3582315272,3582315279,GB +3582315280,3582315287,JE +3582315288,3582315302,GB +3582315303,3582315303,JE +3582315304,3582315327,GB +3582315328,3582315335,JE +3582315336,3582315343,GB +3582315344,3582315351,JE +3582315352,3582315383,GB +3582315384,3582315391,JE +3582315392,3582315463,GB +3582315464,3582315519,JE +3582315520,3582315775,GB 3582315776,3582316543,JE -3582316544,3582317055,GB +3582316544,3582316863,GB +3582316864,3582316871,JE +3582316872,3582317055,GB 3582317056,3582317311,JE -3582317312,3582317567,GB +3582317312,3582317479,GB +3582317480,3582317487,JE +3582317488,3582317567,GB 3582317568,3582318079,JE -3582318080,3582318591,GB +3582318080,3582318399,GB +3582318400,3582318407,JE +3582318408,3582318511,GB +3582318512,3582318519,JE +3582318520,3582318591,GB 3582318592,3582318847,JE -3582318848,3582320383,GB -3582320384,3582320639,JE +3582318848,3582318935,GB +3582318936,3582318943,JE +3582318944,3582318999,GB +3582319000,3582319007,JE +3582319008,3582319103,GB +3582319104,3582319111,JE +3582319112,3582319359,GB +3582319360,3582319487,JE +3582319488,3582319870,GB +3582319871,3582319871,JE +3582319872,3582319879,GB +3582319880,3582319887,JE +3582319888,3582319895,GB +3582319896,3582319903,JE +3582319904,3582319927,GB +3582319928,3582319935,JE +3582319936,3582320207,GB +3582320208,3582320367,JE +3582320368,3582320375,GB +3582320376,3582320639,JE 3582320640,3582328831,CH 3582328832,3582337023,HU 3582337024,3582341119,ES @@ -126068,33 +139069,37 @@ 3582509056,3582517247,SA 3582517248,3582525439,PL 3582525440,3582525695,IM -3582525696,3582525727,GB -3582525728,3582525735,IM -3582525736,3582525743,GB +3582525696,3582525743,GB 3582525744,3582525747,IM 3582525748,3582525879,GB 3582525880,3582525895,IM -3582525896,3582525923,GB -3582525924,3582525927,IM -3582525928,3582525959,GB -3582525960,3582525975,IM -3582525976,3582526055,GB -3582526056,3582526063,IM +3582525896,3582526059,GB +3582526060,3582526063,IM 3582526064,3582526135,GB 3582526136,3582526143,IM -3582526144,3582526463,GB +3582526144,3582526151,GB +3582526152,3582526159,IM +3582526160,3582526463,GB 3582526464,3582526503,IM -3582526504,3582526815,GB +3582526504,3582526623,GB +3582526624,3582526631,IM +3582526632,3582526671,GB +3582526672,3582526679,IM +3582526680,3582526719,GB +3582526720,3582526727,IM +3582526728,3582526815,GB 3582526816,3582526819,IM 3582526820,3582526911,GB 3582526912,3582526927,IM -3582526928,3582527231,GB +3582526928,3582526935,GB +3582526936,3582526943,IM +3582526944,3582527231,GB 3582527232,3582527271,IM -3582527272,3582527311,GB -3582527312,3582527335,IM -3582527336,3582527455,GB -3582527456,3582527463,IM -3582527464,3582527479,GB +3582527272,3582527303,GB +3582527304,3582527311,IM +3582527312,3582527327,GB +3582527328,3582527335,IM +3582527336,3582527479,GB 3582527480,3582527743,IM 3582527744,3582529023,GB 3582529024,3582530303,IM @@ -126105,25 +139110,23 @@ 3582530960,3582530979,GB 3582530980,3582530983,IM 3582530984,3582530991,GB -3582530992,3582531007,IM -3582531008,3582531031,GB +3582530992,3582530999,IM +3582531000,3582531031,GB 3582531032,3582531039,IM -3582531040,3582531071,GB -3582531072,3582531423,IM -3582531424,3582531431,GB -3582531432,3582531439,IM +3582531040,3582531135,GB +3582531136,3582531439,IM 3582531440,3582531471,GB 3582531472,3582531487,IM -3582531488,3582531511,GB -3582531512,3582531535,IM +3582531488,3582531503,GB +3582531504,3582531535,IM 3582531536,3582531551,GB 3582531552,3582531559,IM 3582531560,3582531583,GB 3582531584,3582531631,IM -3582531632,3582531647,GB -3582531648,3582531663,IM -3582531664,3582531687,GB -3582531688,3582531695,IM +3582531632,3582531651,GB +3582531652,3582531663,IM +3582531664,3582531671,GB +3582531672,3582531695,IM 3582531696,3582531767,GB 3582531768,3582531775,IM 3582531776,3582531783,GB @@ -126153,9 +139156,7 @@ 3582566752,3582566767,BE 3582566768,3582566783,EU 3582566784,3582566847,BE -3582566848,3582566863,EU -3582566864,3582566879,BE -3582566880,3582566911,EU +3582566848,3582566911,EU 3582566912,3582567019,BE 3582567020,3582567023,EU 3582567024,3582567039,BE @@ -126199,8 +139200,7 @@ 3582569472,3582569535,FR 3582569536,3582569983,EU 3582569984,3582570239,FR -3582570240,3582570367,DE -3582570368,3582570399,EU +3582570240,3582570399,GB 3582570400,3582570431,FR 3582570432,3582570463,EU 3582570464,3582570471,FR @@ -126217,8 +139217,8 @@ 3582570976,3582570983,EU 3582570984,3582571031,FR 3582571032,3582571135,EU -3582571136,3582571199,FR -3582571200,3582571303,EU +3582571136,3582571263,FR +3582571264,3582571303,EU 3582571304,3582571307,CH 3582571308,3582571375,EU 3582571376,3582571391,FR @@ -126230,9 +139230,7 @@ 3582571648,3582571687,IE 3582571688,3582571691,EU 3582571692,3582571719,IE -3582571720,3582571735,EU -3582571736,3582571743,IE -3582571744,3582571751,EU +3582571720,3582571751,EU 3582571752,3582571839,IE 3582571840,3582571999,EU 3582572000,3582572015,IE @@ -126290,9 +139288,11 @@ 3582590976,3582599167,FR 3582599168,3582607359,DE 3582607360,3582615551,RU -3582615552,3582623743,CY +3582615552,3582623743,GB 3582623744,3582631935,FI -3582631936,3582640127,NO +3582631936,3582635007,NO +3582635008,3582635263,SE +3582635264,3582640127,NO 3582640128,3582648319,RU 3582648320,3582656511,PT 3582656512,3582664047,ES @@ -126366,11 +139366,11 @@ 3583031848,3583031895,GR 3583031896,3583031903,SG 3583031904,3583031919,LB -3583031920,3583032095,IT -3583032096,3583032127,GR +3583031920,3583032111,IT +3583032112,3583032127,GR 3583032128,3583032159,IT -3583032160,3583032191,FR -3583032192,3583032319,IT +3583032160,3583032255,FR +3583032256,3583032319,IT 3583032320,3583032575,FR 3583032576,3583032831,IT 3583032832,3583033087,SG @@ -126398,7 +139398,8 @@ 3583157488,3583157503,IE 3583157504,3583158511,GB 3583158512,3583158527,IE -3583158528,3583159039,DE +3583158528,3583158783,GB +3583158784,3583159039,DE 3583159040,3583159359,GB 3583159360,3583159375,DE 3583159376,3583160319,GB @@ -126422,7 +139423,11 @@ 3583246336,3583254527,RU 3583254528,3583262719,GB 3583262720,3583270911,TR -3583270912,3583287295,DE +3583270912,3583283743,DE +3583283744,3583283747,A2 +3583283748,3583283867,DE +3583283868,3583283871,A2 +3583283872,3583287295,DE 3583287296,3583295487,RU 3583295488,3583303679,ES 3583303680,3583311871,NL @@ -126444,7 +139449,9 @@ 3583342592,3583344639,ME 3583344640,3583345663,BG 3583345664,3583346175,MK -3583346176,3583350271,BG +3583346176,3583346687,BG +3583346688,3583346943,MK +3583346944,3583350271,BG 3583350272,3583351039,MK 3583351040,3583352319,BG 3583352320,3583352831,MK @@ -126490,15 +139497,11 @@ 3583680512,3583688703,RU 3583688704,3583696895,UA 3583696896,3583705087,NL -3583705088,3583705175,UA -3583705176,3583705223,NA -3583705224,3583705239,UA +3583705088,3583705239,UA 3583705240,3583705247,NA 3583705248,3583705255,UA 3583705256,3583705263,NA -3583705264,3583705287,UA -3583705288,3583705295,NA -3583705296,3583705303,UA +3583705264,3583705303,UA 3583705304,3583705319,NA 3583705320,3583705335,UA 3583705336,3583705343,NA @@ -126516,12 +139519,7 @@ 3583705848,3583705855,NA 3583705856,3583705859,UA 3583705860,3583705863,NA -3583705864,3583705887,UA -3583705888,3583705895,RU -3583705896,3583705903,UA -3583705904,3583705911,NA -3583705912,3583705919,RU -3583705920,3583706023,UA +3583705864,3583706023,UA 3583706024,3583706031,NA 3583706032,3583706055,UA 3583706056,3583706063,RU @@ -126563,8 +139561,8 @@ 3583706864,3583706879,NA 3583706880,3583706883,UA 3583706884,3583706887,NA -3583706888,3583706895,UA -3583706896,3583706911,NA +3583706888,3583706903,UA +3583706904,3583706911,NA 3583706912,3583706927,UA 3583706928,3583706943,NA 3583706944,3583706959,UA @@ -126613,31 +139611,17 @@ 3583709448,3583709455,NA 3583709456,3583709503,UA 3583709504,3583709511,RU -3583709512,3583709535,UA -3583709536,3583709543,NA -3583709544,3583709551,UA -3583709552,3583709559,NA -3583709560,3583709575,UA -3583709576,3583709583,NA -3583709584,3583709599,UA -3583709600,3583709607,NA +3583709512,3583709607,UA 3583709608,3583709615,RU -3583709616,3583709631,UA -3583709632,3583709639,NA -3583709640,3583709663,UA -3583709664,3583709671,NA +3583709616,3583709663,UA +3583709664,3583709671,DE 3583709672,3583709699,UA 3583709700,3583709703,NA -3583709704,3583709727,UA -3583709728,3583709751,NA -3583709752,3583709759,UA +3583709704,3583709735,UA +3583709736,3583709743,NA +3583709744,3583709759,UA 3583709760,3583709767,NA -3583709768,3583709791,UA -3583709792,3583709799,NA -3583709800,3583709807,DE -3583709808,3583709823,UA -3583709824,3583709831,NA -3583709832,3583709839,UA +3583709768,3583709839,UA 3583709840,3583709863,NA 3583709864,3583709871,RU 3583709872,3583709879,NA @@ -126655,66 +139639,35 @@ 3583710120,3583710135,NA 3583710136,3583710211,UA 3583710212,3583710215,NA -3583710216,3583710239,UA -3583710240,3583710247,NA -3583710248,3583710319,UA -3583710320,3583710335,NA -3583710336,3583710367,UA +3583710216,3583710319,UA +3583710320,3583710327,NA +3583710328,3583710367,UA 3583710368,3583710375,AQ 3583710376,3583710383,NA 3583710384,3583710407,UA 3583710408,3583710415,NA 3583710416,3583710455,UA 3583710456,3583710459,NA -3583710460,3583710519,UA -3583710520,3583710527,NA -3583710528,3583710631,UA +3583710460,3583710631,UA 3583710632,3583710639,NA -3583710640,3583710671,UA -3583710672,3583710679,NA -3583710680,3583710703,UA +3583710640,3583710703,UA 3583710704,3583710711,NA 3583710712,3583710743,UA 3583710744,3583710751,BE -3583710752,3583710823,UA -3583710824,3583710831,NA -3583710832,3583710855,UA -3583710856,3583710863,NA -3583710864,3583710871,UA -3583710872,3583710879,NA -3583710880,3583710887,UA -3583710888,3583710903,NA -3583710904,3583710935,UA -3583710936,3583710943,NA -3583710944,3583710991,UA -3583710992,3583710999,NA -3583711000,3583711007,UA +3583710752,3583710887,UA +3583710888,3583710895,NA +3583710896,3583711007,UA 3583711008,3583711015,RU 3583711016,3583711023,NA -3583711024,3583711079,UA -3583711080,3583711087,GB -3583711088,3583711095,NA -3583711096,3583711247,UA +3583711024,3583711247,UA 3583711248,3583711255,NA -3583711256,3583711311,UA -3583711312,3583711319,NA -3583711320,3583711327,UA +3583711256,3583711327,UA 3583711328,3583711335,NA 3583711336,3583711359,UA 3583711360,3583711367,NA 3583711368,3583711375,UA 3583711376,3583711383,NA -3583711384,3583711495,UA -3583711496,3583711503,NA -3583711504,3583711551,UA -3583711552,3583711559,NA -3583711560,3583711567,UA -3583711568,3583711591,NA -3583711592,3583711607,UA -3583711608,3583711615,NA -3583711616,3583711631,UA -3583711632,3583711639,RU -3583711640,3583711695,UA +3583711384,3583711695,UA 3583711696,3583711703,NA 3583711704,3583711711,UA 3583711712,3583711719,NA @@ -126725,51 +139678,24 @@ 3583711824,3583711871,UA 3583711872,3583711879,NA 3583711880,3583712015,UA -3583712016,3583712031,NA -3583712032,3583712119,UA +3583712016,3583712023,NA +3583712024,3583712119,UA 3583712120,3583712127,NA 3583712128,3583712159,UA -3583712160,3583712199,NA -3583712200,3583712287,UA -3583712288,3583712295,NA -3583712296,3583712311,UA +3583712160,3583712191,NA +3583712192,3583712311,UA 3583712312,3583712319,NA -3583712320,3583712447,UA -3583712448,3583712479,NA -3583712480,3583712623,UA -3583712624,3583712631,NA -3583712632,3583712655,UA -3583712656,3583712663,NA -3583712664,3583712711,UA -3583712712,3583712719,NA -3583712720,3583712727,UA -3583712728,3583712735,RU -3583712736,3583712743,NA -3583712744,3583712759,UA -3583712760,3583712763,NA -3583712764,3583712775,UA +3583712320,3583712455,UA +3583712456,3583712463,NA +3583712464,3583712471,UA +3583712472,3583712479,NA +3583712480,3583712775,UA 3583712776,3583712783,NA -3583712784,3583712831,UA -3583712832,3583712847,AQ -3583712848,3583712927,UA +3583712784,3583712927,UA 3583712928,3583712943,NA 3583712944,3583713007,UA 3583713008,3583713015,RU -3583713016,3583713031,UA -3583713032,3583713039,NA -3583713040,3583713071,UA -3583713072,3583713079,NA -3583713080,3583713103,UA -3583713104,3583713111,AZ -3583713112,3583713143,UA -3583713144,3583713151,NA -3583713152,3583713167,UA -3583713168,3583713175,EG -3583713176,3583713183,UA -3583713184,3583713191,NA -3583713192,3583713271,UA -3583713272,3583713275,RU -3583713276,3583713279,UA +3583713016,3583713279,UA 3583713280,3583721471,CZ 3583721472,3583729663,DE 3583729664,3583737855,TR @@ -126780,34 +139706,48 @@ 3583741696,3583741951,NL 3583741952,3583742719,EU 3583742720,3583743487,DE -3583743488,3583743519,EU +3583743488,3583743503,FR +3583743504,3583743519,EU 3583743520,3583743551,FR 3583743552,3583743615,EU 3583743616,3583743743,GB -3583743744,3583743975,EU +3583743744,3583743775,EU +3583743776,3583743807,NL +3583743808,3583743975,EU 3583743976,3583743983,GB -3583743984,3583744067,EU +3583743984,3583744063,EU +3583744064,3583744067,FR 3583744068,3583744071,GB -3583744072,3583744127,EU -3583744128,3583744255,GB -3583744256,3583744287,EU +3583744072,3583744095,EU +3583744096,3583744099,DE +3583744100,3583744103,FR +3583744104,3583744111,GB +3583744112,3583744287,EU 3583744288,3583744303,GB -3583744304,3583744319,EU +3583744304,3583744311,EU +3583744312,3583744319,DE 3583744320,3583744447,GB 3583744448,3583744511,EU 3583744512,3583744767,GB -3583744768,3583744831,EU -3583744832,3583744847,GB -3583744848,3583744959,EU +3583744768,3583744831,DE +3583744832,3583744839,GB +3583744840,3583744927,EU +3583744928,3583744959,DE 3583744960,3583744991,GB -3583744992,3583745279,EU +3583744992,3583744999,EU +3583745000,3583745003,NL +3583745004,3583745215,EU +3583745216,3583745279,SE 3583745280,3583745535,GB 3583745536,3583745663,SE -3583745664,3583745799,EU +3583745664,3583745719,EU +3583745720,3583745723,FR +3583745724,3583745799,EU 3583745800,3583745807,NL 3583745808,3583745823,GB 3583745824,3583746047,EU 3583746048,3583754239,PL +3583754240,3583762431,RU 3583762432,3583770623,CZ 3583770624,3583772351,NL 3583772352,3583772367,IT @@ -126827,8 +139767,8 @@ 3583852544,3583853055,SG 3583853056,3583854591,FI 3583854592,3583854726,GB -3583854727,3583854735,FI -3583854736,3583854871,GB +3583854727,3583854727,FI +3583854728,3583854871,GB 3583854872,3583854879,FI 3583854880,3583855103,GB 3583855104,3583855167,US @@ -126841,8 +139781,8 @@ 3583855248,3583855311,FI 3583855312,3583855327,US 3583855328,3583856383,FI -3583856384,3583856447,SG -3583856448,3583856615,FI +3583856384,3583856463,SG +3583856464,3583856615,FI 3583856616,3583856639,SG 3583856640,3583860735,FI 3583860736,3583868927,HU @@ -126898,7 +139838,9 @@ 3584093784,3584093791,NL 3584093792,3584094893,NO 3584094894,3584094895,NL -3584094896,3584095935,NO +3584094896,3584095807,NO +3584095808,3584095839,NL +3584095840,3584095935,NO 3584095936,3584095999,NL 3584096000,3584096255,NO 3584096256,3584098303,NL @@ -126974,9 +139916,7 @@ 3584511024,3584511039,KY 3584511040,3584511055,GB 3584511056,3584511071,NL -3584511072,3584511135,GB -3584511136,3584511143,HK -3584511144,3584511807,GB +3584511072,3584511807,GB 3584511808,3584511871,MT 3584511872,3584513535,GB 3584513536,3584513567,US @@ -126994,8 +139934,8 @@ 3584589824,3584598015,RU 3584598016,3584606207,CZ 3584606208,3584614399,DE -3584614400,3584614463,GB -3584614464,3584614527,IE +3584614400,3584614495,GB +3584614496,3584614527,IE 3584614528,3584614591,GB 3584614592,3584614623,IE 3584614624,3584614655,GB @@ -127003,7 +139943,9 @@ 3584614752,3584614759,GB 3584614760,3584614763,IE 3584614764,3584614767,GB -3584614768,3584622335,IE +3584614768,3584615167,IE +3584615168,3584615295,GB +3584615296,3584622335,IE 3584622336,3584622591,GB 3584622592,3584630783,FI 3584630784,3584638975,BG @@ -127090,10 +140032,17 @@ 3584958464,3584966655,DE 3584966656,3584974847,DK 3584974848,3584983039,FR -3584983040,3584988655,US +3584983040,3584988575,US +3584988576,3584988591,UA +3584988592,3584988623,US +3584988624,3584988639,UA +3584988640,3584988655,US 3584988656,3584988671,UA -3584988672,3584990303,US -3584990304,3584990463,UA +3584988672,3584988927,US +3584988928,3584989183,UA +3584989184,3584990303,US +3584990304,3584990335,UA +3584990336,3584990463,US 3584990464,3584990495,NL 3584990496,3584990511,US 3584990512,3584990527,UA @@ -127107,11 +140056,7 @@ 3585024000,3585032191,CZ 3585032192,3585048575,LV 3585048576,3585050623,IQ -3585050624,3585054719,GB -3585054720,3585055063,NG -3585055064,3585055071,GB -3585055072,3585055087,NG -3585055088,3585056767,GB +3585050624,3585056767,GB 3585056768,3585064959,LB 3585064960,3585071405,GB 3585071406,3585071409,IN @@ -127148,7 +140093,9 @@ 3585318912,3585327103,DZ 3585327104,3585331327,NL 3585331328,3585331343,FI -3585331344,3585335295,NL +3585331344,3585332223,NL +3585332224,3585332351,A1 +3585332352,3585335295,NL 3585335296,3585343487,UA 3585343488,3585351679,EE 3585351680,3585359871,CZ @@ -127220,7 +140167,8 @@ 3585697536,3585697791,A2 3585697792,3585698047,NG 3585698048,3585698303,A2 -3585698304,3585698815,NG +3585698304,3585698559,US +3585698560,3585698815,A2 3585698816,3585699071,GB 3585699072,3585699583,A2 3585699584,3585699711,US @@ -127268,7 +140216,13 @@ 3585720320,3585728511,GB 3585728512,3585736703,SE 3585736704,3585744895,HR -3585744896,3585750335,FR +3585744896,3585749295,FR +3585749296,3585749311,ES +3585749312,3585750015,FR +3585750016,3585750031,GB +3585750032,3585750271,FR +3585750272,3585750287,ES +3585750288,3585750335,FR 3585750336,3585750351,GB 3585750352,3585750367,DE 3585750368,3585750383,ES @@ -127330,11 +140284,14 @@ 3585842176,3585842199,IQ 3585842200,3585842207,NL 3585842208,3585842687,IQ -3585842688,3585843199,NG +3585842688,3585842943,NG +3585842944,3585843199,NL 3585843200,3585851391,NO 3585851392,3585859583,SE 3585859584,3585860607,RU -3585860608,3585865727,DE +3585860608,3585863679,DE +3585863680,3585864703,RU +3585864704,3585865727,DE 3585865728,3585867775,RU 3585867776,3585875967,NO 3585875968,3585884159,CH @@ -127365,7 +140322,7 @@ 3585940480,3585940735,BE 3585940736,3585941503,NL 3585941504,3585943135,PL -3585943136,3585943167,US +3585943136,3585943167,HU 3585943168,3585949695,PL 3585949696,3585957887,KW 3585957888,3585966079,SE @@ -127408,8 +140365,8 @@ 3586228224,3586237695,BE 3586237696,3586237951,NL 3586237952,3586244607,BE -3586244608,3586244927,NL -3586244928,3586246655,GB +3586244608,3586245119,NL +3586245120,3586246655,GB 3586246656,3586248703,BE 3586248704,3586250449,NL 3586250450,3586250457,BE @@ -127419,8 +140376,8 @@ 3586258944,3586259455,BE 3586259456,3586269247,NL 3586269248,3586269263,ES -3586269264,3586269343,NL -3586269344,3586269415,ES +3586269264,3586269375,NL +3586269376,3586269415,ES 3586269416,3586269423,NL 3586269424,3586269439,ES 3586269440,3586269471,NL @@ -127445,8 +140402,9 @@ 3586272384,3586272799,ES 3586272800,3586272807,IT 3586272808,3586272815,ES -3586272816,3586272831,IT -3586272832,3586272895,NL +3586272816,3586272823,IT +3586272824,3586272863,ES +3586272864,3586272895,NL 3586272896,3586272959,IT 3586272960,3586272991,ES 3586272992,3586273007,IT @@ -127470,27 +140428,36 @@ 3586441216,3586457599,DE 3586457600,3586473983,NL 3586473984,3586473987,SK -3586473988,3586476287,HU +3586473988,3586476031,HU +3586476032,3586476063,TR +3586476064,3586476287,HU 3586476288,3586476295,SK 3586476296,3586476311,HU 3586476312,3586476319,AT 3586476320,3586476351,HU 3586476352,3586476383,AT 3586476384,3586476407,UA -3586476408,3586476431,HU +3586476408,3586476415,BG +3586476416,3586476431,HU 3586476432,3586476439,SK 3586476440,3586478079,HU 3586478080,3586478591,SK -3586478592,3586478847,TR +3586478592,3586478847,HU 3586478848,3586479103,SK -3586479104,3586490367,HU +3586479104,3586479359,TR +3586479360,3586479615,SK +3586479616,3586490367,HU 3586490368,3586506751,LT 3586506752,3586523135,NL -3586523136,3586543519,DE +3586523136,3586542559,DE +3586542560,3586542567,AE +3586542568,3586543519,DE 3586543520,3586543527,GB 3586543528,3586543759,DE 3586543760,3586543791,GB -3586543792,3586545679,DE +3586543792,3586544703,DE +3586544704,3586544719,AE +3586544720,3586545679,DE 3586545680,3586545703,GB 3586545704,3586546375,DE 3586546376,3586546383,GB @@ -127552,9 +140519,7 @@ 3586680768,3586680831,ES 3586680832,3586681087,FR 3586681088,3586681343,IT -3586681344,3586682111,FR -3586682112,3586682175,US -3586682176,3586682239,FR +3586681344,3586682239,FR 3586682240,3586682367,US 3586682368,3586682399,AT 3586682400,3586682879,FR @@ -127563,75 +140528,42 @@ 3586703360,3586719743,CH 3586719744,3586752511,ES 3586752512,3586785279,NL -3586785280,3586793471,RU 3586793472,3586801663,CH 3586801664,3586818047,HR 3586818048,3586834431,IE 3586834432,3586850495,DE 3586850496,3586850511,US -3586850512,3586850543,DE -3586850544,3586850559,GR -3586850560,3586850815,DE +3586850512,3586850815,DE 3586850816,3586867199,NO 3586867200,3586883583,FR 3586883584,3586899967,IT 3586899968,3586900287,DE 3586900288,3586900351,NL -3586900352,3586902271,DE -3586902272,3586902335,CH -3586902336,3586902411,DE -3586902412,3586902415,CH -3586902416,3586903263,DE -3586903264,3586903295,CH -3586903296,3586904223,DE -3586904224,3586904255,CH -3586904256,3586904319,DE -3586904320,3586904415,CH -3586904416,3586904831,DE +3586900352,3586904831,DE 3586904832,3586904839,VG -3586904840,3586905039,DE -3586905040,3586905055,CH -3586905056,3586905071,DE -3586905072,3586905079,CH -3586905080,3586905087,DE -3586905088,3586905119,CH -3586905120,3586905167,DE -3586905168,3586905199,CH +3586904840,3586905199,DE 3586905200,3586905215,GB -3586905216,3586905247,DE -3586905248,3586905279,CH -3586905280,3586905287,DE +3586905216,3586905287,DE 3586905288,3586905295,CY -3586905296,3586906391,DE -3586906392,3586906399,CH -3586906400,3586906423,DE -3586906424,3586906427,CH -3586906428,3586906719,DE -3586906720,3586906735,CH -3586906736,3586907903,DE -3586907904,3586908031,CH -3586908032,3586909695,DE +3586905296,3586909695,DE 3586909696,3586909823,CH 3586909824,3586910559,DE 3586910560,3586910567,NL 3586910568,3586910575,CY 3586910576,3586910587,NL -3586910588,3586910655,DE -3586910656,3586910703,NL -3586910704,3586910711,DE +3586910588,3586910591,DE +3586910592,3586910623,NL +3586910624,3586910655,DE +3586910656,3586910687,NL +3586910688,3586910711,DE 3586910712,3586910719,NL 3586910720,3586910991,DE -3586910992,3586911007,BE -3586911008,3586911039,DE -3586911040,3586911103,GB +3586910992,3586911039,BE +3586911040,3586911103,DE 3586911104,3586911167,NL 3586911168,3586911191,DE 3586911192,3586911195,BE -3586911196,3586912511,DE -3586912512,3586912575,FR -3586912576,3586912647,DE -3586912648,3586912651,FR -3586912652,3586916351,DE +3586911196,3586916351,DE 3586916352,3586924031,IT 3586924032,3586924047,US 3586924048,3586924543,IT @@ -127702,13 +140634,7 @@ 3587055616,3587063807,UZ 3587063808,3587071583,NL 3587071584,3587071599,BE -3587071600,3587071615,NL -3587071616,3587071631,DE -3587071632,3587072095,NL -3587072096,3587072127,DE -3587072128,3587074415,NL -3587074416,3587074431,BE -3587074432,3587080191,NL +3587071600,3587080191,NL 3587080192,3587082367,GB 3587082368,3587082431,US 3587082432,3587088383,GB @@ -127727,19 +140653,24 @@ 3587179456,3587179463,AT 3587179464,3587179471,CH 3587179472,3587186687,AT -3587186688,3587194495,DE +3587186688,3587186815,DE +3587186816,3587187199,A2 +3587187200,3587187455,DE +3587187456,3587188479,A2 +3587188480,3587188735,DE +3587188736,3587194495,A2 3587194496,3587194511,RU -3587194512,3587194879,DE +3587194512,3587194879,A2 3587194880,3587211263,GB 3587211264,3587211531,AT 3587211532,3587211535,DE -3587211536,3587211663,AT -3587211664,3587211671,IT -3587211672,3587213911,AT +3587211536,3587213911,AT 3587213912,3587213919,UY 3587213920,3587219455,AT 3587219456,3587227647,RU -3587227648,3587227759,NL +3587227648,3587227663,NL +3587227664,3587227679,GB +3587227680,3587227759,NL 3587227760,3587227775,GB 3587227776,3587227903,NL 3587227904,3587227967,GB @@ -127757,7 +140688,9 @@ 3587228641,3587228647,GB 3587228648,3587228927,NL 3587228928,3587229455,GB -3587229456,3587229823,NL +3587229456,3587229647,NL +3587229648,3587229663,GB +3587229664,3587229823,NL 3587229824,3587229839,GB 3587229840,3587229855,ES 3587229856,3587229871,NL @@ -127787,9 +140720,7 @@ 3587230944,3587230967,DE 3587230968,3587230975,GB 3587230976,3587230991,NL -3587230992,3587231295,GB -3587231296,3587231327,NL -3587231328,3587231359,GB +3587230992,3587231359,GB 3587231360,3587232535,NL 3587232536,3587232711,GB 3587232712,3587232719,NL @@ -127815,9 +140746,7 @@ 3587233952,3587233967,NL 3587233968,3587233983,GB 3587233984,3587233999,NL -3587234000,3587234015,GB -3587234016,3587234031,NL -3587234032,3587234047,GB +3587234000,3587234047,GB 3587234048,3587234079,NL 3587234080,3587234095,GB 3587234096,3587234143,NL @@ -127834,7 +140763,9 @@ 3587237376,3587237391,GB 3587237392,3587237399,NL 3587237400,3587237407,GB -3587237408,3587237471,NL +3587237408,3587237447,NL +3587237448,3587237455,GB +3587237456,3587237471,NL 3587237472,3587237487,GB 3587237488,3587237495,NL 3587237496,3587237519,GB @@ -127844,15 +140775,19 @@ 3587238472,3587238479,GB 3587238480,3587238527,NL 3587238528,3587238543,GB -3587238544,3587238575,NL -3587238576,3587238583,GB +3587238544,3587238567,NL +3587238568,3587238583,GB 3587238584,3587238607,NL 3587238608,3587238911,GB 3587238912,3587239303,NL 3587239304,3587239311,GB 3587239312,3587239903,NL -3587239904,3587239935,GB -3587239936,3587240087,NL +3587239904,3587239919,GB +3587239920,3587239975,NL +3587239976,3587239983,GB +3587239984,3587240063,NL +3587240064,3587240071,GB +3587240072,3587240087,NL 3587240088,3587240095,GB 3587240096,3587240103,NL 3587240104,3587240107,GB @@ -127866,7 +140801,9 @@ 3587240512,3587240575,GB 3587240576,3587240615,NL 3587240616,3587240623,GB -3587240624,3587241143,NL +3587240624,3587241071,NL +3587241072,3587241087,GB +3587241088,3587241143,NL 3587241144,3587241151,GB 3587241152,3587241223,NL 3587241224,3587241247,GB @@ -127874,13 +140811,21 @@ 3587241264,3587241271,GB 3587241272,3587241343,NL 3587241344,3587241471,GB -3587241472,3587242063,NL -3587242064,3587242071,BE -3587242072,3587243935,NL +3587241472,3587242095,NL +3587242096,3587242111,GB +3587242112,3587242271,NL +3587242272,3587242287,GB +3587242288,3587242463,NL +3587242464,3587242471,GB +3587242472,3587243407,NL +3587243408,3587243415,GB +3587243416,3587243935,NL 3587243936,3587243943,GB 3587243944,3587243967,NL 3587243968,3587243975,GB -3587243976,3587244031,NL +3587243976,3587243983,NL +3587243984,3587243991,GB +3587243992,3587244031,NL 3587244032,3587260415,IT 3587260416,3587284991,DE 3587284992,3587285135,A2 @@ -128032,9 +140977,7 @@ 3587620864,3587637247,SE 3587637248,3587653631,FR 3587653632,3587670015,SK -3587670016,3587679135,IT -3587679136,3587679143,ES -3587679144,3587683327,IT +3587670016,3587683327,IT 3587683328,3587683359,FR 3587683360,3587686031,IT 3587686032,3587686039,FR @@ -128081,7 +141024,9 @@ 3587981312,3587997695,IS 3587997696,3588014079,DE 3588014080,3588030463,CZ -3588030464,3588046847,RU +3588030464,3588031615,RU +3588031616,3588031623,LV +3588031624,3588046847,RU 3588046848,3588060351,DE 3588060352,3588060359,CH 3588060360,3588063231,DE @@ -128126,11 +141071,13 @@ 3588554688,3588554751,IE 3588554752,3588571135,AT 3588571136,3588587519,GB -3588587520,3588590175,ES +3588587520,3588588567,ES +3588588568,3588588575,IT +3588588576,3588590175,ES 3588590176,3588590207,BE -3588590208,3588594751,ES -3588594752,3588594759,DE -3588594760,3588598607,ES +3588590208,3588590591,ES +3588590592,3588590847,FR +3588590848,3588598607,ES 3588598608,3588598615,IT 3588598616,3588603903,ES 3588603904,3588620287,SI @@ -128153,7 +141100,9 @@ 3588782272,3588782279,A2 3588782280,3588784127,GB 3588784128,3588800511,CH -3588800512,3588816895,RU +3588800512,3588802687,RU +3588802688,3588802815,CH +3588802816,3588816895,RU 3588816896,3588833279,IT 3588833280,3588848767,RO 3588848768,3588848775,FR @@ -128171,9 +141120,7 @@ 3588997120,3589013503,AT 3589013504,3589021695,ES 3589021696,3589029887,SA -3589029888,3589030183,NL -3589030184,3589030191,FR -3589030192,3589030303,NL +3589029888,3589030303,NL 3589030304,3589030335,FR 3589030336,3589034143,NL 3589034144,3589034159,ES @@ -128234,9 +141181,7 @@ 3589269472,3589275647,DE 3589275648,3589292031,RS 3589292032,3589308415,AT -3589308416,3589317887,DE -3589317888,3589317951,GB -3589317952,3589324799,DE +3589308416,3589324799,DE 3589324800,3589341183,BG 3589341184,3589373951,PL 3589373952,3589375495,DE @@ -128252,7 +141197,9 @@ 3589426176,3589426303,FR 3589426304,3589427199,GB 3589427200,3589427247,FR -3589427248,3589429247,GB +3589427248,3589428223,GB +3589428224,3589428255,CH +3589428256,3589429247,GB 3589429248,3589429503,FR 3589429504,3589430271,GB 3589430272,3589430543,FR @@ -128285,7 +141232,8 @@ 3589436672,3589436799,PL 3589436800,3589436927,GB 3589436928,3589437183,PL -3589437184,3589439487,GB +3589437184,3589437311,FR +3589437312,3589439487,GB 3589439488,3589444631,SE 3589444632,3589444639,NO 3589444640,3589455871,SE @@ -128318,9 +141266,7 @@ 3589582656,3589583359,NL 3589583360,3589583647,GB 3589583648,3589583663,NL -3589583664,3589583743,GB -3589583744,3589583871,DE -3589583872,3589584255,GB +3589583664,3589584255,GB 3589584256,3589584271,NL 3589584272,3589584639,GB 3589584640,3589585279,NL @@ -128340,7 +141286,9 @@ 3589685248,3589718015,GB 3589718016,3589719343,BE 3589719344,3589719347,LU -3589719348,3589719847,BE +3589719348,3589719383,BE +3589719384,3589719391,GB +3589719392,3589719847,BE 3589719848,3589719855,AT 3589719856,3589719967,BE 3589719968,3589719975,GB @@ -128508,9 +141456,13 @@ 3589730088,3589730095,GB 3589730096,3589730111,BE 3589730112,3589730119,GB -3589730120,3589733375,BE +3589730120,3589732671,BE +3589732672,3589732687,DE +3589732688,3589733375,BE 3589733376,3589733439,LU -3589733440,3589734399,BE +3589733440,3589734167,BE +3589734168,3589734175,DE +3589734176,3589734399,BE 3589734400,3589742591,EG 3589742592,3589742687,NL 3589742688,3589742695,AT @@ -128524,7 +141476,9 @@ 3589745120,3589745151,BE 3589745152,3589746087,NL 3589746088,3589746095,DE -3589746096,3589747071,NL +3589746096,3589746175,NL +3589746176,3589746687,US +3589746688,3589747071,NL 3589747072,3589747103,ES 3589747104,3589767167,NL 3589767168,3589816319,RU @@ -128542,11 +141496,11 @@ 3589828608,3589828639,SE 3589828640,3589828671,NL 3589828672,3589828735,EU -3589828736,3589828863,NL -3589828864,3589829119,EU +3589828736,3589828991,NL +3589828992,3589829119,ES 3589829120,3589829183,GB -3589829184,3589829375,EU -3589829376,3589830655,GB +3589829184,3589829631,EU +3589829632,3589830655,GB 3589830656,3589831167,DE 3589831168,3589831679,US 3589831680,3589832703,FR @@ -128572,11 +141526,12 @@ 3589971232,3589971247,CA 3589971248,3589980159,ES 3589980160,3589996543,CZ -3589996544,3589996623,NL +3589996544,3589996575,GB +3589996576,3589996623,NL 3589996624,3589996639,GB 3589996640,3589996655,NL -3589996656,3589996703,GB -3589996704,3589996799,NL +3589996656,3589996735,GB +3589996736,3589996799,NL 3589996800,3589996863,GB 3589996864,3589996879,NL 3589996880,3589996911,GB @@ -128593,7 +141548,9 @@ 3589997560,3589997567,NL 3589997568,3590012927,GB 3590012928,3590029311,BE -3590029312,3590045695,FR +3590029312,3590033759,FR +3590033760,3590033775,AU +3590033776,3590045695,FR 3590045696,3590062079,RU 3590062080,3590078463,DE 3590078464,3590094847,RU @@ -128611,9 +141568,13 @@ 3590155808,3590155815,SI 3590155816,3590155823,HR 3590155824,3590155871,SI -3590155872,3590156431,HR +3590155872,3590156359,HR +3590156360,3590156367,SI +3590156368,3590156431,HR 3590156432,3590156447,SI -3590156448,3590156671,HR +3590156448,3590156543,HR +3590156544,3590156575,SI +3590156576,3590156671,HR 3590156672,3590156687,SI 3590156688,3590156719,HR 3590156720,3590156727,SI @@ -128630,8 +141591,8 @@ 3590157568,3590157631,SI 3590157632,3590157679,RS 3590157680,3590157687,SI -3590157688,3590157695,RS -3590157696,3590157743,SI +3590157688,3590157703,RS +3590157704,3590157743,SI 3590157744,3590157751,RS 3590157752,3590157759,SI 3590157760,3590157767,RS @@ -128641,14 +141602,16 @@ 3590157824,3590157839,RS 3590157840,3590157855,SI 3590157856,3590157951,RS -3590157952,3590158015,SI -3590158016,3590158343,RS -3590158344,3590158407,SI -3590158408,3590158415,RS -3590158416,3590158431,SI +3590157952,3590158079,SI +3590158080,3590158343,RS +3590158344,3590158359,SI +3590158360,3590158367,RS +3590158368,3590158431,SI 3590158432,3590158439,RS 3590158440,3590158455,SI -3590158456,3590158479,RS +3590158456,3590158463,RS +3590158464,3590158471,SI +3590158472,3590158479,RS 3590158480,3590158527,SI 3590158528,3590158535,RS 3590158536,3590158591,SI @@ -128666,16 +141629,13 @@ 3590242304,3590244351,US 3590244352,3590244863,DE 3590244864,3590245119,GR -3590245120,3590245167,BE -3590245168,3590245279,FR +3590245120,3590245183,BE +3590245184,3590245279,FR 3590245280,3590245311,BE 3590245312,3590245439,US 3590245440,3590245503,FR 3590245504,3590245567,GB -3590245568,3590245631,US -3590245632,3590245887,FR -3590245888,3590245983,US -3590245984,3590246175,FR +3590245568,3590246175,FR 3590246176,3590246207,AU 3590246208,3590246271,FR 3590246272,3590246287,DE @@ -128705,8 +141665,7 @@ 3590250752,3590251007,GR 3590251008,3590251263,IT 3590251264,3590251519,DE -3590251520,3590251551,ES -3590251552,3590251583,FR +3590251520,3590251583,FR 3590251584,3590251647,US 3590251648,3590251775,NL 3590251776,3590251839,FR @@ -128718,15 +141677,15 @@ 3590253312,3590253375,FR 3590253376,3590253407,US 3590253408,3590254079,FR -3590254080,3590254087,DE -3590254088,3590254095,FR -3590254096,3590254111,DE +3590254080,3590254111,DE 3590254112,3590254127,FR 3590254128,3590254135,RU 3590254136,3590254143,FR 3590254144,3590254271,US 3590254272,3590254463,FR -3590254464,3590254879,ES +3590254464,3590254591,ES +3590254592,3590254847,FR +3590254848,3590254879,ES 3590254880,3590254911,FR 3590254912,3590254975,ES 3590254976,3590255039,DE @@ -128766,28 +141725,42 @@ 3590308056,3590308063,A2 3590308064,3590308071,ZW 3590308072,3590308079,RW -3590308080,3590308087,TZ -3590308088,3590308095,AO -3590308096,3590308119,A2 +3590308080,3590308095,A2 +3590308096,3590308103,IQ +3590308104,3590308119,A2 3590308120,3590308127,IQ -3590308128,3590308175,A2 +3590308128,3590308135,A2 +3590308136,3590308143,IQ +3590308144,3590308175,A2 3590308176,3590308191,IQ 3590308192,3590308199,A2 -3590308200,3590308215,IQ -3590308216,3590308247,A2 +3590308200,3590308238,IQ +3590308239,3590308247,A2 3590308248,3590308287,IQ 3590308288,3590308303,A2 3590308304,3590308311,SO -3590308312,3590308319,IQ -3590308320,3590308327,A2 -3590308328,3590308343,IQ +3590308312,3590308343,IQ 3590308344,3590308351,A2 3590308352,3590308367,IQ -3590308368,3590308383,A2 -3590308384,3590308391,IQ -3590308392,3590308447,A2 -3590308448,3590308455,IQ -3590308456,3590308607,A2 +3590308368,3590308375,A2 +3590308376,3590308391,IQ +3590308392,3590308399,A2 +3590308400,3590308407,IQ +3590308408,3590308415,A2 +3590308416,3590308431,IQ +3590308432,3590308439,A2 +3590308440,3590308455,IQ +3590308456,3590308479,A2 +3590308480,3590308487,IQ +3590308488,3590308519,A2 +3590308520,3590308527,IQ +3590308528,3590308535,A2 +3590308536,3590308543,IQ +3590308544,3590308551,A2 +3590308552,3590308559,IQ +3590308560,3590308567,A2 +3590308568,3590308583,IQ +3590308584,3590308607,A2 3590308608,3590308735,NG 3590308736,3590308767,A2 3590308768,3590308775,RW @@ -128802,8 +141775,7 @@ 3590308952,3590308959,GH 3590308960,3590308999,A2 3590309000,3590309007,UG -3590309008,3590309023,TZ -3590309024,3590309039,A2 +3590309008,3590309039,A2 3590309040,3590309055,ZW 3590309056,3590309063,CD 3590309064,3590309071,A2 @@ -128830,41 +141802,34 @@ 3590309712,3590309719,IQ 3590309720,3590309727,A2 3590309728,3590309759,IQ -3590309760,3590309767,A2 -3590309768,3590309775,IQ -3590309776,3590309783,A2 -3590309784,3590309791,IQ +3590309760,3590309775,A2 +3590309776,3590309791,IQ 3590309792,3590309799,A2 3590309800,3590309807,IQ 3590309808,3590309815,A2 -3590309816,3590309823,IQ -3590309824,3590309831,A2 -3590309832,3590309839,IQ +3590309816,3590309839,IQ 3590309840,3590309863,A2 3590309864,3590309871,IQ 3590309872,3590309879,A2 3590309880,3590309887,IQ 3590309888,3590310143,A2 -3590310144,3590310167,IQ -3590310168,3590310175,A2 +3590310144,3590310175,IQ 3590310176,3590310183,LR -3590310184,3590310207,IQ -3590310208,3590310215,SD +3590310184,3590310215,IQ 3590310216,3590310223,A2 3590310224,3590310255,IQ -3590310256,3590310263,A2 -3590310264,3590310271,SD -3590310272,3590310279,A2 -3590310280,3590310303,IQ +3590310256,3590310271,A2 +3590310272,3590310279,IQ +3590310280,3590310287,A2 +3590310288,3590310303,IQ 3590310304,3590310311,A2 3590310312,3590310319,IQ 3590310320,3590310327,A2 3590310328,3590310335,NG -3590310336,3590310343,IQ -3590310344,3590310351,A2 +3590310336,3590310351,A2 3590310352,3590310367,IQ -3590310368,3590310383,A2 -3590310384,3590310391,IQ +3590310368,3590310375,A2 +3590310376,3590310391,IQ 3590310392,3590310655,A2 3590310656,3590310911,GB 3590310912,3590310919,IQ @@ -128879,13 +141844,11 @@ 3590311040,3590311055,A2 3590311056,3590311063,IQ 3590311064,3590311079,A2 -3590311080,3590311087,IQ -3590311088,3590311119,A2 +3590311080,3590311111,IQ +3590311112,3590311119,A2 3590311120,3590311135,IQ 3590311136,3590311143,A2 -3590311144,3590311151,IQ -3590311152,3590311159,A2 -3590311160,3590311167,IQ +3590311144,3590311167,IQ 3590311168,3590311175,A2 3590311176,3590311183,CD 3590311184,3590311199,A2 @@ -128901,14 +141864,14 @@ 3590311280,3590311287,NG 3590311288,3590311295,A2 3590311296,3590311303,LR -3590311304,3590311311,NG +3590311304,3590311311,A2 3590311312,3590311319,CD 3590311320,3590311327,CI 3590311328,3590311335,CD 3590311336,3590311343,SD 3590311344,3590311351,A2 3590311352,3590311359,CD -3590311360,3590311367,CI +3590311360,3590311367,A2 3590311368,3590311383,CD 3590311384,3590311391,NG 3590311392,3590311423,A2 @@ -129012,9 +141975,7 @@ 3590320352,3590320359,IQ 3590320360,3590320375,A2 3590320376,3590320383,IQ -3590320384,3590321151,A2 -3590321152,3590321663,IQ -3590321664,3590321679,A2 +3590320384,3590321679,A2 3590321680,3590321687,CM 3590321688,3590321695,A2 3590321696,3590321711,ZW @@ -129028,9 +141989,7 @@ 3590322064,3590322071,IQ 3590322072,3590322111,A2 3590322112,3590322119,BJ -3590322120,3590322127,A2 -3590322128,3590322135,GH -3590322136,3590322151,A2 +3590322120,3590322151,A2 3590322152,3590322159,LY 3590322160,3590322175,A2 3590322176,3590322239,IQ @@ -129049,24 +142008,20 @@ 3590323712,3590323903,A2 3590323904,3590323911,CD 3590323912,3590323967,A2 -3590323968,3590323975,SD +3590323968,3590323975,UG 3590323976,3590323983,A2 -3590323984,3590323999,NG +3590323984,3590323991,NG +3590323992,3590323999,A2 3590324000,3590324007,LR 3590324008,3590324015,A2 3590324016,3590324023,NG 3590324024,3590324031,ZW -3590324032,3590324103,A2 -3590324104,3590324111,KE -3590324112,3590324119,A2 -3590324120,3590324127,NG -3590324128,3590324159,A2 -3590324160,3590324167,NG +3590324032,3590324167,A2 3590324168,3590324175,BW 3590324176,3590324183,LR 3590324184,3590324191,SD 3590324192,3590324199,VG -3590324200,3590324207,UG +3590324200,3590324207,A2 3590324208,3590324215,CD 3590324216,3590324223,NG 3590324224,3623890943,US @@ -129088,7 +142043,9 @@ 3624272384,3624272415,US 3624272416,3624272639,CA 3624272640,3624272895,DZ -3624272896,3624279071,CA +3624272896,3624275967,CA +3624275968,3624276223,US +3624276224,3624279071,CA 3624279072,3624279087,BD 3624279088,3624281087,CA 3624281088,3624281343,HT @@ -129098,11 +142055,15 @@ 3624288256,3624290303,IN 3624290304,3624292351,CA 3624292352,3624292607,MF -3624292608,3624294143,CA +3624292608,3624292863,US +3624292864,3624294143,CA 3624294144,3624294399,US -3624294400,3624295935,CA +3624294400,3624294911,CA +3624294912,3624295167,US +3624295168,3624295935,CA 3624295936,3624296191,LY -3624296192,3624297471,CA +3624296192,3624297215,CA +3624297216,3624297471,US 3624297472,3624298495,CO 3624298496,3624299519,PH 3624299520,3624300031,CA @@ -129136,9 +142097,7 @@ 3624376032,3624376247,US 3624376248,3624376263,ES 3624376264,3624376279,CY -3624376280,3624376287,GB -3624376288,3624376295,US -3624376296,3624376303,GB +3624376280,3624376303,GB 3624376304,3624376335,US 3624376336,3624376343,AU 3624376344,3624376351,US @@ -129149,11 +142108,25 @@ 3624376656,3624376679,GB 3624376680,3624377319,US 3624377320,3624377323,GB -3624377324,3624377879,US +3624377324,3624377599,US +3624377600,3624377855,A2 +3624377856,3624377863,US +3624377864,3624377871,GB +3624377872,3624377879,US 3624377880,3624377887,GB -3624377888,3624378039,US +3624377888,3624377903,US +3624377904,3624377911,GB +3624377912,3624377919,US +3624377920,3624377935,ES +3624377936,3624377999,US +3624378000,3624378007,ES +3624378008,3624378039,US 3624378040,3624378047,GB -3624378048,3624379391,US +3624378048,3624378055,US +3624378056,3624378063,GB +3624378064,3624378087,US +3624378088,3624378095,GB +3624378096,3624379391,US 3624379392,3624379399,SG 3624379400,3624380415,US 3624380416,3624380447,CA @@ -129166,9 +142139,7 @@ 3624380544,3624380551,CA 3624380552,3624380687,US 3624380688,3624380695,AU -3624380696,3624380735,US -3624380736,3624380743,VI -3624380744,3624380751,US +3624380696,3624380751,US 3624380752,3624380759,CA 3624380760,3624380767,CY 3624380768,3624380799,US @@ -129181,9 +142152,7 @@ 3624380936,3624380943,SA 3624380944,3624380967,GB 3624380968,3624380983,TW -3624380984,3624381471,US -3624381472,3624381487,AU -3624381488,3624381567,US +3624380984,3624381567,US 3624381568,3624381583,MY 3624381584,3624381631,US 3624381632,3624381647,GB @@ -129259,7 +142228,9 @@ 3624548040,3624548063,US 3624548064,3624548087,A2 3624548088,3624548095,US -3624548096,3624548679,A2 +3624548096,3624548351,A2 +3624548352,3624548359,US +3624548360,3624548679,A2 3624548680,3624548687,US 3624548688,3624548703,A2 3624548704,3624548711,US @@ -129272,21 +142243,23 @@ 3624549048,3624549063,A2 3624549064,3624549079,US 3624549080,3624549087,A2 -3624549088,3624549095,US -3624549096,3624549111,A2 -3624549112,3624549375,US -3624549376,3624550143,A2 +3624549088,3624549103,US +3624549104,3624549111,A2 +3624549112,3624549383,US +3624549384,3624550143,A2 3624550144,3624587263,US 3624587264,3624591359,JM 3624595456,3624730623,US 3624730624,3624796159,CA -3624812544,3624817679,US +3624796160,3624817679,US 3624817680,3624817687,CA 3624817688,3624820735,US 3624820736,3624820799,CY 3624820800,3624821695,US 3624821696,3624821703,GB -3624821704,3624825097,US +3624821704,3624822783,US +3624822784,3624823039,SG +3624823040,3624825097,US 3624825098,3624825102,BR 3624825103,3624827296,US 3624827297,3624827299,RS @@ -129300,17 +142273,28 @@ 3624895104,3624895119,DE 3624895120,3624895135,US 3624895136,3624895151,IN -3624895152,3624895775,US +3624895152,3624895167,US +3624895168,3624895183,VE +3624895184,3624895775,US 3624895776,3624895807,MY 3624895808,3624895935,US 3624895936,3624895967,IN -3624895968,3624896287,US -3624896288,3624896319,GB -3624896320,3624896415,US +3624895968,3624895999,US +3624896000,3624896255,CA +3624896256,3624896383,US +3624896384,3624896415,IN 3624896416,3624896447,AT -3624896448,3624897791,US +3624896448,3624896767,US +3624896768,3624896831,IN +3624896832,3624897279,US +3624897280,3624897407,CA +3624897408,3624897535,US +3624897536,3624897663,CA +3624897664,3624897791,US 3624897792,3624898047,IN -3624898048,3624898815,US +3624898048,3624898303,US +3624898304,3624898559,CA +3624898560,3624898815,US 3624898816,3624899071,AU 3624899072,3624899327,CA 3624899328,3624899583,US @@ -129322,14 +142306,16 @@ 3624900736,3624900767,CA 3624900768,3624900831,US 3624900832,3624900863,DE -3624900864,3624900951,US +3624900864,3624900903,US +3624900904,3624900911,CA +3624900912,3624900951,US 3624900952,3624900959,FR 3624900960,3624900967,US 3624900968,3624900975,CA 3624900976,3624901103,US -3624901104,3624901111,PK +3624901104,3624901111,IN 3624901112,3624901279,US -3624901280,3624901311,IN +3624901280,3624901311,CA 3624901312,3624901343,BE 3624901344,3624901887,US 3624901888,3624901919,IN @@ -129343,27 +142329,34 @@ 3624902784,3624902911,CA 3624902912,3624902943,US 3624902944,3624902975,CA -3624902976,3624903167,US -3624903168,3624903423,CA -3624903424,3624903551,US -3624903552,3624903583,CA +3624902976,3624903071,US +3624903072,3624903103,HK +3624903104,3624903455,US +3624903456,3624903487,CA +3624903488,3624903519,US +3624903520,3624903583,CA 3624903584,3624903679,US 3624903680,3624903807,CA 3624903808,3624903935,US 3624903936,3624904703,CA 3624904704,3624904767,IN -3624904768,3624905087,US -3624905088,3624905151,CA -3624905152,3624905471,US +3624904768,3624904831,US +3624904832,3624904895,CA +3624904896,3624905023,IN +3624905024,3624905087,US +3624905088,3624905215,CA +3624905216,3624905471,US 3624905472,3624905727,CA -3624905728,3624906465,US -3624906466,3624906495,CA -3624906496,3624906879,US +3624905728,3624906239,US +3624906240,3624906495,CA +3624906496,3624906751,US +3624906752,3624906879,CA 3624906880,3624907007,TW 3624907008,3624907039,FR 3624907040,3624907071,US -3624907072,3624907103,GB -3624907104,3624907455,US +3624907072,3624907103,CA +3624907104,3624907391,US +3624907392,3624907455,IN 3624907456,3624907518,MY 3624907519,3624907519,US 3624907520,3624907551,IN @@ -129378,20 +142371,20 @@ 3624908032,3624908159,CA 3624908160,3624908287,US 3624908288,3624908319,CA -3624908320,3624908351,US -3624908352,3624908383,BR +3624908320,3624908383,US 3624908384,3624908415,IN -3624908416,3624908479,US +3624908416,3624908447,CA +3624908448,3624908479,US 3624908480,3624908511,CA -3624908512,3624908607,US +3624908512,3624908559,US +3624908560,3624908575,MY +3624908576,3624908607,US 3624908608,3624908622,CA 3624908623,3624908639,US 3624908640,3624908687,CA 3624908688,3624908783,US 3624908784,3624908799,CA -3624908800,3624909375,US -3624909376,3624909407,VE -3624909408,3624909471,US +3624908800,3624909471,US 3624909472,3624909503,AU 3624909504,3624909567,US 3624909568,3624909822,MY @@ -129404,8 +142397,9 @@ 3624910176,3624910207,BE 3624910208,3624910271,US 3624910272,3624910303,FR -3624910304,3624910655,US -3624910656,3624910687,TZ +3624910304,3624910591,US +3624910592,3624910623,CA +3624910624,3624910687,US 3624910688,3624910719,CA 3624910720,3624910751,US 3624910752,3624910783,TZ @@ -129414,21 +142408,21 @@ 3624910848,3624910911,US 3624910912,3624910975,IN 3624910976,3624911007,FR -3624911008,3624911039,GB +3624911008,3624911039,CA 3624911040,3624911103,US 3624911104,3624911135,CA 3624911136,3624911167,US 3624911168,3624911199,MY 3624911200,3624911231,BE 3624911232,3624911263,CA -3624911264,3624911359,US -3624911360,3624911615,CA +3624911264,3624911327,US +3624911328,3624911615,CA 3624911616,3624911647,US 3624911648,3624911651,RU 3624911652,3624911999,US 3624912000,3624912127,CA -3624912128,3624913023,US -3624913024,3624913087,IN +3624912128,3624912959,US +3624912960,3624913087,IN 3624913088,3624913247,US 3624913248,3624913279,CA 3624913280,3624913311,US @@ -129445,20 +142439,20 @@ 3624914272,3624914303,CA 3624914304,3624914335,US 3624914336,3624914367,CA -3624914368,3624914687,US +3624914368,3624914399,IN +3624914400,3624914687,US 3624914688,3624914943,BE -3624914944,3624915199,US -3624915200,3624915455,CA -3624915456,3624915903,US +3624914944,3624915071,CA +3624915072,3624915455,US +3624915456,3624915487,CA +3624915488,3624915903,US 3624915904,3624915935,HK -3624915936,3624916159,US -3624916160,3624916191,MY -3624916192,3624916223,US +3624915936,3624916223,US 3624916224,3624916735,CA 3624916736,3624917247,US 3624917248,3624917503,AU 3624917504,3624917919,US -3624917920,3624917951,CH +3624917920,3624917951,CA 3624917952,3624917983,US 3624917984,3624918015,CA 3624918016,3624918527,US @@ -129496,8 +142490,7 @@ 3624922336,3624922367,FR 3624922368,3624922495,IN 3624922496,3624922623,BE -3624922624,3624922655,US -3624922656,3624922687,CA +3624922624,3624922687,CA 3624922688,3624922783,US 3624922784,3624922815,CN 3624922816,3624922847,FR @@ -129508,16 +142501,23 @@ 3624923392,3624923519,CA 3624923520,3624923647,US 3624923648,3624923775,CA -3624923776,3624924095,US +3624923776,3624923903,US +3624923904,3624923935,CA +3624923936,3624923967,US +3624923968,3624923999,IN +3624924000,3624924095,US 3624924096,3624924127,CA 3624924128,3624924287,US -3624924288,3624924671,CA -3624924672,3624924895,US +3624924288,3624924703,CA +3624924704,3624924895,US 3624924896,3624924927,CA 3624924928,3624925054,US 3624925055,3624925695,CA -3624925696,3624926719,US -3624926720,3624926975,CA +3624925696,3624926463,US +3624926464,3624926527,CA +3624926528,3624926591,US +3624926592,3624926655,IN +3624926656,3624926975,CA 3624926976,3624927039,US 3624927040,3624927071,HK 3624927072,3624927167,US @@ -129530,11 +142530,13 @@ 3624990464,3624991223,CA 3624991224,3624991231,US 3624991232,3624992767,CA -3624992768,3625042327,US +3624992768,3625002351,US +3625002352,3625002367,CA +3625002368,3625042327,US 3625042328,3625042335,IT 3625042336,3625058303,US 3625058304,3625091071,CA -3625091072,3625116671,US +3625099264,3625116671,US 3625116672,3625116767,CA 3625116768,3625116927,US 3625116928,3625117183,SE @@ -129570,8 +142572,10 @@ 3625246280,3625246287,MX 3625246288,3625246295,US 3625246296,3625246375,MX -3625246376,3625246391,US -3625246392,3625246719,MX +3625246376,3625246399,US +3625246400,3625246535,MX +3625246536,3625246543,US +3625246544,3625246719,MX 3625246720,3625287679,US 3625287680,3625288887,CA 3625288888,3625288895,US @@ -129675,7 +142679,6 @@ 3625423104,3625426943,CA 3625426944,3625508863,US 3625508864,3625512959,CA -3625512960,3625517055,PR 3625517056,3625528541,US 3625528542,3625528551,AU 3625528552,3625574399,US @@ -129696,7 +142699,9 @@ 3626072960,3626072991,AE 3626072992,3626073439,US 3626073440,3626073455,AE -3626073456,3626108895,US +3626073456,3626091519,US +3626091520,3626092031,AR +3626092032,3626108895,US 3626108896,3626108927,AU 3626108928,3626130415,US 3626130416,3626130431,CA @@ -129720,7 +142725,9 @@ 3626192768,3626192799,CH 3626192800,3626213439,US 3626213440,3626213471,GB -3626213472,3626227167,US +3626213472,3626225407,US +3626225408,3626225663,HK +3626225664,3626227167,US 3626227168,3626227199,AR 3626227200,3626228463,US 3626228464,3626228479,AE @@ -129908,9 +142915,7 @@ 3626382404,3626382411,US 3626382412,3626382415,CN 3626382416,3626382419,GB -3626382420,3626382426,US -3626382427,3626382430,ID -3626382431,3626382434,US +3626382420,3626382434,US 3626382435,3626382438,BR 3626382439,3626382442,ZA 3626382443,3626382450,US @@ -130088,7 +143093,8 @@ 3626385098,3626385101,IN 3626385102,3626385113,US 3626385114,3626385117,JP -3626385118,3626385125,US +3626385118,3626385121,US +3626385122,3626385125,IN 3626385126,3626385129,ID 3626385130,3626385133,GR 3626385134,3626385137,CA @@ -130112,8 +143118,7 @@ 3626385242,3626385245,US 3626385246,3626385249,ID 3626385250,3626385253,CN -3626385254,3626385257,US -3626385258,3626385261,PK +3626385254,3626385261,US 3626385262,3626385265,GR 3626385266,3626385321,US 3626385322,3626385325,FR @@ -130187,13 +143192,17 @@ 3626528680,3626528703,US 3626528704,3626529183,CA 3626529184,3626529191,US -3626529192,3626529735,CA +3626529192,3626529639,CA +3626529640,3626529647,US +3626529648,3626529735,CA 3626529736,3626529751,US 3626529752,3626529807,CA 3626529808,3626529863,US 3626529864,3626529919,CA 3626529920,3626529927,US -3626529928,3626530039,CA +3626529928,3626529951,CA +3626529952,3626529959,US +3626529960,3626530039,CA 3626530040,3626530055,US 3626530056,3626530151,CA 3626530152,3626530159,US @@ -130282,7 +143291,8 @@ 3626896184,3626905599,CA 3626905600,3626926079,US 3626926080,3626934271,CA -3626934272,3627044863,US +3626934272,3626942463,US +3626950656,3627044863,US 3627044864,3627048959,CA 3627048960,3627065343,US 3627065344,3627069439,CA @@ -130327,7 +143337,9 @@ 3627524988,3627532287,US 3627532288,3627544575,CA 3627544576,3627659263,US -3627659264,3627663359,CA +3627659264,3627661951,CA +3627661952,3627662015,US +3627662016,3627663359,CA 3627663360,3627665407,US 3627665408,3627665439,CA 3627665440,3627666255,US @@ -130345,21 +143357,27 @@ 3627745376,3627745439,US 3627745440,3627745471,IN 3627745472,3627745503,CA -3627745504,3627745919,US -3627745920,3627745983,IL -3627745984,3627746399,US +3627745504,3627746399,US 3627746400,3627746431,CA -3627746432,3627746559,US -3627746560,3627746815,IN -3627746816,3627747159,US +3627746432,3627747159,US 3627747160,3627747167,IN -3627747168,3627753471,US +3627747168,3627747583,US +3627747584,3627747615,FR +3627747616,3627753471,US 3627753472,3627753727,AR 3627753728,3627755007,US 3627755008,3627755135,IE 3627755136,3627755263,US 3627755264,3627755391,IE -3627755392,3627802623,US +3627755392,3627758847,US +3627758848,3627758863,GB +3627758864,3627759071,US +3627759072,3627759103,GB +3627759104,3627759359,US +3627759360,3627759375,NL +3627759376,3627759551,US +3627759552,3627759615,NL +3627759616,3627802623,US 3627802624,3627810815,CA 3627810816,3627842047,US 3627842048,3627842303,IS @@ -130550,7 +143568,9 @@ 3628772432,3628772447,GB 3628772448,3628834815,US 3628834816,3628843007,CA -3628843008,3629187071,US +3628843008,3628963007,US +3628963008,3628963039,PA +3628963040,3629187071,US 3629187072,3629195263,CA 3629195264,3629199359,US 3629199360,3629201463,CA @@ -130559,30 +143579,32 @@ 3629201488,3629201515,US 3629201516,3629201539,CA 3629201540,3629201543,US -3629201544,3629201615,CA -3629201616,3629201619,US -3629201620,3629201647,CA -3629201648,3629201667,US -3629201668,3629201679,CA -3629201680,3629201683,US -3629201684,3629201707,CA -3629201708,3629201719,US -3629201720,3629201747,CA +3629201544,3629201551,CA +3629201552,3629201559,US +3629201560,3629201563,CA +3629201564,3629201599,US +3629201600,3629201615,CA +3629201616,3629201623,US +3629201624,3629201627,CA +3629201628,3629201743,US +3629201744,3629201747,CA 3629201748,3629201751,US 3629201752,3629201755,CA -3629201756,3629201763,US -3629201764,3629201791,CA +3629201756,3629201775,US +3629201776,3629201791,CA 3629201792,3629201839,US 3629201840,3629201855,CA 3629201856,3629201887,US 3629201888,3629201903,CA 3629201904,3629201919,US -3629201920,3629201983,CA +3629201920,3629201959,CA +3629201960,3629201967,US +3629201968,3629201983,CA 3629201984,3629201991,US 3629201992,3629201999,CA 3629202000,3629202003,US -3629202004,3629202011,CA -3629202012,3629202015,US +3629202004,3629202007,CA +3629202008,3629202015,US 3629202016,3629202047,CA 3629202048,3629202175,US 3629202176,3629202203,CA @@ -130590,17 +143612,19 @@ 3629202220,3629202239,CA 3629202240,3629202263,US 3629202264,3629202271,CA -3629202272,3629202279,US -3629202280,3629202287,CA -3629202288,3629202311,US +3629202272,3629202311,US 3629202312,3629202367,CA -3629202368,3629202399,US -3629202400,3629202407,CA -3629202408,3629202427,US +3629202368,3629202427,US 3629202428,3629203199,CA 3629203200,3629318143,US 3629318144,3629326335,CA -3629326336,3629539327,US +3629326336,3629327527,US +3629327528,3629327535,HK +3629327536,3629327551,US +3629327552,3629327559,CN +3629327560,3629327567,US +3629327568,3629327575,HK +3629327576,3629539327,US 3629539328,3629547519,CA 3629547520,3629662207,US 3629662208,3629662463,GB @@ -131137,15 +144161,11 @@ 3631016572,3631016581,US 3631016582,3631016613,BD 3631016614,3631016645,UA -3631016646,3631016707,US -3631016708,3631016958,LT -3631016959,3631017175,US +3631016646,3631017175,US 3631017176,3631017191,CN 3631017192,3631017475,US 3631017476,3631017726,LT -3631017727,3631017731,US -3631017732,3631017982,LT -3631017983,3631039439,US +3631017727,3631039439,US 3631039440,3631039455,CA 3631039456,3631039487,US 3631039488,3631039743,CA @@ -131157,8 +144177,38 @@ 3631045632,3631045759,CA 3631045760,3631045983,US 3631045984,3631045991,CA -3631045992,3631112191,US -3631112192,3631116543,BB +3631045992,3631057577,US +3631057578,3631057597,GB +3631057598,3631058405,US +3631058406,3631058415,CA +3631058416,3631058511,US +3631058512,3631058521,CA +3631058522,3631058581,US +3631058582,3631058591,CA +3631058592,3631059229,US +3631059230,3631059239,NO +3631059240,3631112191,US +3631112192,3631112385,BB +3631112386,3631112386,VC +3631112387,3631112387,BB +3631112388,3631112391,VC +3631112392,3631112393,BB +3631112394,3631112398,VC +3631112399,3631112399,BB +3631112400,3631112401,VC +3631112402,3631112404,BB +3631112405,3631112405,VC +3631112406,3631112417,BB +3631112418,3631112418,VC +3631112419,3631112425,BB +3631112426,3631112427,VC +3631112428,3631112429,BB +3631112430,3631112430,VC +3631112431,3631112433,BB +3631112434,3631112434,VC +3631112435,3631112439,BB +3631112440,3631112440,VC +3631112441,3631116543,BB 3631116544,3631117567,GD 3631117568,3631117823,BB 3631117824,3631118079,GD @@ -131173,42 +144223,41 @@ 3631333376,3631333679,CA 3631333680,3631333695,US 3631333696,3631341567,CA -3631341568,3631435007,US +3631341568,3631415295,US +3631415296,3631419391,A2 +3631419392,3631435007,US 3631435008,3631435263,GB 3631435264,3631480831,US -3631480832,3631484927,CA +3631482880,3631484927,CA 3631484928,3631644671,US 3631644672,3631652863,CA 3631652864,3631663151,US 3631663152,3631663159,CA 3631663160,3631665151,US 3631665152,3631669247,CA -3631669248,3631669759,US -3631669760,3631669767,A2 +3631669248,3631669767,A2 3631669768,3631669775,US 3631669776,3631669783,BO -3631669784,3631669791,US +3631669784,3631669791,A2 3631669792,3631669799,BO 3631669800,3631669807,US 3631669808,3631669823,EC 3631669824,3631669839,BO -3631669840,3631669855,A2 -3631669856,3631669871,US -3631669872,3631669887,A2 +3631669840,3631669887,A2 3631669888,3631669919,BO 3631669920,3631669951,EC 3631669952,3631670015,US 3631670016,3631670143,CO 3631670144,3631670207,NI -3631670208,3631670271,A2 -3631670272,3631670527,US +3631670208,3631670527,A2 3631670528,3631670783,NG 3631670784,3631671039,EC 3631671040,3631671295,US 3631671296,3631671551,JM 3631671552,3631672575,PY 3631672576,3631672831,NG -3631672832,3631673119,US +3631672832,3631673087,A2 +3631673088,3631673119,US 3631673120,3631673151,A2 3631673152,3631673183,US 3631673184,3631673199,A2 @@ -131218,7 +144267,43 @@ 3631673264,3631673295,BB 3631673296,3631673311,EC 3631673312,3631677439,A2 -3631677440,3631841279,US +3631677440,3631712287,US +3631712288,3631712295,AR +3631712296,3631712303,US +3631712304,3631712311,CA +3631712312,3631712327,US +3631712328,3631712335,VE +3631712336,3631712407,US +3631712408,3631712415,GB +3631712416,3631712423,US +3631712424,3631712431,PT +3631712432,3631712439,US +3631712440,3631712447,IN +3631712448,3631712463,US +3631712464,3631712471,CA +3631712472,3631712495,US +3631712496,3631712503,UY +3631712504,3631712511,DE +3631712512,3631712527,US +3631712528,3631712535,MX +3631712536,3631712543,JP +3631712544,3631712551,CY +3631712552,3631712559,US +3631712560,3631712567,AR +3631712568,3631712695,US +3631712696,3631712703,NZ +3631712704,3631712751,US +3631712752,3631712759,CA +3631712760,3631712895,US +3631712896,3631712903,MX +3631712904,3631712911,CA +3631712912,3631712927,US +3631712928,3631712935,BR +3631712936,3631712951,GB +3631712952,3631713031,US +3631713032,3631713039,BR +3631713040,3631713047,IN +3631713048,3631841279,US 3631841280,3631874047,CA 3631874048,3631879199,US 3631879200,3631879231,CA @@ -131226,12 +144311,13 @@ 3631881760,3631881791,CA 3631881792,3631939583,US 3631939584,3632005119,CA -3632005120,3632136191,US -3632144384,3632152575,US +3632005120,3632152575,US 3632152576,3632168959,CA 3632168960,3632197631,US 3632197632,3632201727,CA -3632201728,3632244223,US +3632201728,3632232447,US +3632232448,3632232703,A2 +3632232704,3632244223,US 3632244224,3632244479,CA 3632244480,3632270025,US 3632270026,3632270058,CA @@ -131249,7 +144335,7 @@ 3632332800,3632357375,CA 3632357376,3632381951,US 3632381952,3632390143,CA -3632390144,3632406527,US +3632390144,3632414719,US 3632414720,3632422911,CA 3632422912,3632451583,US 3632451584,3632455679,CA @@ -131286,7 +144372,7 @@ 3632481184,3632481199,TH 3632481200,3632481279,US 3632481280,3632481287,GB -3632481288,3632481295,PH +3632481288,3632481295,US 3632481296,3632481311,TH 3632481312,3632481391,US 3632481392,3632481399,GB @@ -131369,8 +144455,8 @@ 3632484384,3632484391,GB 3632484392,3632484623,US 3632484624,3632484639,GB -3632484640,3632484647,CA -3632484648,3632484655,TH +3632484640,3632484647,SG +3632484648,3632484655,JP 3632484656,3632484687,US 3632484688,3632484695,GI 3632484696,3632484727,US @@ -131404,9 +144490,7 @@ 3632485264,3632485271,IT 3632485272,3632485279,US 3632485280,3632485311,TH -3632485312,3632485359,US -3632485360,3632485367,TH -3632485368,3632485391,US +3632485312,3632485391,US 3632485392,3632485399,SR 3632485400,3632485431,US 3632485432,3632485439,CA @@ -131428,8 +144512,7 @@ 3632485680,3632485687,BR 3632485688,3632485727,US 3632485728,3632485735,CA -3632485736,3632485743,KW -3632485744,3632485751,US +3632485736,3632485751,US 3632485752,3632485759,CA 3632485760,3632485767,CZ 3632485768,3632485775,KW @@ -131482,8 +144565,7 @@ 3632486904,3632487023,US 3632487024,3632487031,TH 3632487032,3632487039,CZ -3632487040,3632487103,US -3632487104,3632487135,EE +3632487040,3632487135,US 3632487136,3632487143,GB 3632487144,3632487423,US 3632487424,3632487455,GB @@ -131512,9 +144594,7 @@ 3632490544,3632490551,TH 3632490552,3632490559,US 3632490560,3632490623,DE -3632490624,3632490687,US -3632490688,3632490695,BZ -3632490696,3632490703,US +3632490624,3632490703,US 3632490704,3632490719,TH 3632490720,3632490751,US 3632490752,3632490783,GB @@ -131536,8 +144616,8 @@ 3632491072,3632491087,GB 3632491088,3632491151,US 3632491152,3632491167,IN -3632491168,3632491231,US -3632491232,3632491247,CA +3632491168,3632491239,US +3632491240,3632491247,CA 3632491248,3632491263,US 3632491264,3632491327,DM 3632491328,3632491343,FR @@ -131595,9 +144675,7 @@ 3632492992,3632493015,US 3632493016,3632493023,GI 3632493024,3632493055,GB -3632493056,3632493071,US -3632493072,3632493079,ID -3632493080,3632493087,US +3632493056,3632493087,US 3632493088,3632493119,IO 3632493120,3632493151,US 3632493152,3632493159,GR @@ -131708,7 +144786,9 @@ 3632902144,3632971775,US 3632971776,3632972031,CA 3632972032,3632972063,US -3632972064,3632988159,CA +3632972064,3632973087,CA +3632973088,3632973119,US +3632973120,3632988159,CA 3632988160,3633029119,US 3633029120,3633029631,PY 3633029632,3633030143,NI @@ -131856,7 +144936,11 @@ 3633553152,3633553279,GW 3633553280,3633553311,US 3633553312,3633553343,A2 -3633553344,3633815551,US +3633553344,3633776399,US +3633776400,3633776415,CN +3633776416,3633776463,US +3633776464,3633776479,CN +3633776480,3633815551,US 3633815552,3633816079,CA 3633816080,3633816095,US 3633816096,3633816119,CA @@ -131874,7 +144958,9 @@ 3633816256,3633816263,NG 3633816264,3633816279,CA 3633816280,3633816311,US -3633816312,3633816351,CA +3633816312,3633816319,CA +3633816320,3633816327,ZA +3633816328,3633816351,CA 3633816352,3633816383,IN 3633816384,3633816391,NG 3633816392,3633816399,US @@ -131889,16 +144975,26 @@ 3633816520,3633816527,ZA 3633816528,3633816535,CA 3633816536,3633816543,US -3633816544,3633819135,CA +3633816544,3633818703,CA +3633818704,3633818711,US +3633818712,3633819135,CA 3633819136,3633819199,IN 3633819200,3633819391,CA 3633819392,3633819423,IN 3633819424,3633819647,CA 3633819648,3633821279,US 3633821280,3633821311,BB -3633821312,3633822303,US +3633821312,3633821439,US +3633821440,3633821695,SC +3633821696,3633822175,US +3633822176,3633822191,GB +3633822192,3633822303,US 3633822304,3633822327,CA -3633822328,3633881087,US +3633822328,3633827839,US +3633827840,3633828095,GB +3633828096,3633874431,US +3633874432,3633874687,GB +3633874688,3633881087,US 3633881088,3633885183,AN 3633885184,3633889279,US 3633889280,3633893375,CA @@ -131907,7 +145003,9 @@ 3633915904,3633922303,US 3633922304,3633922367,TN 3633922368,3633971199,US -3633971200,3634020351,CA +3633971200,3633974527,CA +3633974528,3633975039,US +3633975040,3634020351,CA 3634020352,3634053119,US 3634053120,3634061311,CL 3634061312,3634065311,US @@ -131947,7 +145045,9 @@ 3634511872,3634515967,CA 3634515968,3634552831,US 3634552832,3634556927,CA -3634556928,3634880511,US +3634556928,3634741247,US +3634741248,3634749439,CA +3634749440,3634880511,US 3634880512,3634888703,CA 3634888704,3634913279,US 3634913280,3634915663,CA @@ -131967,13 +145067,7 @@ 3635314688,3635322879,CA 3635322880,3635425279,US 3635425280,3635429375,CA -3635429376,3635464031,US -3635464032,3635464063,GB -3635464064,3635464127,US -3635464128,3635464135,GB -3635464136,3635464223,US -3635464224,3635464239,GB -3635464240,3635466239,US +3635429376,3635466239,US 3635466240,3635470335,CA 3635470336,3635527679,US 3635527680,3635527935,PR @@ -132002,16 +145096,15 @@ 3635532288,3635532303,ES 3635532304,3635532831,US 3635532832,3635532863,VE -3635532864,3635532927,SV -3635532928,3635532999,US +3635532864,3635532999,US 3635533000,3635533007,NO 3635533008,3635533535,US -3635533536,3635533551,PR +3635533536,3635533551,IN 3635533552,3635658751,US 3635658752,3635660799,CN -3635660800,3635829631,US -3635829632,3635829663,CA -3635829664,3635847791,US +3635660800,3635661823,HK +3635661824,3635662847,JP +3635662848,3635847791,US 3635847792,3635847807,CA 3635847808,3635856511,US 3635856512,3635856543,CA @@ -132048,9 +145141,7 @@ 3636151008,3636151023,BS 3636151024,3636151031,CA 3636151032,3636151039,US -3636151040,3636151167,CA -3636151168,3636151199,US -3636151200,3636151455,CA +3636151040,3636151455,CA 3636151456,3636151479,US 3636151480,3636151488,CA 3636151489,3636151535,US @@ -132067,10 +145158,8 @@ 3636152704,3636152767,CA 3636152768,3636152775,MX 3636152776,3636152783,US -3636152784,3636152791,CA -3636152792,3636152799,US -3636152800,3636152847,CA -3636152848,3636152895,US +3636152784,3636152855,CA +3636152856,3636152895,US 3636152896,3636153023,CA 3636153024,3636153055,KN 3636153056,3636153343,CA @@ -132095,9 +145184,7 @@ 3636156160,3636156191,US 3636156192,3636156255,CA 3636156256,3636156256,US -3636156257,3636156271,CA -3636156272,3636156279,US -3636156280,3636156415,CA +3636156257,3636156415,CA 3636156416,3636156927,US 3636156928,3636157063,CA 3636157064,3636157167,US @@ -132141,7 +145228,9 @@ 3636161792,3636161871,CA 3636161872,3636161885,US 3636161886,3636161943,CA -3636161944,3636162015,US +3636161944,3636161951,US +3636161952,3636161983,CN +3636161984,3636162015,US 3636162016,3636162559,CA 3636162560,3636163583,US 3636163584,3636164095,CA @@ -132157,11 +145246,11 @@ 3636166144,3636166655,CA 3636166656,3636206079,US 3636206080,3636206335,AU -3636206336,3636265535,US -3636265536,3636265599,DE -3636265600,3636266879,US +3636206336,3636266879,US 3636266880,3636266911,HK -3636266912,3636396031,US +3636266912,3636284415,US +3636284416,3636284671,FR +3636284672,3636396031,US 3636396032,3636461567,CA 3636461568,3636577647,US 3636577648,3636577663,CA @@ -132176,29 +145265,8 @@ 3636627200,3636627455,BR 3636627456,3636628479,MX 3636628480,3636628991,PE -3636628992,3636633951,US -3636633952,3636633983,CR -3636633984,3636634015,US -3636634016,3636634063,CR -3636634064,3636634079,US -3636634080,3636634111,CR -3636634112,3636634287,US -3636634288,3636634335,CR -3636634336,3636634351,US -3636634352,3636634431,CR -3636634432,3636634463,US -3636634464,3636634479,CR -3636634480,3636634495,US -3636634496,3636634511,CR -3636634512,3636634623,US -3636634624,3636634687,CR -3636634688,3636634719,US -3636634720,3636635135,CR -3636635136,3636635391,US -3636635392,3636635775,CR -3636635776,3636636415,US -3636636416,3636636543,CR -3636636544,3636822015,US +3636628992,3636633599,US +3636637696,3636822015,US 3636822016,3636854783,CA 3636854784,3636887551,US 3636887552,3636895743,CA @@ -132244,8 +145312,7 @@ 3636907232,3636907775,US 3636907776,3636908031,CA 3636908032,3636908543,US -3636908544,3636908799,IN -3636908800,3636908863,US +3636908544,3636908863,IN 3636908864,3636908991,CA 3636908992,3636909055,US 3636909056,3636909311,CA @@ -132254,8 +145321,7 @@ 3636909696,3636909727,CA 3636909728,3636909759,US 3636909760,3636909791,CA -3636909792,3636909855,US -3636909856,3636909887,CN +3636909792,3636909887,US 3636909888,3636909951,IT 3636909952,3636909983,US 3636909984,3636910015,TZ @@ -132289,7 +145355,8 @@ 3636913664,3636913919,US 3636913920,3636914687,CA 3636914688,3636914815,US -3636914816,3636914943,CA +3636914816,3636914879,IN +3636914880,3636914943,CA 3636914944,3636915103,US 3636915104,3636915135,IN 3636915136,3636915199,US @@ -132330,7 +145397,8 @@ 3636919712,3636919743,BE 3636919744,3636919807,US 3636919808,3636919871,GB -3636919872,3636920127,US +3636919872,3636919999,US +3636920000,3636920127,IN 3636920128,3636920191,CA 3636920192,3637071887,US 3637071888,3637071903,AD @@ -132359,25 +145427,17 @@ 3637073168,3637073183,AD 3637073184,3637073215,US 3637073216,3637073231,CY -3637073232,3637073935,US +3637073232,3637073727,US +3637073728,3637073791,CY +3637073792,3637073935,US 3637073936,3637073959,AD 3637073960,3637074239,US 3637074240,3637074303,PA 3637074304,3637074687,US 3637074688,3637074703,CA -3637074704,3637074751,US -3637074752,3637074815,PA -3637074816,3637074943,US +3637074704,3637074943,US 3637074944,3637074959,CA -3637074960,3637074975,US -3637074976,3637075007,PA -3637075008,3637075231,US -3637075232,3637075263,PA -3637075264,3637075487,US -3637075488,3637075519,PA -3637075520,3637075743,US -3637075744,3637075775,PA -3637075776,3637075967,US +3637074960,3637075967,US 3637075968,3637080063,CA 3637080064,3637389335,US 3637389336,3637389343,CA @@ -132397,7 +145457,9 @@ 3637667519,3637669887,CA 3637669888,3637706751,US 3637706752,3637739519,CA -3637739520,3638165503,US +3637739520,3637827327,US +3637827328,3637827583,VI +3637827584,3638165503,US 3638165504,3638181887,CA 3638181888,3638198951,US 3638198952,3638198959,BM @@ -132405,7 +145467,10 @@ 3638198984,3638198991,ES 3638198992,3638199711,US 3638199712,3638199743,DE -3638199744,3638200007,US +3638199744,3638199807,US +3638199808,3638199815,CN +3638199816,3638199823,AU +3638199824,3638200007,US 3638200008,3638200015,JP 3638200016,3638206407,US 3638206408,3638206415,LU @@ -132477,12 +145542,14 @@ 3638247680,3638247855,US 3638247856,3638247871,DE 3638247872,3638247903,US -3638247904,3638247935,GB -3638247936,3638248703,US +3638247904,3638248703,GB 3638248704,3638249215,FR -3638249216,3638249751,US +3638249216,3638249471,GB +3638249472,3638249751,US 3638249752,3638249791,GB -3638249792,3638250535,US +3638249792,3638249983,US +3638249984,3638249991,GB +3638249992,3638250535,US 3638250536,3638250543,GB 3638250544,3638250559,US 3638250560,3638250623,GB @@ -132505,7 +145572,15 @@ 3638370304,3638374751,CA 3638374752,3638374767,US 3638374768,3638386687,CA -3638386688,3638509295,US +3638386688,3638398975,US +3638398976,3638398991,GB +3638398992,3638399007,CH +3638399008,3638399487,US +3638399488,3638399615,CH +3638399616,3638399743,US +3638399744,3638399999,CH +3638400000,3638400063,CA +3638400064,3638509295,US 3638509296,3638509311,GB 3638509312,3638509567,US 3638509568,3638526911,CA @@ -132631,10 +145706,18 @@ 3639439632,3639439639,RO 3639439640,3639440767,US 3639440768,3639440895,IN -3639440896,3639476223,US -3639541760,3639558143,US +3639440896,3639498767,US +3639498768,3639498783,SI +3639498784,3639498791,US +3639498792,3639498799,NL +3639498800,3639533567,US +3639533568,3639537663,CA +3639537664,3639558143,US 3639558144,3639566335,CA -3639566336,3639607295,US +3639566336,3639582719,US +3639590912,3639593983,US +3639593984,3639595007,GB +3639595008,3639607295,US 3639607296,3639611391,CA 3639611392,3639656447,US 3639656448,3639660543,CA @@ -132729,7 +145812,9 @@ 3639730176,3639734271,CA 3639734272,3639886591,US 3639886592,3639886599,SG -3639886600,3639892359,US +3639886600,3639888962,US +3639888963,3639888963,ID +3639888964,3639892359,US 3639892360,3639892367,ID 3639892368,3639892375,US 3639892376,3639892383,ID @@ -132737,13 +145822,11 @@ 3639892416,3639892431,MX 3639892432,3639892815,US 3639892816,3639892831,MX -3639892832,3639893119,US -3639893120,3639893151,DE -3639893152,3639893167,US -3639893168,3639893199,DE -3639893200,3639893207,US +3639892832,3639893207,US 3639893208,3639893215,DE -3639893216,3639902207,US +3639893216,3639893503,US +3639893504,3639893519,ID +3639893520,3639902207,US 3639902208,3639918591,PE 3639918592,3639934975,AR 3639934976,3640001751,US @@ -132754,7 +145837,9 @@ 3640007312,3640007319,HK 3640007320,3640007359,US 3640007360,3640007367,SO -3640007368,3640013767,US +3640007368,3640013095,US +3640013096,3640013103,CA +3640013104,3640013767,US 3640013768,3640013775,GI 3640013776,3640023079,US 3640023080,3640023087,EG @@ -132764,7 +145849,22 @@ 3640023272,3640023279,HK 3640023280,3640027415,US 3640027416,3640027423,GB -3640027424,3640057855,US +3640027424,3640028207,US +3640028208,3640028215,GB +3640028216,3640028247,US +3640028248,3640028255,IN +3640028256,3640028295,US +3640028296,3640028303,CA +3640028304,3640028311,GB +3640028312,3640028335,US +3640028336,3640028343,CA +3640028344,3640028447,US +3640028448,3640028455,GB +3640028456,3640028519,US +3640028520,3640028527,BR +3640028528,3640028591,US +3640028592,3640028599,CA +3640028600,3640057855,US 3640057856,3640066047,CA 3640066048,3640075391,US 3640075392,3640075407,NL @@ -132857,7 +145957,9 @@ 3640450048,3640451071,US 3640451072,3640459263,A2 3640459264,3640557567,US -3640557568,3640560511,CA +3640557568,3640559567,CA +3640559568,3640559575,US +3640559576,3640560511,CA 3640560512,3640560527,US 3640560528,3640564455,CA 3640564456,3640564463,US @@ -132873,13 +145975,9 @@ 3641078560,3641078567,BE 3641078568,3641085687,DE 3641085688,3641085695,CZ -3641085696,3641087695,DE -3641087696,3641087703,GB -3641087704,3641098191,DE +3641085696,3641098191,DE 3641098192,3641098207,ES -3641098208,3641102607,DE -3641102608,3641102615,FR -3641102616,3641103719,DE +3641098208,3641103719,DE 3641103720,3641103727,HU 3641103728,3641106951,DE 3641106952,3641106959,CH @@ -132889,9 +145987,7 @@ 3641140672,3641140679,US 3641140680,3641147519,DE 3641147520,3641147527,AT -3641147528,3641150303,DE -3641150304,3641150311,US -3641150312,3641157951,DE +3641147528,3641157951,DE 3641157952,3641157959,AT 3641157960,3641158031,DE 3641158032,3641158055,FR @@ -132949,15 +146045,13 @@ 3641335808,3641343999,SE 3641344000,3641345199,GB 3641345200,3641345215,IE -3641345216,3641353087,GB -3641353088,3641353151,A2 +3641345216,3641352959,GB +3641352960,3641353151,A2 3641353152,3641353183,BD 3641353184,3641353215,NG 3641353216,3641353231,GB 3641353232,3641353247,IQ -3641353248,3641353263,GB -3641353264,3641353343,A2 -3641353344,3641353727,BD +3641353248,3641353727,A2 3641353728,3641353759,NG 3641353760,3641353775,GB 3641353776,3641353807,NG @@ -132966,7 +146060,7 @@ 3641353840,3641353855,GB 3641353856,3641353983,A2 3641353984,3641354239,AF -3641354240,3641354255,GB +3641354240,3641354255,NG 3641354256,3641354311,A2 3641354312,3641354319,GB 3641354320,3641354327,A2 @@ -132974,8 +146068,8 @@ 3641354336,3641354339,A2 3641354340,3641354367,GB 3641354368,3641354383,A2 -3641354384,3641354479,IT -3641354480,3641354495,A2 +3641354384,3641354391,NG +3641354392,3641354495,A2 3641354496,3641354751,GB 3641354752,3641355263,NG 3641355264,3641355519,AO @@ -132983,25 +146077,19 @@ 3641355584,3641355599,GB 3641355600,3641355775,A2 3641355776,3641356031,LB -3641356032,3641356111,A2 -3641356112,3641356119,NG -3641356120,3641356191,A2 +3641356032,3641356191,A2 3641356192,3641356207,NG -3641356208,3641356287,A2 -3641356288,3641357311,GB -3641357312,3641357567,A2 -3641357568,3641357823,GB -3641357824,3641357855,A2 +3641356208,3641357855,A2 3641357856,3641357879,GB 3641357880,3641357887,A2 3641357888,3641357927,GB -3641357928,3641358079,A2 -3641358080,3641359359,GB +3641357928,3641358335,A2 +3641358336,3641358591,GB +3641358592,3641358847,A2 +3641358848,3641359359,GB 3641359360,3641359615,IQ 3641359616,3641359639,GB -3641359640,3641359647,A2 -3641359648,3641359664,GB -3641359665,3641359871,A2 +3641359640,3641359871,A2 3641359872,3641360383,GB 3641360384,3641368575,RO 3641368576,3641372671,GB @@ -133096,11 +146184,13 @@ 3641680128,3641681151,GB 3641681152,3641681407,SE 3641681408,3641681663,FR -3641681664,3641683967,EU +3641681664,3641681791,DK +3641681792,3641681919,FR +3641681920,3641682431,GB +3641682432,3641683967,EU 3641683968,3641688063,KZ 3641688064,3641692159,RU 3641692160,3641696255,IT -3641696256,3641700351,DE 3641700352,3641704447,SE 3641704448,3641708543,FR 3641708544,3641712639,RU @@ -133115,110 +146205,7 @@ 3641749504,3641753599,CZ 3641753600,3641757695,SE 3641757696,3641761791,GB -3641761792,3641761795,CY -3641761796,3641761851,GR -3641761852,3641761855,CY -3641761856,3641761863,GR -3641761864,3641761867,CY -3641761868,3641761895,GR -3641761896,3641761899,CY -3641761900,3641761923,GR -3641761924,3641761927,CY -3641761928,3641761935,GR -3641761936,3641761939,CY -3641761940,3641761967,GR -3641761968,3641761971,CY -3641761972,3641762007,GR -3641762008,3641762011,CY -3641762012,3641762047,GR -3641762048,3641762571,CY -3641762572,3641762575,GR -3641762576,3641762607,CY -3641762608,3641762611,GR -3641762612,3641762647,CY -3641762648,3641762655,GR -3641762656,3641762687,CY -3641762688,3641762691,GR -3641762692,3641762703,CY -3641762704,3641762711,GR -3641762712,3641762755,CY -3641762756,3641762759,GR -3641762760,3641762907,CY -3641762908,3641762911,GR -3641762912,3641762943,CY -3641762944,3641762947,GR -3641762948,3641762951,CY -3641762952,3641762999,GR -3641763000,3641763003,CY -3641763004,3641763023,GR -3641763024,3641763035,CY -3641763036,3641763063,GR -3641763064,3641763331,CY -3641763332,3641763339,GR -3641763340,3641763343,CY -3641763344,3641763347,GR -3641763348,3641763367,CY -3641763368,3641763371,GR -3641763372,3641763427,CY -3641763428,3641763431,GR -3641763432,3641763439,CY -3641763440,3641763443,GR -3641763444,3641763451,CY -3641763452,3641763455,GR -3641763456,3641763475,CY -3641763476,3641763479,GR -3641763480,3641763491,CY -3641763492,3641763503,GR -3641763504,3641763511,CY -3641763512,3641763519,GR -3641763520,3641763582,CY -3641763583,3641763583,GR -3641763584,3641764099,CY -3641764100,3641764103,GR -3641764104,3641764111,CY -3641764112,3641764115,GR -3641764116,3641764223,CY -3641764224,3641764227,GR -3641764228,3641764231,CY -3641764232,3641764239,GR -3641764240,3641764279,CY -3641764280,3641764291,GR -3641764292,3641764303,CY -3641764304,3641764307,GR -3641764308,3641764319,CY -3641764320,3641764327,GR -3641764328,3641764347,CY -3641764348,3641764351,GR -3641764352,3641764607,CY -3641764608,3641764679,GR -3641764680,3641764683,CY -3641764684,3641764699,GR -3641764700,3641764703,CY -3641764704,3641764711,GR -3641764712,3641764715,CY -3641764716,3641764775,GR -3641764776,3641764783,CY -3641764784,3641764787,GR -3641764788,3641764791,CY -3641764792,3641764847,GR -3641764848,3641764856,CY -3641764857,3641764863,GR -3641764864,3641764875,CY -3641764876,3641764927,GR -3641764928,3641764935,CY -3641764936,3641764943,GR -3641764944,3641764951,CY -3641764952,3641764963,GR -3641764964,3641764967,CY -3641764968,3641764975,GR -3641764976,3641764979,CY -3641764980,3641765023,GR -3641765024,3641765031,CY -3641765032,3641765083,GR -3641765084,3641765087,CY -3641765088,3641765119,GR -3641765120,3641765631,CY -3641765632,3641765887,GR +3641761792,3641765887,CY 3641765888,3641769983,ES 3641769984,3641774079,NO 3641774080,3641778175,DE @@ -133290,13 +146277,14 @@ 3641937920,3641942015,IT 3641942016,3641950207,DE 3641950208,3641954303,FR -3641954304,3641957887,MD -3641957888,3641957951,GB -3641957952,3641958143,MD -3641958144,3641958207,GB -3641958208,3641958399,MD -3641958400,3641960699,BE -3641960700,3641960703,NL +3641954304,3641956863,MD +3641956864,3641957631,GB +3641957632,3641957887,MD +3641957888,3641958399,GB +3641958400,3641960447,BE +3641960448,3641960519,NL +3641960520,3641960527,BE +3641960528,3641960703,NL 3641960704,3641961727,BE 3641961728,3641961743,NL 3641961744,3641961791,BE @@ -133327,7 +146315,9 @@ 3642029057,3642029311,NG 3642029312,3642029312,A2 3642029313,3642029567,GB -3642029568,3642031359,NG +3642029568,3642030591,NG +3642030592,3642030847,GN +3642030848,3642031359,NG 3642031360,3642031615,GB 3642031616,3642031616,A2 3642031617,3642031743,SL @@ -133344,10 +146334,11 @@ 3642064896,3642068991,SE 3642068992,3642073087,AL 3642073088,3642077183,LV -3642077184,3642081271,BE +3642077184,3642078999,BE +3642079000,3642079007,NL +3642079008,3642081271,BE 3642081272,3642081278,US -3642081279,3642081279,BE -3642081280,3642085375,NL +3642081279,3642085375,NL 3642085376,3642089471,RU 3642089472,3642093567,SE 3642093568,3642097663,NL @@ -133400,7 +146391,17 @@ 3642113792,3642113823,BE 3642113824,3642113855,NL 3642113856,3642113919,BE -3642113920,3642118143,NL +3642113920,3642114591,NL +3642114592,3642114815,NO +3642114816,3642114831,NL +3642114832,3642115095,NO +3642115096,3642115103,NL +3642115104,3642116095,NO +3642116096,3642117119,NL +3642117120,3642117375,NO +3642117376,3642117631,NL +3642117632,3642117887,NO +3642117888,3642118143,NL 3642118144,3642122239,GB 3642122240,3642126335,ES 3642126336,3642130431,IL @@ -133447,10 +146448,9 @@ 3642249216,3642253311,FR 3642253312,3642257407,FI 3642257408,3642261503,RU -3642265600,3642266111,AE -3642266112,3642266367,IR -3642266368,3642266623,AE -3642266624,3642269695,IR +3642261504,3642265599,BA +3642265600,3642265855,AE +3642265856,3642269695,IR 3642269696,3642273791,UA 3642273792,3642277887,RU 3642277888,3642290175,DE @@ -133486,13 +146486,22 @@ 3642404864,3642408959,RU 3642408960,3642413055,FR 3642413056,3642414591,RS -3642414592,3642415627,GB +3642414592,3642414847,GB +3642414848,3642414975,RS +3642414976,3642415627,GB 3642415628,3642415635,MT 3642415636,3642415651,GB 3642415652,3642415655,MT 3642415656,3642417151,GB -3642417152,3642421247,IT -3642421248,3642425343,A2 +3642421248,3642423091,A2 +3642423092,3642423099,NG +3642423100,3642424151,A2 +3642424152,3642424167,NG +3642424168,3642424199,A2 +3642424200,3642424215,NG +3642424216,3642425087,A2 +3642425088,3642425183,IQ +3642425184,3642425343,A2 3642425344,3642429439,DE 3642429440,3642433535,GB 3642433536,3642435583,CY @@ -133538,7 +146547,9 @@ 3642539871,3642539971,IS 3642539972,3642539975,DK 3642539976,3642540031,IS -3642540032,3642544127,SE +3642540032,3642540063,SE +3642540064,3642540079,NO +3642540080,3642544127,SE 3642544128,3642552319,RU 3642552320,3642552639,UA 3642552640,3642552655,EE @@ -133549,63 +146560,71 @@ 3642552688,3642552831,UA 3642552832,3642552847,EE 3642552848,3642553095,UA -3642553096,3642553139,LV -3642553140,3642553143,UA -3642553144,3642553175,LV +3642553096,3642553099,LV +3642553100,3642553103,UA +3642553104,3642553161,LV +3642553162,3642553163,UA +3642553164,3642553175,LV 3642553176,3642553183,UA -3642553184,3642553343,LV +3642553184,3642553223,LV +3642553224,3642553279,UA +3642553280,3642553343,LV 3642553344,3642553371,RU -3642553372,3642553375,UA -3642553376,3642553377,RU -3642553378,3642553379,UA +3642553372,3642553379,UA 3642553380,3642553383,RU -3642553384,3642553387,UA -3642553388,3642553411,RU +3642553384,3642553407,UA +3642553408,3642553411,RU 3642553412,3642553415,UA 3642553416,3642553423,RU 3642553424,3642553431,UA -3642553432,3642553463,RU -3642553464,3642553467,UA -3642553468,3642553519,RU +3642553432,3642553443,RU +3642553444,3642553447,UA +3642553448,3642553463,RU +3642553464,3642553471,UA +3642553472,3642553519,RU 3642553520,3642553523,UA 3642553524,3642553535,RU 3642553536,3642553543,DE -3642553544,3642553575,RU +3642553544,3642553547,UA +3642553548,3642553567,RU +3642553568,3642553571,UA +3642553572,3642553575,RU 3642553576,3642553579,UA 3642553580,3642553589,RU 3642553590,3642553591,UA 3642553592,3642553599,RU 3642553600,3642553855,UA -3642553856,3642553925,RU -3642553926,3642553935,UA +3642553856,3642553929,RU +3642553930,3642553935,UA 3642553936,3642553959,RU 3642553960,3642554111,UA 3642554112,3642554119,RU -3642554120,3642554123,UA -3642554124,3642554151,RU -3642554152,3642554177,UA -3642554178,3642554207,RU -3642554208,3642554211,UA -3642554212,3642554223,RU -3642554224,3642554239,UA -3642554240,3642554271,RU -3642554272,3642554367,UA -3642554368,3642554623,LT +3642554120,3642554127,UA +3642554128,3642554151,RU +3642554152,3642554187,UA +3642554188,3642554207,RU +3642554208,3642554219,UA +3642554220,3642554223,RU +3642554224,3642554367,UA +3642554368,3642554571,LT +3642554572,3642554575,UA +3642554576,3642554623,LT 3642554624,3642554631,UA 3642554632,3642554671,LV 3642554672,3642554675,UA 3642554676,3642554687,LV 3642554688,3642554751,UA -3642554752,3642554791,LV -3642554792,3642554807,UA -3642554808,3642554815,LV -3642554816,3642554847,UA -3642554848,3642554879,LV +3642554752,3642554795,LV +3642554796,3642554807,UA +3642554808,3642554831,LV +3642554832,3642554851,UA +3642554852,3642554879,LV 3642554880,3642554911,DE 3642554912,3642554919,NL 3642554920,3642554931,DE 3642554932,3642554951,UA -3642554952,3642554959,GE +3642554952,3642554955,GE +3642554956,3642554959,UA 3642554960,3642554963,DE 3642554964,3642554967,UA 3642554968,3642554971,LV @@ -133638,21 +146657,29 @@ 3642555228,3642555289,LT 3642555290,3642555295,UA 3642555296,3642555391,LT -3642555392,3642555493,PL +3642555392,3642555431,PL +3642555432,3642555437,UA +3642555438,3642555439,PL +3642555440,3642555443,UA +3642555444,3642555463,PL +3642555464,3642555475,UA +3642555476,3642555493,PL 3642555494,3642555495,UA 3642555496,3642555503,PL 3642555504,3642555647,UA 3642555648,3642555683,SE -3642555684,3642555687,UA -3642555688,3642555695,SE +3642555684,3642555685,GB +3642555686,3642555691,UA +3642555692,3642555695,SE 3642555696,3642555703,UA 3642555704,3642555707,FI 3642555708,3642555711,SE 3642555712,3642555727,RU -3642555728,3642555735,UA +3642555728,3642555735,SE 3642555736,3642555743,GB 3642555744,3642555759,SE -3642555760,3642555771,GB +3642555760,3642555767,UA +3642555768,3642555771,GB 3642555772,3642555775,SE 3642555776,3642555783,UA 3642555784,3642555787,GB @@ -133660,7 +146687,9 @@ 3642555790,3642555791,SE 3642555792,3642556159,UA 3642556160,3642556415,LV -3642556416,3642560511,CZ +3642556416,3642558975,CZ +3642558976,3642559487,HR +3642559488,3642560511,CZ 3642560512,3642564607,KG 3642564608,3642568703,DE 3642568704,3642572799,RU @@ -133706,7 +146735,9 @@ 3642736640,3642740735,CZ 3642740736,3642744831,DE 3642744832,3642753023,TR -3642753024,3643801599,GB +3642753024,3642830671,GB +3642830672,3642830687,A2 +3642830688,3643801599,GB 3643801600,3644063743,DE 3644063744,3644325887,EG 3644325888,3644588031,IT @@ -133732,7 +146763,7 @@ 3644899328,3644903423,IT 3644903424,3644907519,TR 3644907520,3644908983,GB -3644908984,3644908991,IT +3644908984,3644908991,US 3644908992,3644909855,GB 3644909856,3644909859,IS 3644909860,3644911615,GB @@ -133780,123 +146811,7 @@ 3645030400,3645038591,IR 3645038592,3645046783,PS 3645046784,3645050879,RU -3645050880,3645051059,SK -3645051060,3645051063,CZ -3645051064,3645051131,SK -3645051132,3645051135,CZ -3645051136,3645051223,SK -3645051224,3645051247,CZ -3645051248,3645051255,SK -3645051256,3645051279,CZ -3645051280,3645051379,SK -3645051380,3645051383,CZ -3645051384,3645051439,SK -3645051440,3645051455,CZ -3645051456,3645051555,SK -3645051556,3645051559,CZ -3645051560,3645051567,SK -3645051568,3645051583,CZ -3645051584,3645051599,SK -3645051600,3645051615,CZ -3645051616,3645051639,SK -3645051640,3645051647,CZ -3645051648,3645051671,SK -3645051672,3645051711,CZ -3645051712,3645051719,SK -3645051720,3645051727,CZ -3645051728,3645051775,SK -3645051776,3645051791,CZ -3645051792,3645051815,SK -3645051816,3645051823,CZ -3645051824,3645051887,SK -3645051888,3645051899,CZ -3645051900,3645051943,SK -3645051944,3645051951,CZ -3645051952,3645051967,SK -3645051968,3645051975,CZ -3645051976,3645051979,SK -3645051980,3645051999,CZ -3645052000,3645052015,SK -3645052016,3645052031,CZ -3645052032,3645052095,SK -3645052096,3645052103,CZ -3645052104,3645052127,SK -3645052128,3645052143,CZ -3645052144,3645052183,SK -3645052184,3645052191,CZ -3645052192,3645052263,SK -3645052264,3645052287,CZ -3645052288,3645052351,SK -3645052352,3645052367,CZ -3645052368,3645052407,SK -3645052408,3645052415,CZ -3645052416,3645052423,SK -3645052424,3645052431,CZ -3645052432,3645052447,SK -3645052448,3645052455,CZ -3645052456,3645052591,SK -3645052592,3645052599,CZ -3645052600,3645052607,SK -3645052608,3645052631,CZ -3645052632,3645052655,SK -3645052656,3645052663,CZ -3645052664,3645052943,SK -3645052944,3645052951,CZ -3645052952,3645052983,SK -3645052984,3645052991,CZ -3645052992,3645052999,SK -3645053000,3645053007,CZ -3645053008,3645053015,SK -3645053016,3645053023,CZ -3645053024,3645053079,SK -3645053080,3645053087,CZ -3645053088,3645053095,SK -3645053096,3645053099,CZ -3645053100,3645053123,SK -3645053124,3645053131,CZ -3645053132,3645053135,SK -3645053136,3645053139,CZ -3645053140,3645053143,SK -3645053144,3645053167,CZ -3645053168,3645053179,SK -3645053180,3645053183,CZ -3645053184,3645053263,SK -3645053264,3645053271,CZ -3645053272,3645053287,SK -3645053288,3645053295,CZ -3645053296,3645053311,SK -3645053312,3645053319,CZ -3645053320,3645053343,SK -3645053344,3645053351,CZ -3645053352,3645053535,SK -3645053536,3645053543,CZ -3645053544,3645053647,SK -3645053648,3645053663,CZ -3645053664,3645053727,SK -3645053728,3645053735,CZ -3645053736,3645053743,SK -3645053744,3645053751,CZ -3645053752,3645053911,SK -3645053912,3645053919,CZ -3645053920,3645053923,SK -3645053924,3645053927,CZ -3645053928,3645053951,SK -3645053952,3645053959,CZ -3645053960,3645053963,SK -3645053964,3645053967,CZ -3645053968,3645053999,SK -3645054000,3645054007,CZ -3645054008,3645054255,SK -3645054256,3645054263,CZ -3645054264,3645054303,SK -3645054304,3645054311,CZ -3645054312,3645054315,SK -3645054316,3645054319,CZ -3645054320,3645054351,SK -3645054352,3645054359,CZ -3645054360,3645054383,SK -3645054384,3645054399,CZ -3645054400,3645054975,SK +3645050880,3645054975,SK 3645054976,3645059071,DE 3645059072,3645063167,GB 3645063168,3645067263,UA @@ -133911,7 +146826,9 @@ 3645104128,3645112319,NL 3645112320,3645113735,DE 3645113736,3645113743,MK -3645113744,3645116415,DE +3645113744,3645114079,DE +3645114080,3645114095,IL +3645114096,3645116415,DE 3645116416,3645120511,GB 3645120512,3645124607,SE 3645124608,3645128703,NL @@ -133919,7 +146836,9 @@ 3645132800,3645136895,HR 3645136896,3645145087,NO 3645145088,3645149183,GB -3645149184,3645149887,DE +3645149184,3645149487,DE +3645149488,3645149495,GB +3645149496,3645149887,DE 3645149888,3645149951,HK 3645149952,3645150559,DE 3645150560,3645150591,HK @@ -133969,7 +146888,9 @@ 3645259776,3645263871,PT 3645263872,3645267967,FR 3645267968,3645276159,RU -3645276160,3645280255,DE +3645276160,3645278423,DE +3645278424,3645278431,PT +3645278432,3645280255,DE 3645280256,3645281279,IT 3645281280,3645281535,DE 3645281536,3645281791,IT @@ -133989,8 +146910,8 @@ 3645321216,3645325311,BA 3645325312,3645329407,IT 3645329408,3645333503,CH -3645333504,3645334031,DE -3645334032,3645334271,EU +3645333504,3645334039,DE +3645334040,3645334271,EU 3645334272,3645336927,DE 3645336928,3645336935,EU 3645336936,3645336991,DE @@ -134041,11 +146962,12 @@ 3645435904,3645439999,GB 3645440000,3645444095,SE 3645444096,3645448191,SK -3645448192,3645456383,DE +3645448192,3645452287,DE 3645456384,3645460479,GB 3645460480,3645464575,UA 3645464576,3645468671,SE 3645468672,3645472767,RU +3645472768,3645476863,AL 3645476864,3645480959,DE 3645480960,3645485055,RO 3645485056,3645489151,PL @@ -134061,7 +146983,6 @@ 3645507596,3645507599,DE 3645507600,3645507607,AT 3645507608,3645509631,DE -3645509632,3645513727,GB 3645513728,3645517823,RU 3645517824,3645521919,IE 3645521920,3645526015,PL @@ -134087,14 +147008,25 @@ 3645575168,3645579263,CH 3645579264,3645583359,NL 3645583360,3645587455,PL -3645587456,3645595647,SK +3645587456,3645594711,SK +3645594712,3645594719,SR +3645594720,3645594743,SK +3645594744,3645594751,SR +3645594752,3645594863,SK +3645594864,3645594871,SR +3645594872,3645595647,SK 3645595648,3645597751,SE 3645597752,3645597759,GB 3645597760,3645601471,SE 3645601472,3645601487,NO -3645601488,3645601759,SE +3645601488,3645601503,SE +3645601504,3645601507,GB +3645601508,3645601759,SE 3645601760,3645601775,FR -3645601776,3645603839,SE +3645601776,3645601779,GB +3645601780,3645601799,SE +3645601800,3645601803,GB +3645601804,3645603839,SE 3645603840,3645612031,BG 3645612032,3645616127,GB 3645616128,3645620223,AT @@ -134200,9 +147132,7 @@ 3645763663,3645763663,HU 3645763664,3645763665,DE 3645763666,3645763666,NL -3645763667,3645763667,DE -3645763668,3645763668,IT -3645763669,3645763670,DE +3645763667,3645763670,DE 3645763671,3645763671,FR 3645763672,3645763672,DE 3645763673,3645763673,BE @@ -134223,10 +147153,9 @@ 3645763691,3645763691,CH 3645763692,3645763692,DE 3645763693,3645763693,NL -3645763694,3645763694,IE -3645763695,3645763696,DE +3645763694,3645763696,DE 3645763697,3645763697,NL -3645763698,3645763698,LU +3645763698,3645763698,DE 3645763699,3645763699,BE 3645763700,3645763700,NL 3645763701,3645763701,DE @@ -134603,8 +147532,8 @@ 3645764189,3645764189,FR 3645764190,3645764190,IT 3645764191,3645764191,GB -3645764192,3645764192,DE -3645764193,3645764194,ES +3645764192,3645764193,DE +3645764194,3645764194,ES 3645764195,3645764195,DE 3645764196,3645764196,IT 3645764197,3645764197,DE @@ -134662,8 +147591,8 @@ 3645764262,3645764262,BE 3645764263,3645764264,IT 3645764265,3645764265,TR -3645764266,3645764268,DE -3645764269,3645764270,ES +3645764266,3645764269,DE +3645764270,3645764270,ES 3645764271,3645764271,IT 3645764272,3645764272,DE 3645764273,3645764273,IT @@ -135058,7 +147987,8 @@ 3645888128,3645888143,AT 3645888144,3645888159,DE 3645888160,3645888191,AT -3645888192,3645889791,DE +3645888192,3645888223,SG +3645888224,3645889791,DE 3645889792,3645889919,US 3645889920,3645890559,DE 3645890560,3645894655,RU @@ -135098,7 +148028,9 @@ 3647916800,3647917055,SE 3647917056,3647917599,DE 3647917600,3647917615,US -3647917616,3647936871,DE +3647917616,3647922959,DE +3647922960,3647922975,GB +3647922976,3647936871,DE 3647936872,3647936879,FR 3647936880,3647954231,DE 3647954232,3647954239,GB @@ -135112,7 +148044,9 @@ 3647959600,3647959607,AT 3647959608,3647961215,DE 3647961216,3647961247,IT -3647961248,3647963167,DE +3647961248,3647961255,DE +3647961256,3647961263,BE +3647961264,3647963167,DE 3647963168,3647963183,BE 3647963184,3647963231,DE 3647963232,3647963263,BE @@ -135139,12 +148073,8 @@ 3647965296,3647965303,DE 3647965304,3647965311,ES 3647965312,3647965319,DE -3647965320,3647965343,ES -3647965344,3647965351,DE -3647965352,3647965359,ES -3647965360,3647965375,DE -3647965376,3647965407,ES -3647965408,3647965439,DE +3647965320,3647965415,ES +3647965416,3647965439,DE 3647965440,3647965695,ES 3647965696,3647966207,CH 3647966208,3647966575,GB @@ -135164,9 +148094,15 @@ 3647972264,3647972351,GB 3647972352,3647973679,IT 3647973680,3647973695,DE -3647973696,3647973783,IT +3647973696,3647973703,IT +3647973704,3647973711,BE +3647973712,3647973735,IT +3647973736,3647973743,DE +3647973744,3647973783,IT 3647973784,3647973791,DE -3647973792,3647973967,IT +3647973792,3647973815,IT +3647973816,3647973823,DE +3647973824,3647973967,IT 3647973968,3647973975,DE 3647973976,3647974047,IT 3647974048,3647974055,DE @@ -135180,40 +148116,70 @@ 3647976720,3647976727,DE 3647976728,3647976743,BE 3647976744,3647976751,DE -3647976752,3647976759,BE -3647976760,3647976783,DE +3647976752,3647976767,BE +3647976768,3647976783,DE 3647976784,3647976791,BE 3647976792,3647976799,DE 3647976800,3647976927,BE 3647976928,3647976935,DE -3647976936,3647977079,BE -3647977080,3647977087,DE -3647977088,3647977151,BE +3647976936,3647977119,BE +3647977120,3647977135,DE +3647977136,3647977151,BE 3647977152,3647977215,DE 3647977216,3647977471,BE 3647977472,3647977791,GB 3647977792,3647977855,IE 3647977856,3647978495,GB -3647978496,3647978775,NL +3647978496,3647978551,NL +3647978552,3647978559,DE +3647978560,3647978775,NL 3647978776,3647978783,DE -3647978784,3647978871,NL -3647978872,3647978879,DE -3647978880,3647978895,NL +3647978784,3647978895,NL 3647978896,3647978911,DE -3647978912,3647978927,NL -3647978928,3647979007,DE +3647978912,3647978943,NL +3647978944,3647979007,DE 3647979008,3647979136,IT 3647979137,3647979519,DE -3647979520,3647980543,FR +3647979520,3647980215,FR +3647980216,3647980223,DE +3647980224,3647980239,FR +3647980240,3647980247,DE +3647980248,3647980255,FR +3647980256,3647980271,DE +3647980272,3647980495,FR +3647980496,3647980503,DE +3647980504,3647980543,FR 3647980544,3647981055,GB 3647981056,3647981567,IE 3647981568,3647982591,BE 3647982592,3647983615,IT 3647983616,3647984639,NL 3647984640,3647985151,DK -3647985152,3647995903,DE -3647995904,3648004095,RU -3648004096,3648004607,GB +3647985152,3647985415,BE +3647985416,3647985423,AT +3647985424,3647985663,BE +3647985664,3647985919,ES +3647985920,3647985935,BE +3647985936,3647986431,ES +3647986432,3647986687,FR +3647986688,3647986943,DE +3647986944,3647986951,ES +3647986952,3647986975,DE +3647986976,3647987071,ES +3647987072,3647987087,DE +3647987088,3647987103,ES +3647987104,3647987455,DE +3647987456,3647987527,ES +3647987528,3647987543,DE +3647987544,3647987711,ES +3647987712,3647988735,IT +3647988736,3647988991,DE +3647988992,3647989095,BE +3647989096,3647989119,DE +3647989120,3647989375,BE +3647989376,3647995903,DE +3647995904,3648004223,RU +3648004224,3648004607,GB 3648004608,3648006271,RU 3648006272,3648006399,GB 3648006400,3648007167,RU @@ -135231,12 +148197,8 @@ 3648033120,3648033535,EU 3648033536,3648033791,IE 3648033792,3648034047,EU -3648034048,3648034051,IE -3648034052,3648034055,EU -3648034056,3648034095,IE -3648034096,3648034175,EU -3648034176,3648034191,IE -3648034192,3648034815,EU +3648034048,3648034303,IE +3648034304,3648034815,EU 3648034816,3648034847,DE 3648034848,3648034887,EU 3648034888,3648034895,IE @@ -135246,11 +148208,11 @@ 3648035040,3648035071,NL 3648035072,3648036863,EU 3648036864,3648040959,CZ -3648040960,3648041020,BE -3648041021,3648041021,FR -3648041022,3648041052,BE -3648041053,3648041053,NL -3648041054,3648045055,BE +3648040960,3648041024,BE +3648041025,3648041028,FR +3648041029,3648041047,BE +3648041048,3648041055,NL +3648041056,3648045055,BE 3648045056,3648049151,FI 3648049152,3648053247,UA 3648053248,3648057343,FR @@ -135282,15 +148244,15 @@ 3648081056,3648081407,BE 3648081408,3648082175,MW 3648082176,3648082239,BE -3648082240,3648082687,LR -3648082688,3648085759,BE +3648082240,3648082311,NE +3648082312,3648082431,BE +3648082432,3648082479,ZM +3648082480,3648085759,BE 3648085760,3648086015,LR 3648086016,3648090111,AT 3648090112,3648094207,RU 3648094208,3648102399,PL -3648102400,3648104767,GB -3648104768,3648104783,IE -3648104784,3648104791,GB +3648102400,3648104791,GB 3648104792,3648104799,IE 3648104800,3648106495,GB 3648106496,3648110591,DE @@ -135317,11 +148279,17 @@ 3648176128,3648178687,FR 3648178688,3648178815,LU 3648178816,3648180223,FR -3648180224,3648180767,DE +3648180224,3648180735,DE +3648180736,3648180751,IT +3648180752,3648180767,DE 3648180768,3648180799,AT -3648180800,3648181023,DE +3648180800,3648180991,DE +3648180992,3648181007,CY +3648181008,3648181023,DE 3648181024,3648181055,AT -3648181056,3648181215,DE +3648181056,3648181063,DE +3648181064,3648181071,DK +3648181072,3648181215,DE 3648181216,3648181231,RU 3648181232,3648181247,DE 3648181248,3648181279,IT @@ -135337,8 +148305,10 @@ 3648181632,3648181647,AT 3648181648,3648181887,DE 3648181888,3648181903,AT -3648181904,3648182143,DE -3648182144,3648182159,NL +3648181904,3648182111,DE +3648182112,3648182127,CY +3648182128,3648182143,DE +3648182144,3648182159,BR 3648182160,3648182175,DE 3648182176,3648182207,RU 3648182208,3648182271,GB @@ -135370,7 +148340,8 @@ 3648225280,3648231263,DE 3648231264,3648231295,NL 3648231296,3648233471,DE -3648233472,3648237567,FR +3648233472,3648237311,FR +3648237312,3648237567,GB 3648237568,3648241663,RU 3648241664,3648245759,NL 3648245760,3648249855,RO @@ -135410,7 +148381,11 @@ 3648348160,3648352255,DE 3648352256,3648356351,RU 3648356352,3648360447,PL -3648360448,3648364543,FR +3648360448,3648362251,FR +3648362252,3648362255,GB +3648362256,3648362263,FR +3648362264,3648362271,GB +3648362272,3648364543,FR 3648364544,3648368639,CH 3648368640,3648372735,RU 3648372736,3648376831,LU @@ -135426,8 +148401,8 @@ 3648417808,3648417815,GB 3648417816,3648417831,AT 3648417832,3648417839,GB -3648417840,3648417879,AT -3648417880,3648417919,GB +3648417840,3648417855,AT +3648417856,3648417919,GB 3648417920,3648418047,AT 3648418048,3648418079,GB 3648418080,3648418247,ES @@ -135450,12 +148425,12 @@ 3648421632,3648421887,CH 3648421888,3648425983,GB 3648425984,3648430079,IT -3648430080,3648434175,NL +3648430080,3648432127,NL +3648432128,3648433151,DE +3648433152,3648434175,NL 3648434176,3648438271,RU 3648438272,3648442367,CH -3648442368,3648443743,SE -3648443744,3648443759,PA -3648443760,3648446463,SE +3648442368,3648446463,SE 3648446464,3648447055,FR 3648447056,3648447063,ES 3648447064,3648449119,FR @@ -135464,7 +148439,11 @@ 3648450560,3648454655,IT 3648454656,3648458751,NL 3648458752,3648462847,RU -3648462848,3648466943,FI +3648462848,3648465255,FI +3648465256,3648465271,AX +3648465272,3648465823,FI +3648465824,3648465855,AX +3648465856,3648466943,FI 3648466944,3648469263,DE 3648469264,3648469271,NL 3648469272,3648469295,DE @@ -135529,7 +148508,6 @@ 3650093056,3650097151,JO 3650097152,3650101247,SK 3650101248,3650105343,DE -3650105344,3650109439,CH 3650109440,3650113535,NO 3650113536,3650117631,GB 3650117632,3650121727,RU @@ -135562,12 +148540,16 @@ 3650228224,3650228735,US 3650228736,3650228991,A2 3650228992,3650232319,US -3650232320,3650236415,RU +3650232320,3650233343,RU +3650233344,3650233599,CY +3650233600,3650236415,RU 3650236416,3650240511,GB 3650240512,3650244607,EE 3650244608,3650256895,GB 3650256896,3650265087,DE -3650265088,3650269183,CH +3650265088,3650265559,CH +3650265560,3650265571,DE +3650265572,3650269183,CH 3650269184,3650273071,GB 3650273072,3650273279,IR 3650273280,3650277375,IT @@ -135589,7 +148571,9 @@ 3650316716,3650318335,DE 3650318336,3650320383,GI 3650320384,3650322431,GB -3650322432,3650330623,IT +3650322432,3650323327,IT +3650323328,3650323359,SZ +3650323360,3650330623,IT 3650330624,3650334719,UA 3650334720,3650338815,GB 3650338816,3650342911,FR @@ -135648,7 +148632,9 @@ 3650352384,3650352895,DE 3650352896,3650355199,GB 3650355200,3650359295,CH -3650359296,3650363391,NL +3650359296,3650360703,NL +3650360704,3650360831,BE +3650360832,3650363391,NL 3650363392,3650367487,GB 3650367488,3650371583,RU 3650371584,3650375679,ES @@ -135674,9 +148660,9 @@ 3650465792,3650469887,RU 3650469888,3650478079,NL 3650478080,3650482175,AT -3650482176,3650484687,PL -3650484688,3650484695,SE -3650484696,3650486271,PL +3650482176,3650484639,PL +3650484640,3650484671,US +3650484672,3650486271,PL 3650486272,3650502655,RU 3650502656,3650510847,SE 3650510848,3650519039,GB @@ -135731,7 +148717,9 @@ 3650923104,3650923135,FR 3650923136,3650926591,GB 3650926592,3650929663,ES -3650929664,3650945023,GB +3650929664,3650931967,GB +3650931968,3650932223,ES +3650932224,3650945023,GB 3650945024,3651010559,DK 3651010560,3651076095,GB 3651076096,3651077375,DE @@ -135823,7 +148811,10 @@ 3651204096,3651204223,ES 3651204224,3651204351,DE 3651204352,3651204607,PL -3651204608,3651207167,DE +3651204608,3651205119,ES +3651205120,3651205375,GB +3651205376,3651205631,ES +3651205632,3651207167,DE 3651207168,3651207199,GB 3651207200,3651207223,EU 3651207224,3651207295,GB @@ -135942,16 +148933,13 @@ 3651870720,3651874815,IT 3651874816,3651878911,PL 3651878912,3651883007,RU -3651883008,3651885823,BE -3651885824,3651885847,CD -3651885848,3651885851,BE -3651885852,3651885855,CD -3651885856,3651885867,BE -3651885868,3651885875,CD -3651885876,3651885903,BE -3651885904,3651885919,CD -3651885920,3651886335,BE -3651886336,3651886347,CD +3651883008,3651885871,CD +3651885872,3651885895,BE +3651885896,3651885899,CD +3651885900,3651885903,BE +3651885904,3651885927,CD +3651885928,3651886079,BE +3651886080,3651886347,CD 3651886348,3651886379,BE 3651886380,3651886383,CD 3651886384,3651886391,BE @@ -135969,8 +148957,8 @@ 3651886472,3651886479,BE 3651886480,3651886495,CD 3651886496,3651886511,BE -3651886512,3651886527,CD -3651886528,3651886591,BE +3651886512,3651886543,CD +3651886544,3651886591,BE 3651886592,3651886847,CD 3651886848,3651887103,BE 3651887104,3651891199,GB @@ -136057,9 +149045,9 @@ 3651942816,3651944447,DE 3651944448,3651948543,ES 3651948544,3651952639,FO -3651952640,3651954175,IR -3651954176,3651954431,AE -3651954432,3651958271,IR +3651952640,3651953663,IR +3651953664,3651954687,AE +3651954688,3651958271,IR 3651958272,3651958783,AE 3651958784,3651959039,IR 3651959040,3651960831,AE @@ -136130,17 +149118,19 @@ 3652034560,3652046847,PL 3652046848,3652050271,IE 3652050272,3652050299,GB -3652050300,3652050499,IE +3652050300,3652050327,IE +3652050328,3652050343,GB +3652050344,3652050499,IE 3652050500,3652050503,GB 3652050504,3652050527,IE 3652050528,3652050535,GB 3652050536,3652050567,IE 3652050568,3652050615,GB 3652050616,3652050619,IE -3652050620,3652050671,GB -3652050672,3652050787,IE -3652050788,3652050791,GB -3652050792,3652050943,IE +3652050620,3652050627,GB +3652050628,3652050631,IE +3652050632,3652050671,GB +3652050672,3652050943,IE 3652050944,3652055039,LI 3652055040,3652059135,NO 3652059136,3652063231,RU @@ -136161,13 +149151,14 @@ 3652128768,3652136959,RU 3652136960,3652141055,IT 3652141056,3652141311,GB -3652141312,3652143103,A2 -3652143104,3652143359,GB +3652141312,3652142847,A2 +3652142848,3652143359,GB 3652143360,3652143871,A2 3652143872,3652144127,GB 3652144128,3652144383,KE 3652144384,3652144639,CM -3652144640,3652145151,A2 +3652144640,3652144895,GB +3652144896,3652145151,A2 3652145152,3652149247,UA 3652149248,3652153343,DE 3652153344,3652157439,SE @@ -136187,7 +149178,9 @@ 3652985040,3652985047,FR 3652985048,3653029775,DE 3653029776,3653029791,LU -3653029792,3653039103,DE +3653029792,3653031727,DE +3653031728,3653031735,LU +3653031736,3653039103,DE 3653039104,3653039359,IT 3653039360,3653039999,DE 3653040000,3653040015,LU @@ -136307,8 +149300,8 @@ 3653408232,3653408239,KE 3653408240,3653408247,BF 3653408248,3653408271,A2 -3653408272,3653408287,IQ -3653408288,3653408319,A2 +3653408272,3653408279,IQ +3653408280,3653408319,A2 3653408320,3653408327,IQ 3653408328,3653408767,A2 3653408768,3653409023,CD @@ -136318,15 +149311,9 @@ 3653409064,3653409071,CD 3653409072,3653409087,A2 3653409088,3653409095,CD -3653409096,3653409103,A2 -3653409104,3653409111,MW -3653409112,3653409119,NG -3653409120,3653409127,A2 -3653409128,3653409143,CD -3653409144,3653409151,NG -3653409152,3653409191,A2 -3653409192,3653409199,NG -3653409200,3653409223,A2 +3653409096,3653409127,A2 +3653409128,3653409135,CD +3653409136,3653409223,A2 3653409224,3653409231,NG 3653409232,3653409279,A2 3653409280,3653409311,TZ @@ -136356,14 +149343,13 @@ 3653410176,3653410183,US 3653410184,3653410191,MZ 3653410192,3653410199,ZW -3653410200,3653410215,A2 -3653410216,3653410223,ZW -3653410224,3653410247,A2 +3653410200,3653410247,A2 3653410248,3653410255,ZM 3653410256,3653410263,A2 3653410264,3653410271,NG 3653410272,3653410279,SD -3653410280,3653410295,A2 +3653410280,3653410287,IQ +3653410288,3653410295,A2 3653410296,3653410303,MW 3653410304,3653410815,GB 3653410816,3653414911,CZ @@ -136376,7 +149362,8 @@ 3653439488,3653443583,FR 3653443584,3653444351,DE 3653444352,3653444383,IT -3653444384,3653447679,DE +3653444384,3653447167,DE +3653447168,3653447679,NL 3653447680,3653451775,LV 3653451776,3653464063,RU 3653464064,3653468159,NL @@ -136390,11 +149377,15 @@ 3653472576,3653472591,NL 3653472592,3653472767,AF 3653472768,3653472775,NL -3653472776,3653472807,AF +3653472776,3653472791,AF +3653472792,3653472799,NL +3653472800,3653472807,AF 3653472808,3653472815,NL 3653472816,3653472823,AF 3653472824,3653472831,NL -3653472832,3653472915,AF +3653472832,3653472871,AF +3653472872,3653472879,NL +3653472880,3653472915,AF 3653472916,3653472919,NL 3653472920,3653472983,AF 3653472984,3653472999,NL @@ -136455,7 +149446,6 @@ 3653586944,3653591039,DE 3653591040,3653595135,LU 3653595136,3653599231,RU -3653599232,3653603327,BG 3653603328,3653607423,CZ 3653607424,3653611519,PL 3653611520,3653615615,HU @@ -136465,15 +149455,18 @@ 3653623552,3653623807,US 3653623808,3653636095,RU 3653636096,3653640191,NL -3653640192,3653644031,GB -3653644032,3653644047,BE -3653644048,3653644271,GB -3653644272,3653644275,BE -3653644276,3653648383,GB +3653640192,3653648383,GB 3653648384,3653652479,SE 3653652480,3653656575,RU 3653656576,3653660671,GB 3653660672,3653664767,CZ +3653664768,3653664895,DE +3653664896,3653664911,FR +3653664912,3653665023,NL +3653665024,3653665071,DE +3653665072,3653666815,NL +3653666816,3653667327,DE +3653667328,3653668863,NL 3653668864,3653672959,SE 3653672960,3653681151,RU 3653681152,3653685247,ES @@ -136500,13 +149493,11 @@ 3653722112,3653730303,LV 3653730304,3653734399,BA 3653734400,3653738495,KE -3653738496,3653740295,GB -3653740296,3653740303,US -3653740304,3653744895,GB -3653744896,3653744959,AE -3653744960,3653746687,GB +3653738496,3653746687,GB 3653746688,3653750783,DE -3653750784,3653754879,RU +3653750784,3653753087,RU +3653753088,3653753215,VG +3653753216,3653754879,RU 3653754880,3653758975,UA 3653758976,3653763071,RU 3653763072,3654025215,IT @@ -136525,11 +149516,16 @@ 3654062080,3654066027,GB 3654066028,3654066031,MC 3654066032,3654287359,GB -3654287360,3654607871,SE +3654287360,3654607103,SE +3654607104,3654607359,DE +3654607360,3654607871,SE 3654607872,3654608127,NO -3654608128,3654608895,SE +3654608128,3654608383,SE +3654608384,3654608895,PL 3654608896,3654609919,NO -3654609920,3654613007,SE +3654609920,3654610431,SE +3654610432,3654610943,FR +3654610944,3654613007,SE 3654613008,3654613015,RU 3654613016,3654613055,SE 3654613056,3654613071,RU @@ -136552,10 +149548,7 @@ 3656229704,3656229711,ES 3656229712,3656233999,DE 3656234000,3656234007,NL -3656234008,3656236527,DE -3656236528,3656236535,GB -3656236536,3656236543,US -3656236544,3656633487,DE +3656234008,3656633487,DE 3656633488,3656633495,GB 3656633496,3656633503,US 3656633504,3656650583,DE @@ -136591,7 +149584,6 @@ 3663990784,3663991295,HK 3663991296,3663991551,MY 3663991552,3663991807,AU -3663991808,3663992063,JP 3663992064,3663992319,NZ 3663992320,3663992575,MY 3663992576,3663993599,NZ @@ -136627,6 +149619,15 @@ 3664005120,3664005887,ID 3664005888,3664006143,MY 3664006144,3664006399,AU +3664006400,3664006655,PF +3664006656,3664006911,AU +3664006912,3664007167,NZ +3664007168,3664008191,AU +3664008192,3664008447,MN +3664008448,3664008703,PK +3664008704,3664008959,MY +3664008960,3664009215,AU +3664009216,3664052223,CN 3664052224,3664084991,NZ 3664084992,3664117759,KR 3664117760,3664248831,HK @@ -136644,7 +149645,6 @@ 3669614592,3669616639,NZ 3669616640,3669618687,AU 3669618688,3669620735,BD -3669620736,3669622783,JP 3669622784,3669688319,SG 3669688320,3669753855,TW 3669753856,3669822719,HK @@ -136720,6 +149720,7 @@ 3701014528,3701080063,JP 3701080064,3701211135,CN 3701211136,3701252095,JP +3701252096,3701256191,NC 3701256192,3701258239,SG 3701258240,3701260287,IN 3701260288,3701293055,JP @@ -136765,6 +149766,7 @@ 3715655680,3715657727,IN 3715657728,3715661823,SG 3715661824,3715672063,AU +3715672064,3715674111,JP 3715674112,3715678207,HK 3715678208,3715694591,PK 3715694592,3715710975,VN @@ -136784,7 +149786,7 @@ 3716431872,3716440063,KR 3716440064,3716444159,JP 3716444160,3716446207,PK -3716448256,3716464639,JP +3716446208,3716464639,JP 3716464640,3716481023,ID 3716481024,3716489215,VN 3716489216,3716493311,MY @@ -136858,11 +149860,13 @@ 3742973952,3742982143,SG 3742982144,3742986239,ID 3742986240,3742988287,AU +3742988288,3742990335,VU 3742990336,3743006719,JP 3743006720,3743014911,TH 3743014912,3743016959,AU +3743016960,3743019007,SG 3743019008,3743022079,MY -3743022080,3743023103,AP +3743022080,3743023103,SG 3743023104,3743027199,TW 3743027200,3743031295,SG 3743031296,3743035391,IN @@ -136870,38 +149874,44 @@ 3743039488,3743055871,TW 3743055872,3743088639,KR 3743088640,3743096831,AU +3743096832,3743105023,TW 3743105024,3743106047,AU -3743107072,3743109119,JP +3743106048,3743109119,JP 3743109120,3743113215,BD 3743113216,3743115263,AU +3743115264,3743117311,VN 3743117312,3743118335,BD +3743118336,3743119359,JP 3743119360,3743120383,IN 3743120384,3743121407,JP 3743121408,3743125503,MY 3743125504,3743129599,ID 3743129600,3743130623,HK -3743130624,3743131647,AP -3743131648,3743133695,SG +3743130624,3743133695,SG 3743133696,3743134719,AU +3743134720,3743135743,JP 3743135744,3743136767,CN 3743136768,3743137791,MY 3743137792,3743154175,TH 3743154176,3743186943,MY 3743186944,3743219711,KR 3743219712,3743252479,JP -3743252480,3743260671,NC +3743252480,3743264767,NC +3743264768,3743268863,JP 3743268864,3743277055,IN 3743277056,3743281151,PK 3743281152,3743282175,AU +3743282176,3743283199,JP 3743283200,3743284223,HK 3743284224,3743285247,PK 3743285248,3743416319,IN 3743416320,3745513471,KR 3745513472,3749838847,CN -3749838848,3749839103,AP +3749838848,3749839871,SG 3749839872,3749840895,IN 3749840896,3749841919,PH -3749841920,3749847039,AU +3749841920,3749846015,AU +3749846016,3749847039,IN 3749847040,3749855231,HK 3749855232,3749969919,KR 3749969920,3750232063,JP @@ -136912,9 +149922,11 @@ 3752133632,3752134655,ID 3752134656,3752136703,TW 3752136704,3752137727,NZ +3752137728,3752138751,JP 3752138752,3752140799,IN 3752140800,3752148991,JP 3752148992,3752153087,NZ +3752153088,3752157183,JP 3752157184,3752165375,AU 3752165376,3752198143,KR 3752198144,3752329215,CN @@ -136939,16 +149951,21 @@ 3755978752,3755986943,CN 3755986944,3755988991,JP 3755988992,3755990015,HK +3755990016,3755991039,SG 3755991040,3755999231,JP 3755999232,3757047807,IN 3757047808,3757834239,CN 3757834240,3757867007,AU +3757867008,3757899775,CN 3757899776,3757965311,KR 3757965312,3758063615,CN 3758063616,3758079999,HK 3758080000,3758088191,KR 3758088192,3758090239,ID 3758090240,3758091263,AU +3758091264,3758092287,CN 3758092288,3758093311,HK 3758093312,3758094335,IN 3758094336,3758095359,AU +3758095360,3758095871,CN +3758095872,3758096127,SG diff --git a/src/or/Makefile.am b/src/or/Makefile.am index b6637ba631..344e63ff87 100644 --- a/src/or/Makefile.am +++ b/src/or/Makefile.am @@ -50,9 +50,10 @@ libtor_a_SOURCES = \ router.c \ routerlist.c \ routerparse.c \ + status.c \ $(evdns_source) \ $(tor_platform_source) \ - config_codedigest.c + config_codedigest.c #libtor_a_LIBADD = ../common/libor.a ../common/libor-crypto.a \ # ../common/libor-event.a @@ -68,17 +69,12 @@ AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \ # This seems to matter nowhere but on windows, but I assure you that it # matters a lot there, and is quite hard to debug if you forget to do it. -if USE_BUFFEREVENTS -levent_openssl_lib = -levent_openssl -else -levent_openssl_lib = -endif tor_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ @TOR_LDFLAGS_libevent@ tor_LDADD = ./libtor.a ../common/libor.a ../common/libor-crypto.a \ ../common/libor-event.a \ @TOR_ZLIB_LIBS@ -lm @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \ - @TOR_LIB_WS32@ @TOR_LIB_GDI@ $(levent_openssl_lib) + @TOR_LIB_WS32@ @TOR_LIB_GDI@ noinst_HEADERS = \ buffers.h \ @@ -119,7 +115,8 @@ noinst_HEADERS = \ router.h \ routerlist.h \ routerparse.h \ - micro-revision.i + status.h \ + micro-revision.i config_codedigest.o: or_sha1.i @@ -140,11 +137,13 @@ micro-revision.i: FORCE mv micro-revision.tmp micro-revision.i; \ fi; true -or_sha1.i: $(tor_SOURCES) +or_sha1.i: $(tor_SOURCES) $(libtor_a_SOURCES) if test "@SHA1SUM@" != none; then \ - @SHA1SUM@ $(tor_SOURCES) | @SED@ -n 's/^\(.*\)$$/"\1\\n"/p' > or_sha1.i; \ + @SHA1SUM@ $(tor_SOURCES) $(libtor_a_SOURCES) | \ + @SED@ -n 's/^\(.*\)$$/"\1\\n"/p' > or_sha1.i; \ elif test "@OPENSSL@" != none; then \ - @OPENSSL@ sha1 $(tor_SOURCES) | @SED@ -n 's/SHA1(\(.*\))= \(.*\)/"\2 \1\\n"/p' > or_sha1.i; \ + @OPENSSL@ sha1 $(tor_SOURCES) $(libtor_a_SOURCES) | \ + @SED@ -n 's/SHA1(\(.*\))= \(.*\)/"\2 \1\\n"/p' > or_sha1.i; \ else \ rm or_sha1.i; \ touch or_sha1.i; \ diff --git a/src/or/buffers.c b/src/or/buffers.c index b7567bf24c..256b507729 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -68,8 +68,8 @@ typedef struct chunk_t { size_t datalen; /**< The number of bytes stored in this chunk */ size_t memlen; /**< The number of usable bytes of storage in <b>mem</b>. */ char *data; /**< A pointer to the first byte of data stored in <b>mem</b>. */ - char mem[1]; /**< The actual memory used for storage in this chunk. May be - * more than one byte long. */ + char mem[FLEXIBLE_ARRAY_MEMBER]; /**< The actual memory used for storage in + * this chunk. */ } chunk_t; #define CHUNK_HEADER_LEN STRUCT_OFFSET(chunk_t, mem[0]) @@ -588,7 +588,7 @@ buf_add_chunk_with_capacity(buf_t *buf, size_t capacity, int capped) * *<b>reached_eof</b> to 1. Return -1 on error, 0 on eof or blocking, * and the number of bytes read otherwise. */ static INLINE int -read_to_chunk(buf_t *buf, chunk_t *chunk, int fd, size_t at_most, +read_to_chunk(buf_t *buf, chunk_t *chunk, tor_socket_t fd, size_t at_most, int *reached_eof, int *socket_error) { ssize_t read_result; @@ -643,10 +643,14 @@ read_to_chunk_tls(buf_t *buf, chunk_t *chunk, tor_tls_t *tls, * (because of EOF), set *<b>reached_eof</b> to 1 and return 0. Return -1 on * error; else return the number of bytes read. */ +/* XXXX023 indicate "read blocked" somehow? */ int -read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof, +read_to_buf(tor_socket_t s, size_t at_most, buf_t *buf, int *reached_eof, int *socket_error) { + /* XXXX023 It's stupid to overload the return values for these functions: + * "error status" and "number of bytes read" are not mutually exclusive. + */ int r = 0; size_t total_read = 0; @@ -740,7 +744,7 @@ read_to_buf_tls(tor_tls_t *tls, size_t at_most, buf_t *buf) * written on success, 0 on blocking, -1 on failure. */ static INLINE int -flush_chunk(int s, buf_t *buf, chunk_t *chunk, size_t sz, +flush_chunk(tor_socket_t s, buf_t *buf, chunk_t *chunk, size_t sz, size_t *buf_flushlen) { ssize_t write_result; @@ -812,8 +816,11 @@ flush_chunk_tls(tor_tls_t *tls, buf_t *buf, chunk_t *chunk, * -1 on failure. Return 0 if write() would block. */ int -flush_buf(int s, buf_t *buf, size_t sz, size_t *buf_flushlen) +flush_buf(tor_socket_t s, buf_t *buf, size_t sz, size_t *buf_flushlen) { + /* XXXX023 It's stupid to overload the return values for these functions: + * "error status" and "number of bytes flushed" are not mutually exclusive. + */ int r; size_t flushed = 0; tor_assert(buf_flushlen); @@ -1003,7 +1010,7 @@ fetch_var_cell_from_buf(buf_t *buf, var_cell_t **out, int linkproto) result->circ_id = ntohs(get_uint16(hdr)); buf_remove_from_front(buf, VAR_CELL_HEADER_SIZE); - peek_from_buf(result->payload, length, buf); + peek_from_buf((char*) result->payload, length, buf); buf_remove_from_front(buf, length); check(); @@ -1452,7 +1459,7 @@ log_unsafe_socks_warning(int socks_protocol, const char *address, { static ratelim_t socks_ratelim = RATELIM_INIT(SOCKS_WARN_INTERVAL); - or_options_t *options = get_options(); + const or_options_t *options = get_options(); char *m = NULL; if (! options->WarnUnsafeSocks) return; @@ -1475,6 +1482,10 @@ log_unsafe_socks_warning(int socks_protocol, const char *address, socks_protocol, address, (int)port); } +/** Do not attempt to parse socks messages longer than this. This value is + * actually significantly higher than the longest possible socks message. */ +#define MAX_SOCKS_MESSAGE_LEN 512 + /** Return a new socks_request_t. */ socks_request_t * socks_request_new(void) @@ -2022,7 +2033,7 @@ fetch_from_buf_socks_client(buf_t *buf, int state, char **reason) if (buf->datalen < 2) return 0; - buf_pullup(buf, 128, 0); + buf_pullup(buf, MAX_SOCKS_MESSAGE_LEN, 0); tor_assert(buf->head && buf->head->datalen >= 2); r = parse_socks_client((uint8_t*)buf->head->data, buf->head->datalen, @@ -2046,13 +2057,17 @@ fetch_from_evbuffer_socks_client(struct evbuffer *buf, int state, size_t datalen; int r; - data = evbuffer_pullup(buf, 128); /* Make sure we have at least 128 - * contiguous bytes if possible. */ - datalen = evbuffer_get_contiguous_space(buf); + /* Linearize the SOCKS response in the buffer, up to 128 bytes. + * (parse_socks_client shouldn't need to see anything beyond that.) */ + datalen = evbuffer_get_length(buf); + if (datalen > MAX_SOCKS_MESSAGE_LEN) + datalen = MAX_SOCKS_MESSAGE_LEN; + data = evbuffer_pullup(buf, datalen); + r = parse_socks_client(data, datalen, state, reason, &drain); if (drain > 0) evbuffer_drain(buf, drain); - else + else if (drain < 0) evbuffer_drain(buf, evbuffer_get_length(buf)); return r; @@ -2317,7 +2332,6 @@ write_to_evbuffer_zlib(struct evbuffer *buf, tor_zlib_state_t *state, int over = 0, n; struct evbuffer_iovec vec[1]; do { - int need_new_chunk = 0; { size_t cap = data_len / 4; if (cap < 128) @@ -2346,7 +2360,6 @@ write_to_evbuffer_zlib(struct evbuffer *buf, tor_zlib_state_t *state, if (avail) { /* Zlib says we need more room (ZLIB_BUF_FULL). Start a new chunk * automatically, whether were going to or not. */ - need_new_chunk = 1; } break; } diff --git a/src/or/buffers.h b/src/or/buffers.h index fad509e4a1..b0161b9c2c 100644 --- a/src/or/buffers.h +++ b/src/or/buffers.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -24,11 +24,11 @@ size_t buf_datalen(const buf_t *buf); size_t buf_allocation(const buf_t *buf); size_t buf_slack(const buf_t *buf); -int read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof, +int read_to_buf(tor_socket_t s, size_t at_most, buf_t *buf, int *reached_eof, int *socket_error); int read_to_buf_tls(tor_tls_t *tls, size_t at_most, buf_t *buf); -int flush_buf(int s, buf_t *buf, size_t sz, size_t *buf_flushlen); +int flush_buf(tor_socket_t s, buf_t *buf, size_t sz, size_t *buf_flushlen); int flush_buf_tls(tor_tls_t *tls, buf_t *buf, size_t sz, size_t *buf_flushlen); int write_to_buf(const char *string, size_t string_len, buf_t *buf); diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 1741548130..4397aa5c13 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -43,11 +43,12 @@ /********* START VARIABLES **********/ /** Global list of circuit build times */ -// FIXME: Add this as a member for entry_guard_t instead of global? +// XXXX023: Add this as a member for entry_guard_t instead of global? // Then we could do per-guard statistics, as guards are likely to // vary in their own latency. The downside of this is that guards // can change frequently, so we'd be building a lot more circuits // most likely. +/* XXXX023 Make this static; add accessor functions. */ circuit_build_times_t circ_times; /** A global list of all circuits at this hop. */ @@ -78,6 +79,28 @@ typedef struct { * at which we last failed to connect to it. */ } entry_guard_t; +/** Information about a configured bridge. Currently this just matches the + * ones in the torrc file, but one day we may be able to learn about new + * bridges on our own, and remember them in the state file. */ +typedef struct { + /** Address of the bridge. */ + tor_addr_t addr; + /** TLS port for the bridge. */ + uint16_t port; + /** Boolean: We are re-parsing our bridge list, and we are going to remove + * this one if we don't find it in the list of configured bridges. */ + unsigned marked_for_removal : 1; + /** Expected identity digest, or all zero bytes if we don't know what the + * digest should be. */ + char identity[DIGEST_LEN]; + + /** Name of pluggable transport protocol taken from its config line. */ + char *transport_name; + + /** When should we next try to fetch a descriptor for this bridge? */ + download_status_t fetch_status; +} bridge_info_t; + /** A list of our chosen entry guards. */ static smartlist_t *entry_guards = NULL; /** A value of 1 means that the entry_guards list has changed @@ -100,6 +123,19 @@ static int onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice); static void entry_guards_changed(void); +static const transport_t *transport_get_by_name(const char *name); +static void transport_free(transport_t *transport); +static void bridge_free(bridge_info_t *bridge); + +/** + * This function decides if CBT learning should be disabled. It returns + * true if one or more of the following four conditions are met: + * + * 1. If the cbtdisabled consensus parameter is set. + * 2. If the torrc option LearnCircuitBuildTimeout is false. + * 3. If we are a directory authority + * 4. If we fail to write circuit build time history to our state file. + */ static int circuit_build_times_disabled(void) { @@ -107,10 +143,10 @@ circuit_build_times_disabled(void) return 0; } else { int consensus_disabled = networkstatus_get_param(NULL, "cbtdisabled", - 0); + 0, 0, 1); int config_disabled = !get_options()->LearnCircuitBuildTimeout; int dirauth_disabled = get_options()->AuthoritativeDir; - int state_disabled = (get_or_state()->LastWritten == -1); + int state_disabled = did_last_state_file_write_fail() ? 1 : 0; if (consensus_disabled || config_disabled || dirauth_disabled || state_disabled) { @@ -126,27 +162,54 @@ circuit_build_times_disabled(void) } } +/** + * Retrieve and bounds-check the cbtmaxtimeouts consensus paramter. + * + * Effect: When this many timeouts happen in the last 'cbtrecentcount' + * circuit attempts, the client should discard all of its history and + * begin learning a fresh timeout value. + */ static int32_t circuit_build_times_max_timeouts(void) { - int32_t num = networkstatus_get_param(NULL, "cbtmaxtimeouts", - CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT); - return num; + return networkstatus_get_param(NULL, "cbtmaxtimeouts", + CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT, + CBT_MIN_MAX_RECENT_TIMEOUT_COUNT, + CBT_MAX_MAX_RECENT_TIMEOUT_COUNT); } +/** + * Retrieve and bounds-check the cbtnummodes consensus paramter. + * + * Effect: This value governs how many modes to use in the weighted + * average calculation of Pareto parameter Xm. A value of 3 introduces + * some bias (2-5% of CDF) under ideal conditions, but allows for better + * performance in the event that a client chooses guard nodes of radically + * different performance characteristics. + */ static int32_t circuit_build_times_default_num_xm_modes(void) { int32_t num = networkstatus_get_param(NULL, "cbtnummodes", - CBT_DEFAULT_NUM_XM_MODES); + CBT_DEFAULT_NUM_XM_MODES, + CBT_MIN_NUM_XM_MODES, + CBT_MAX_NUM_XM_MODES); return num; } +/** + * Retrieve and bounds-check the cbtmincircs consensus paramter. + * + * Effect: This is the minimum number of circuits to build before + * computing a timeout. + */ static int32_t circuit_build_times_min_circs_to_observe(void) { int32_t num = networkstatus_get_param(NULL, "cbtmincircs", - CBT_DEFAULT_MIN_CIRCUITS_TO_OBSERVE); + CBT_DEFAULT_MIN_CIRCUITS_TO_OBSERVE, + CBT_MIN_MIN_CIRCUITS_TO_OBSERVE, + CBT_MAX_MIN_CIRCUITS_TO_OBSERVE); return num; } @@ -158,53 +221,126 @@ circuit_build_times_enough_to_compute(circuit_build_times_t *cbt) return cbt->total_build_times >= circuit_build_times_min_circs_to_observe(); } +/** + * Retrieve and bounds-check the cbtquantile consensus paramter. + * + * Effect: This is the position on the quantile curve to use to set the + * timeout value. It is a percent (10-99). + */ double circuit_build_times_quantile_cutoff(void) { int32_t num = networkstatus_get_param(NULL, "cbtquantile", - CBT_DEFAULT_QUANTILE_CUTOFF); + CBT_DEFAULT_QUANTILE_CUTOFF, + CBT_MIN_QUANTILE_CUTOFF, + CBT_MAX_QUANTILE_CUTOFF); return num/100.0; } +int +circuit_build_times_get_bw_scale(networkstatus_t *ns) +{ + return networkstatus_get_param(ns, "bwweightscale", + BW_WEIGHT_SCALE, + BW_MIN_WEIGHT_SCALE, + BW_MAX_WEIGHT_SCALE); +} + +/** + * Retrieve and bounds-check the cbtclosequantile consensus paramter. + * + * Effect: This is the position on the quantile curve to use to set the + * timeout value to use to actually close circuits. It is a percent + * (0-99). + */ static double circuit_build_times_close_quantile(void) { - int32_t num = networkstatus_get_param(NULL, "cbtclosequantile", - CBT_DEFAULT_CLOSE_QUANTILE); - - return num/100.0; + int32_t param; + /* Cast is safe - circuit_build_times_quantile_cutoff() is capped */ + int32_t min = (int)tor_lround(100*circuit_build_times_quantile_cutoff()); + param = networkstatus_get_param(NULL, "cbtclosequantile", + CBT_DEFAULT_CLOSE_QUANTILE, + CBT_MIN_CLOSE_QUANTILE, + CBT_MAX_CLOSE_QUANTILE); + if (param < min) { + log_warn(LD_DIR, "Consensus parameter cbtclosequantile is " + "too small, raising to %d", min); + param = min; + } + return param / 100.0; } +/** + * Retrieve and bounds-check the cbttestfreq consensus paramter. + * + * Effect: Describes how often in seconds to build a test circuit to + * gather timeout values. Only applies if less than 'cbtmincircs' + * have been recorded. + */ static int32_t circuit_build_times_test_frequency(void) { int32_t num = networkstatus_get_param(NULL, "cbttestfreq", - CBT_DEFAULT_TEST_FREQUENCY); + CBT_DEFAULT_TEST_FREQUENCY, + CBT_MIN_TEST_FREQUENCY, + CBT_MAX_TEST_FREQUENCY); return num; } +/** + * Retrieve and bounds-check the cbtmintimeout consensus parameter. + * + * Effect: This is the minimum allowed timeout value in milliseconds. + * The minimum is to prevent rounding to 0 (we only check once + * per second). + */ static int32_t circuit_build_times_min_timeout(void) { int32_t num = networkstatus_get_param(NULL, "cbtmintimeout", - CBT_DEFAULT_TIMEOUT_MIN_VALUE); + CBT_DEFAULT_TIMEOUT_MIN_VALUE, + CBT_MIN_TIMEOUT_MIN_VALUE, + CBT_MAX_TIMEOUT_MIN_VALUE); return num; } +/** + * Retrieve and bounds-check the cbtinitialtimeout consensus paramter. + * + * Effect: This is the timeout value to use before computing a timeout, + * in milliseconds. + */ int32_t circuit_build_times_initial_timeout(void) { - int32_t num = networkstatus_get_param(NULL, "cbtinitialtimeout", - CBT_DEFAULT_TIMEOUT_INITIAL_VALUE); - return num; + int32_t min = circuit_build_times_min_timeout(); + int32_t param = networkstatus_get_param(NULL, "cbtinitialtimeout", + CBT_DEFAULT_TIMEOUT_INITIAL_VALUE, + CBT_MIN_TIMEOUT_INITIAL_VALUE, + CBT_MAX_TIMEOUT_INITIAL_VALUE); + if (param < min) { + log_warn(LD_DIR, "Consensus parameter cbtinitialtimeout is too small, " + "raising to %d", min); + param = min; + } + return param; } +/** + * Retrieve and bounds-check the cbtrecentcount consensus paramter. + * + * Effect: This is the number of circuit build times to keep track of + * for deciding if we hit cbtmaxtimeouts and need to reset our state + * and learn a new timeout. + */ static int32_t -circuit_build_times_recent_circuit_count(void) +circuit_build_times_recent_circuit_count(networkstatus_t *ns) { - int32_t num = networkstatus_get_param(NULL, "cbtrecentcount", - CBT_DEFAULT_RECENT_CIRCUITS); - return num; + return networkstatus_get_param(ns, "cbtrecentcount", + CBT_DEFAULT_RECENT_CIRCUITS, + CBT_MIN_RECENT_CIRCUITS, + CBT_MAX_RECENT_CIRCUITS); } /** @@ -217,13 +353,13 @@ void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, networkstatus_t *ns) { - int32_t num = networkstatus_get_param(ns, "cbtrecentcount", - CBT_DEFAULT_RECENT_CIRCUITS); + int32_t num = circuit_build_times_recent_circuit_count(ns); if (num > 0 && num != cbt->liveness.num_recent_circs) { int8_t *recent_circs; - log_notice(LD_CIRC, "Changing recent timeout size from %d to %d", - cbt->liveness.num_recent_circs, num); + log_notice(LD_CIRC, "The Tor Directory Consensus has changed how many " + "circuits we must track to detect network failures from %d " + "to %d.", cbt->liveness.num_recent_circs, num); tor_assert(cbt->liveness.timeouts_after_firsthop); @@ -308,7 +444,8 @@ void circuit_build_times_init(circuit_build_times_t *cbt) { memset(cbt, 0, sizeof(*cbt)); - cbt->liveness.num_recent_circs = circuit_build_times_recent_circuit_count(); + cbt->liveness.num_recent_circs = + circuit_build_times_recent_circuit_count(NULL); cbt->liveness.timeouts_after_firsthop = tor_malloc_zero(sizeof(int8_t)* cbt->liveness.num_recent_circs); cbt->close_ms = cbt->timeout_ms = circuit_build_times_get_initial_timeout(); @@ -348,7 +485,7 @@ circuit_build_times_rewind_history(circuit_build_times_t *cbt, int n) * Add a new build time value <b>time</b> to the set of build times. Time * units are milliseconds. * - * circuit_build_times <b>cbt</a> is a circular array, so loop around when + * circuit_build_times <b>cbt</b> is a circular array, so loop around when * array is full. */ int @@ -449,7 +586,9 @@ circuit_build_times_create_histogram(circuit_build_times_t *cbt, * Return the Pareto start-of-curve parameter Xm. * * Because we are not a true Pareto curve, we compute this as the - * weighted average of the N=3 most frequent build time bins. + * weighted average of the N most frequent build time bins. N is either + * 1 if we don't have enough circuit build time data collected, or + * determined by the consensus parameter cbtnummodes (default 3). */ static build_time_t circuit_build_times_get_xm(circuit_build_times_t *cbt) @@ -462,6 +601,9 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt) int n=0; int num_modes = circuit_build_times_default_num_xm_modes(); + tor_assert(nbins > 0); + tor_assert(num_modes > 0); + // Only use one mode if < 1000 buildtimes. Not enough data // for multiple. if (cbt->total_build_times < CBT_NCIRCUITS_TO_OBSERVE) @@ -469,6 +611,7 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt) nth_max_bin = (build_time_t*)tor_malloc_zero(num_modes*sizeof(build_time_t)); + /* Determine the N most common build times */ for (i = 0; i < nbins; i++) { if (histogram[i] >= histogram[nth_max_bin[0]]) { nth_max_bin[0] = i; @@ -490,6 +633,10 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt) histogram[nth_max_bin[n]]); } + /* The following assert is safe, because we don't get called when we + * haven't observed at least CBT_MIN_MIN_CIRCUITS_TO_OBSERVE circuits. */ + tor_assert(bin_counts > 0); + ret /= bin_counts; tor_free(histogram); tor_free(nth_max_bin); @@ -546,17 +693,27 @@ circuit_build_times_update_state(circuit_build_times_t *cbt, /** * Shuffle the build times array. * - * Stolen from http://en.wikipedia.org/wiki/Fisher\u2013Yates_shuffle + * Adapted from http://en.wikipedia.org/wiki/Fisher-Yates_shuffle */ static void circuit_build_times_shuffle_and_store_array(circuit_build_times_t *cbt, build_time_t *raw_times, - int num_times) + uint32_t num_times) { - int n = num_times; + uint32_t n = num_times; if (num_times > CBT_NCIRCUITS_TO_OBSERVE) { - log_notice(LD_CIRC, "Decreasing circuit_build_times size from %d to %d", - num_times, CBT_NCIRCUITS_TO_OBSERVE); + log_notice(LD_CIRC, "The number of circuit times that this Tor version " + "uses to calculate build times is less than the number stored " + "in your state file. Decreasing the circuit time history from " + "%lu to %d.", (unsigned long)num_times, + CBT_NCIRCUITS_TO_OBSERVE); + } + + if (n > INT_MAX-1) { + log_warn(LD_CIRC, "For some insane reasons, you had %lu circuit build " + "observations in your state file. That's far too many; probably " + "there's a bug here.", (unsigned long)n); + n = INT_MAX-1; } /* This code can only be run on a compact array */ @@ -1037,7 +1194,7 @@ circuit_build_times_network_close(circuit_build_times_t *cbt, if (cbt->liveness.nonlive_timeouts == 1) { log_notice(LD_CIRC, "Tor has not observed any network activity for the past %d " - "seconds. Disabling circuit build timeout code.", + "seconds. Disabling circuit build timeout recording.", (int)(now - cbt->liveness.network_last_live)); } else { log_info(LD_CIRC, @@ -1121,7 +1278,7 @@ circuit_build_times_network_check_changed(circuit_build_times_t *cbt) control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_RESET); log_notice(LD_CIRC, - "Network connection speed appears to have changed. Resetting " + "Your network connection speed appears to have changed. Resetting " "timeout to %lds after %d timeouts and %d buildtimes.", tor_lround(cbt->timeout_ms/1000), timeout_count, total_build_times); @@ -1259,7 +1416,7 @@ circuit_build_times_set_timeout_worker(circuit_build_times_t *cbt) } if (max_time < INT32_MAX/2 && cbt->close_ms > 2*max_time) { - log_notice(LD_CIRC, + log_info(LD_CIRC, "Circuit build measurement period of %dms is more than twice " "the maximum build time we have ever observed. Capping it to " "%dms.", (int)cbt->close_ms, 2*max_time); @@ -1371,7 +1528,7 @@ get_unique_circ_id_by_conn(or_connection_t *conn) } /** If <b>verbose</b> is false, allocate and return a comma-separated list of - * the currently built elements of circuit_t. If <b>verbose</b> is true, also + * the currently built elements of <b>circ</b>. If <b>verbose</b> is true, also * list information about link status in a more verbose format using spaces. * If <b>verbose_names</b> is false, give nicknames for Named routers and hex * digests for others; if <b>verbose_names</b> is true, use $DIGEST=Name style @@ -1394,7 +1551,7 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names) circ->build_state->is_internal ? "internal" : "exit", circ->build_state->need_uptime ? " (high-uptime)" : "", circ->build_state->desired_path_len, - circ->_base.state == CIRCUIT_STATE_OPEN ? "" : ", exit ", + circ->_base.state == CIRCUIT_STATE_OPEN ? "" : ", last hop ", circ->_base.state == CIRCUIT_STATE_OPEN ? "" : (nickname?nickname:"*unnamed*")); smartlist_add(elements, cp); @@ -1457,7 +1614,7 @@ circuit_list_path_impl(origin_circuit_t *circ, int verbose, int verbose_names) } /** If <b>verbose</b> is false, allocate and return a comma-separated - * list of the currently built elements of circuit_t. If + * list of the currently built elements of <b>circ</b>. If * <b>verbose</b> is true, also list information about link status in * a more verbose format using spaces. */ @@ -1468,7 +1625,7 @@ circuit_list_path(origin_circuit_t *circ, int verbose) } /** Allocate and return a comma-separated list of the currently built elements - * of circuit_t, giving each as a verbose nickname. + * of <b>circ</b>, giving each as a verbose nickname. */ char * circuit_list_path_for_controller(origin_circuit_t *circ) @@ -1477,7 +1634,7 @@ circuit_list_path_for_controller(origin_circuit_t *circ) } /** Log, at severity <b>severity</b>, the nicknames of each router in - * circ's cpath. Also log the length of the cpath, and the intended + * <b>circ</b>'s cpath. Also log the length of the cpath, and the intended * exit point. */ void @@ -1489,7 +1646,7 @@ circuit_log_path(int severity, unsigned int domain, origin_circuit_t *circ) } /** Tell the rep(utation)hist(ory) module about the status of the links - * in circ. Hops that have become OPEN are marked as successfully + * in <b>circ</b>. Hops that have become OPEN are marked as successfully * extended; the _first_ hop that isn't open (if any) is marked as * unable to extend. */ @@ -1625,10 +1782,9 @@ circuit_handle_first_hop(origin_circuit_t *circ) if (!n_conn) { /* not currently connected in a useful way. */ - const char *name = strlen(firsthop->extend_info->nickname) ? - firsthop->extend_info->nickname : fmt_addr(&firsthop->extend_info->addr); - log_info(LD_CIRC, "Next router is %s: %s ", - safe_str_client(name), msg?msg:"???"); + log_info(LD_CIRC, "Next router is %s: %s", + safe_str_client(extend_info_describe(firsthop->extend_info)), + msg?msg:"???"); circ->_base.n_hop = extend_info_dup(firsthop->extend_info); if (should_launch) { @@ -1695,7 +1851,7 @@ circuit_n_conn_done(or_connection_t *or_conn, int status) continue; } else { /* We expected a key. See if it's the right one. */ - if (memcmp(or_conn->identity_digest, + if (tor_memneq(or_conn->identity_digest, circ->n_hop->identity_digest, DIGEST_LEN)) continue; } @@ -1818,7 +1974,7 @@ inform_testing_reachability(void) static INLINE int should_use_create_fast_for_circuit(origin_circuit_t *circ) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); tor_assert(circ->cpath); tor_assert(circ->cpath->extend_info); @@ -1897,7 +2053,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) * and a DH operation. */ cell_type = CELL_CREATE_FAST; memset(payload, 0, sizeof(payload)); - crypto_rand(circ->cpath->fast_handshake_state, + crypto_rand((char*) circ->cpath->fast_handshake_state, sizeof(circ->cpath->fast_handshake_state)); memcpy(payload, circ->cpath->fast_handshake_state, sizeof(circ->cpath->fast_handshake_state)); @@ -1911,7 +2067,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_BUILDING); log_info(LD_CIRC,"First hop: finished sending %s cell to '%s'", fast ? "CREATE_FAST" : "CREATE", - node ? node_get_nickname(node) : "<unnamed>"); + node ? node_describe(node) : "<unnamed>"); } else { tor_assert(circ->cpath->state == CPATH_STATE_OPEN); tor_assert(circ->_base.state == CIRCUIT_STATE_BUILDING); @@ -1933,8 +2089,9 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) */ if (timediff < 0 || timediff > 2*circ_times.close_ms+1000) { log_notice(LD_CIRC, "Strange value for circuit build time: %ldmsec. " - "Assuming clock jump. Purpose %d", timediff, - circ->_base.purpose); + "Assuming clock jump. Purpose %d (%s)", timediff, + circ->_base.purpose, + circuit_purpose_to_string(circ->_base.purpose)); } else if (!circuit_build_times_disabled()) { /* Only count circuit times if the network is live */ if (circuit_build_times_network_check_live(&circ_times)) { @@ -1952,7 +2109,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) if (circ->build_state->onehop_tunnel) control_event_bootstrap(BOOTSTRAP_STATUS_REQUESTING_STATUS, 0); if (!can_complete_circuit && !circ->build_state->onehop_tunnel) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); can_complete_circuit=1; /* FFFF Log a count of known routers here */ log_notice(LD_GENERAL, @@ -1960,6 +2117,7 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) "Looks like client functionality is working."); control_event_bootstrap(BOOTSTRAP_STATUS_DONE, 0); control_event_client_status(LOG_NOTICE, "CIRCUIT_ESTABLISHED"); + clear_broken_connection_map(1); if (server_mode(options) && !check_whether_orport_reachable()) { inform_testing_reachability(); consider_testing_reachability(1, 1); @@ -2076,8 +2234,9 @@ circuit_extend(cell_t *cell, circuit_t *circ) n_addr32 = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE)); n_port = ntohs(get_uint16(cell->payload+RELAY_HEADER_SIZE+4)); - onionskin = cell->payload+RELAY_HEADER_SIZE+4+2; - id_digest = cell->payload+RELAY_HEADER_SIZE+4+2+ONIONSKIN_CHALLENGE_LEN; + onionskin = (char*) cell->payload+RELAY_HEADER_SIZE+4+2; + id_digest = (char*) cell->payload+RELAY_HEADER_SIZE+4+2+ + ONIONSKIN_CHALLENGE_LEN; tor_addr_from_ipv4h(&n_addr, n_addr32); if (!n_port || !n_addr32) { @@ -2101,7 +2260,7 @@ circuit_extend(cell_t *cell, circuit_t *circ) /* Next, check if we're being asked to connect to the hop that the * extend cell came from. There isn't any reason for that, and it can * assist circular-path attacks. */ - if (!memcmp(id_digest, TO_OR_CIRCUIT(circ)->p_conn->identity_digest, + if (tor_memeq(id_digest, TO_OR_CIRCUIT(circ)->p_conn->identity_digest, DIGEST_LEN)) { log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Client asked me to extend back to the previous hop."); @@ -2215,7 +2374,7 @@ circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data, */ int circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type, - const char *reply) + const uint8_t *reply) { char keys[CPATH_KEY_MATERIAL_LEN]; crypt_path_t *hop; @@ -2232,7 +2391,7 @@ circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type, tor_assert(hop->state == CPATH_STATE_AWAITING_KEYS); if (reply_type == CELL_CREATED && hop->dh_handshake_state) { - if (onion_skin_client_handshake(hop->dh_handshake_state, reply, keys, + if (onion_skin_client_handshake(hop->dh_handshake_state, (char*)reply,keys, DIGEST_LEN*2+CIPHER_KEY_LEN*2) < 0) { log_warn(LD_CIRC,"onion_skin_client_handshake failed."); return -END_CIRC_REASON_TORPROTOCOL; @@ -2240,7 +2399,8 @@ circuit_finish_handshake(origin_circuit_t *circ, uint8_t reply_type, /* Remember hash of g^xy */ memcpy(hop->handshake_digest, reply+DH_KEY_LEN, DIGEST_LEN); } else if (reply_type == CELL_CREATED_FAST && !hop->dh_handshake_state) { - if (fast_client_handshake(hop->fast_handshake_state, reply, keys, + if (fast_client_handshake(hop->fast_handshake_state, reply, + (uint8_t*)keys, DIGEST_LEN*2+CIPHER_KEY_LEN*2) < 0) { log_warn(LD_CIRC,"fast_client_handshake failed."); return -END_CIRC_REASON_TORPROTOCOL; @@ -2517,7 +2677,7 @@ choose_good_exit_server_general(int need_uptime, int need_capacity) smartlist_t *connections; int best_support = -1; int n_best_support=0; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); const smartlist_t *the_nodes; const node_t *node=NULL; @@ -2552,22 +2712,30 @@ choose_good_exit_server_general(int need_uptime, int need_capacity) */ continue; } - if (!node_has_descriptor(node)) + if (!node_has_descriptor(node)) { + n_supported[i] = -1; continue; + } if (!node->is_running || node->is_bad_exit) { n_supported[i] = -1; continue; /* skip routers that are known to be down or bad exits */ } - if (node_is_unreliable(node, need_uptime, need_capacity, 0) && - (!options->ExitNodes || - !routerset_contains_node(options->ExitNodes, node))) { - /* FFFF Someday, differentiate between a routerset that names - * routers, and a routerset that names countries, and only do this - * check if they've asked for specific exit relays. Or if the country - * they ask for is rare. Or something. */ + if (routerset_contains_node(options->_ExcludeExitNodesUnion, node)) { + n_supported[i] = -1; + continue; /* user asked us not to use it, no matter what */ + } + if (options->ExitNodes && + !routerset_contains_node(options->ExitNodes, node)) { + n_supported[i] = -1; + continue; /* not one of our chosen exit nodes */ + } + + if (node_is_unreliable(node, need_uptime, need_capacity, 0)) { n_supported[i] = -1; - continue; /* skip routers that are not suitable, unless we have - * ExitNodes set, in which case we asked for it */ + continue; /* skip routers that are not suitable. Don't worry if + * this makes us reject all the possible routers: if so, + * we'll retry later in this function with need_update and + * need_capacity set to 0. */ } if (!(node->is_valid || options->_AllowInvalid & ALLOW_INVALID_EXIT)) { /* if it's invalid and we don't want it */ @@ -2592,7 +2760,7 @@ choose_good_exit_server_general(int need_uptime, int need_capacity) SMARTLIST_FOREACH_BEGIN(connections, connection_t *, conn) { if (!ap_stream_wants_exit_attention(conn)) continue; /* Skip everything but APs in CIRCUIT_WAIT */ - if (connection_ap_can_use_exit(TO_EDGE_CONN(conn), node, 1)) { + if (connection_ap_can_use_exit(TO_EDGE_CONN(conn), node)) { ++n_supported[i]; // log_fn(LOG_DEBUG,"%s is supported. n_supported[%d] now %d.", // router->nickname, i, n_supported[i]); @@ -2626,22 +2794,14 @@ choose_good_exit_server_general(int need_uptime, int need_capacity) /* If any routers definitely support any pending connections, choose one * at random. */ if (best_support > 0) { - smartlist_t *supporting = smartlist_create(), *use = smartlist_create(); + smartlist_t *supporting = smartlist_create(); SMARTLIST_FOREACH(the_nodes, const node_t *, node, { if (n_supported[node_sl_idx] == best_support) smartlist_add(supporting, (void*)node); }); - routersets_get_node_disjunction(use, supporting, options->ExitNodes, - options->_ExcludeExitNodesUnion, 1); - if (smartlist_len(use) == 0 && options->ExitNodes && - !options->StrictNodes) { /* give up on exitnodes and try again */ - routersets_get_node_disjunction(use, supporting, NULL, - options->_ExcludeExitNodesUnion, 1); - } - node = node_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT); - smartlist_free(use); + node = node_sl_choose_by_bandwidth(supporting, WEIGHT_FOR_EXIT); smartlist_free(supporting); } else { /* Either there are no pending connections, or no routers even seem to @@ -2649,7 +2809,7 @@ choose_good_exit_server_general(int need_uptime, int need_capacity) * at least one predicted exit port. */ int attempt; - smartlist_t *needed_ports, *supporting, *use; + smartlist_t *needed_ports, *supporting; if (best_support == -1) { if (need_uptime || need_capacity) { @@ -2666,14 +2826,11 @@ choose_good_exit_server_general(int need_uptime, int need_capacity) options->_ExcludeExitNodesUnion ? " or are Excluded" : ""); } supporting = smartlist_create(); - use = smartlist_create(); needed_ports = circuit_get_unhandled_ports(time(NULL)); for (attempt = 0; attempt < 2; attempt++) { /* try once to pick only from routers that satisfy a needed port, * then if there are none, pick from any that support exiting. */ SMARTLIST_FOREACH_BEGIN(the_nodes, const node_t *, node) { - if (!node_has_descriptor(node)) - continue; if (n_supported[node_sl_idx] != -1 && (attempt || node_handles_some_port(node, needed_ports))) { // log_fn(LOG_DEBUG,"Try %d: '%s' is a possibility.", @@ -2682,37 +2839,26 @@ choose_good_exit_server_general(int need_uptime, int need_capacity) } } SMARTLIST_FOREACH_END(node); - routersets_get_node_disjunction(use, supporting, options->ExitNodes, - options->_ExcludeExitNodesUnion, 1); - if (smartlist_len(use) == 0 && options->ExitNodes && - !options->StrictNodes) { /* give up on exitnodes and try again */ - routersets_get_node_disjunction(use, supporting, NULL, - options->_ExcludeExitNodesUnion, 1); - } - /* FFF sometimes the above results in null, when the requested - * exit node is considered down by the consensus. we should pick - * it anyway, since the user asked for it. */ - node = node_sl_choose_by_bandwidth(use, WEIGHT_FOR_EXIT); + node = node_sl_choose_by_bandwidth(supporting, WEIGHT_FOR_EXIT); if (node) break; smartlist_clear(supporting); - smartlist_clear(use); } SMARTLIST_FOREACH(needed_ports, uint16_t *, cp, tor_free(cp)); smartlist_free(needed_ports); - smartlist_free(use); smartlist_free(supporting); } tor_free(n_supported); if (node) { - log_info(LD_CIRC, "Chose exit server '%s'", node_get_nickname(node)); + log_info(LD_CIRC, "Chose exit server '%s'", node_describe(node)); return node; } - if (options->ExitNodes && options->StrictNodes) { + if (options->ExitNodes) { log_warn(LD_CIRC, - "No specified exit routers seem to be running, and " - "StrictNodes is set: can't choose an exit."); + "No specified %sexit routers seem to be running: " + "can't choose an exit.", + options->_ExcludeExitNodesUnion ? "non-excluded " : ""); } return NULL; } @@ -2731,7 +2877,7 @@ static const node_t * choose_good_exit_server(uint8_t purpose, int need_uptime, int need_capacity, int is_internal) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); router_crn_flags_t flags = CRN_NEED_DESC; if (need_uptime) flags |= CRN_NEED_UPTIME; @@ -2761,10 +2907,9 @@ choose_good_exit_server(uint8_t purpose, static void warn_if_last_router_excluded(origin_circuit_t *circ, const extend_info_t *exit) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); routerset_t *rs = options->ExcludeNodes; const char *description; - int domain = LD_CIRC; uint8_t purpose = circ->_base.purpose; if (circ->build_state->onehop_tunnel) @@ -2777,13 +2922,14 @@ warn_if_last_router_excluded(origin_circuit_t *circ, const extend_info_t *exit) case CIRCUIT_PURPOSE_INTRO_POINT: case CIRCUIT_PURPOSE_REND_POINT_WAITING: case CIRCUIT_PURPOSE_REND_ESTABLISHED: - log_warn(LD_BUG, "Called on non-origin circuit (purpose %d)", - (int)purpose); + log_warn(LD_BUG, "Called on non-origin circuit (purpose %d, %s)", + (int)purpose, + circuit_purpose_to_string(purpose)); return; case CIRCUIT_PURPOSE_C_GENERAL: if (circ->build_state->is_internal) return; - description = "Requested exit node"; + description = "requested exit node"; rs = options->_ExcludeExitNodesUnion; break; case CIRCUIT_PURPOSE_C_INTRODUCING: @@ -2798,22 +2944,34 @@ warn_if_last_router_excluded(origin_circuit_t *circ, const extend_info_t *exit) case CIRCUIT_PURPOSE_C_REND_READY: case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED: case CIRCUIT_PURPOSE_C_REND_JOINED: - description = "Chosen rendezvous point"; - domain = LD_BUG; + description = "chosen rendezvous point"; break; case CIRCUIT_PURPOSE_CONTROLLER: rs = options->_ExcludeExitNodesUnion; - description = "Controller-selected circuit target"; + description = "controller-selected circuit target"; break; } if (routerset_contains_extendinfo(rs, exit)) { - log_fn(LOG_WARN, domain, "%s '%s' is in ExcludeNodes%s. Using anyway " - "(circuit purpose %d).", - description,exit->nickname, - rs==options->ExcludeNodes?"":" or ExcludeExitNodes", - (int)purpose); - circuit_log_path(LOG_WARN, domain, circ); + /* We should never get here if StrictNodes is set to 1. */ + if (options->StrictNodes) { + log_warn(LD_BUG, "Using %s '%s' which is listed in ExcludeNodes%s, " + "even though StrictNodes is set. Please report. " + "(Circuit purpose: %s)", + description, extend_info_describe(exit), + rs==options->ExcludeNodes?"":" or ExcludeExitNodes", + circuit_purpose_to_string(purpose)); + } else { + log_warn(LD_CIRC, "Using %s '%s' which is listed in " + "ExcludeNodes%s, because no better options were available. To " + "prevent this (and possibly break your Tor functionality), " + "set the StrictNodes configuration option. " + "(Circuit purpose: %s)", + description, extend_info_describe(exit), + rs==options->ExcludeNodes?"":" or ExcludeExitNodes", + circuit_purpose_to_string(purpose)); + } + circuit_log_path(LOG_WARN, LD_CIRC, circ); } return; @@ -2839,7 +2997,8 @@ onion_pick_cpath_exit(origin_circuit_t *circ, extend_info_t *exit) if (exit) { /* the circuit-builder pre-requested one */ warn_if_last_router_excluded(circ, exit); - log_info(LD_CIRC,"Using requested exit node '%s'", exit->nickname); + log_info(LD_CIRC,"Using requested exit node '%s'", + extend_info_describe(exit)); exit = extend_info_dup(exit); } else { /* we have to decide one */ const node_t *node = @@ -2889,8 +3048,8 @@ circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *exit) circuit_append_new_exit(circ, exit); circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_BUILDING); if ((err_reason = circuit_send_next_onion_skin(circ))<0) { - log_warn(LD_CIRC, "Couldn't extend circuit to new point '%s'.", - exit->nickname); + log_warn(LD_CIRC, "Couldn't extend circuit to new point %s.", + extend_info_describe(exit)); circuit_mark_for_close(TO_CIRCUIT(circ), -err_reason); return -1; } @@ -2962,7 +3121,7 @@ choose_good_middle_server(uint8_t purpose, const node_t *r, *choice; crypt_path_t *cpath; smartlist_t *excluded; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); router_crn_flags_t flags = CRN_NEED_DESC; tor_assert(_CIRCUIT_PURPOSE_MIN <= purpose && purpose <= _CIRCUIT_PURPOSE_MAX); @@ -2970,13 +3129,11 @@ choose_good_middle_server(uint8_t purpose, log_debug(LD_CIRC, "Contemplating intermediate hop: random choice."); excluded = smartlist_create(); if ((r = build_state_get_exit_node(state))) { - smartlist_add(excluded, (void*) r); - nodelist_add_node_family(excluded, r); + nodelist_add_node_and_family(excluded, r); } for (i = 0, cpath = head; i < cur_len; ++i, cpath=cpath->next) { if ((r = node_get_by_id(cpath->extend_info->identity_digest))) { - smartlist_add(excluded, (void*)r); - nodelist_add_node_family(excluded, r); + nodelist_add_node_and_family(excluded, r); } } @@ -3004,7 +3161,7 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state) { const node_t *choice; smartlist_t *excluded; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); router_crn_flags_t flags = CRN_NEED_GUARD|CRN_NEED_DESC; const node_t *node; @@ -3020,8 +3177,7 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state) if (state && (node = build_state_get_exit_node(state))) { /* Exclude the exit node from the state, if we have one. Also exclude its * family. */ - smartlist_add(excluded, (void*)node); - nodelist_add_node_family(excluded, node); + nodelist_add_node_and_family(excluded, node); } if (firewall_is_fascist_or()) { /* Exclude all ORs that we can't reach through our firewall */ @@ -3036,8 +3192,7 @@ choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state) SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry, { if ((node = node_get_by_id(entry->identity))) { - smartlist_add(excluded, (void*)node); - nodelist_add_node_family(excluded, node); + nodelist_add_node_and_family(excluded, node); } }); } @@ -3114,7 +3269,8 @@ onion_extend_cpath(origin_circuit_t *circ) } log_debug(LD_CIRC,"Chose router %s for hop %d (exit is %s)", - info->nickname, cur_len+1, build_state_get_exit_nickname(state)); + extend_info_describe(info), + cur_len+1, build_state_get_exit_nickname(state)); onion_append_hop(&circ->cpath, info); extend_info_free(info); @@ -3254,7 +3410,8 @@ build_state_get_exit_nickname(cpath_build_state_t *state) */ static int entry_guard_set_status(entry_guard_t *e, const node_t *node, - time_t now, or_options_t *options, const char **reason) + time_t now, const or_options_t *options, + const char **reason) { char buf[HEX_DIGEST_LEN+1]; int changed = 0; @@ -3269,6 +3426,8 @@ entry_guard_set_status(entry_guard_t *e, const node_t *node, else if (options->UseBridges && (!node->ri || node->ri->purpose != ROUTER_PURPOSE_BRIDGE)) *reason = "not a bridge"; + else if (options->UseBridges && !node_is_a_configured_bridge(node)) + *reason = "not a configured bridge"; else if (!options->UseBridges && !node->is_possible_guard && !routerset_contains_node(options->EntryNodes,node)) *reason = "not recommended as a guard"; @@ -3335,7 +3494,7 @@ entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity, int assume_reachable, const char **msg) { const node_t *node; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); tor_assert(msg); if (e->bad_since) { @@ -3358,14 +3517,17 @@ entry_is_live(entry_guard_t *e, int need_uptime, int need_capacity, *msg = "not a bridge"; return NULL; } + if (!node_is_a_configured_bridge(node)) { + *msg = "not a configured bridge"; + return NULL; + } } else { /* !get_options()->UseBridges */ if (node_get_purpose(node) != ROUTER_PURPOSE_GENERAL) { *msg = "not general-purpose"; return NULL; } } - if (options->EntryNodes && - routerset_contains_node(options->EntryNodes, node)) { + if (routerset_contains_node(options->EntryNodes, node)) { /* they asked for it, they get it */ need_uptime = need_capacity = 0; } @@ -3402,7 +3564,7 @@ static INLINE entry_guard_t * is_an_entry_guard(const char *digest) { SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry, - if (!memcmp(digest, entry->identity, DIGEST_LEN)) + if (tor_memeq(digest, entry->identity, DIGEST_LEN)) return entry; ); return NULL; @@ -3416,20 +3578,24 @@ log_entry_guards(int severity) smartlist_t *elements = smartlist_create(); char *s; - SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, + SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, e) { const char *msg = NULL; char *cp; if (entry_is_live(e, 0, 1, 0, &msg)) - tor_asprintf(&cp, "%s (up %s)", + tor_asprintf(&cp, "%s [%s] (up %s)", e->nickname, + hex_str(e->identity, DIGEST_LEN), e->made_contact ? "made-contact" : "never-contacted"); else - tor_asprintf(&cp, "%s (%s, %s)", - e->nickname, msg, + tor_asprintf(&cp, "%s [%s] (%s, %s)", + e->nickname, + hex_str(e->identity, DIGEST_LEN), + msg, e->made_contact ? "made-contact" : "never-contacted"); smartlist_add(elements, cp); - }); + } + SMARTLIST_FOREACH_END(e); s = smartlist_join_strings(elements, ",", 0, NULL); SMARTLIST_FOREACH(elements, char*, cp, tor_free(cp)); @@ -3453,7 +3619,7 @@ control_event_guard_deferred(void) #if 0 int n = 0; const char *msg; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (!entry_guards) return; SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry, @@ -3476,7 +3642,7 @@ control_event_guard_deferred(void) * already in our entry_guards list, put it at the *beginning*. * Else, put the one we pick at the end of the list. */ static const node_t * -add_an_entry_guard(const node_t *chosen, int reset_status) +add_an_entry_guard(const node_t *chosen, int reset_status, int prepend) { const node_t *node; entry_guard_t *entry; @@ -3497,8 +3663,8 @@ add_an_entry_guard(const node_t *chosen, int reset_status) return NULL; } entry = tor_malloc_zero(sizeof(entry_guard_t)); - log_info(LD_CIRC, "Chose '%s' as new entry guard.", - node_get_nickname(node)); + log_info(LD_CIRC, "Chose %s as new entry guard.", + node_describe(node)); strlcpy(entry->nickname, node_get_nickname(node), sizeof(entry->nickname)); memcpy(entry->identity, node->identity, DIGEST_LEN); /* Choose expiry time smudged over the past month. The goal here @@ -3508,9 +3674,9 @@ add_an_entry_guard(const node_t *chosen, int reset_status) * this guard. For details, see the Jan 2010 or-dev thread. */ entry->chosen_on_date = time(NULL) - crypto_rand_int(3600*24*30); entry->chosen_by_version = tor_strdup(VERSION); - if (chosen) /* prepend */ + if (prepend) smartlist_insert(entry_guards, 0, entry); - else /* append */ + else smartlist_add(entry_guards, entry); control_event_guard(entry->nickname, entry->identity, "NEW"); control_event_guard_deferred(); @@ -3521,14 +3687,14 @@ add_an_entry_guard(const node_t *chosen, int reset_status) /** If the use of entry guards is configured, choose more entry guards * until we have enough in the list. */ static void -pick_entry_guards(or_options_t *options) +pick_entry_guards(const or_options_t *options) { int changed = 0; tor_assert(entry_guards); while (num_live_entry_guards() < options->NumEntryGuards) { - if (!add_an_entry_guard(NULL, 0)) + if (!add_an_entry_guard(NULL, 0, 0)) break; changed = 1; } @@ -3654,10 +3820,9 @@ remove_dead_entry_guards(time_t now) * think that things are unlisted. */ void -entry_guards_compute_status(or_options_t *options, time_t now) +entry_guards_compute_status(const or_options_t *options, time_t now) { int changed = 0; - int severity = LOG_DEBUG; digestmap_t *reasons; if (! entry_guards) @@ -3684,15 +3849,14 @@ entry_guards_compute_status(or_options_t *options, time_t now) if (remove_dead_entry_guards(now)) changed = 1; - severity = changed ? LOG_DEBUG : LOG_INFO; - if (changed) { SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry) { const char *reason = digestmap_get(reasons, entry->identity); const char *live_msg = ""; const node_t *r = entry_is_live(entry, 0, 1, 0, &live_msg); - log_info(LD_CIRC, "Summary: Entry '%s' is %s, %s%s%s, and %s%s.", + log_info(LD_CIRC, "Summary: Entry %s [%s] is %s, %s%s%s, and %s%s.", entry->nickname, + hex_str(entry->identity, DIGEST_LEN), entry->unreachable_since ? "unreachable" : "reachable", entry->bad_since ? "unusable" : "usable", reason ? ", ": "", @@ -3717,7 +3881,7 @@ entry_guards_compute_status(or_options_t *options, time_t now) * If <b>mark_relay_status</b>, also call router_set_status() on this * relay. * - * XXX022 change succeeded and mark_relay_status into 'int flags'. + * XXX023 change succeeded and mark_relay_status into 'int flags'. */ int entry_guard_register_connect_status(const char *digest, int succeeded, @@ -3735,7 +3899,7 @@ entry_guard_register_connect_status(const char *digest, int succeeded, SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, { - if (!memcmp(e->identity, digest, DIGEST_LEN)) { + if (tor_memeq(e->identity, digest, DIGEST_LEN)) { entry = e; idx = e_sl_idx; break; @@ -3843,12 +4007,12 @@ entry_nodes_should_be_added(void) should_add_entry_nodes = 1; } -/** Add all nodes in EntryNodes that aren't currently guard nodes to the list - * of guard nodes, at the front. */ +/** Adjust the entry guards list so that it only contains entries from + * EntryNodes, adding new entries from EntryNodes to the list as needed. */ static void -entry_guards_prepend_from_config(or_options_t *options) +entry_guards_set_from_config(const or_options_t *options) { - smartlist_t *entry_nodes, *entry_fps; + smartlist_t *entry_nodes, *worse_entry_nodes, *entry_fps; smartlist_t *old_entry_guards_on_list, *old_entry_guards_not_on_list; tor_assert(entry_guards); @@ -3869,18 +4033,15 @@ entry_guards_prepend_from_config(or_options_t *options) } entry_nodes = smartlist_create(); + worse_entry_nodes = smartlist_create(); entry_fps = smartlist_create(); old_entry_guards_on_list = smartlist_create(); old_entry_guards_not_on_list = smartlist_create(); /* Split entry guards into those on the list and those not. */ - /* Now that we allow countries and IP ranges in EntryNodes, this is - * potentially an enormous list. It's not so bad though because we - * only call this function when a) we're making a new circuit, and b) - * we've called directory_info_has_arrived() or changed our EntryNodes - * since the last time we made a circuit. */ - routerset_get_all_nodes(entry_nodes, options->EntryNodes, 0); + routerset_get_all_nodes(entry_nodes, options->EntryNodes, + options->ExcludeNodes, 0); SMARTLIST_FOREACH(entry_nodes, const node_t *,node, smartlist_add(entry_fps, (void*)node->identity)); @@ -3891,31 +4052,47 @@ entry_guards_prepend_from_config(or_options_t *options) smartlist_add(old_entry_guards_not_on_list, e); }); - /* Remove all currently configured entry guards from entry_routers. */ - SMARTLIST_FOREACH(entry_nodes, const node_t *, node, { + /* Remove all currently configured guard nodes, excluded nodes, unreachable + * nodes, or non-Guard nodes from entry_nodes. */ + SMARTLIST_FOREACH_BEGIN(entry_nodes, const node_t *, node) { if (is_an_entry_guard(node->identity)) { SMARTLIST_DEL_CURRENT(entry_nodes, node); + continue; + } else if (routerset_contains_node(options->ExcludeNodes, node)) { + SMARTLIST_DEL_CURRENT(entry_nodes, node); + continue; + } else if (!fascist_firewall_allows_node(node)) { + SMARTLIST_DEL_CURRENT(entry_nodes, node); + continue; + } else if (! node->is_possible_guard) { + smartlist_add(worse_entry_nodes, (node_t*)node); + SMARTLIST_DEL_CURRENT(entry_nodes, node); } - }); + } SMARTLIST_FOREACH_END(node); /* Now build the new entry_guards list. */ smartlist_clear(entry_guards); /* First, the previously configured guards that are in EntryNodes. */ smartlist_add_all(entry_guards, old_entry_guards_on_list); + /* Next, scramble the rest of EntryNodes, putting the guards first. */ + smartlist_shuffle(entry_nodes); + smartlist_shuffle(worse_entry_nodes); + smartlist_add_all(entry_nodes, worse_entry_nodes); + /* Next, the rest of EntryNodes */ - SMARTLIST_FOREACH(entry_nodes, const node_t *, node, { - add_an_entry_guard(node, 0); - }); - /* Finally, the remaining previously configured guards that are not in - * EntryNodes, unless we're strict in which case we drop them */ - if (options->StrictNodes) { - SMARTLIST_FOREACH(old_entry_guards_not_on_list, entry_guard_t *, e, - entry_guard_free(e)); - } else { - smartlist_add_all(entry_guards, old_entry_guards_not_on_list); - } + SMARTLIST_FOREACH_BEGIN(entry_nodes, const node_t *, node) { + add_an_entry_guard(node, 0, 0); + if (smartlist_len(entry_guards) > options->NumEntryGuards * 10) + break; + } SMARTLIST_FOREACH_END(node); + log_notice(LD_GENERAL, "%d entries in guards", smartlist_len(entry_guards)); + /* Finally, free the remaining previously configured guards that are not in + * EntryNodes. */ + SMARTLIST_FOREACH(old_entry_guards_not_on_list, entry_guard_t *, e, + entry_guard_free(e)); smartlist_free(entry_nodes); + smartlist_free(worse_entry_nodes); smartlist_free(entry_fps); smartlist_free(old_entry_guards_on_list); smartlist_free(old_entry_guards_not_on_list); @@ -3924,10 +4101,10 @@ entry_guards_prepend_from_config(or_options_t *options) /** Return 0 if we're fine adding arbitrary routers out of the * directory to our entry guard list, or return 1 if we have a - * list already and we'd prefer to stick to it. + * list already and we must stick to it. */ int -entry_list_is_constrained(or_options_t *options) +entry_list_is_constrained(const or_options_t *options) { if (options->EntryNodes) return 1; @@ -3936,18 +4113,6 @@ entry_list_is_constrained(or_options_t *options) return 0; } -/* Are we dead set against changing our entry guard list, or would we - * change it if it means keeping Tor usable? */ -static int -entry_list_is_totally_static(or_options_t *options) -{ - if (options->EntryNodes && options->StrictNodes) - return 1; - if (options->UseBridges) - return 1; - return 0; -} - /** Pick a live (up and listed) entry guard from entry_guards. If * <b>state</b> is non-NULL, this is for a specific circuit -- * make sure not to pick this circuit's exit or any node in the @@ -3956,7 +4121,7 @@ entry_list_is_totally_static(or_options_t *options) const node_t * choose_random_entry(cpath_build_state_t *state) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); smartlist_t *live_entry_guards = smartlist_create(); smartlist_t *exit_family = smartlist_create(); const node_t *chosen_exit = @@ -3967,8 +4132,7 @@ choose_random_entry(cpath_build_state_t *state) int preferred_min, consider_exit_family = 0; if (chosen_exit) { - smartlist_add(exit_family, (void*) chosen_exit); - nodelist_add_node_family(exit_family, chosen_exit); + nodelist_add_node_and_family(exit_family, chosen_exit); consider_exit_family = 1; } @@ -3976,7 +4140,7 @@ choose_random_entry(cpath_build_state_t *state) entry_guards = smartlist_create(); if (should_add_entry_nodes) - entry_guards_prepend_from_config(options); + entry_guards_set_from_config(options); if (!entry_list_is_constrained(options) && smartlist_len(entry_guards) < options->NumEntryGuards) @@ -3989,8 +4153,11 @@ choose_random_entry(cpath_build_state_t *state) node = entry_is_live(entry, need_uptime, need_capacity, 0, &msg); if (!node) continue; /* down, no point */ + if (node == chosen_exit) + continue; /* don't pick the same node for entry and exit */ if (consider_exit_family && smartlist_isin(exit_family, node)) continue; /* avoid relays that are family members of our exit */ +#if 0 /* since EntryNodes is always strict now, this clause is moot */ if (options->EntryNodes && !routerset_contains_node(options->EntryNodes, node)) { /* We've come to the end of our preferred entry nodes. */ @@ -3998,13 +4165,14 @@ choose_random_entry(cpath_build_state_t *state) goto choose_and_finish; /* only choose from the ones we like */ if (options->StrictNodes) { /* in theory this case should never happen, since - * entry_guards_prepend_from_config() drops unwanted relays */ + * entry_guards_set_from_config() drops unwanted relays */ tor_fragile_assert(); } else { log_info(LD_CIRC, "No relays from EntryNodes available. Using others."); } } +#endif smartlist_add(live_entry_guards, (void*)node); if (!entry->made_contact) { /* Always start with the first not-yet-contacted entry @@ -4030,12 +4198,12 @@ choose_random_entry(cpath_build_state_t *state) } if (smartlist_len(live_entry_guards) < preferred_min) { - if (!entry_list_is_totally_static(options)) { + if (!entry_list_is_constrained(options)) { /* still no? try adding a new entry then */ /* XXX if guard doesn't imply fast and stable, then we need * to tell add_an_entry_guard below what we want, or it might * be a long time til we get it. -RD */ - node = add_an_entry_guard(NULL, 0); + node = add_an_entry_guard(NULL, 0, 0); if (node) { entry_guards_changed(); /* XXX we start over here in case the new node we added shares @@ -4055,6 +4223,10 @@ choose_random_entry(cpath_build_state_t *state) need_capacity = 0; goto retry; } +#if 0 + /* Removing this retry logic: if we only allow one exit, and it is in the + same family as all our entries, then we are just plain not going to win + here. */ if (!node && entry_list_is_constrained(options) && consider_exit_family) { /* still no? if we're using bridges or have strictentrynodes * set, and our chosen exit is in the same family as all our @@ -4062,6 +4234,7 @@ choose_random_entry(cpath_build_state_t *state) consider_exit_family = 0; goto retry; } +#endif /* live_entry_guards may be empty below. Oh well, we tried. */ } @@ -4206,7 +4379,7 @@ entry_guards_parse_state(or_state_t *state, int set, char **msg) } entry_guards = new_entry_guards; entry_guards_dirty = 0; - /* XXX022 hand new_entry_guards to this func, and move it up a + /* XXX023 hand new_entry_guards to this func, and move it up a * few lines, so we don't have to re-dirty it */ if (remove_obsolete_entry_guards(now)) entry_guards_dirty = 1; @@ -4361,40 +4534,159 @@ getinfo_helper_entry_guards(control_connection_t *conn, return 0; } -/** Information about a configured bridge. Currently this just matches the - * ones in the torrc file, but one day we may be able to learn about new - * bridges on our own, and remember them in the state file. */ -typedef struct { - /** Address of the bridge. */ - tor_addr_t addr; - /** TLS port for the bridge. */ - uint16_t port; - /** Expected identity digest, or all zero bytes if we don't know what the - * digest should be. */ - char identity[DIGEST_LEN]; - /** When should we next try to fetch a descriptor for this bridge? */ - download_status_t fetch_status; -} bridge_info_t; - /** A list of configured bridges. Whenever we actually get a descriptor - * for one, we add it as an entry guard. */ + * for one, we add it as an entry guard. Note that the order of bridges + * in this list does not necessarily correspond to the order of bridges + * in the torrc. */ static smartlist_t *bridge_list = NULL; -/** Initialize the bridge list to empty, creating it if needed. */ +/** Mark every entry of the bridge list to be removed on our next call to + * sweep_bridge_list unless it has first been un-marked. */ +void +mark_bridge_list(void) +{ + if (!bridge_list) + bridge_list = smartlist_create(); + SMARTLIST_FOREACH(bridge_list, bridge_info_t *, b, + b->marked_for_removal = 1); +} + +/** Remove every entry of the bridge list that was marked with + * mark_bridge_list if it has not subsequently been un-marked. */ void +sweep_bridge_list(void) +{ + if (!bridge_list) + bridge_list = smartlist_create(); + SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, b) { + if (b->marked_for_removal) { + SMARTLIST_DEL_CURRENT(bridge_list, b); + bridge_free(b); + } + } SMARTLIST_FOREACH_END(b); +} + +/** Initialize the bridge list to empty, creating it if needed. */ +static void clear_bridge_list(void) { if (!bridge_list) bridge_list = smartlist_create(); - SMARTLIST_FOREACH(bridge_list, bridge_info_t *, b, tor_free(b)); + SMARTLIST_FOREACH(bridge_list, bridge_info_t *, b, bridge_free(b)); smartlist_clear(bridge_list); } +/** Free the bridge <b>bridge</b>. */ +static void +bridge_free(bridge_info_t *bridge) +{ + if (!bridge) + return; + + tor_free(bridge->transport_name); + tor_free(bridge); +} + +/** A list of pluggable transports found in torrc. */ +static smartlist_t *transport_list = NULL; + +/** Initialize the pluggable transports list to empty, creating it if + * needed. */ +void +clear_transport_list(void) +{ + if (!transport_list) + transport_list = smartlist_create(); + SMARTLIST_FOREACH(transport_list, transport_t *, t, transport_free(t)); + smartlist_clear(transport_list); +} + +/** Free the pluggable transport struct <b>transport</b>. */ +static void +transport_free(transport_t *transport) +{ + if (!transport) + return; + + tor_free(transport->name); + tor_free(transport); +} + +/** Returns the transport in our transport list that has the name <b>name</b>. + * Else returns NULL. */ +static const transport_t * +transport_get_by_name(const char *name) +{ + tor_assert(name); + + if (!transport_list) + return NULL; + + SMARTLIST_FOREACH_BEGIN(transport_list, const transport_t *, transport) { + if (!strcmp(transport->name, name)) + return transport; + } SMARTLIST_FOREACH_END(transport); + + return NULL; +} + +/** Remember a new pluggable transport proxy at <b>addr</b>:<b>port</b>. + * <b>name</b> is set to the name of the protocol this proxy uses. + * <b>socks_ver</b> is set to the SOCKS version of the proxy. + * + * Returns 0 on success, -1 on fail. */ +int +transport_add_from_config(const tor_addr_t *addr, uint16_t port, + const char *name, int socks_ver) +{ + transport_t *t; + + if (transport_get_by_name(name)) { /* check for duplicate names */ + log_warn(LD_CONFIG, "More than one transport has '%s' as " + "its name.", name); + return -1; + } + + t = tor_malloc_zero(sizeof(transport_t)); + tor_addr_copy(&t->addr, addr); + t->port = port; + t->name = tor_strdup(name); + t->socks_version = socks_ver; + + if (!transport_list) + transport_list = smartlist_create(); + + smartlist_add(transport_list, t); + return 0; +} + +/** Warns the user of possible pluggable transport misconfiguration. */ +void +validate_pluggable_transports_config(void) +{ + if (bridge_list) { + SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, b) { + /* Skip bridges without transports. */ + if (!b->transport_name) + continue; + /* See if the user has Bridges that specify nonexistent + pluggable transports. We should warn the user in such case, + since it's probably misconfiguration. */ + if (!transport_get_by_name(b->transport_name)) + log_warn(LD_CONFIG, "You have a Bridge line using the %s " + "pluggable transport, but there doesn't seem to be a " + "corresponding ClientTransportPlugin line.", + b->transport_name); + } SMARTLIST_FOREACH_END(b); + } +} + /** Return a bridge pointer if <b>ri</b> is one of our known bridges * (either by comparing keys if possible, else by comparing addr/port). * Else return NULL. */ static bridge_info_t * -get_configured_bridge_by_addr_port_digest(tor_addr_t *addr, uint16_t port, +get_configured_bridge_by_addr_port_digest(const tor_addr_t *addr, + uint16_t port, const char *digest) { if (!bridge_list) @@ -4405,7 +4697,7 @@ get_configured_bridge_by_addr_port_digest(tor_addr_t *addr, uint16_t port, !tor_addr_compare(&bridge->addr, addr, CMP_EXACT) && bridge->port == port) return bridge; - if (!memcmp(bridge->identity, digest, DIGEST_LEN)) + if (digest && tor_memeq(bridge->identity, digest, DIGEST_LEN)) return bridge; } SMARTLIST_FOREACH_END(bridge); @@ -4430,12 +4722,31 @@ routerinfo_is_a_configured_bridge(const routerinfo_t *ri) return get_configured_bridge_by_routerinfo(ri) ? 1 : 0; } +/** Return 1 if <b>node</b> is one of our configured bridges, else 0. */ +int +node_is_a_configured_bridge(const node_t *node) +{ + tor_addr_t addr; + uint16_t orport; + if (!node) + return 0; + if (node_get_addr(node, &addr) < 0) + return 0; + orport = node_get_orport(node); + if (orport == 0) + return 0; + + return get_configured_bridge_by_addr_port_digest( + &addr, orport, node->identity) != NULL; +} + /** We made a connection to a router at <b>addr</b>:<b>port</b> * without knowing its digest. Its digest turned out to be <b>digest</b>. * If it was a bridge, and we still don't know its digest, record it. */ void -learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest) +learned_router_identity(const tor_addr_t *addr, uint16_t port, + const char *digest) { bridge_info_t *bridge = get_configured_bridge_by_addr_port_digest(addr, port, digest); @@ -4447,39 +4758,107 @@ learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest) } /** Remember a new bridge at <b>addr</b>:<b>port</b>. If <b>digest</b> - * is set, it tells us the identity key too. */ + * is set, it tells us the identity key too. If we already had the + * bridge in our list, unmark it, and don't actually add anything new. + * If <b>transport_name</b> is non-NULL - the bridge is associated with a + * pluggable transport - we assign the transport to the bridge. */ void -bridge_add_from_config(const tor_addr_t *addr, uint16_t port, char *digest) +bridge_add_from_config(const tor_addr_t *addr, uint16_t port, + const char *digest, const char *transport_name) { - bridge_info_t *b = tor_malloc_zero(sizeof(bridge_info_t)); + bridge_info_t *b; + + if ((b = get_configured_bridge_by_addr_port_digest(addr, port, digest))) { + b->marked_for_removal = 0; + return; + } + + b = tor_malloc_zero(sizeof(bridge_info_t)); tor_addr_copy(&b->addr, addr); b->port = port; if (digest) memcpy(b->identity, digest, DIGEST_LEN); + if (transport_name) + b->transport_name = tor_strdup(transport_name); b->fetch_status.schedule = DL_SCHED_BRIDGE; if (!bridge_list) bridge_list = smartlist_create(); + smartlist_add(bridge_list, b); } +/** Return true iff <b>routerset</b> contains the bridge <b>bridge</b>. */ +static int +routerset_contains_bridge(const routerset_t *routerset, + const bridge_info_t *bridge) +{ + int result; + extend_info_t *extinfo; + tor_assert(bridge); + if (!routerset) + return 0; + + extinfo = extend_info_alloc( + NULL, bridge->identity, NULL, &bridge->addr, bridge->port); + result = routerset_contains_extendinfo(routerset, extinfo); + extend_info_free(extinfo); + return result; +} + /** If <b>digest</b> is one of our known bridges, return it. */ static bridge_info_t * find_bridge_by_digest(const char *digest) { SMARTLIST_FOREACH(bridge_list, bridge_info_t *, bridge, { - if (!memcmp(bridge->identity, digest, DIGEST_LEN)) + if (tor_memeq(bridge->identity, digest, DIGEST_LEN)) return bridge; }); return NULL; } -/** We need to ask <b>bridge</b> for its server descriptor. <b>address</b> - * is a helpful string describing this bridge. */ +/** If <b>addr</b> and <b>port</b> match the address and port of a + * bridge of ours that uses pluggable transports, place its transport + * in <b>transport</b>. + * + * Return 0 on success (found a transport, or found a bridge with no + * transport, or found no bridge); return -1 if we should be using a + * transport, but the transport could not be found. + */ +int +find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port, + const transport_t **transport) +{ + *transport = NULL; + if (!bridge_list) + return 0; + + SMARTLIST_FOREACH_BEGIN(bridge_list, const bridge_info_t *, bridge) { + if (tor_addr_eq(&bridge->addr, addr) && + (bridge->port == port)) { /* bridge matched */ + if (bridge->transport_name) { /* it also uses pluggable transports */ + *transport = transport_get_by_name(bridge->transport_name); + if (*transport == NULL) { /* it uses pluggable transports, but + the transport could not be found! */ + return -1; + } + return 0; + } else { /* bridge matched, but it doesn't use transports. */ + break; + } + } + } SMARTLIST_FOREACH_END(bridge); + + *transport = NULL; + return 0; +} + +/** We need to ask <b>bridge</b> for its server descriptor. */ static void launch_direct_bridge_descriptor_fetch(bridge_info_t *bridge) { char *address; + const or_options_t *options = get_options(); if (connection_get_by_type_addr_port_purpose( CONN_TYPE_DIR, &bridge->addr, bridge->port, @@ -4487,6 +4866,13 @@ launch_direct_bridge_descriptor_fetch(bridge_info_t *bridge) return; /* it's already on the way */ address = tor_dup_addr(&bridge->addr); + if (routerset_contains_bridge(options->ExcludeNodes, bridge)) { + download_status_mark_impossible(&bridge->fetch_status); + log_warn(LD_APP, "Not using bridge at %s: it is in ExcludeNodes.", + safe_str_client(fmt_addr(&bridge->addr))); + return; + } + directory_initiate_command(address, &bridge->addr, bridge->port, 0, 0, /* does not matter */ @@ -4513,9 +4899,9 @@ retry_bridge_descriptor_fetch_directly(const char *digest) * descriptor, fetch a new copy of its descriptor -- either directly * from the bridge or via a bridge authority. */ void -fetch_bridge_descriptors(or_options_t *options, time_t now) +fetch_bridge_descriptors(const or_options_t *options, time_t now) { - int num_bridge_auths = get_n_authorities(BRIDGE_AUTHORITY); + int num_bridge_auths = get_n_authorities(BRIDGE_DIRINFO); int ask_bridge_directly; int can_use_bridge_authority; @@ -4527,6 +4913,12 @@ fetch_bridge_descriptors(or_options_t *options, time_t now) if (!download_status_is_ready(&bridge->fetch_status, now, IMPOSSIBLE_TO_DOWNLOAD)) continue; /* don't bother, no need to retry yet */ + if (routerset_contains_bridge(options->ExcludeNodes, bridge)) { + download_status_mark_impossible(&bridge->fetch_status); + log_warn(LD_APP, "Not using bridge at %s: it is in ExcludeNodes.", + safe_str_client(fmt_addr(&bridge->addr))); + continue; + } /* schedule another fetch as if this one will fail, in case it does */ download_status_failed(&bridge->fetch_status, 0); @@ -4573,6 +4965,58 @@ fetch_bridge_descriptors(or_options_t *options, time_t now) SMARTLIST_FOREACH_END(bridge); } +/** If our <b>bridge</b> is configured to be a different address than + * the bridge gives in <b>node</b>, rewrite the routerinfo + * we received to use the address we meant to use. Now we handle + * multihomed bridges better. + */ +static void +rewrite_node_address_for_bridge(const bridge_info_t *bridge, node_t *node) +{ + /* XXXX move this function. */ + /* XXXX overridden addresses should really live in the node_t, so that the + * routerinfo_t and the microdesc_t can be immutable. But we can only + * do that safely if we know that no function that connects to an OR + * does so through an address from any source other than node_get_addr(). + */ + tor_addr_t addr; + + if (node->ri) { + routerinfo_t *ri = node->ri; + tor_addr_from_ipv4h(&addr, ri->addr); + + if (!tor_addr_compare(&bridge->addr, &addr, CMP_EXACT) && + bridge->port == ri->or_port) { + /* they match, so no need to do anything */ + } else { + ri->addr = tor_addr_to_ipv4h(&bridge->addr); + tor_free(ri->address); + ri->address = tor_dup_ip(ri->addr); + ri->or_port = bridge->port; + log_info(LD_DIR, + "Adjusted bridge routerinfo for '%s' to match configured " + "address %s:%d.", + ri->nickname, ri->address, ri->or_port); + } + } + if (node->rs) { + routerstatus_t *rs = node->rs; + tor_addr_from_ipv4h(&addr, rs->addr); + + if (!tor_addr_compare(&bridge->addr, &addr, CMP_EXACT) && + bridge->port == rs->or_port) { + /* they match, so no need to do anything */ + } else { + rs->addr = tor_addr_to_ipv4h(&bridge->addr); + rs->or_port = bridge->port; + log_info(LD_DIR, + "Adjusted bridge routerstatus for '%s' to match " + "configured address %s:%d.", + rs->nickname, fmt_addr(&bridge->addr), rs->or_port); + } + } +} + /** We just learned a descriptor for a bridge. See if that * digest is in our entry guard list, and add it if not. */ void @@ -4587,14 +5031,16 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache) router_set_status(ri->cache_info.identity_digest, 1); if (bridge) { /* if we actually want to use this one */ - const node_t *node; + node_t *node; /* it's here; schedule its re-fetch for a long time from now. */ if (!from_cache) download_status_reset(&bridge->fetch_status); - node = node_get_by_id(ri->cache_info.identity_digest); + node = node_get_mutable_by_id(ri->cache_info.identity_digest); tor_assert(node); - add_an_entry_guard(node, 1); + rewrite_node_address_for_bridge(bridge, node); + add_an_entry_guard(node, 1, 1); + log_notice(LD_DIR, "new bridge descriptor '%s' (%s)", ri->nickname, from_cache ? "cached" : "fresh"); /* set entry->made_contact so if it goes down we don't drop it from @@ -4633,7 +5079,8 @@ any_pending_bridge_descriptor_fetches(void) conn->purpose == DIR_PURPOSE_FETCH_SERVERDESC && TO_DIR_CONN(conn)->router_purpose == ROUTER_PURPOSE_BRIDGE && !conn->marked_for_close && - conn->linked && !conn->linked_conn->marked_for_close) { + conn->linked && + conn->linked_conn && !conn->linked_conn->marked_for_close) { log_debug(LD_DIR, "found one: %s", conn->address); return 1; } @@ -4646,7 +5093,7 @@ any_pending_bridge_descriptor_fetches(void) * down. Else return 0. If <b>act</b> is 1, then mark the down guards * up; else just observe and report. */ static int -entries_retry_helper(or_options_t *options, int act) +entries_retry_helper(const or_options_t *options, int act) { const node_t *node; int any_known = 0; @@ -4685,7 +5132,7 @@ entries_retry_helper(or_options_t *options, int act) /** Do we know any descriptors for our bridges / entrynodes, and are * all the ones we have descriptors for down? */ int -entries_known_but_down(or_options_t *options) +entries_known_but_down(const or_options_t *options) { tor_assert(entry_list_is_constrained(options)); return entries_retry_helper(options, 0); @@ -4693,7 +5140,7 @@ entries_known_but_down(or_options_t *options) /** Mark all down known bridges / entrynodes up. */ void -entries_retry_all(or_options_t *options) +entries_retry_all(const or_options_t *options) { tor_assert(entry_list_is_constrained(options)); entries_retry_helper(options, 1); @@ -4711,7 +5158,10 @@ entry_guards_free_all(void) entry_guards = NULL; } clear_bridge_list(); + clear_transport_list(); smartlist_free(bridge_list); + smartlist_free(transport_list); bridge_list = NULL; + transport_list = NULL; } diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h index 7c125e96b1..bb5c2eb0bf 100644 --- a/src/or/circuitbuild.h +++ b/src/or/circuitbuild.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -12,6 +12,18 @@ #ifndef _TOR_CIRCUITBUILD_H #define _TOR_CIRCUITBUILD_H +/** Represents a pluggable transport proxy used by a bridge. */ +typedef struct { + /** SOCKS version: One of PROXY_SOCKS4, PROXY_SOCKS5. */ + int socks_version; + /** Name of pluggable transport protocol */ + char *name; + /** Address of proxy */ + tor_addr_t addr; + /** Port of proxy */ + uint16_t port; +} transport_t; + char *circuit_list_path(origin_circuit_t *circ, int verbose); char *circuit_list_path_for_controller(origin_circuit_t *circ); void circuit_log_path(int severity, unsigned int domain, @@ -31,7 +43,7 @@ int circuit_extend(cell_t *cell, circuit_t *circ); int circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data, int reverse); int circuit_finish_handshake(origin_circuit_t *circ, uint8_t cell_type, - const char *reply); + const uint8_t *reply); int circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer); int onionskin_answer(or_circuit_t *circ, uint8_t cell_type, const char *payload, const char *keys); @@ -51,11 +63,11 @@ void extend_info_free(extend_info_t *info); const node_t *build_state_get_exit_node(cpath_build_state_t *state); const char *build_state_get_exit_nickname(cpath_build_state_t *state); -void entry_guards_compute_status(or_options_t *options, time_t now); +void entry_guards_compute_status(const or_options_t *options, time_t now); int entry_guard_register_connect_status(const char *digest, int succeeded, int mark_relay_status, time_t now); void entry_nodes_should_be_added(void); -int entry_list_is_constrained(or_options_t *options); +int entry_list_is_constrained(const or_options_t *options); const node_t *choose_random_entry(cpath_build_state_t *state); int entry_guards_parse_state(or_state_t *state, int set, char **msg); void entry_guards_update_state(or_state_t *state); @@ -63,19 +75,22 @@ int getinfo_helper_entry_guards(control_connection_t *conn, const char *question, char **answer, const char **errmsg); -void clear_bridge_list(void); +void mark_bridge_list(void); +void sweep_bridge_list(void); int routerinfo_is_a_configured_bridge(const routerinfo_t *ri); -void learned_router_identity(tor_addr_t *addr, uint16_t port, +int node_is_a_configured_bridge(const node_t *node); +void learned_router_identity(const tor_addr_t *addr, uint16_t port, const char *digest); void bridge_add_from_config(const tor_addr_t *addr, uint16_t port, - char *digest); + const char *digest, + const char *transport_name); void retry_bridge_descriptor_fetch_directly(const char *digest); -void fetch_bridge_descriptors(or_options_t *options, time_t now); +void fetch_bridge_descriptors(const or_options_t *options, time_t now); void learned_bridge_descriptor(routerinfo_t *ri, int from_cache); int any_bridge_descriptors_known(void); int any_pending_bridge_descriptor_fetches(void); -int entries_known_but_down(or_options_t *options); -void entries_retry_all(or_options_t *options); +int entries_known_but_down(const or_options_t *options); +void entries_retry_all(const or_options_t *options); void entry_guards_free_all(void); @@ -122,5 +137,14 @@ void circuit_build_times_network_is_live(circuit_build_times_t *cbt); int circuit_build_times_network_check_live(circuit_build_times_t *cbt); void circuit_build_times_network_circ_success(circuit_build_times_t *cbt); +int circuit_build_times_get_bw_scale(networkstatus_t *ns); + +void clear_transport_list(void); +int transport_add_from_config(const tor_addr_t *addr, uint16_t port, + const char *name, int socks_ver); +int find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port, + const transport_t **transport); +void validate_pluggable_transports_config(void); + #endif diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 205b0a89a7..93f5fd3493 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -1,7 +1,7 @@ /* Copyright 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -254,7 +254,7 @@ circuit_get_all_pending_on_or_conn(smartlist_t *out, or_connection_t *or_conn) continue; } else { /* We expected a key. See if it's the right one. */ - if (memcmp(or_conn->identity_digest, + if (tor_memneq(or_conn->identity_digest, circ->n_hop->identity_digest, DIGEST_LEN)) continue; } @@ -272,8 +272,10 @@ circuit_count_pending_on_or_conn(or_connection_t *or_conn) circuit_get_all_pending_on_or_conn(sl, or_conn); cnt = smartlist_len(sl); smartlist_free(sl); - log_debug(LD_CIRC,"or_conn to %s, %d pending circs", - or_conn->nickname ? or_conn->nickname : "NULL", cnt); + log_debug(LD_CIRC,"or_conn to %s at %s, %d pending circs", + or_conn->nickname ? or_conn->nickname : "NULL", + or_conn->_base.address, + cnt); return cnt; } @@ -376,13 +378,71 @@ circuit_purpose_to_controller_string(uint8_t purpose) } } +/** Return a human-readable string for the circuit purpose <b>purpose</b>. */ +const char * +circuit_purpose_to_string(uint8_t purpose) +{ + static char buf[32]; + + switch (purpose) + { + case CIRCUIT_PURPOSE_OR: + return "Circuit at relay"; + case CIRCUIT_PURPOSE_INTRO_POINT: + return "Acting as intro point"; + case CIRCUIT_PURPOSE_REND_POINT_WAITING: + return "Acting as rendevous (pending)"; + case CIRCUIT_PURPOSE_REND_ESTABLISHED: + return "Acting as rendevous (established)"; + case CIRCUIT_PURPOSE_C_GENERAL: + return "General-purpose client"; + case CIRCUIT_PURPOSE_C_INTRODUCING: + return "Hidden service client: Connecting to intro point"; + case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT: + return "Hidden service client: Waiting for ack from intro point"; + case CIRCUIT_PURPOSE_C_INTRODUCE_ACKED: + return "Hidden service client: Received ack from intro point"; + case CIRCUIT_PURPOSE_C_ESTABLISH_REND: + return "Hidden service client: Establishing rendezvous point"; + case CIRCUIT_PURPOSE_C_REND_READY: + return "Hidden service client: Pending rendezvous point"; + case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED: + return "Hidden service client: Pending rendezvous point (ack received)"; + case CIRCUIT_PURPOSE_C_REND_JOINED: + return "Hidden service client: Active rendezvous point"; + case CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT: + return "Measuring circuit timeout"; + + case CIRCUIT_PURPOSE_S_ESTABLISH_INTRO: + return "Hidden service: Establishing introduction point"; + case CIRCUIT_PURPOSE_S_INTRO: + return "Hidden service: Introduction point"; + case CIRCUIT_PURPOSE_S_CONNECT_REND: + return "Hidden service: Connecting to rendezvous point"; + case CIRCUIT_PURPOSE_S_REND_JOINED: + return "Hidden service: Active rendezvous point"; + + case CIRCUIT_PURPOSE_TESTING: + return "Testing circuit"; + + case CIRCUIT_PURPOSE_CONTROLLER: + return "Circuit made by controller"; + + default: + tor_snprintf(buf, sizeof(buf), "UNKNOWN_%d", (int)purpose); + return buf; + } +} + /** Pick a reasonable package_window to start out for our circuits. * Originally this was hard-coded at 1000, but now the consensus votes * on the answer. See proposal 168. */ int32_t circuit_initial_package_window(void) { - int32_t num = networkstatus_get_param(NULL, "circwindow", CIRCWINDOW_START); + int32_t num = networkstatus_get_param(NULL, "circwindow", CIRCWINDOW_START, + CIRCWINDOW_START_MIN, + CIRCWINDOW_START_MAX); /* If the consensus tells us a negative number, we'd assert. */ if (num < 0) num = CIRCWINDOW_START; @@ -604,10 +664,10 @@ circuit_dump_details(int severity, circuit_t *circ, int conn_array_index, const char *type, int this_circid, int other_circid) { log(severity, LD_CIRC, "Conn %d has %s circuit: circID %d (other side %d), " - "state %d (%s), born %d:", + "state %d (%s), born %ld:", conn_array_index, type, this_circid, other_circid, circ->state, circuit_state_to_string(circ->state), - (int)circ->timestamp_created.tv_sec); + (long)circ->timestamp_created.tv_sec); if (CIRCUIT_IS_ORIGIN(circ)) { /* circ starts at this node */ circuit_log_path(severity, LD_CIRC, TO_ORIGIN_CIRCUIT(circ)); } @@ -659,7 +719,7 @@ circuit_dump_by_conn(connection_t *conn, int severity) tor_addr_eq(&circ->n_hop->addr, &conn->addr) && circ->n_hop->port == conn->port && conn->type == CONN_TYPE_OR && - !memcmp(TO_OR_CONN(conn)->identity_digest, + tor_memeq(TO_OR_CONN(conn)->identity_digest, circ->n_hop->identity_digest, DIGEST_LEN)) { circuit_dump_details(severity, circ, conn->conn_array_index, (circ->state == CIRCUIT_STATE_OPEN && @@ -713,8 +773,8 @@ circuit_get_by_circid_orconn_impl(circid_t circ_id, or_connection_t *conn) return found->circuit; return NULL; - /* The rest of this checks for bugs. Disabled by default. */ + /* We comment it out because coverity complains otherwise. { circuit_t *circ; for (circ=global_circuitlist;circ;circ = circ->next) { @@ -733,7 +793,7 @@ circuit_get_by_circid_orconn_impl(circid_t circ_id, or_connection_t *conn) } } return NULL; - } + } */ } /** Return a circ such that: @@ -804,7 +864,7 @@ circuit_unlink_all_from_or_conn(or_connection_t *conn, int reason) } /** Return a circ such that: - * - circ-\>rend_data-\>query is equal to <b>rend_query</b>, and + * - circ-\>rend_data-\>onion_address is equal to <b>rend_query</b>, and * - circ-\>purpose is equal to <b>purpose</b>. * * Return NULL if no such circuit exists. @@ -853,7 +913,7 @@ circuit_get_next_by_pk_and_purpose(origin_circuit_t *start, if (!digest) return TO_ORIGIN_CIRCUIT(circ); else if (TO_ORIGIN_CIRCUIT(circ)->rend_data && - !memcmp(TO_ORIGIN_CIRCUIT(circ)->rend_data->rend_pk_digest, + tor_memeq(TO_ORIGIN_CIRCUIT(circ)->rend_data->rend_pk_digest, digest, DIGEST_LEN)) return TO_ORIGIN_CIRCUIT(circ); } @@ -871,7 +931,7 @@ circuit_get_by_rend_token_and_purpose(uint8_t purpose, const char *token, for (circ = global_circuitlist; circ; circ = circ->next) { if (! circ->marked_for_close && circ->purpose == purpose && - ! memcmp(TO_OR_CIRCUIT(circ)->rend_token, token, len)) + tor_memeq(TO_OR_CIRCUIT(circ)->rend_token, token, len)) return TO_OR_CIRCUIT(circ); } return NULL; @@ -919,6 +979,7 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info, int need_uptime = (flags & CIRCLAUNCH_NEED_UPTIME) != 0; int need_capacity = (flags & CIRCLAUNCH_NEED_CAPACITY) != 0; int internal = (flags & CIRCLAUNCH_IS_INTERNAL) != 0; + const or_options_t *options = get_options(); /* Make sure we're not trying to create a onehop circ by * cannibalization. */ @@ -947,7 +1008,7 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info, const node_t *ri1 = node_get_by_id(info->identity_digest); do { const node_t *ri2; - if (!memcmp(hop->extend_info->identity_digest, + if (tor_memeq(hop->extend_info->identity_digest, info->identity_digest, DIGEST_LEN)) goto next; if (ri1 && @@ -957,6 +1018,19 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info, hop=hop->next; } while (hop!=circ->cpath); } + if (options->ExcludeNodes) { + /* Make sure no existing nodes in the circuit are excluded for + * general use. (This may be possible if StrictNodes is 0, and we + * thought we needed to use an otherwise excluded node for, say, a + * directory operation.) */ + crypt_path_t *hop = circ->cpath; + do { + if (routerset_contains_extendinfo(options->ExcludeNodes, + hop->extend_info)) + goto next; + hop = hop->next; + } while (hop != circ->cpath); + } if (!best || (best->build_state->need_uptime && !need_uptime)) best = circ; next: ; @@ -1019,16 +1093,19 @@ circuit_mark_all_unused_circs(void) * This is useful for letting the user change pseudonyms, so new * streams will not be linkable to old streams. */ +/* XXX023 this is a bad name for what this function does */ void circuit_expire_all_dirty_circs(void) { circuit_t *circ; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); for (circ=global_circuitlist; circ; circ = circ->next) { if (CIRCUIT_IS_ORIGIN(circ) && !circ->marked_for_close && circ->timestamp_dirty) + /* XXXX023 This is a screwed-up way to say "This is too dirty + * for new circuits. */ circ->timestamp_dirty -= options->MaxCircuitDirtiness; } } diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h index caca614c8c..7b01ca3ae2 100644 --- a/src/or/circuitlist.h +++ b/src/or/circuitlist.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -15,6 +15,7 @@ circuit_t * _circuit_get_global_list(void); const char *circuit_state_to_string(int state); const char *circuit_purpose_to_controller_string(uint8_t purpose); +const char *circuit_purpose_to_string(uint8_t purpose); void circuit_dump_by_conn(connection_t *conn, int severity); void circuit_set_p_circid_orconn(or_circuit_t *circ, circid_t id, or_connection_t *conn); diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 5426563507..67677ef050 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -32,7 +32,7 @@ extern circuit_t *global_circuitlist; /* from circuitlist.c */ /********* END VARIABLES ************/ -static void circuit_expire_old_circuits_clientside(time_t now); +static void circuit_expire_old_circuits_clientside(void); static void circuit_increment_failure_count(void); /** Return 1 if <b>circ</b> could be returned by circuit_get_best(). @@ -74,7 +74,8 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn, return 0; } - if (purpose == CIRCUIT_PURPOSE_C_GENERAL) + if (purpose == CIRCUIT_PURPOSE_C_GENERAL || + purpose == CIRCUIT_PURPOSE_C_REND_JOINED) if (circ->timestamp_dirty && circ->timestamp_dirty+get_options()->MaxCircuitDirtiness <= now) return 0; @@ -109,7 +110,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn, char digest[DIGEST_LEN]; if (hexdigest_to_digest(conn->chosen_exit_name, digest) < 0) return 0; /* broken digest, we don't want it */ - if (memcmp(digest, build_state->chosen_exit->identity_digest, + if (tor_memneq(digest, build_state->chosen_exit->identity_digest, DIGEST_LEN)) return 0; /* this is a circuit to somewhere else */ if (tor_digest_is_zero(digest)) { @@ -128,7 +129,7 @@ circuit_is_acceptable(circuit_t *circ, edge_connection_t *conn, return 0; } } - if (exitnode && !connection_ap_can_use_exit(conn, exitnode, 0)) { + if (exitnode && !connection_ap_can_use_exit(conn, exitnode)) { /* can't exit from this router */ return 0; } @@ -163,10 +164,14 @@ circuit_is_better(circuit_t *a, circuit_t *b, uint8_t purpose) return 1; } else { if (a->timestamp_dirty || - tor_timercmp(&a->timestamp_created, &b->timestamp_created, >)) + timercmp(&a->timestamp_created, &b->timestamp_created, >)) return 1; if (CIRCUIT_IS_ORIGIN(b) && TO_ORIGIN_CIRCUIT(b)->build_state->is_internal) + /* XXX023 what the heck is this internal thing doing here. I + * think we can get rid of it. circuit_is_acceptable() already + * makes sure that is_internal is exactly what we need it to + * be. -RD */ return 1; } break; @@ -205,7 +210,7 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose, int need_uptime, int need_internal) { circuit_t *circ, *best=NULL; - time_t now = time(NULL); + struct timeval now; int intro_going_on_but_too_old = 0; tor_assert(conn); @@ -214,17 +219,16 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose, purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT || purpose == CIRCUIT_PURPOSE_C_REND_JOINED); + tor_gettimeofday(&now); + for (circ=global_circuitlist;circ;circ = circ->next) { if (!circuit_is_acceptable(circ,conn,must_be_open,purpose, - need_uptime,need_internal,now)) + need_uptime,need_internal,now.tv_sec)) continue; -/* XXX022 make this 15 be a function of circuit finishing times we've - * seen lately, a la Fallon Chen's GSoC work -RD */ -#define REND_PARALLEL_INTRO_DELAY 15 if (purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT && !must_be_open && circ->state != CIRCUIT_STATE_OPEN && - circ->timestamp_created.tv_sec + REND_PARALLEL_INTRO_DELAY < now) { + tv_mdiff(&now, &circ->timestamp_created) > circ_times.timeout_ms) { intro_going_on_but_too_old = 1; continue; } @@ -244,54 +248,68 @@ circuit_get_best(edge_connection_t *conn, int must_be_open, uint8_t purpose, return best ? TO_ORIGIN_CIRCUIT(best) : NULL; } +#if 0 /** Check whether, according to the policies in <b>options</b>, the * circuit <b>circ</b> makes sense. */ -/* XXXX currently only checks Exclude{Exit}Nodes. It should check more. */ +/* XXXX currently only checks Exclude{Exit}Nodes; it should check more. + * Also, it doesn't have the right definition of an exit circuit. Also, + * it's never called. */ int circuit_conforms_to_options(const origin_circuit_t *circ, const or_options_t *options) { const crypt_path_t *cpath, *cpath_next = NULL; - for (cpath = circ->cpath; cpath && cpath_next != circ->cpath; - cpath = cpath_next) { + /* first check if it includes any excluded nodes */ + for (cpath = circ->cpath; cpath_next != circ->cpath; cpath = cpath_next) { cpath_next = cpath->next; - if (routerset_contains_extendinfo(options->ExcludeNodes, cpath->extend_info)) return 0; + } - if (cpath->next == circ->cpath) { - /* This is apparently the exit node. */ + /* then consider the final hop */ + if (routerset_contains_extendinfo(options->ExcludeExitNodes, + circ->cpath->prev->extend_info)) + return 0; - if (routerset_contains_extendinfo(options->ExcludeExitNodes, - cpath->extend_info)) - return 0; - } - } return 1; } +#endif /** Close all circuits that start at us, aren't open, and were born * at least CircuitBuildTimeout seconds ago. */ void -circuit_expire_building(time_t now) +circuit_expire_building(void) { circuit_t *victim, *next_circ = global_circuitlist; /* circ_times.timeout_ms and circ_times.close_ms are from * circuit_build_times_get_initial_timeout() if we haven't computed * custom timeouts yet */ - time_t general_cutoff = now - tor_lround(circ_times.timeout_ms/1000); - time_t begindir_cutoff = now - tor_lround(circ_times.timeout_ms/2000); - time_t fourhop_cutoff = now - tor_lround(4*circ_times.timeout_ms/3000); - time_t cannibalize_cutoff = now - tor_lround(circ_times.timeout_ms/2000); - time_t close_cutoff = now - tor_lround(circ_times.close_ms/1000); - time_t introcirc_cutoff = begindir_cutoff; + struct timeval general_cutoff, begindir_cutoff, fourhop_cutoff, + cannibalize_cutoff, close_cutoff, extremely_old_cutoff; + struct timeval now; cpath_build_state_t *build_state; + tor_gettimeofday(&now); +#define SET_CUTOFF(target, msec) do { \ + long ms = tor_lround(msec); \ + struct timeval diff; \ + diff.tv_sec = ms / 1000; \ + diff.tv_usec = (int)((ms % 1000) * 1000); \ + timersub(&now, &diff, &target); \ + } while (0) + + SET_CUTOFF(general_cutoff, circ_times.timeout_ms); + SET_CUTOFF(begindir_cutoff, circ_times.timeout_ms / 2.0); + SET_CUTOFF(fourhop_cutoff, circ_times.timeout_ms * (4/3.0)); + SET_CUTOFF(cannibalize_cutoff, circ_times.timeout_ms / 2.0); + SET_CUTOFF(close_cutoff, circ_times.close_ms); + SET_CUTOFF(extremely_old_cutoff, circ_times.close_ms*2 + 1000); + while (next_circ) { - time_t cutoff; + struct timeval cutoff; victim = next_circ; next_circ = next_circ->next; if (!CIRCUIT_IS_ORIGIN(victim) || /* didn't originate here */ @@ -306,24 +324,16 @@ circuit_expire_building(time_t now) cutoff = fourhop_cutoff; else if (TO_ORIGIN_CIRCUIT(victim)->has_opened) cutoff = cannibalize_cutoff; - else if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING) - cutoff = introcirc_cutoff; else if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) cutoff = close_cutoff; else cutoff = general_cutoff; - if (victim->timestamp_created.tv_sec > cutoff) + if (timercmp(&victim->timestamp_created, &cutoff, >)) continue; /* it's still young, leave it alone */ #if 0 /* some debug logs, to help track bugs */ - if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING && - victim->timestamp_created.tv_sec <= introcirc_cutoff && - victim->timestamp_created.tv_sec > general_cutoff) - log_info(LD_REND|LD_CIRC, "Timing out introduction circuit which we " - "would not have done if it had been a general circuit."); - if (victim->purpose >= CIRCUIT_PURPOSE_C_INTRODUCING && victim->purpose <= CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED) { if (!victim->timestamp_dirty) @@ -359,7 +369,7 @@ circuit_expire_building(time_t now) * because that's set when they switch purposes */ if (TO_ORIGIN_CIRCUIT(victim)->rend_data || - victim->timestamp_dirty > cutoff) + victim->timestamp_dirty > cutoff.tv_sec) continue; break; case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED: @@ -368,7 +378,7 @@ circuit_expire_building(time_t now) * make an introduction attempt. so timestamp_dirty * will reflect the time since the last attempt. */ - if (victim->timestamp_dirty > cutoff) + if (victim->timestamp_dirty > cutoff.tv_sec) continue; break; } @@ -377,10 +387,11 @@ circuit_expire_building(time_t now) TO_ORIGIN_CIRCUIT(victim)->cpath->state == CPATH_STATE_OPEN; if (TO_ORIGIN_CIRCUIT(victim)->p_streams != NULL) { - log_warn(LD_BUG, "Circuit %d (purpose %d) has timed out, " + log_warn(LD_BUG, "Circuit %d (purpose %d, %s) has timed out, " "yet has attached streams!", TO_ORIGIN_CIRCUIT(victim)->global_identifier, - victim->purpose); + victim->purpose, + circuit_purpose_to_string(victim->purpose)); tor_fragile_assert(); continue; } @@ -408,16 +419,16 @@ circuit_expire_building(time_t now) * it off at, we probably had a suspend event along this codepath, * and we should discard the value. */ - if (now - victim->timestamp_created.tv_sec > - 2*circ_times.close_ms/1000+1) { + if (timercmp(&victim->timestamp_created, &extremely_old_cutoff, <)) { log_notice(LD_CIRC, "Extremely large value for circuit build timeout: %lds. " - "Assuming clock jump. Purpose %d", - (long)(now - victim->timestamp_created.tv_sec), - victim->purpose); + "Assuming clock jump. Purpose %d (%s)", + (long)(now.tv_sec - victim->timestamp_created.tv_sec), + victim->purpose, + circuit_purpose_to_string(victim->purpose)); } else if (circuit_build_times_count_close(&circ_times, - first_hop_succeeded, - victim->timestamp_created.tv_sec)) { + first_hop_succeeded, + victim->timestamp_created.tv_sec)) { circuit_build_times_set_timeout(&circ_times); } } @@ -495,7 +506,7 @@ circuit_stream_is_being_handled(edge_connection_t *conn, if (exitnode && (!need_uptime || build_state->need_uptime)) { int ok; if (conn) { - ok = connection_ap_can_use_exit(conn, exitnode, 0); + ok = connection_ap_can_use_exit(conn, exitnode); } else { addr_policy_result_t r; r = compare_addr_to_node_policy(0, port, exitnode); @@ -625,7 +636,7 @@ void circuit_build_needed_circs(time_t now) { static time_t time_to_new_circuit = 0; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); /* launch a new circ for any pending streams that need one */ connection_ap_attach_pending(); @@ -638,7 +649,7 @@ circuit_build_needed_circs(time_t now) time_to_new_circuit = now + options->NewCircuitPeriod; if (proxy_mode(get_options())) addressmap_clean(now); - circuit_expire_old_circuits_clientside(now); + circuit_expire_old_circuits_clientside(); #if 0 /* disable for now, until predict-and-launch-new can cull leftovers */ circ = circuit_get_youngest_clean_open(CIRCUIT_PURPOSE_C_GENERAL); @@ -727,17 +738,20 @@ circuit_detach_stream(circuit_t *circ, edge_connection_t *conn) * for too long and has no streams on it: mark it for close. */ static void -circuit_expire_old_circuits_clientside(time_t now) +circuit_expire_old_circuits_clientside(void) { circuit_t *circ; - time_t cutoff; + struct timeval cutoff, now; + + tor_gettimeofday(&now); + cutoff = now; if (circuit_build_times_needs_circuits(&circ_times)) { /* Circuits should be shorter lived if we need more of them * for learning a good build timeout */ - cutoff = now - IDLE_TIMEOUT_WHILE_LEARNING; + cutoff.tv_sec -= IDLE_TIMEOUT_WHILE_LEARNING; } else { - cutoff = now - get_options()->CircuitIdleTimeout; + cutoff.tv_sec -= get_options()->CircuitIdleTimeout; } for (circ = global_circuitlist; circ; circ = circ->next) { @@ -747,15 +761,16 @@ circuit_expire_old_circuits_clientside(time_t now) * on it, mark it for close. */ if (circ->timestamp_dirty && - circ->timestamp_dirty + get_options()->MaxCircuitDirtiness < now && + circ->timestamp_dirty + get_options()->MaxCircuitDirtiness < + now.tv_sec && !TO_ORIGIN_CIRCUIT(circ)->p_streams /* nothing attached */ ) { - log_debug(LD_CIRC, "Closing n_circ_id %d (dirty %d secs ago, " + log_debug(LD_CIRC, "Closing n_circ_id %d (dirty %ld sec ago, " "purpose %d)", - circ->n_circ_id, (int)(now - circ->timestamp_dirty), + circ->n_circ_id, (long)(now.tv_sec - circ->timestamp_dirty), circ->purpose); circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED); } else if (!circ->timestamp_dirty && circ->state == CIRCUIT_STATE_OPEN) { - if (circ->timestamp_created.tv_sec < cutoff) { + if (timercmp(&circ->timestamp_created, &cutoff, <)) { if (circ->purpose == CIRCUIT_PURPOSE_C_GENERAL || circ->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT || circ->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO || @@ -764,8 +779,8 @@ circuit_expire_old_circuits_clientside(time_t now) circ->purpose <= CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED) || circ->purpose == CIRCUIT_PURPOSE_S_CONNECT_REND) { log_debug(LD_CIRC, - "Closing circuit that has been unused for %ld seconds.", - (long)(now - circ->timestamp_created.tv_sec)); + "Closing circuit that has been unused for %ld msec.", + tv_mdiff(&circ->timestamp_created, &now)); circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED); } else if (!TO_ORIGIN_CIRCUIT(circ)->is_ancient) { /* Server-side rend joined circuits can end up really old, because @@ -777,12 +792,11 @@ circuit_expire_old_circuits_clientside(time_t now) circ->purpose != CIRCUIT_PURPOSE_S_INTRO) { log_notice(LD_CIRC, "Ancient non-dirty circuit %d is still around after " - "%ld seconds. Purpose: %d", + "%ld milliseconds. Purpose: %d (%s)", TO_ORIGIN_CIRCUIT(circ)->global_identifier, - (long)(now - circ->timestamp_created.tv_sec), - circ->purpose); - /* FFFF implement a new circuit_purpose_to_string() so we don't - * just print out a number for circ->purpose */ + tv_mdiff(&circ->timestamp_created, &now), + circ->purpose, + circuit_purpose_to_string(circ->purpose)); TO_ORIGIN_CIRCUIT(circ)->is_ancient = 1; } } @@ -1111,8 +1125,9 @@ circuit_launch_by_extend_info(uint8_t purpose, * internal circs rather than exit circs? -RD */ circ = circuit_find_to_cannibalize(purpose, extend_info, flags); if (circ) { - log_info(LD_CIRC,"Cannibalizing circ '%s' for purpose %d", - build_state_get_exit_nickname(circ->build_state), purpose); + log_info(LD_CIRC,"Cannibalizing circ '%s' for purpose %d (%s)", + build_state_get_exit_nickname(circ->build_state), purpose, + circuit_purpose_to_string(purpose)); circ->_base.purpose = purpose; /* reset the birth date of this circ, else expire_building * will see it and think it's been trying to build since it @@ -1193,7 +1208,7 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, int check_exit_policy; int need_uptime, need_internal; int want_onehop; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); tor_assert(conn); tor_assert(circp); @@ -1260,12 +1275,14 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, return -1; } } else { - /* XXXX022 Duplicates checks in connection_ap_handshake_attach_circuit */ + /* XXXX023 Duplicates checks in connection_ap_handshake_attach_circuit: + * refactor into a single function? */ const node_t *node = node_get_by_nickname(conn->chosen_exit_name, 1); int opt = conn->chosen_exit_optional; - if (node && !connection_ap_can_use_exit(conn, node, 0)) { + if (node && !connection_ap_can_use_exit(conn, node)) { log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP, - "Requested exit point '%s' would refuse request. %s.", + "Requested exit point '%s' is excluded or " + "would refuse request. %s.", conn->chosen_exit_name, opt ? "Trying others" : "Closing"); if (opt) { conn->chosen_exit_optional = 0; @@ -1301,8 +1318,8 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, conn->_base.state = AP_CONN_STATE_RENDDESC_WAIT; return 0; } - log_info(LD_REND,"Chose '%s' as intro point for '%s'.", - extend_info->nickname, + log_info(LD_REND,"Chose %s as intro point for '%s'.", + extend_info_describe(extend_info), safe_str_client(conn->rend_data->onion_address)); } @@ -1376,7 +1393,18 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, extend_info_free(extend_info); - if (desired_circuit_purpose != CIRCUIT_PURPOSE_C_GENERAL) { + if (desired_circuit_purpose == CIRCUIT_PURPOSE_C_GENERAL) { + /* We just caused a circuit to get built because of this stream. + * If this stream has caused a _lot_ of circuits to be built, that's + * a bad sign: we should tell the user. */ + if (conn->num_circuits_launched < NUM_CIRCUITS_LAUNCHED_THRESHOLD && + ++conn->num_circuits_launched == NUM_CIRCUITS_LAUNCHED_THRESHOLD) + log_info(LD_CIRC, "The application request to %s:%d has launched " + "%d circuits without finding one it likes.", + escaped_safe_str_client(conn->socks_request->address), + conn->socks_request->port, + conn->num_circuits_launched); + } else { /* help predict this next time */ rep_hist_note_used_internal(time(NULL), need_uptime, 1); if (circ) { @@ -1440,15 +1468,35 @@ link_apconn_to_circ(edge_connection_t *apconn, origin_circuit_t *circ, } } -/** If an exit wasn't specifically chosen, save the history for future - * use. */ +/** Return true iff <b>address</b> is matched by one of the entries in + * TrackHostExits. */ +int +hostname_in_track_host_exits(const or_options_t *options, const char *address) +{ + if (!options->TrackHostExits) + return 0; + SMARTLIST_FOREACH_BEGIN(options->TrackHostExits, const char *, cp) { + if (cp[0] == '.') { /* match end */ + if (cp[1] == '\0' || + !strcasecmpend(address, cp) || + !strcasecmp(address, &cp[1])) + return 1; + } else if (strcasecmp(cp, address) == 0) { + return 1; + } + } SMARTLIST_FOREACH_END(cp); + return 0; +} + +/** If an exit wasn't explicitly specified for <b>conn</b>, consider saving + * the exit that we *did* choose for use by future connections to + * <b>conn</b>'s destination. + */ static void consider_recording_trackhost(edge_connection_t *conn, origin_circuit_t *circ) { - int found_needle = 0; - or_options_t *options = get_options(); - size_t len; - char *new_address; + const or_options_t *options = get_options(); + char *new_address = NULL; char fp[HEX_DIGEST_LEN+1]; /* Search the addressmap for this conn's destination. */ @@ -1458,18 +1506,8 @@ consider_recording_trackhost(edge_connection_t *conn, origin_circuit_t *circ) options->TrackHostExitsExpire)) return; /* nothing to track, or already mapped */ - SMARTLIST_FOREACH(options->TrackHostExits, const char *, cp, { - if (cp[0] == '.') { /* match end */ - if (cp[1] == '\0' || - !strcasecmpend(conn->socks_request->address, cp) || - !strcasecmp(conn->socks_request->address, &cp[1])) - found_needle = 1; - } else if (strcasecmp(cp, conn->socks_request->address) == 0) { - found_needle = 1; - } - }); - - if (!found_needle || !circ->build_state->chosen_exit) + if (!hostname_in_track_host_exits(options, conn->socks_request->address) || + !circ->build_state->chosen_exit) return; /* write down the fingerprint of the chosen exit, not the nickname, @@ -1478,12 +1516,7 @@ consider_recording_trackhost(edge_connection_t *conn, origin_circuit_t *circ) circ->build_state->chosen_exit->identity_digest, DIGEST_LEN); /* Add this exit/hostname pair to the addressmap. */ - len = strlen(conn->socks_request->address) + 1 /* '.' */ + - strlen(fp) + 1 /* '.' */ + - strlen("exit") + 1 /* '\0' */; - new_address = tor_malloc(len); - - tor_snprintf(new_address, len, "%s.%s.exit", + tor_asprintf(&new_address, "%s.%s.exit", conn->socks_request->address, fp); addressmap_register(conn->socks_request->address, new_address, @@ -1583,9 +1616,10 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn) } return -1; } - if (node && !connection_ap_can_use_exit(conn, node, 0)) { + if (node && !connection_ap_can_use_exit(conn, node)) { log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP, - "Requested exit point '%s' would refuse request. %s.", + "Requested exit point '%s' is excluded or " + "would refuse request. %s.", conn->chosen_exit_name, opt ? "Trying others" : "Closing"); if (opt) { conn->chosen_exit_optional = 0; @@ -1599,7 +1633,7 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn) /* find the circuit that we should use, if there is one. */ retval = circuit_get_open_circ_or_launch( conn, CIRCUIT_PURPOSE_C_GENERAL, &circ); - if (retval < 1) // XXX021 if we totally fail, this still returns 0 -RD + if (retval < 1) // XXX022 if we totally fail, this still returns 0 -RD return retval; log_debug(LD_APP|LD_CIRC, @@ -1698,14 +1732,21 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn) "introduction. (stream %d sec old)", introcirc->_base.n_circ_id, rendcirc->_base.n_circ_id, conn_age); - if (rend_client_send_introduction(introcirc, rendcirc) < 0) { + switch (rend_client_send_introduction(introcirc, rendcirc)) { + case 0: /* success */ + rendcirc->_base.timestamp_dirty = time(NULL); + introcirc->_base.timestamp_dirty = time(NULL); + assert_circuit_ok(TO_CIRCUIT(rendcirc)); + assert_circuit_ok(TO_CIRCUIT(introcirc)); + return 0; + case -1: /* transient error */ + return 0; + case -2: /* permanent error */ + return -1; + default: /* oops */ + tor_fragile_assert(); return -1; } - rendcirc->_base.timestamp_dirty = time(NULL); - introcirc->_base.timestamp_dirty = time(NULL); - assert_circuit_ok(TO_CIRCUIT(rendcirc)); - assert_circuit_ok(TO_CIRCUIT(introcirc)); - return 0; } } diff --git a/src/or/circuituse.h b/src/or/circuituse.h index 4e4cd1a4d9..ab7f6a2fe2 100644 --- a/src/or/circuituse.h +++ b/src/or/circuituse.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -12,12 +12,14 @@ #ifndef _TOR_CIRCUITUSE_H #define _TOR_CIRCUITUSE_H -void circuit_expire_building(time_t now); +void circuit_expire_building(void); void circuit_remove_handled_ports(smartlist_t *needed_ports); int circuit_stream_is_being_handled(edge_connection_t *conn, uint16_t port, int min); +#if 0 int circuit_conforms_to_options(const origin_circuit_t *circ, const or_options_t *options); +#endif void circuit_build_needed_circs(time_t now); void circuit_detach_stream(circuit_t *circ, edge_connection_t *conn); @@ -48,5 +50,8 @@ int connection_ap_handshake_attach_chosen_circuit(edge_connection_t *conn, crypt_path_t *cpath); int connection_ap_handshake_attach_circuit(edge_connection_t *conn); +int hostname_in_track_host_exits(const or_options_t *options, + const char *address); + #endif diff --git a/src/or/command.c b/src/or/command.c index 60c9184b57..d24373eec8 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -276,8 +276,8 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn) if (node) { char *p = esc_for_log(node_get_platform(node)); log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, - "Details: nickname \"%s\", platform %s.", - node_get_nickname(node), p); + "Details: router %s, platform %s.", + node_describe(node), p); tor_free(p); } return; @@ -310,7 +310,8 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn) char keys[CPATH_KEY_MATERIAL_LEN]; char reply[DIGEST_LEN*2]; tor_assert(cell->command == CELL_CREATE_FAST); - if (fast_server_handshake(cell->payload, reply, keys, sizeof(keys))<0) { + if (fast_server_handshake(cell->payload, (uint8_t*)reply, + (uint8_t*)keys, sizeof(keys))<0) { log_warn(LD_OR,"Failed to generate key material. Closing."); circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL); return; @@ -357,7 +358,7 @@ command_process_created_cell(cell_t *cell, or_connection_t *conn) int err_reason = 0; log_debug(LD_OR,"at OP. Finishing handshake."); if ((err_reason = circuit_finish_handshake(origin_circ, cell->command, - cell->payload)) < 0) { + cell->payload)) < 0) { log_warn(LD_OR,"circuit_finish_handshake failed."); circuit_mark_for_close(circ, -err_reason); return; @@ -373,7 +374,7 @@ command_process_created_cell(cell_t *cell, or_connection_t *conn) log_debug(LD_OR, "Converting created cell to extended relay cell, sending."); relay_send_command_from_edge(0, circ, RELAY_COMMAND_EXTENDED, - cell->payload, ONIONSKIN_REPLY_LEN, + (char*)cell->payload, ONIONSKIN_REPLY_LEN, NULL); } } @@ -503,7 +504,7 @@ static void command_process_versions_cell(var_cell_t *cell, or_connection_t *conn) { int highest_supported_version = 0; - const char *cp, *end; + const uint8_t *cp, *end; if (conn->link_proto != 0 || conn->_base.state != OR_CONN_STATE_OR_HANDSHAKING || (conn->handshake_state && conn->handshake_state->received_versions)) { @@ -557,8 +558,8 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn) time_t timestamp; uint8_t my_addr_type; uint8_t my_addr_len; - const char *my_addr_ptr; - const char *cp, *end; + const uint8_t *my_addr_ptr; + const uint8_t *cp, *end; uint8_t n_other_addrs; time_t now = time(NULL); @@ -586,7 +587,7 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn) my_addr_type = (uint8_t) cell->payload[4]; my_addr_len = (uint8_t) cell->payload[5]; - my_addr_ptr = cell->payload + 6; + my_addr_ptr = (uint8_t*) cell->payload + 6; end = cell->payload + CELL_PAYLOAD_SIZE; cp = cell->payload + 6 + my_addr_len; if (cp >= end) { @@ -603,7 +604,8 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn) /* Consider all the other addresses; if any matches, this connection is * "canonical." */ tor_addr_t addr; - const char *next = decode_address_from_payload(&addr, cp, (int)(end-cp)); + const uint8_t *next = + decode_address_from_payload(&addr, cp, (int)(end-cp)); if (next == NULL) { log_fn(LOG_PROTOCOL_WARN, LD_OR, "Bad address in netinfo cell; closing connection."); @@ -647,6 +649,7 @@ command_process_netinfo_cell(cell_t *cell, or_connection_t *conn) /* XXX maybe act on my_apparent_addr, if the source is sufficiently * trustworthy. */ + (void)my_apparent_addr; if (connection_or_set_state_open(conn)<0) connection_mark_for_close(TO_CONN(conn)); diff --git a/src/or/command.h b/src/or/command.h index 1aa56207f6..95b0f3a931 100644 --- a/src/or/command.h +++ b/src/or/command.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/or/config.c b/src/or/config.c index d2dbdaa5dd..cdf0122f75 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -38,17 +38,23 @@ #include <shlobj.h> #endif +#include "procmon.h" + /** Enumeration of types which option values can take */ typedef enum config_type_t { CONFIG_TYPE_STRING = 0, /**< An arbitrary string. */ CONFIG_TYPE_FILENAME, /**< A filename: some prefixes get expanded. */ CONFIG_TYPE_UINT, /**< A non-negative integer less than MAX_INT */ + CONFIG_TYPE_PORT, /**< A port from 1...65535, 0 for "not set", or + * "auto". */ CONFIG_TYPE_INTERVAL, /**< A number of seconds, with optional units*/ CONFIG_TYPE_MSEC_INTERVAL,/**< A number of milliseconds, with optional * units */ CONFIG_TYPE_MEMUNIT, /**< A number of bytes, with optional units*/ CONFIG_TYPE_DOUBLE, /**< A floating-point value */ CONFIG_TYPE_BOOL, /**< A boolean value, expressed as 0 or 1. */ + CONFIG_TYPE_AUTOBOOL, /**< A boolean+auto value, expressed 0 for false, + * 1 for true, and -1 for auto */ CONFIG_TYPE_ISOTIME, /**< An ISO-formatted time relative to GMT. */ CONFIG_TYPE_CSV, /**< A list of strings, separated by commas and * optional whitespace. */ @@ -198,6 +204,8 @@ static config_var_t _option_vars[] = { V(CircuitPriorityHalflife, DOUBLE, "-100.0"), /*negative:'Use default'*/ V(ClientDNSRejectInternalAddresses, BOOL,"1"), V(ClientOnly, BOOL, "0"), + V(ClientRejectInternalAddresses, BOOL, "1"), + V(ClientTransportPlugin, LINELIST, NULL), V(ConsensusParams, STRING, NULL), V(ConnLimit, UINT, "1000"), V(ConnDirectionStatistics, BOOL, "0"), @@ -205,11 +213,15 @@ static config_var_t _option_vars[] = { V(ConstrainedSockSize, MEMUNIT, "8192"), V(ContactInfo, STRING, NULL), V(ControlListenAddress, LINELIST, NULL), - V(ControlPort, UINT, "0"), + V(ControlPort, PORT, "0"), + V(ControlPortFileGroupReadable,BOOL, "0"), + V(ControlPortWriteToFile, FILENAME, NULL), V(ControlSocket, LINELIST, NULL), + V(ControlSocketsGroupWritable, BOOL, "0"), V(CookieAuthentication, BOOL, "0"), V(CookieAuthFileGroupReadable, BOOL, "0"), V(CookieAuthFile, STRING, NULL), + V(CountPrivateBandwidth, BOOL, "0"), V(DataDirectory, FILENAME, NULL), OBSOLETE("DebugLogFile"), V(DirAllowPrivateAddresses, BOOL, NULL), @@ -217,18 +229,18 @@ static config_var_t _option_vars[] = { V(DirListenAddress, LINELIST, NULL), OBSOLETE("DirFetchPeriod"), V(DirPolicy, LINELIST, NULL), - V(DirPort, UINT, "0"), + V(DirPort, PORT, "0"), V(DirPortFrontPage, FILENAME, NULL), OBSOLETE("DirPostPeriod"), OBSOLETE("DirRecordUsageByCountry"), OBSOLETE("DirRecordUsageGranularity"), OBSOLETE("DirRecordUsageRetainIPs"), OBSOLETE("DirRecordUsageSaveInterval"), - V(DirReqStatistics, BOOL, "0"), + V(DirReqStatistics, BOOL, "1"), VAR("DirServer", LINELIST, DirServers, NULL), V(DisableAllSwap, BOOL, "0"), V(DisableIOCP, BOOL, "1"), - V(DNSPort, UINT, "0"), + V(DNSPort, PORT, "0"), V(DNSListenAddress, LINELIST, NULL), V(DownloadExtraInfo, BOOL, "0"), V(EnforceDistinctSubnets, BOOL, "1"), @@ -242,7 +254,7 @@ static config_var_t _option_vars[] = { V(ExitPolicy, LINELIST, NULL), V(ExitPolicyRejectPrivate, BOOL, "1"), V(ExitPortStatistics, BOOL, "0"), - V(ExtraInfoStatistics, BOOL, "0"), + V(ExtraInfoStatistics, BOOL, "1"), #if defined (WINCE) V(FallbackNetworkstatusFile, FILENAME, "fallback-consensus"), @@ -258,6 +270,7 @@ static config_var_t _option_vars[] = { V(FetchServerDescriptors, BOOL, "1"), V(FetchHidServDescriptors, BOOL, "1"), V(FetchUselessDescriptors, BOOL, "0"), + V(FetchV2Networkstatus, BOOL, "0"), #ifdef WIN32 V(GeoIPFile, FILENAME, "<default>"), #else @@ -266,6 +279,7 @@ static config_var_t _option_vars[] = { #endif OBSOLETE("Group"), V(HardwareAccel, BOOL, "0"), + V(HeartbeatPeriod, INTERVAL, "6 hours"), V(AccelName, STRING, NULL), V(AccelDir, FILENAME, NULL), V(HashedControlPassword, LINELIST, NULL), @@ -291,12 +305,13 @@ static config_var_t _option_vars[] = { OBSOLETE("IgnoreVersion"), V(KeepalivePeriod, INTERVAL, "5 minutes"), VAR("Log", LINELIST, Logs, NULL), + V(LogMessageDomains, BOOL, "0"), OBSOLETE("LinkPadding"), OBSOLETE("LogLevel"), OBSOLETE("LogFile"), V(LogTimeGranularity, MSEC_INTERVAL, "1 second"), V(LongLivedPorts, CSV, - "21,22,706,1863,5050,5190,5222,5223,6667,6697,8300"), + "21,22,706,1863,5050,5190,5222,5223,6523,6667,6697,8300"), VAR("MapAddress", LINELIST, AddressMap, NULL), V(MaxAdvertisedBandwidth, MEMUNIT, "1 GB"), V(MaxCircuitDirtiness, INTERVAL, "10 minutes"), @@ -306,7 +321,7 @@ static config_var_t _option_vars[] = { V(NewCircuitPeriod, INTERVAL, "30 seconds"), VAR("NamingAuthoritativeDirectory",BOOL, NamingAuthoritativeDir, "0"), V(NATDListenAddress, LINELIST, NULL), - V(NATDPort, UINT, "0"), + V(NATDPort, PORT, "0"), V(Nickname, STRING, NULL), V(WarnUnsafeSocks, BOOL, "1"), OBSOLETE("NoPublish"), @@ -314,7 +329,7 @@ static config_var_t _option_vars[] = { V(NumCPUs, UINT, "0"), V(NumEntryGuards, UINT, "3"), V(ORListenAddress, LINELIST, NULL), - V(ORPort, UINT, "0"), + V(ORPort, PORT, "0"), V(OutboundBindAddress, STRING, NULL), OBSOLETE("PathlenCoinWeight"), V(PerConnBWBurst, MEMUNIT, "0"), @@ -334,7 +349,7 @@ static config_var_t _option_vars[] = { V(RecommendedClientVersions, LINELIST, NULL), V(RecommendedServerVersions, LINELIST, NULL), OBSOLETE("RedirectExit"), - V(RefuseUnknownExits, STRING, "auto"), + V(RefuseUnknownExits, AUTOBOOL, "auto"), V(RejectPlaintextPorts, CSV, ""), V(RelayBandwidthBurst, MEMUNIT, "0"), V(RelayBandwidthRate, MEMUNIT, "0"), @@ -359,7 +374,7 @@ static config_var_t _option_vars[] = { V(ShutdownWaitLength, INTERVAL, "30 seconds"), V(SocksListenAddress, LINELIST, NULL), V(SocksPolicy, LINELIST, NULL), - V(SocksPort, UINT, "9050"), + V(SocksPort, PORT, "9050"), V(SocksTimeout, INTERVAL, "2 minutes"), OBSOLETE("StatusFetchPeriod"), V(StrictNodes, BOOL, "0"), @@ -370,11 +385,12 @@ static config_var_t _option_vars[] = { V(TrackHostExitsExpire, INTERVAL, "30 minutes"), OBSOLETE("TrafficShaping"), V(TransListenAddress, LINELIST, NULL), - V(TransPort, UINT, "0"), + V(TransPort, PORT, "0"), V(TunnelDirConns, BOOL, "1"), V(UpdateBridgesFromAuthority, BOOL, "0"), V(UseBridges, BOOL, "0"), V(UseEntryGuards, BOOL, "1"), + V(UseMicrodescriptors, AUTOBOOL, "0"), V(User, STRING, NULL), VAR("V1AuthoritativeDirectory",BOOL, V1AuthoritativeDir, "0"), VAR("V2AuthoritativeDirectory",BOOL, V2AuthoritativeDir, "0"), @@ -398,14 +414,16 @@ static config_var_t _option_vars[] = { VAR("__LeaveStreamsUnattached",BOOL, LeaveStreamsUnattached, "0"), VAR("__HashedControlSessionPassword", LINELIST, HashedControlSessionPassword, NULL), + VAR("__OwningControllerProcess",STRING,OwningControllerProcess, NULL), V(MinUptimeHidServDirectoryV2, INTERVAL, "24 hours"), + V(_UsingTestNetworkDefaults, BOOL, "0"), { NULL, CONFIG_TYPE_OBSOLETE, 0, NULL } }; /** Override default values with these if the user sets the TestingTorNetwork * option. */ -static config_var_t testing_tor_network_defaults[] = { +static const config_var_t testing_tor_network_defaults[] = { V(ServerDNSAllowBrokenConfig, BOOL, "1"), V(DirAllowPrivateAddresses, BOOL, "1"), V(EnforceDistinctSubnets, BOOL, "0"), @@ -413,6 +431,8 @@ static config_var_t testing_tor_network_defaults[] = { V(AuthDirMaxServersPerAddr, UINT, "0"), V(AuthDirMaxServersPerAuthAddr,UINT, "0"), V(ClientDNSRejectInternalAddresses, BOOL,"0"), + V(ClientRejectInternalAddresses, BOOL, "0"), + V(CountPrivateBandwidth, BOOL, "1"), V(ExitPolicyRejectPrivate, BOOL, "0"), V(V3AuthVotingInterval, INTERVAL, "5 minutes"), V(V3AuthVoteDelay, INTERVAL, "20 seconds"), @@ -423,6 +443,8 @@ static config_var_t testing_tor_network_defaults[] = { V(TestingAuthDirTimeToLearnReachability, INTERVAL, "0 minutes"), V(TestingEstimatedDescriptorPropagationTime, INTERVAL, "0 minutes"), V(MinUptimeHidServDirectoryV2, INTERVAL, "0 minutes"), + V(_UsingTestNetworkDefaults, BOOL, "1"), + { NULL, CONFIG_TYPE_OBSOLETE, 0, NULL } }; #undef VAR @@ -451,15 +473,19 @@ static config_var_t _state_vars[] = { V(BWHistoryReadEnds, ISOTIME, NULL), V(BWHistoryReadInterval, UINT, "900"), V(BWHistoryReadValues, CSV, ""), + V(BWHistoryReadMaxima, CSV, ""), V(BWHistoryWriteEnds, ISOTIME, NULL), V(BWHistoryWriteInterval, UINT, "900"), V(BWHistoryWriteValues, CSV, ""), + V(BWHistoryWriteMaxima, CSV, ""), V(BWHistoryDirReadEnds, ISOTIME, NULL), V(BWHistoryDirReadInterval, UINT, "900"), V(BWHistoryDirReadValues, CSV, ""), + V(BWHistoryDirReadMaxima, CSV, ""), V(BWHistoryDirWriteEnds, ISOTIME, NULL), V(BWHistoryDirWriteInterval, UINT, "900"), V(BWHistoryDirWriteValues, CSV, ""), + V(BWHistoryDirWriteMaxima, CSV, ""), V(TorVersion, STRING, NULL), @@ -521,44 +547,49 @@ static char *get_windows_conf_root(void); #endif static void config_line_append(config_line_t **lst, const char *key, const char *val); -static void option_clear(config_format_t *fmt, or_options_t *options, - config_var_t *var); -static void option_reset(config_format_t *fmt, or_options_t *options, - config_var_t *var, int use_defaults); -static void config_free(config_format_t *fmt, void *options); +static void option_clear(const config_format_t *fmt, or_options_t *options, + const config_var_t *var); +static void option_reset(const config_format_t *fmt, or_options_t *options, + const config_var_t *var, int use_defaults); +static void config_free(const config_format_t *fmt, void *options); static int config_lines_eq(config_line_t *a, config_line_t *b); -static int option_is_same(config_format_t *fmt, - or_options_t *o1, or_options_t *o2, +static int option_is_same(const config_format_t *fmt, + const or_options_t *o1, const or_options_t *o2, const char *name); -static or_options_t *options_dup(config_format_t *fmt, or_options_t *old); -static int options_validate(or_options_t *old_options, or_options_t *options, +static or_options_t *options_dup(const config_format_t *fmt, + const or_options_t *old); +static int options_validate(or_options_t *old_options, + or_options_t *options, int from_setconf, char **msg); -static int options_act_reversible(or_options_t *old_options, char **msg); -static int options_act(or_options_t *old_options); -static int options_transition_allowed(or_options_t *old, or_options_t *new, +static int options_act_reversible(const or_options_t *old_options, char **msg); +static int options_act(const or_options_t *old_options); +static int options_transition_allowed(const or_options_t *old, + const or_options_t *new, char **msg); -static int options_transition_affects_workers(or_options_t *old_options, - or_options_t *new_options); -static int options_transition_affects_descriptor(or_options_t *old_options, - or_options_t *new_options); +static int options_transition_affects_workers( + const or_options_t *old_options, const or_options_t *new_options); +static int options_transition_affects_descriptor( + const or_options_t *old_options, const or_options_t *new_options); static int check_nickname_list(const char *lst, const char *name, char **msg); static int parse_bridge_line(const char *line, int validate_only); +static int parse_client_transport_line(const char *line, int validate_only); static int parse_dir_server_line(const char *line, - authority_type_t required_type, + dirinfo_type_t required_type, int validate_only); static int validate_data_directory(or_options_t *options); -static int write_configuration_file(const char *fname, or_options_t *options); -static config_line_t *get_assigned_option(config_format_t *fmt, - void *options, const char *key, - int escape_val); -static void config_init(config_format_t *fmt, void *options); +static int write_configuration_file(const char *fname, + const or_options_t *options); +static config_line_t *get_assigned_option(const config_format_t *fmt, + const void *options, const char *key, + int escape_val); +static void config_init(const config_format_t *fmt, void *options); static int or_state_validate(or_state_t *old_options, or_state_t *options, int from_setconf, char **msg); static int or_state_load(void); static int options_init_logs(or_options_t *options, int validate_only); -static int is_listening_on_low_port(uint16_t port_option, +static int is_listening_on_low_port(int port_option, const config_line_t *listen_options); static uint64_t config_parse_memunit(const char *s, int *ok); @@ -591,7 +622,7 @@ static config_var_t state_extra_var = { }; /** Configuration format for or_state_t. */ -static config_format_t state_format = { +static const config_format_t state_format = { sizeof(or_state_t), OR_STATE_MAGIC, STRUCT_OFFSET(or_state_t, _magic), @@ -625,7 +656,7 @@ get_dirportfrontpage(void) /** Allocate an empty configuration object of a given format type. */ static void * -config_alloc(config_format_t *fmt) +config_alloc(const config_format_t *fmt) { void *opts = tor_malloc_zero(fmt->size); *(uint32_t*)STRUCT_VAR_P(opts, fmt->magic_offset) = fmt->magic; @@ -635,12 +666,19 @@ config_alloc(config_format_t *fmt) /** Return the currently configured options. */ or_options_t * -get_options(void) +get_options_mutable(void) { tor_assert(global_options); return global_options; } +/** Returns the currently configured options */ +const or_options_t * +get_options(void) +{ + return get_options_mutable(); +} + /** Change the current global options to contain <b>new_val</b> instead of * their current value; take action based on the new value; free the old value * as necessary. Returns 0 on success, -1 on failure. @@ -785,7 +823,7 @@ escaped_safe_str(const char *address) /** Add the default directory authorities directly into the trusted dir list, * but only add them insofar as they share bits with <b>type</b>. */ static void -add_default_trusted_dir_authorities(authority_type_t type) +add_default_trusted_dir_authorities(dirinfo_type_t type) { int i; const char *dirservers[] = { @@ -800,9 +838,9 @@ add_default_trusted_dir_authorities(authority_type_t type) "4A0C CD2D DC79 9508 3D73 F5D6 6710 0C8A 5831 F16D", "ides orport=9090 no-v2 v3ident=27B6B5996C426270A5C95488AA5BCEB6BCC86956 " "216.224.124.114:9030 F397 038A DC51 3361 35E7 B80B D99C A384 4360 292B", - "gabelmoo orport=8080 no-v2 " + "gabelmoo orport=443 no-v2 " "v3ident=ED03BB616EB2F60BEC80151114BB25CEF515B226 " - "80.190.246.100:8180 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281", + "212.112.245.170:80 F204 4413 DAC2 E02E 3D6B CF47 35A1 9BCA 1DE9 7281", "dannenberg orport=443 no-v2 " "v3ident=585769C78764D58426B8B52B6651A5A71137189A " "193.23.244.244:80 7BE6 83E6 5D48 1413 21C5 ED92 F075 C553 64AC 7123", @@ -859,16 +897,16 @@ validate_dir_authorities(or_options_t *options, or_options_t *old_options) /* Now go through the four ways you can configure an alternate * set of directory authorities, and make sure none are broken. */ for (cl = options->DirServers; cl; cl = cl->next) - if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0) + if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0) return -1; for (cl = options->AlternateBridgeAuthority; cl; cl = cl->next) - if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0) + if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0) return -1; for (cl = options->AlternateDirAuthority; cl; cl = cl->next) - if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0) + if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0) return -1; for (cl = options->AlternateHSAuthority; cl; cl = cl->next) - if (parse_dir_server_line(cl->value, NO_AUTHORITY, 1)<0) + if (parse_dir_server_line(cl->value, NO_DIRINFO, 1)<0) return -1; return 0; } @@ -877,8 +915,8 @@ validate_dir_authorities(or_options_t *options, or_options_t *old_options) * as appropriate. */ static int -consider_adding_dir_authorities(or_options_t *options, - or_options_t *old_options) +consider_adding_dir_authorities(const or_options_t *options, + const or_options_t *old_options) { config_line_t *cl; int need_to_update = @@ -899,27 +937,28 @@ consider_adding_dir_authorities(or_options_t *options, if (!options->DirServers) { /* then we may want some of the defaults */ - authority_type_t type = NO_AUTHORITY; + dirinfo_type_t type = NO_DIRINFO; if (!options->AlternateBridgeAuthority) - type |= BRIDGE_AUTHORITY; + type |= BRIDGE_DIRINFO; if (!options->AlternateDirAuthority) - type |= V1_AUTHORITY | V2_AUTHORITY | V3_AUTHORITY; + type |= V1_DIRINFO | V2_DIRINFO | V3_DIRINFO | EXTRAINFO_DIRINFO | + MICRODESC_DIRINFO; if (!options->AlternateHSAuthority) - type |= HIDSERV_AUTHORITY; + type |= HIDSERV_DIRINFO; add_default_trusted_dir_authorities(type); } for (cl = options->DirServers; cl; cl = cl->next) - if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0) + if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0) return -1; for (cl = options->AlternateBridgeAuthority; cl; cl = cl->next) - if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0) + if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0) return -1; for (cl = options->AlternateDirAuthority; cl; cl = cl->next) - if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0) + if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0) return -1; for (cl = options->AlternateHSAuthority; cl; cl = cl->next) - if (parse_dir_server_line(cl->value, NO_AUTHORITY, 0)<0) + if (parse_dir_server_line(cl->value, NO_DIRINFO, 0)<0) return -1; return 0; } @@ -931,12 +970,12 @@ consider_adding_dir_authorities(or_options_t *options, * Return 0 if all goes well, return -1 if things went badly. */ static int -options_act_reversible(or_options_t *old_options, char **msg) +options_act_reversible(const or_options_t *old_options, char **msg) { smartlist_t *new_listeners = smartlist_create(); smartlist_t *replaced_listeners = smartlist_create(); static int libevent_initialized = 0; - or_options_t *options = get_options(); + or_options_t *options = get_options_mutable(); int running_tor = options->command == CMD_RUN_TOR; int set_conn_limit = 0; int r = -1; @@ -951,9 +990,15 @@ options_act_reversible(or_options_t *old_options, char **msg) } #ifndef HAVE_SYS_UN_H - if (options->ControlSocket) { - *msg = tor_strdup("Unix domain sockets (ControlSocket) not supported" - " on this OS/with this build."); + if (options->ControlSocket || options->ControlSocketsGroupWritable) { + *msg = tor_strdup("Unix domain sockets (ControlSocket) not supported " + "on this OS/with this build."); + goto rollback; + } +#else + if (options->ControlSocketsGroupWritable && !options->ControlSocket) { + *msg = tor_strdup("Setting ControlSocketGroupWritable without setting" + "a ControlSocket makes no sense."); goto rollback; } #endif @@ -1014,7 +1059,8 @@ options_act_reversible(or_options_t *old_options, char **msg) /* Ensure data directory is private; create if possible. */ if (check_private_dir(options->DataDirectory, - running_tor ? CPD_CREATE : CPD_CHECK)<0) { + running_tor ? CPD_CREATE : CPD_CHECK, + options->User)<0) { tor_asprintf(msg, "Couldn't access/create private data directory \"%s\"", options->DataDirectory); @@ -1022,12 +1068,13 @@ options_act_reversible(or_options_t *old_options, char **msg) /* No need to roll back, since you can't change the value. */ } - if (directory_caches_v2_dir_info(options)) { + if (directory_caches_v2_dir_info(options)) { size_t len = strlen(options->DataDirectory)+32; char *fn = tor_malloc(len); tor_snprintf(fn, len, "%s"PATH_SEPARATOR"cached-status", options->DataDirectory); - if (check_private_dir(fn, running_tor ? CPD_CREATE : CPD_CHECK) < 0) { + if (check_private_dir(fn, running_tor ? CPD_CREATE : CPD_CHECK, + options->User) < 0) { tor_asprintf(msg, "Couldn't access/create private data directory \"%s\"", fn); tor_free(fn); @@ -1097,7 +1144,7 @@ options_act_reversible(or_options_t *old_options, char **msg) /** If we need to have a GEOIP ip-to-country map to run with our configured * options, return 1 and set *<b>reason_out</b> to a description of why. */ int -options_need_geoip_info(or_options_t *options, const char **reason_out) +options_need_geoip_info(const or_options_t *options, const char **reason_out) { int bridge_usage = options->BridgeRelay && options->BridgeRecordUsageByCountry; @@ -1122,7 +1169,7 @@ options_need_geoip_info(or_options_t *options, const char **reason_out) /** Return the bandwidthrate that we are going to report to the authorities * based on the config options. */ uint32_t -get_effective_bwrate(or_options_t *options) +get_effective_bwrate(const or_options_t *options) { uint64_t bw = options->BandwidthRate; if (bw > options->MaxAdvertisedBandwidth) @@ -1136,7 +1183,7 @@ get_effective_bwrate(or_options_t *options) /** Return the bandwidthburst that we are going to report to the authorities * based on the config options. */ uint32_t -get_effective_bwburst(or_options_t *options) +get_effective_bwburst(const or_options_t *options) { uint64_t bw = options->BandwidthBurst; if (options->RelayBandwidthBurst > 0 && bw > options->RelayBandwidthBurst) @@ -1155,12 +1202,14 @@ get_effective_bwburst(or_options_t *options) * here yet. Some is still in do_hup() and other places. */ static int -options_act(or_options_t *old_options) +options_act(const or_options_t *old_options) { config_line_t *cl; - or_options_t *options = get_options(); + or_options_t *options = get_options_mutable(); int running_tor = options->command == CMD_RUN_TOR; char *msg; + const int transition_affects_workers = + old_options && options_transition_affects_workers(old_options, options); if (running_tor && !have_lockfile()) { if (try_locking(options, 1) < 0) @@ -1170,8 +1219,20 @@ options_act(or_options_t *old_options) if (consider_adding_dir_authorities(options, old_options) < 0) return -1; + clear_transport_list(); + if (options->ClientTransportPlugin) { + for (cl = options->ClientTransportPlugin; cl; cl = cl->next) { + if (parse_client_transport_line(cl->value, 0)<0) { + log_warn(LD_BUG, + "Previously validated ClientTransportPlugin line " + "could not be added!"); + return -1; + } + } + } + if (options->Bridges) { - clear_bridge_list(); + mark_bridge_list(); for (cl = options->Bridges; cl; cl = cl->next) { if (parse_bridge_line(cl->value, 0)<0) { log_warn(LD_BUG, @@ -1179,8 +1240,14 @@ options_act(or_options_t *old_options) return -1; } } + sweep_bridge_list(); } + /* If we have pluggable transport related options enabled, see if we + should warn the user about potential configuration problems. */ + if (options->Bridges || options->ClientTransportPlugin) + validate_pluggable_transports_config(); + if (running_tor && rend_config_services(options, 0)<0) { log_warn(LD_BUG, "Previously validated hidden services line could not be added!"); @@ -1211,6 +1278,17 @@ options_act(or_options_t *old_options) finish_daemon(options->DataDirectory); } + /* We want to reinit keys as needed before we do much of anything else: + keys are important, and other things can depend on them. */ + if (transition_affects_workers || + (options->V3AuthoritativeDir && (!old_options || + !old_options->V3AuthoritativeDir))) { + if (init_keys() < 0) { + log_warn(LD_BUG,"Error initializing keys; exiting"); + return -1; + } + } + /* Write our PID to the PID file. If we do not have write permissions we * will log a warning */ if (options->PidFile) @@ -1232,6 +1310,8 @@ options_act(or_options_t *old_options) return -1; } + monitor_owning_controller_process(options->OwningControllerProcess); + /* reload keys as needed for rendezvous services. */ if (rend_service_load_keys()<0) { log_warn(LD_GENERAL,"Error loading rendezvous service keys"); @@ -1257,42 +1337,54 @@ options_act(or_options_t *old_options) connection_bucket_init(); #endif - /* parse RefuseUnknownExits tristate */ - if (!strcmp(options->RefuseUnknownExits, "0")) - options->RefuseUnknownExits_ = 0; - else if (!strcmp(options->RefuseUnknownExits, "1")) - options->RefuseUnknownExits_ = 1; - else if (!strcmp(options->RefuseUnknownExits, "auto")) - options->RefuseUnknownExits_ = -1; - else { - /* Should have caught this in options_validate */ - return -1; - } - /* Change the cell EWMA settings */ cell_ewma_set_scale_factor(options, networkstatus_get_latest_consensus()); /* Check for transitions that need action. */ if (old_options) { - + int revise_trackexithosts = 0; + int revise_automap_entries = 0; if ((options->UseEntryGuards && !old_options->UseEntryGuards) || - (options->ExcludeNodes && - !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes)) || - (options->ExcludeExitNodes && - !routerset_equal(old_options->ExcludeExitNodes, - options->ExcludeExitNodes)) || - (options->EntryNodes && - !routerset_equal(old_options->EntryNodes, options->EntryNodes)) || - (options->ExitNodes && - !routerset_equal(old_options->ExitNodes, options->ExitNodes)) || + options->UseBridges != old_options->UseBridges || + (options->UseBridges && + !config_lines_eq(options->Bridges, old_options->Bridges)) || + !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes) || + !routerset_equal(old_options->ExcludeExitNodes, + options->ExcludeExitNodes) || + !routerset_equal(old_options->EntryNodes, options->EntryNodes) || + !routerset_equal(old_options->ExitNodes, options->ExitNodes) || options->StrictNodes != old_options->StrictNodes) { log_info(LD_CIRC, - "Changed to using entry guards, or changed preferred or " - "excluded node lists. Abandoning previous circuits."); + "Changed to using entry guards or bridges, or changed " + "preferred or excluded node lists. " + "Abandoning previous circuits."); circuit_mark_all_unused_circs(); circuit_expire_all_dirty_circs(); + revise_trackexithosts = 1; + } + + if (!smartlist_strings_eq(old_options->TrackHostExits, + options->TrackHostExits)) + revise_trackexithosts = 1; + + if (revise_trackexithosts) + addressmap_clear_excluded_trackexithosts(options); + + if (!options->AutomapHostsOnResolve) { + if (old_options->AutomapHostsOnResolve) + revise_automap_entries = 1; + } else { + if (!smartlist_strings_eq(old_options->AutomapHostsSuffixes, + options->AutomapHostsSuffixes)) + revise_automap_entries = 1; + else if (!opt_streq(old_options->VirtualAddrNetwork, + options->VirtualAddrNetwork)) + revise_automap_entries = 1; } + if (revise_automap_entries) + addressmap_clear_invalid_automaps(options); + /* How long should we delay counting bridge stats after becoming a bridge? * We use this so we don't count people who used our bridge thinking it is * a relay. If you change this, don't forget to change the log message @@ -1319,14 +1411,11 @@ options_act(or_options_t *old_options) } } - if (options_transition_affects_workers(old_options, options)) { + if (transition_affects_workers) { log_info(LD_GENERAL, "Worker-related options changed. Rotating workers."); + if (server_mode(options) && !server_mode(old_options)) { - if (init_keys() < 0) { - log_warn(LD_BUG,"Error initializing keys; exiting"); - return -1; - } ip_address_changed(0); if (can_complete_circuit || !any_predicted_circuits(time(NULL))) inform_testing_reachability(); @@ -1339,9 +1428,6 @@ options_act(or_options_t *old_options) return -1; } - if (options->V3AuthoritativeDir && !old_options->V3AuthoritativeDir) - init_keys(); - if (options->PerConnBWRate != old_options->PerConnBWRate || options->PerConnBWBurst != old_options->PerConnBWBurst) connection_or_update_token_buckets(get_connection_array(), options); @@ -1353,7 +1439,7 @@ options_act(or_options_t *old_options) || !geoip_is_loaded())) { /* XXXX Don't use this "<default>" junk; make our filename options * understand prefixes somehow. -NM */ - /* XXXX021 Reload GeoIPFile on SIGHUP. -NM */ + /* XXXX023 Reload GeoIPFile on SIGHUP. -NM */ char *actual_fname = tor_strdup(options->GeoIPFile); #ifdef WIN32 if (!strcmp(actual_fname, "<default>")) { @@ -1368,48 +1454,54 @@ options_act(or_options_t *old_options) tor_free(actual_fname); } - if (options->DirReqStatistics && !geoip_is_loaded()) { - /* Check if GeoIP database could be loaded. */ - log_warn(LD_CONFIG, "Configured to measure directory request " - "statistics, but no GeoIP database found!"); - return -1; - } - - if (options->EntryStatistics) { - if (should_record_bridge_info(options)) { - /* Don't allow measuring statistics on entry guards when configured - * as bridge. */ - log_warn(LD_CONFIG, "Bridges cannot be configured to measure " - "additional GeoIP statistics as entry guards."); - return -1; - } else if (!geoip_is_loaded()) { - /* Check if GeoIP database could be loaded. */ - log_warn(LD_CONFIG, "Configured to measure entry node statistics, " - "but no GeoIP database found!"); - return -1; - } - } - if (options->CellStatistics || options->DirReqStatistics || options->EntryStatistics || options->ExitPortStatistics || options->ConnDirectionStatistics) { time_t now = time(NULL); + int print_notice = 0; if ((!old_options || !old_options->CellStatistics) && - options->CellStatistics) + options->CellStatistics) { rep_hist_buffer_stats_init(now); + print_notice = 1; + } if ((!old_options || !old_options->DirReqStatistics) && - options->DirReqStatistics) - geoip_dirreq_stats_init(now); + options->DirReqStatistics) { + if (geoip_is_loaded()) { + geoip_dirreq_stats_init(now); + print_notice = 1; + } else { + options->DirReqStatistics = 0; + /* Don't warn Tor clients, they don't use statistics */ + if (options->ORPort) + log_notice(LD_CONFIG, "Configured to measure directory request " + "statistics, but no GeoIP database found. " + "Please specify a GeoIP database using the " + "GeoIPFile option."); + } + } if ((!old_options || !old_options->EntryStatistics) && - options->EntryStatistics) - geoip_entry_stats_init(now); + options->EntryStatistics && !should_record_bridge_info(options)) { + if (geoip_is_loaded()) { + geoip_entry_stats_init(now); + print_notice = 1; + } else { + options->EntryStatistics = 0; + log_notice(LD_CONFIG, "Configured to measure entry node " + "statistics, but no GeoIP database found. " + "Please specify a GeoIP database using the " + "GeoIPFile option."); + } + } if ((!old_options || !old_options->ExitPortStatistics) && - options->ExitPortStatistics) + options->ExitPortStatistics) { rep_hist_exit_stats_init(now); + print_notice = 1; + } if ((!old_options || !old_options->ConnDirectionStatistics) && - options->ConnDirectionStatistics) + options->ConnDirectionStatistics) { rep_hist_conn_stats_init(now); - if (!old_options) + } + if (print_notice) log_notice(LD_CONFIG, "Configured to measure statistics. Look for " "the *-stats files that will first be written to the " "data directory in 24 hours from now."); @@ -1434,7 +1526,8 @@ options_act(or_options_t *old_options) /* Check if we need to parse and add the EntryNodes config option. */ if (options->EntryNodes && (!old_options || - (!routerset_equal(old_options->EntryNodes,options->EntryNodes)))) + !routerset_equal(old_options->EntryNodes,options->EntryNodes) || + !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes))) entry_nodes_should_be_added(); /* Since our options changed, we might need to regenerate and upload our @@ -1442,7 +1535,7 @@ options_act(or_options_t *old_options) */ if (!old_options || options_transition_affects_descriptor(old_options, options)) - mark_my_descriptor_dirty(); + mark_my_descriptor_dirty("config change"); /* We may need to reschedule some directory stuff if our status changed. */ if (old_options) { @@ -1486,7 +1579,7 @@ options_act(or_options_t *old_options) * apply abbreviations that work for the config file and the command line. * If <b>warn_obsolete</b> is set, warn about deprecated names. */ static const char * -expand_abbrev(config_format_t *fmt, const char *option, int command_line, +expand_abbrev(const config_format_t *fmt, const char *option, int command_line, int warn_obsolete) { int i; @@ -1646,12 +1739,9 @@ config_free_lines(config_line_t *front) } } -/** If <b>key</b> is a configuration option, return the corresponding - * config_var_t. Otherwise, if <b>key</b> is a non-standard abbreviation, - * warn, and return the corresponding config_var_t. Otherwise return NULL. - */ +/** As config_find_option, but return a non-const pointer. */ static config_var_t * -config_find_option(config_format_t *fmt, const char *key) +config_find_option_mutable(config_format_t *fmt, const char *key) { int i; size_t keylen = strlen(key); @@ -1676,9 +1766,20 @@ config_find_option(config_format_t *fmt, const char *key) return NULL; } +/** If <b>key</b> is a configuration option, return the corresponding const + * config_var_t. Otherwise, if <b>key</b> is a non-standard abbreviation, + * warn, and return the corresponding const config_var_t. Otherwise return + * NULL. + */ +static const config_var_t * +config_find_option(const config_format_t *fmt, const char *key) +{ + return config_find_option_mutable((config_format_t*)fmt, key); +} + /** Return the number of option entries in <b>fmt</b>. */ static int -config_count_options(config_format_t *fmt) +config_count_options(const config_format_t *fmt) { int i; for (i=0; fmt->vars[i].name; ++i) @@ -1696,11 +1797,11 @@ config_count_options(config_format_t *fmt) * Called from config_assign_line() and option_reset(). */ static int -config_assign_value(config_format_t *fmt, or_options_t *options, +config_assign_value(const config_format_t *fmt, or_options_t *options, config_line_t *c, char **msg) { int i, ok; - config_var_t *var; + const config_var_t *var; void *lvalue; CHECK(fmt, options); @@ -1712,8 +1813,16 @@ config_assign_value(config_format_t *fmt, or_options_t *options, switch (var->type) { + case CONFIG_TYPE_PORT: + if (!strcasecmp(c->value, "auto")) { + *(int *)lvalue = CFG_AUTO_PORT; + break; + } + /* fall through */ case CONFIG_TYPE_UINT: - i = (int)tor_parse_long(c->value, 10, 0, INT_MAX, &ok, NULL); + i = (int)tor_parse_long(c->value, 10, 0, + var->type==CONFIG_TYPE_PORT ? 65535 : INT_MAX, + &ok, NULL); if (!ok) { tor_asprintf(msg, "Int keyword '%s %s' is malformed or out of bounds.", @@ -1770,6 +1879,20 @@ config_assign_value(config_format_t *fmt, or_options_t *options, *(int *)lvalue = i; break; + case CONFIG_TYPE_AUTOBOOL: + if (!strcmp(c->value, "auto")) + *(int *)lvalue = -1; + else if (!strcmp(c->value, "0")) + *(int *)lvalue = 0; + else if (!strcmp(c->value, "1")) + *(int *)lvalue = 1; + else { + tor_asprintf(msg, "Boolean '%s %s' expects 0, 1, or 'auto'.", + c->key, c->value); + return -1; + } + break; + case CONFIG_TYPE_STRING: case CONFIG_TYPE_FILENAME: tor_free(*(char **)lvalue); @@ -1840,11 +1963,11 @@ config_assign_value(config_format_t *fmt, or_options_t *options, * Called from config_assign(). */ static int -config_assign_line(config_format_t *fmt, or_options_t *options, +config_assign_line(const config_format_t *fmt, or_options_t *options, config_line_t *c, int use_defaults, int clear_first, bitarray_t *options_seen, char **msg) { - config_var_t *var; + const config_var_t *var; CHECK(fmt, options); @@ -1905,10 +2028,10 @@ config_assign_line(config_format_t *fmt, or_options_t *options, /** Restore the option named <b>key</b> in options to its default value. * Called from config_assign(). */ static void -config_reset_line(config_format_t *fmt, or_options_t *options, +config_reset_line(const config_format_t *fmt, or_options_t *options, const char *key, int use_defaults) { - config_var_t *var; + const config_var_t *var; CHECK(fmt, options); @@ -1923,7 +2046,7 @@ config_reset_line(config_format_t *fmt, or_options_t *options, int option_is_recognized(const char *key) { - config_var_t *var = config_find_option(&options_format, key); + const config_var_t *var = config_find_option(&options_format, key); return (var != NULL); } @@ -1932,14 +2055,14 @@ option_is_recognized(const char *key) const char * option_get_canonical_name(const char *key) { - config_var_t *var = config_find_option(&options_format, key); + const config_var_t *var = config_find_option(&options_format, key); return var ? var->name : NULL; } /** Return a canonical list of the options assigned for key. */ config_line_t * -option_get_assignment(or_options_t *options, const char *key) +option_get_assignment(const or_options_t *options, const char *key) { return get_assigned_option(&options_format, options, key, 1); } @@ -1992,10 +2115,10 @@ config_lines_dup(const config_line_t *inp) * value needs to be quoted before it's put in a config file, quote and * escape that value. Return NULL if no such key exists. */ static config_line_t * -get_assigned_option(config_format_t *fmt, void *options, +get_assigned_option(const config_format_t *fmt, const void *options, const char *key, int escape_val) { - config_var_t *var; + const config_var_t *var; const void *value; config_line_t *result; tor_assert(options && key); @@ -2033,6 +2156,13 @@ get_assigned_option(config_format_t *fmt, void *options, } escape_val = 0; /* Can't need escape. */ break; + case CONFIG_TYPE_PORT: + if (*(int*)value == CFG_AUTO_PORT) { + result->value = tor_strdup("auto"); + escape_val = 0; + break; + } + /* fall through */ case CONFIG_TYPE_INTERVAL: case CONFIG_TYPE_MSEC_INTERVAL: case CONFIG_TYPE_UINT: @@ -2050,6 +2180,14 @@ get_assigned_option(config_format_t *fmt, void *options, tor_asprintf(&result->value, "%f", *(double*)value); escape_val = 0; /* Can't need escape. */ break; + + case CONFIG_TYPE_AUTOBOOL: + if (*(int*)value == -1) { + result->value = tor_strdup("auto"); + escape_val = 0; + break; + } + /* fall through */ case CONFIG_TYPE_BOOL: result->value = tor_strdup(*(int*)value ? "1" : "0"); escape_val = 0; /* Can't need escape. */ @@ -2162,7 +2300,7 @@ options_trial_assign() calls config_assign(1, 1) returns. */ static int -config_assign(config_format_t *fmt, void *options, config_line_t *list, +config_assign(const config_format_t *fmt, void *options, config_line_t *list, int use_defaults, int clear_first, char **msg) { config_line_t *p; @@ -2224,7 +2362,7 @@ options_trial_assign(config_line_t *list, int use_defaults, return r; } - if (options_validate(get_options(), trial_options, 1, msg) < 0) { + if (options_validate(get_options_mutable(), trial_options, 1, msg) < 0) { config_free(&options_format, trial_options); return SETOPT_ERR_PARSE; /*XXX make this a separate return value. */ } @@ -2246,7 +2384,8 @@ options_trial_assign(config_line_t *list, int use_defaults, /** Reset config option <b>var</b> to 0, 0.0, NULL, or the equivalent. * Called from option_reset() and config_free(). */ static void -option_clear(config_format_t *fmt, or_options_t *options, config_var_t *var) +option_clear(const config_format_t *fmt, or_options_t *options, + const config_var_t *var) { void *lvalue = STRUCT_VAR_P(options, var->var_offset); (void)fmt; /* unused */ @@ -2264,9 +2403,13 @@ option_clear(config_format_t *fmt, or_options_t *options, config_var_t *var) case CONFIG_TYPE_INTERVAL: case CONFIG_TYPE_MSEC_INTERVAL: case CONFIG_TYPE_UINT: + case CONFIG_TYPE_PORT: case CONFIG_TYPE_BOOL: *(int*)lvalue = 0; break; + case CONFIG_TYPE_AUTOBOOL: + *(int*)lvalue = -1; + break; case CONFIG_TYPE_MEMUNIT: *(uint64_t*)lvalue = 0; break; @@ -2300,8 +2443,8 @@ option_clear(config_format_t *fmt, or_options_t *options, config_var_t *var) * <b>use_defaults</b>, set it to its default value. * Called by config_init() and option_reset_line() and option_assign_line(). */ static void -option_reset(config_format_t *fmt, or_options_t *options, - config_var_t *var, int use_defaults) +option_reset(const config_format_t *fmt, or_options_t *options, + const config_var_t *var, int use_defaults) { config_line_t *c; char *msg = NULL; @@ -2328,7 +2471,7 @@ print_usage(void) printf( "Copyright (c) 2001-2004, Roger Dingledine\n" "Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson\n" -"Copyright (c) 2007-2010, The Tor Project, Inc.\n\n" +"Copyright (c) 2007-2011, The Tor Project, Inc.\n\n" "tor -f <torrc> [args]\n" "See man page for options, or https://www.torproject.org/ for " "documentation.\n"); @@ -2341,7 +2484,7 @@ list_torrc_options(void) int i; smartlist_t *lines = smartlist_create(); for (i = 0; _option_vars[i].name; ++i) { - config_var_t *var = &_option_vars[i]; + const config_var_t *var = &_option_vars[i]; if (var->type == CONFIG_TYPE_OBSOLETE || var->type == CONFIG_TYPE_LINELIST_V) continue; @@ -2360,7 +2503,7 @@ static uint32_t last_resolved_addr = 0; * public IP address. */ int -resolve_my_address(int warn_severity, or_options_t *options, +resolve_my_address(int warn_severity, const or_options_t *options, uint32_t *addr_out, char **hostname_out) { struct in_addr in; @@ -2517,7 +2660,7 @@ is_local_addr(const tor_addr_t *addr) if (get_options()->EnforceDistinctSubnets == 0) return 0; if (tor_addr_family(addr) == AF_INET) { - /*XXXX022 IP6 what corresponds to an /24? */ + /*XXXX023 IP6 what corresponds to an /24? */ uint32_t ip = tor_addr_to_ipv4h(addr); /* It's possible that this next check will hit before the first time @@ -2534,57 +2677,9 @@ is_local_addr(const tor_addr_t *addr) return 0; } -/** Called when we don't have a nickname set. Try to guess a good nickname - * based on the hostname, and return it in a newly allocated string. If we - * can't, return NULL and let the caller warn if it wants to. */ -static char * -get_default_nickname(void) -{ - static const char * const bad_default_nicknames[] = { - "localhost", - NULL, - }; - char localhostname[256]; - char *cp, *out, *outp; - int i; - - if (gethostname(localhostname, sizeof(localhostname)) < 0) - return NULL; - - /* Put it in lowercase; stop at the first dot. */ - if ((cp = strchr(localhostname, '.'))) - *cp = '\0'; - tor_strlower(localhostname); - - /* Strip invalid characters. */ - cp = localhostname; - out = outp = tor_malloc(strlen(localhostname) + 1); - while (*cp) { - if (strchr(LEGAL_NICKNAME_CHARACTERS, *cp)) - *outp++ = *cp++; - else - cp++; - } - *outp = '\0'; - - /* Enforce length. */ - if (strlen(out) > MAX_NICKNAME_LEN) - out[MAX_NICKNAME_LEN]='\0'; - - /* Check for dumb names. */ - for (i = 0; bad_default_nicknames[i]; ++i) { - if (!strcmp(out, bad_default_nicknames[i])) { - tor_free(out); - return NULL; - } - } - - return out; -} - /** Release storage held by <b>options</b>. */ static void -config_free(config_format_t *fmt, void *options) +config_free(const config_format_t *fmt, void *options) { int i; @@ -2623,8 +2718,9 @@ config_lines_eq(config_line_t *a, config_line_t *b) * and <b>o2</b>. Must not be called for LINELIST_S or OBSOLETE options. */ static int -option_is_same(config_format_t *fmt, - or_options_t *o1, or_options_t *o2, const char *name) +option_is_same(const config_format_t *fmt, + const or_options_t *o1, const or_options_t *o2, + const char *name) { config_line_t *c1, *c2; int r = 1; @@ -2641,7 +2737,7 @@ option_is_same(config_format_t *fmt, /** Copy storage held by <b>old</b> into a new or_options_t and return it. */ static or_options_t * -options_dup(config_format_t *fmt, or_options_t *old) +options_dup(const config_format_t *fmt, const or_options_t *old) { or_options_t *newopts; int i; @@ -2689,7 +2785,7 @@ options_init(or_options_t *options) * it is, or 0 if it isn't or the concept of a low port isn't applicable for * the platform we're on. */ static int -is_listening_on_low_port(uint16_t port_option, +is_listening_on_low_port(int port_option, const config_line_t *listen_options) { #ifdef MS_WINDOWS @@ -2717,10 +2813,10 @@ is_listening_on_low_port(uint16_t port_option, /** Set all vars in the configuration object <b>options</b> to their default * values. */ static void -config_init(config_format_t *fmt, void *options) +config_init(const config_format_t *fmt, void *options) { int i; - config_var_t *var; + const config_var_t *var; CHECK(fmt, options); for (i=0; fmt->vars[i].name; ++i) { @@ -2736,7 +2832,7 @@ config_init(config_format_t *fmt, void *options) * Else, if comment_defaults, write default values as comments. */ static char * -config_dump(config_format_t *fmt, void *options, int minimal, +config_dump(const config_format_t *fmt, const void *options, int minimal, int comment_defaults) { smartlist_t *elements; @@ -2804,7 +2900,7 @@ config_dump(config_format_t *fmt, void *options, int minimal, * include options that are the same as Tor's defaults. */ char * -options_dump(or_options_t *options, int minimal) +options_dump(const or_options_t *options, int minimal) { return config_dump(&options_format, options, minimal, 0); } @@ -2863,26 +2959,28 @@ static int compute_publishserverdescriptor(or_options_t *options) { smartlist_t *list = options->PublishServerDescriptor; - authority_type_t *auth = &options->_PublishServerDescriptor; - *auth = NO_AUTHORITY; + dirinfo_type_t *auth = &options->_PublishServerDescriptor; + *auth = NO_DIRINFO; if (!list) /* empty list, answer is none */ return 0; SMARTLIST_FOREACH(list, const char *, string, { if (!strcasecmp(string, "v1")) - *auth |= V1_AUTHORITY; + *auth |= V1_DIRINFO; else if (!strcmp(string, "1")) if (options->BridgeRelay) - *auth |= BRIDGE_AUTHORITY; + *auth |= BRIDGE_DIRINFO; else - *auth |= V2_AUTHORITY | V3_AUTHORITY; + *auth |= V2_DIRINFO | V3_DIRINFO; else if (!strcasecmp(string, "v2")) - *auth |= V2_AUTHORITY; + *auth |= V2_DIRINFO; else if (!strcasecmp(string, "v3")) - *auth |= V3_AUTHORITY; + *auth |= V3_DIRINFO; else if (!strcasecmp(string, "bridge")) - *auth |= BRIDGE_AUTHORITY; + *auth |= BRIDGE_DIRINFO; else if (!strcasecmp(string, "hidserv")) - *auth |= HIDSERV_AUTHORITY; + log_warn(LD_CONFIG, + "PublishServerDescriptor hidserv is invalid. See " + "PublishHidServDescriptors."); else if (!strcasecmp(string, "") || !strcmp(string, "0")) /* no authority */; else @@ -2906,6 +3004,10 @@ compute_publishserverdescriptor(or_options_t *options) * will generate too many circuits and potentially overload the network. */ #define MIN_CIRCUIT_STREAM_TIMEOUT 10 +/** Lowest allowable value for HeartbeatPeriod; if this is too low, we might + * expose more information than we're comfortable with. */ +#define MIN_HEARTBEAT_PERIOD (30*60) + /** Return 0 if every setting in <b>options</b> is reasonable, and a * permissible transition from <b>old_options</b>. Else return -1. * Should have no side effects, except for normalizing the contents of @@ -2932,9 +3034,6 @@ options_validate(or_options_t *old_options, or_options_t *options, tor_assert(msg); *msg = NULL; - if (options->ORPort < 0 || options->ORPort > 65535) - REJECT("ORPort option out of bounds."); - if (server_mode(options) && (!strcmpstart(uname, "Windows 95") || !strcmpstart(uname, "Windows 98") || @@ -3008,14 +3107,7 @@ options_validate(or_options_t *old_options, or_options_t *options, if (options->Nickname == NULL) { if (server_mode(options)) { - if (!(options->Nickname = get_default_nickname())) { - log_notice(LD_CONFIG, "Couldn't pick a nickname based on " - "our hostname; using %s instead.", UNNAMED_ROUTER_NICKNAME); options->Nickname = tor_strdup(UNNAMED_ROUTER_NICKNAME); - } else { - log_notice(LD_CONFIG, "Choosing default nickname '%s'", - options->Nickname); - } } } else { if (!is_legal_nickname(options->Nickname)) { @@ -3045,29 +3137,11 @@ options_validate(or_options_t *old_options, or_options_t *options, REJECT("Failed to resolve/guess local address. See logs for details."); } - if (strcmp(options->RefuseUnknownExits, "0") && - strcmp(options->RefuseUnknownExits, "1") && - strcmp(options->RefuseUnknownExits, "auto")) { - REJECT("RefuseUnknownExits must be 0, 1, or auto"); - } - #ifndef MS_WINDOWS if (options->RunAsDaemon && torrc_fname && path_is_relative(torrc_fname)) REJECT("Can't use a relative path to torrc when RunAsDaemon is set."); #endif - if (options->SocksPort < 0 || options->SocksPort > 65535) - REJECT("SocksPort option out of bounds."); - - if (options->DNSPort < 0 || options->DNSPort > 65535) - REJECT("DNSPort option out of bounds."); - - if (options->TransPort < 0 || options->TransPort > 65535) - REJECT("TransPort option out of bounds."); - - if (options->NATDPort < 0 || options->NATDPort > 65535) - REJECT("NATDPort option out of bounds."); - if (options->SocksPort == 0 && options->TransPort == 0 && options->NATDPort == 0 && options->ORPort == 0 && options->DNSPort == 0 && !options->RendConfigLines) @@ -3076,12 +3150,6 @@ options_validate(or_options_t *old_options, or_options_t *options, "undefined, and there aren't any hidden services configured. " "Tor will still run, but probably won't do anything."); - if (options->ControlPort < 0 || options->ControlPort > 65535) - REJECT("ControlPort option out of bounds."); - - if (options->DirPort < 0 || options->DirPort > 65535) - REJECT("DirPort option out of bounds."); - #ifndef USE_TRANSPARENT if (options->TransPort || options->TransListenAddress) REJECT("TransPort and TransListenAddress are disabled in this build."); @@ -3174,6 +3242,10 @@ options_validate(or_options_t *old_options, or_options_t *options, REJECT("FetchDirInfoExtraEarly requires that you also set " "FetchDirInfoEarly"); + if (options->HSAuthoritativeDir && proxy_mode(options)) + REJECT("Running as authoritative v0 HS directory, but also configured " + "as a client."); + if (options->ConnLimit <= 0) { tor_asprintf(msg, "ConnLimit must be greater than 0, but was set to %d", @@ -3282,6 +3354,12 @@ options_validate(or_options_t *old_options, or_options_t *options, REJECT("Servers must be able to freely connect to the rest " "of the Internet, so they must not set UseBridges."); + /* If both of these are set, we'll end up with funny behavior where we + * demand enough entrynodes be up and running else we won't build + * circuits, yet we never actually use them. */ + if (options->UseBridges && options->EntryNodes) + REJECT("You cannot set both UseBridges and EntryNodes."); + options->_AllowInvalid = 0; if (options->AllowInvalidNodes) { SMARTLIST_FOREACH(options->AllowInvalidNodes, const char *, cp, { @@ -3323,14 +3401,20 @@ options_validate(or_options_t *old_options, or_options_t *options, } if ((options->BridgeRelay - || options->_PublishServerDescriptor & BRIDGE_AUTHORITY) + || options->_PublishServerDescriptor & BRIDGE_DIRINFO) && (options->_PublishServerDescriptor - & (V1_AUTHORITY|V2_AUTHORITY|V3_AUTHORITY))) { + & (V1_DIRINFO|V2_DIRINFO|V3_DIRINFO))) { REJECT("Bridges are not supposed to publish router descriptors to the " "directory authorities. Please correct your " "PublishServerDescriptor line."); } + if (options->BridgeRelay && options->DirPort) { + log_warn(LD_CONFIG, "Can't set a DirPort on a bridge relay; disabling " + "DirPort"); + options->DirPort = 0; + } + if (options->MinUptimeHidServDirectoryV2 < 0) { log_warn(LD_CONFIG, "MinUptimeHidServDirectoryV2 option must be at " "least 0 seconds. Changing to 0."); @@ -3362,6 +3446,13 @@ options_validate(or_options_t *old_options, or_options_t *options, options->CircuitStreamTimeout = MIN_CIRCUIT_STREAM_TIMEOUT; } + if (options->HeartbeatPeriod && + options->HeartbeatPeriod < MIN_HEARTBEAT_PERIOD) { + log_warn(LD_CONFIG, "HeartbeatPeriod option is too short; " + "raising to %d seconds.", MIN_HEARTBEAT_PERIOD); + options->HeartbeatPeriod = MIN_HEARTBEAT_PERIOD; + } + if (options->KeepalivePeriod < 1) REJECT("KeepalivePeriod option must be positive."); @@ -3387,6 +3478,11 @@ options_validate(or_options_t *old_options, or_options_t *options, "PerConnBWBurst", msg) < 0) return -1; + if (options->RelayBandwidthRate && !options->RelayBandwidthBurst) + options->RelayBandwidthBurst = options->RelayBandwidthRate; + if (options->RelayBandwidthBurst && !options->RelayBandwidthRate) + options->RelayBandwidthRate = options->RelayBandwidthBurst; + if (server_mode(options)) { if (options->BandwidthRate < ROUTER_REQUIRED_MIN_BANDWIDTH) { tor_asprintf(msg, @@ -3415,9 +3511,6 @@ options_validate(or_options_t *old_options, or_options_t *options, } } - if (options->RelayBandwidthRate && !options->RelayBandwidthBurst) - options->RelayBandwidthBurst = options->RelayBandwidthRate; - if (options->RelayBandwidthRate > options->RelayBandwidthBurst) REJECT("RelayBandwidthBurst must be at least equal " "to RelayBandwidthRate."); @@ -3445,8 +3538,8 @@ options_validate(or_options_t *old_options, or_options_t *options, } if (options->HTTPProxyAuthenticator) { - if (strlen(options->HTTPProxyAuthenticator) >= 48) - REJECT("HTTPProxyAuthenticator is too long (>= 48 chars)."); + if (strlen(options->HTTPProxyAuthenticator) >= 512) + REJECT("HTTPProxyAuthenticator is too long (>= 512 chars)."); } if (options->HTTPSProxy) { /* parse it now */ @@ -3459,8 +3552,8 @@ options_validate(or_options_t *old_options, or_options_t *options, } if (options->HTTPSProxyAuthenticator) { - if (strlen(options->HTTPSProxyAuthenticator) >= 48) - REJECT("HTTPSProxyAuthenticator is too long (>= 48 chars)."); + if (strlen(options->HTTPSProxyAuthenticator) >= 512) + REJECT("HTTPSProxyAuthenticator is too long (>= 512 chars)."); } if (options->Socks4Proxy) { /* parse it now */ @@ -3483,8 +3576,11 @@ options_validate(or_options_t *old_options, or_options_t *options, } } - if (options->Socks4Proxy && options->Socks5Proxy) - REJECT("You cannot specify both Socks4Proxy and SOCKS5Proxy"); + /* Check if more than one proxy type has been enabled. */ + if (!!options->Socks4Proxy + !!options->Socks5Proxy + + !!options->HTTPSProxy + !!options->ClientTransportPlugin > 1) + REJECT("You have configured more than one proxy type. " + "(Socks4Proxy|Socks5Proxy|HTTPSProxy|ClientTransportPlugin)"); if (options->Socks5ProxyUsername) { size_t len; @@ -3523,6 +3619,16 @@ options_validate(or_options_t *old_options, or_options_t *options, } } + if (options->OwningControllerProcess) { + const char *validate_pspec_msg = NULL; + if (tor_validate_process_specifier(options->OwningControllerProcess, + &validate_pspec_msg)) { + tor_asprintf(msg, "Bad OwningControllerProcess: %s", + validate_pspec_msg); + return -1; + } + } + if (options->ControlListenAddress) { int all_are_local = 1; config_line_t *ln; @@ -3566,10 +3672,9 @@ options_validate(or_options_t *old_options, or_options_t *options, } if (options->CookieAuthFileGroupReadable && !options->CookieAuthFile) { - log_warn(LD_CONFIG, "You set the CookieAuthFileGroupReadable but did " - "not configure a the path for the cookie file via " - "CookieAuthFile. This means your cookie will not be group " - "readable."); + log_warn(LD_CONFIG, "CookieAuthFileGroupReadable is set, but will have " + "no effect: you must specify an explicit CookieAuthFile to " + "have it group-readable."); } if (options->UseEntryGuards && ! options->NumEntryGuards) @@ -3596,11 +3701,15 @@ options_validate(or_options_t *old_options, or_options_t *options, REJECT("If you set UseBridges, you must specify at least one bridge."); if (options->UseBridges && !options->TunnelDirConns) REJECT("If you set UseBridges, you must set TunnelDirConns."); - if (options->Bridges) { - for (cl = options->Bridges; cl; cl = cl->next) { - if (parse_bridge_line(cl->value, 1)<0) - REJECT("Bridge line did not parse. See logs for details."); - } + + for (cl = options->ClientTransportPlugin; cl; cl = cl->next) { + if (parse_client_transport_line(cl->value, 1)<0) + REJECT("Transport line did not parse. See logs for details."); + } + + for (cl = options->Bridges; cl; cl = cl->next) { + if (parse_bridge_line(cl->value, 1)<0) + REJECT("Bridge line did not parse. See logs for details."); } if (options->ConstrainedSockets) { @@ -3687,12 +3796,12 @@ options_validate(or_options_t *old_options, or_options_t *options, "ignore you."); } - /*XXXX022 checking for defaults manually like this is a bit fragile.*/ + /*XXXX023 checking for defaults manually like this is a bit fragile.*/ /* Keep changes to hard-coded values synchronous to man page and default * values table. */ if (options->TestingV3AuthInitialVotingInterval != 30*60 && - !options->TestingTorNetwork) { + !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) { REJECT("TestingV3AuthInitialVotingInterval may only be changed in testing " "Tor networks!"); } else if (options->TestingV3AuthInitialVotingInterval < MIN_VOTE_INTERVAL) { @@ -3703,7 +3812,8 @@ options_validate(or_options_t *old_options, or_options_t *options, } if (options->TestingV3AuthInitialVoteDelay != 5*60 && - !options->TestingTorNetwork) { + !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) { + REJECT("TestingV3AuthInitialVoteDelay may only be changed in testing " "Tor networks!"); } else if (options->TestingV3AuthInitialVoteDelay < MIN_VOTE_SECONDS) { @@ -3711,7 +3821,7 @@ options_validate(or_options_t *old_options, or_options_t *options, } if (options->TestingV3AuthInitialDistDelay != 5*60 && - !options->TestingTorNetwork) { + !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) { REJECT("TestingV3AuthInitialDistDelay may only be changed in testing " "Tor networks!"); } else if (options->TestingV3AuthInitialDistDelay < MIN_DIST_SECONDS) { @@ -3726,7 +3836,7 @@ options_validate(or_options_t *old_options, or_options_t *options, } if (options->TestingAuthDirTimeToLearnReachability != 30*60 && - !options->TestingTorNetwork) { + !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) { REJECT("TestingAuthDirTimeToLearnReachability may only be changed in " "testing Tor networks!"); } else if (options->TestingAuthDirTimeToLearnReachability < 0) { @@ -3736,7 +3846,7 @@ options_validate(or_options_t *old_options, or_options_t *options, } if (options->TestingEstimatedDescriptorPropagationTime != 10*60 && - !options->TestingTorNetwork) { + !options->TestingTorNetwork && !options->_UsingTestNetworkDefaults) { REJECT("TestingEstimatedDescriptorPropagationTime may only be changed in " "testing Tor networks!"); } else if (options->TestingEstimatedDescriptorPropagationTime < 0) { @@ -3792,7 +3902,8 @@ opt_streq(const char *s1, const char *s2) /** Check if any of the previous options have changed but aren't allowed to. */ static int -options_transition_allowed(or_options_t *old, or_options_t *new_val, +options_transition_allowed(const or_options_t *old, + const or_options_t *new_val, char **msg) { if (!old) @@ -3848,17 +3959,19 @@ options_transition_allowed(or_options_t *old, or_options_t *new_val, /** Return 1 if any change from <b>old_options</b> to <b>new_options</b> * will require us to rotate the CPU and DNS workers; else return 0. */ static int -options_transition_affects_workers(or_options_t *old_options, - or_options_t *new_options) +options_transition_affects_workers(const or_options_t *old_options, + const or_options_t *new_options) { if (!opt_streq(old_options->DataDirectory, new_options->DataDirectory) || old_options->NumCPUs != new_options->NumCPUs || old_options->ORPort != new_options->ORPort || old_options->ServerDNSSearchDomains != new_options->ServerDNSSearchDomains || - old_options->SafeLogging != new_options->SafeLogging || + old_options->_SafeLogging != new_options->_SafeLogging || old_options->ClientOnly != new_options->ClientOnly || - !config_lines_eq(old_options->Logs, new_options->Logs)) + public_server_mode(old_options) != public_server_mode(new_options) || + !config_lines_eq(old_options->Logs, new_options->Logs) || + old_options->LogMessageDomains != new_options->LogMessageDomains) return 1; /* Check whether log options match. */ @@ -3870,8 +3983,8 @@ options_transition_affects_workers(or_options_t *old_options, /** Return 1 if any change from <b>old_options</b> to <b>new_options</b> * will require us to generate a new descriptor; else return 0. */ static int -options_transition_affects_descriptor(or_options_t *old_options, - or_options_t *new_options) +options_transition_affects_descriptor(const or_options_t *old_options, + const or_options_t *new_options) { /* XXX We can be smarter here. If your DirPort isn't being * published and you just turned it off, no need to republish. Etc. */ @@ -3892,7 +4005,8 @@ options_transition_affects_descriptor(or_options_t *old_options, !opt_streq(old_options->ContactInfo, new_options->ContactInfo) || !opt_streq(old_options->MyFamily, new_options->MyFamily) || !opt_streq(old_options->AccountingStart, new_options->AccountingStart) || - old_options->AccountingMax != new_options->AccountingMax) + old_options->AccountingMax != new_options->AccountingMax || + public_server_mode(old_options) != public_server_mode(new_options)) return 1; return 0; @@ -4075,6 +4189,8 @@ load_torrc_from_disk(int argc, char **argv) "Unable to open configuration file \"%s\".", fname); goto err; } + } else { + log(LOG_NOTICE, LD_CONFIG, "Read configuration file \"%s\".", fname); } return cf; @@ -4235,9 +4351,9 @@ options_init_from_string(const char *cf, /* Change defaults. */ int i; for (i = 0; testing_tor_network_defaults[i].name; ++i) { - config_var_t *new_var = &testing_tor_network_defaults[i]; + const config_var_t *new_var = &testing_tor_network_defaults[i]; config_var_t *old_var = - config_find_option(&options_format, new_var->name); + config_find_option_mutable(&options_format, new_var->name); tor_assert(new_var); tor_assert(old_var); old_var->initvalue = new_var->initvalue; @@ -4314,7 +4430,7 @@ get_torrc_fname(void) * configuration <b>options</b> */ void -config_register_addressmaps(or_options_t *options) +config_register_addressmaps(const or_options_t *options) { smartlist_t *elts; config_line_t *opt; @@ -4443,11 +4559,13 @@ options_init_logs(or_options_t *options, int validate_only) if (smartlist_len(elts) == 2 && !strcasecmp(smartlist_get(elts,0), "file")) { if (!validate_only) { - if (add_file_log(severity, smartlist_get(elts, 1)) < 0) { + char *fname = expand_filename(smartlist_get(elts, 1)); + if (add_file_log(severity, fname) < 0) { log_warn(LD_CONFIG, "Couldn't open file for 'Log %s': %s", opt->value, strerror(errno)); ok = 0; } + tor_free(fname); } goto cleanup; } @@ -4463,6 +4581,9 @@ options_init_logs(or_options_t *options, int validate_only) } smartlist_free(elts); + if (ok && !validate_only) + logs_set_domain_logging(options->LogMessageDomains); + return ok?0:-1; } @@ -4476,6 +4597,8 @@ parse_bridge_line(const char *line, int validate_only) smartlist_t *items = NULL; int r; char *addrport=NULL, *fingerprint=NULL; + char *transport_name=NULL; + char *field1=NULL; tor_addr_t addr; uint16_t port = 0; char digest[DIGEST_LEN]; @@ -4487,8 +4610,24 @@ parse_bridge_line(const char *line, int validate_only) log_warn(LD_CONFIG, "Too few arguments to Bridge line."); goto err; } - addrport = smartlist_get(items, 0); + + /* field1 is either a transport name or addrport */ + field1 = smartlist_get(items, 0); smartlist_del_keeporder(items, 0); + + if (!(strstr(field1, ".") || strstr(field1, ":"))) { + /* new-style bridge line */ + transport_name = field1; + if (smartlist_len(items) < 1) { + log_warn(LD_CONFIG, "Too few items to Bridge line."); + goto err; + } + addrport = smartlist_get(items, 0); + smartlist_del_keeporder(items, 0); + } else { + addrport = field1; + } + if (tor_addr_port_parse(addrport, &addr, &port)<0) { log_warn(LD_CONFIG, "Error parsing Bridge address '%s'", addrport); goto err; @@ -4513,23 +4652,101 @@ parse_bridge_line(const char *line, int validate_only) } if (!validate_only) { - log_debug(LD_DIR, "Bridge at %s:%d (%s)", fmt_addr(&addr), - (int)port, + log_debug(LD_DIR, "Bridge at %s:%d (transport: %s) (%s)", + fmt_addr(&addr), (int)port, + transport_name ? transport_name : "no transport", fingerprint ? fingerprint : "no key listed"); - bridge_add_from_config(&addr, port, fingerprint ? digest : NULL); + bridge_add_from_config(&addr, port, + fingerprint ? digest : NULL, transport_name); } r = 0; goto done; - err: + err: r = -1; - done: + done: SMARTLIST_FOREACH(items, char*, s, tor_free(s)); smartlist_free(items); tor_free(addrport); tor_free(fingerprint); + tor_free(transport_name); + return r; +} + +/** Read the contents of a ClientTransportPlugin line from + * <b>line</b>. Return 0 if the line is well-formed, and -1 if it + * isn't. If <b>validate_only</b> is 0, and the line is well-formed, + * then add the transport described in the line to our internal + * transport list. +*/ +static int +parse_client_transport_line(const char *line, int validate_only) +{ + smartlist_t *items = NULL; + int r; + char *socks_ver_str=NULL; + char *name=NULL; + char *addrport=NULL; + int socks_ver; + tor_addr_t addr; + uint16_t port = 0; + + items = smartlist_create(); + smartlist_split_string(items, line, NULL, + SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, -1); + + if (smartlist_len(items) < 3) { + log_warn(LD_CONFIG, "Too few arguments on ClientTransportPlugin line."); + goto err; + } + + name = smartlist_get(items, 0); + + socks_ver_str = smartlist_get(items, 1); + + if (!strcmp(socks_ver_str,"socks4")) + socks_ver = PROXY_SOCKS4; + else if (!strcmp(socks_ver_str,"socks5")) + socks_ver = PROXY_SOCKS5; + else { + log_warn(LD_CONFIG, "Strange ClientTransportPlugin proxy type '%s'.", + socks_ver_str); + goto err; + } + + addrport = smartlist_get(items, 2); + + if (tor_addr_port_parse(addrport, &addr, &port)<0) { + log_warn(LD_CONFIG, "Error parsing transport " + "address '%s'", addrport); + goto err; + } + + if (!port) { + log_warn(LD_CONFIG, + "Transport address '%s' has no port.", addrport); + goto err; + } + + if (!validate_only) { + log_debug(LD_DIR, "Transport %s found at %s:%d", name, + fmt_addr(&addr), (int)port); + + if (transport_add_from_config(&addr, port, name, socks_ver) < 0) + goto err; + } + + r = 0; + goto done; + + err: + r = -1; + + done: + SMARTLIST_FOREACH(items, char*, s, tor_free(s)); + smartlist_free(items); return r; } @@ -4540,7 +4757,7 @@ parse_bridge_line(const char *line, int validate_only) * bits it's missing) as a valid authority. Return 0 on success, * or -1 if the line isn't well-formed or if we can't add it. */ static int -parse_dir_server_line(const char *line, authority_type_t required_type, +parse_dir_server_line(const char *line, dirinfo_type_t required_type, int validate_only) { smartlist_t *items = NULL; @@ -4549,7 +4766,7 @@ parse_dir_server_line(const char *line, authority_type_t required_type, uint16_t dir_port = 0, or_port = 0; char digest[DIGEST_LEN]; char v3_digest[DIGEST_LEN]; - authority_type_t type = V2_AUTHORITY; + dirinfo_type_t type = V2_DIRINFO; int is_not_hidserv_authority = 0, is_not_v2_authority = 0; items = smartlist_create(); @@ -4570,13 +4787,13 @@ parse_dir_server_line(const char *line, authority_type_t required_type, if (TOR_ISDIGIT(flag[0])) break; if (!strcasecmp(flag, "v1")) { - type |= (V1_AUTHORITY | HIDSERV_AUTHORITY); + type |= (V1_DIRINFO | HIDSERV_DIRINFO); } else if (!strcasecmp(flag, "hs")) { - type |= HIDSERV_AUTHORITY; + type |= HIDSERV_DIRINFO; } else if (!strcasecmp(flag, "no-hs")) { is_not_hidserv_authority = 1; } else if (!strcasecmp(flag, "bridge")) { - type |= BRIDGE_AUTHORITY; + type |= BRIDGE_DIRINFO; } else if (!strcasecmp(flag, "no-v2")) { is_not_v2_authority = 1; } else if (!strcasecmpstart(flag, "orport=")) { @@ -4593,7 +4810,7 @@ parse_dir_server_line(const char *line, authority_type_t required_type, log_warn(LD_CONFIG, "Bad v3 identity digest '%s' on DirServer line", flag); } else { - type |= V3_AUTHORITY; + type |= V3_DIRINFO|EXTRAINFO_DIRINFO|MICRODESC_DIRINFO; } } else { log_warn(LD_CONFIG, "Unrecognized flag '%s' on DirServer line", @@ -4603,9 +4820,9 @@ parse_dir_server_line(const char *line, authority_type_t required_type, smartlist_del_keeporder(items, 0); } if (is_not_hidserv_authority) - type &= ~HIDSERV_AUTHORITY; + type &= ~HIDSERV_DIRINFO; if (is_not_v2_authority) - type &= ~V2_AUTHORITY; + type &= ~V2_DIRINFO; if (smartlist_len(items) < 2) { log_warn(LD_CONFIG, "Too few arguments to DirServer line."); @@ -4739,7 +4956,7 @@ validate_data_directory(or_options_t *options) * doesn't begin with GENERATED_FILE_PREFIX, rename it. Otherwise * replace it. Return 0 on success, -1 on failure. */ static int -write_configuration_file(const char *fname, or_options_t *options) +write_configuration_file(const char *fname, const or_options_t *options) { char *old_val=NULL, *new_val=NULL, *new_conf=NULL; int rename_old = 0, r; @@ -4749,7 +4966,7 @@ write_configuration_file(const char *fname, or_options_t *options) switch (file_status(fname)) { case FN_FILE: old_val = read_file_to_str(fname, 0, NULL); - if (strcmpstart(old_val, GENERATED_FILE_PREFIX)) { + if (!old_val || strcmpstart(old_val, GENERATED_FILE_PREFIX)) { rename_old = 1; } tor_free(old_val); @@ -4828,10 +5045,10 @@ options_save_current(void) } /** Mapping from a unit name to a multiplier for converting that unit into a - * base unit. */ + * base unit. Used by config_parse_unit. */ struct unit_table_t { - const char *unit; - uint64_t multiplier; + const char *unit; /**< The name of the unit */ + uint64_t multiplier; /**< How many of the base unit appear in this unit */ }; /** Table to map the names of memory units to the number of bytes they @@ -5076,7 +5293,7 @@ get_or_state(void) * Note: Consider using the get_datadir_fname* macros in or.h. */ char * -options_get_datadir_fname2_suffix(or_options_t *options, +options_get_datadir_fname2_suffix(const or_options_t *options, const char *sub1, const char *sub2, const char *suffix) { @@ -5281,6 +5498,26 @@ or_state_load(void) return r; } +/** Did the last time we tried to write the state file fail? If so, we + * should consider disabling such features as preemptive circuit generation + * to compute circuit-build-time. */ +static int last_state_file_write_failed = 0; + +/** Return whether the state file failed to write last time we tried. */ +int +did_last_state_file_write_fail(void) +{ + return last_state_file_write_failed; +} + +/** If writing the state to disk fails, try again after this many seconds. */ +#define STATE_WRITE_RETRY_INTERVAL 3600 + +/** If we're a relay, how often should we checkpoint our state file even + * if nothing else dirties it? This will checkpoint ongoing stats like + * bandwidth used, per-country user stats, etc. */ +#define STATE_RELAY_CHECKPOINT_INTERVAL (12*60*60) + /** Write the persistent state to disk. Return 0 for success, <0 on failure. */ int or_state_save(time_t now) @@ -5302,11 +5539,13 @@ or_state_save(time_t now) if (accounting_is_enabled(get_options())) accounting_run_housekeeping(now); + global_state->LastWritten = now; + tor_free(global_state->TorVersion); tor_asprintf(&global_state->TorVersion, "Tor %s", get_version()); state = config_dump(&state_format, global_state, 1, 0); - format_local_iso_time(tbuf, time(NULL)); + format_local_iso_time(tbuf, now); tor_asprintf(&contents, "# Tor state file last generated on %s local time\n" "# Other times below are in GMT\n" @@ -5315,19 +5554,27 @@ or_state_save(time_t now) tor_free(state); fname = get_datadir_fname("state"); if (write_str_to_file(fname, contents, 0)<0) { - log_warn(LD_FS, "Unable to write state to file \"%s\"", fname); - global_state->LastWritten = -1; + log_warn(LD_FS, "Unable to write state to file \"%s\"; " + "will try again later", fname); + last_state_file_write_failed = 1; tor_free(fname); tor_free(contents); + /* Try again after STATE_WRITE_RETRY_INTERVAL (or sooner, if the state + * changes sooner). */ + global_state->next_write = now + STATE_WRITE_RETRY_INTERVAL; return -1; } - global_state->LastWritten = time(NULL); + last_state_file_write_failed = 0; log_info(LD_GENERAL, "Saved state to \"%s\"", fname); tor_free(fname); tor_free(contents); - global_state->next_write = TIME_MAX; + if (server_mode(get_options())) + global_state->next_write = now + STATE_RELAY_CHECKPOINT_INTERVAL; + else + global_state->next_write = TIME_MAX; + return 0; } @@ -5363,18 +5610,20 @@ getinfo_helper_config(control_connection_t *conn, smartlist_t *sl = smartlist_create(); int i; for (i = 0; _option_vars[i].name; ++i) { - config_var_t *var = &_option_vars[i]; + const config_var_t *var = &_option_vars[i]; const char *type; char *line; switch (var->type) { case CONFIG_TYPE_STRING: type = "String"; break; case CONFIG_TYPE_FILENAME: type = "Filename"; break; case CONFIG_TYPE_UINT: type = "Integer"; break; + case CONFIG_TYPE_PORT: type = "Port"; break; case CONFIG_TYPE_INTERVAL: type = "TimeInterval"; break; case CONFIG_TYPE_MSEC_INTERVAL: type = "TimeMsecInterval"; break; case CONFIG_TYPE_MEMUNIT: type = "DataSize"; break; case CONFIG_TYPE_DOUBLE: type = "Float"; break; case CONFIG_TYPE_BOOL: type = "Boolean"; break; + case CONFIG_TYPE_AUTOBOOL: type = "Boolean+Auto"; break; case CONFIG_TYPE_ISOTIME: type = "Time"; break; case CONFIG_TYPE_ROUTERSET: type = "RouterList"; break; case CONFIG_TYPE_CSV: type = "CommaList"; break; diff --git a/src/or/config.h b/src/or/config.h index db871d472a..8a06f4443a 100644 --- a/src/or/config.h +++ b/src/or/config.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -13,7 +13,8 @@ #define _TOR_CONFIG_H const char *get_dirportfrontpage(void); -or_options_t *get_options(void); +const or_options_t *get_options(void); +or_options_t *get_options_mutable(void); int set_options(or_options_t *new_val, char **msg); void config_free_all(void); const char *safe_str_client(const char *address); @@ -26,21 +27,21 @@ int config_get_lines(const char *string, config_line_t **result); void config_free_lines(config_line_t *front); setopt_err_t options_trial_assign(config_line_t *list, int use_defaults, int clear_first, char **msg); -int resolve_my_address(int warn_severity, or_options_t *options, +int resolve_my_address(int warn_severity, const or_options_t *options, uint32_t *addr, char **hostname_out); int is_local_addr(const tor_addr_t *addr) ATTR_PURE; void options_init(or_options_t *options); -char *options_dump(or_options_t *options, int minimal); +char *options_dump(const or_options_t *options, int minimal); int options_init_from_torrc(int argc, char **argv); setopt_err_t options_init_from_string(const char *cf, int command, const char *command_arg, char **msg); int option_is_recognized(const char *key); const char *option_get_canonical_name(const char *key); -config_line_t *option_get_assignment(or_options_t *options, +config_line_t *option_get_assignment(const or_options_t *options, const char *key); int options_save_current(void); const char *get_torrc_fname(void); -char *options_get_datadir_fname2_suffix(or_options_t *options, +char *options_get_datadir_fname2_suffix(const or_options_t *options, const char *sub1, const char *sub2, const char *suffix); #define get_datadir_fname2_suffix(sub1, sub2, suffix) \ @@ -60,23 +61,25 @@ char *options_get_datadir_fname2_suffix(or_options_t *options, int get_num_cpus(const or_options_t *options); or_state_t *get_or_state(void); +int did_last_state_file_write_fail(void); int or_state_save(time_t now); -int options_need_geoip_info(or_options_t *options, const char **reason_out); +int options_need_geoip_info(const or_options_t *options, + const char **reason_out); int getinfo_helper_config(control_connection_t *conn, const char *question, char **answer, const char **errmsg); const char *tor_get_digests(void); -uint32_t get_effective_bwrate(or_options_t *options); -uint32_t get_effective_bwburst(or_options_t *options); +uint32_t get_effective_bwrate(const or_options_t *options); +uint32_t get_effective_bwburst(const or_options_t *options); #ifdef CONFIG_PRIVATE /* Used only by config.c and test.c */ or_options_t *options_new(void); #endif -void config_register_addressmaps(or_options_t *options); +void config_register_addressmaps(const or_options_t *options); #endif diff --git a/src/or/connection.c b/src/or/connection.c index 2a4a6f7626..8b9fb126d3 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -41,7 +41,7 @@ #endif static connection_t *connection_create_listener( - struct sockaddr *listensockaddr, + const struct sockaddr *listensockaddr, socklen_t listensocklen, int type, char* address); static void connection_init(time_t now, connection_t *conn, int type, @@ -57,15 +57,17 @@ static int connection_finished_flushing(connection_t *conn); static int connection_flushed_some(connection_t *conn); static int connection_finished_connecting(connection_t *conn); static int connection_reached_eof(connection_t *conn); -static int connection_read_to_buf(connection_t *conn, int *max_to_read, +static int connection_read_to_buf(connection_t *conn, ssize_t *max_to_read, int *socket_error); static int connection_process_inbuf(connection_t *conn, int package_partial); -static void client_check_address_changed(int sock); -static void set_constrained_socket_buffers(int sock, int size); +static void client_check_address_changed(tor_socket_t sock); +static void set_constrained_socket_buffers(tor_socket_t sock, int size); static const char *connection_proxy_state_to_string(int state); static int connection_read_https_proxy_response(connection_t *conn); static void connection_send_socks5_connect(connection_t *conn); +static const char *proxy_type_to_string(int proxy_type); +static int get_proxy_type(void); /** The last IPv4 address that our network interface seemed to have been * binding to, in host order. We use this to detect when our IP changes. */ @@ -476,8 +478,8 @@ _connection_free(connection_t *conn) rend_data_free(dir_conn->rend_data); } - if (conn->s >= 0) { - log_debug(LD_NET,"closing fd %d.",conn->s); + if (SOCKET_OK(conn->s)) { + log_debug(LD_NET,"closing fd %d.",(int)conn->s); tor_close_socket(conn->s); conn->s = -1; } @@ -521,8 +523,7 @@ connection_free(connection_t *conn) } } if (conn->type == CONN_TYPE_CONTROL) { - TO_CONTROL_CONN(conn)->event_mask = 0; - control_update_global_event_mask(); + connection_control_closed(TO_CONTROL_CONN(conn)); } connection_unregister_events(conn); _connection_free(conn); @@ -551,6 +552,9 @@ connection_free_all(void) /* Unlink everything from the identity map. */ connection_or_clear_identity_map(); + /* Clear out our list of broken connections */ + clear_broken_connection_map(0); + SMARTLIST_FOREACH(conns, connection_t *, conn, _connection_free(conn)); if (outgoing_addrs) { @@ -560,7 +564,9 @@ connection_free_all(void) } } -/** Do any cleanup needed: +/** + * Called when we're about to finally unlink and free a connection: + * perform necessary accounting and cleanup * - Directory conns that failed to fetch a rendezvous descriptor * need to inform pending rendezvous streams. * - OR conns need to call rep_hist_note_*() to record status. @@ -573,114 +579,20 @@ connection_free_all(void) void connection_about_to_close_connection(connection_t *conn) { - circuit_t *circ; - dir_connection_t *dir_conn; - or_connection_t *or_conn; - edge_connection_t *edge_conn; - time_t now = time(NULL); - tor_assert(conn->marked_for_close); - if (CONN_IS_EDGE(conn)) { - edge_conn = TO_EDGE_CONN(conn); - if (!edge_conn->edge_has_sent_end) { - log_warn(LD_BUG, "(Harmless.) Edge connection (marked at %s:%d) " - "hasn't sent end yet?", - conn->marked_for_close_file, conn->marked_for_close); - tor_fragile_assert(); - } - } - switch (conn->type) { case CONN_TYPE_DIR: - dir_conn = TO_DIR_CONN(conn); - if (conn->state < DIR_CONN_STATE_CLIENT_FINISHED) { - /* It's a directory connection and connecting or fetching - * failed: forget about this router, and maybe try again. */ - connection_dir_request_failed(dir_conn); - } - /* If we were trying to fetch a v2 rend desc and did not succeed, - * retry as needed. (If a fetch is successful, the connection state - * is changed to DIR_PURPOSE_HAS_FETCHED_RENDDESC to mark that - * refetching is unnecessary.) */ - if (conn->purpose == DIR_PURPOSE_FETCH_RENDDESC_V2 && - dir_conn->rend_data && - strlen(dir_conn->rend_data->onion_address) == - REND_SERVICE_ID_LEN_BASE32) - rend_client_refetch_v2_renddesc(dir_conn->rend_data); + connection_dir_about_to_close(TO_DIR_CONN(conn)); break; case CONN_TYPE_OR: - or_conn = TO_OR_CONN(conn); - /* Remember why we're closing this connection. */ - if (conn->state != OR_CONN_STATE_OPEN) { - /* Inform any pending (not attached) circs that they should - * give up. */ - circuit_n_conn_done(TO_OR_CONN(conn), 0); - /* now mark things down as needed */ - if (connection_or_nonopen_was_started_here(or_conn)) { - or_options_t *options = get_options(); - rep_hist_note_connect_failed(or_conn->identity_digest, now); - entry_guard_register_connect_status(or_conn->identity_digest,0, - !options->HTTPSProxy, now); - if (conn->state >= OR_CONN_STATE_TLS_HANDSHAKING) { - int reason = tls_error_to_orconn_end_reason(or_conn->tls_error); - control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED, - reason); - if (!authdir_mode_tests_reachability(options)) - control_event_bootstrap_problem( - orconn_end_reason_to_control_string(reason), reason); - } - } - } else if (conn->hold_open_until_flushed) { - /* We only set hold_open_until_flushed when we're intentionally - * closing a connection. */ - rep_hist_note_disconnect(or_conn->identity_digest, now); - control_event_or_conn_status(or_conn, OR_CONN_EVENT_CLOSED, - tls_error_to_orconn_end_reason(or_conn->tls_error)); - } else if (!tor_digest_is_zero(or_conn->identity_digest)) { - rep_hist_note_connection_died(or_conn->identity_digest, now); - control_event_or_conn_status(or_conn, OR_CONN_EVENT_CLOSED, - tls_error_to_orconn_end_reason(or_conn->tls_error)); - } - /* Now close all the attached circuits on it. */ - circuit_unlink_all_from_or_conn(TO_OR_CONN(conn), - END_CIRC_REASON_OR_CONN_CLOSED); + connection_or_about_to_close(TO_OR_CONN(conn)); break; case CONN_TYPE_AP: - edge_conn = TO_EDGE_CONN(conn); - if (edge_conn->socks_request->has_finished == 0) { - /* since conn gets removed right after this function finishes, - * there's no point trying to send back a reply at this point. */ - log_warn(LD_BUG,"Closing stream (marked at %s:%d) without sending" - " back a socks reply.", - conn->marked_for_close_file, conn->marked_for_close); - } - if (!edge_conn->end_reason) { - log_warn(LD_BUG,"Closing stream (marked at %s:%d) without having" - " set end_reason.", - conn->marked_for_close_file, conn->marked_for_close); - } - if (edge_conn->dns_server_request) { - log_warn(LD_BUG,"Closing stream (marked at %s:%d) without having" - " replied to DNS request.", - conn->marked_for_close_file, conn->marked_for_close); - dnsserv_reject_request(edge_conn); - } - control_event_stream_bandwidth(edge_conn); - control_event_stream_status(edge_conn, STREAM_EVENT_CLOSED, - edge_conn->end_reason); - circ = circuit_get_by_edge_conn(edge_conn); - if (circ) - circuit_detach_stream(circ, edge_conn); + connection_ap_about_to_close(TO_EDGE_CONN(conn)); break; case CONN_TYPE_EXIT: - edge_conn = TO_EDGE_CONN(conn); - circ = circuit_get_by_edge_conn(edge_conn); - if (circ) - circuit_detach_stream(circ, edge_conn); - if (conn->state == EXIT_CONN_STATE_RESOLVING) { - connection_dns_remove(edge_conn); - } + connection_exit_about_to_close(TO_EDGE_CONN(conn)); break; } } @@ -705,14 +617,14 @@ connection_close_immediate(connection_t *conn) } if (conn->outbuf_flushlen) { log_info(LD_NET,"fd %d, type %s, state %s, %d bytes on outbuf.", - conn->s, conn_type_to_string(conn->type), + (int)conn->s, conn_type_to_string(conn->type), conn_state_to_string(conn->type, conn->state), (int)conn->outbuf_flushlen); } connection_unregister_events(conn); - if (conn->s >= 0) + if (SOCKET_OK(conn->s)) tor_close_socket(conn->s); conn->s = -1; if (conn->linked) @@ -781,7 +693,7 @@ connection_expire_held_open(void) log_fn(severity, LD_NET, "Giving up on marked_for_close conn that's been flushing " "for 15s (fd %d, type %s, state %s).", - conn->s, conn_type_to_string(conn->type), + (int)conn->s, conn_type_to_string(conn->type), conn_state_to_string(conn->type, conn->state)); conn->hold_open_until_flushed = 0; } @@ -800,7 +712,7 @@ connection_expire_held_open(void) * The listenaddr struct has to be freed by the caller. */ static struct sockaddr_in * -create_inet_sockaddr(const char *listenaddress, uint16_t listenport, +create_inet_sockaddr(const char *listenaddress, int listenport, char **readable_address, socklen_t *socklen_out) { struct sockaddr_in *listenaddr = NULL; uint32_t addr; @@ -812,8 +724,10 @@ create_inet_sockaddr(const char *listenaddress, uint16_t listenport, "Error parsing/resolving ListenAddress %s", listenaddress); goto err; } - if (usePort==0) - usePort = listenport; + if (usePort==0) { + if (listenport != CFG_AUTO_PORT) + usePort = listenport; + } listenaddr = tor_malloc_zero(sizeof(struct sockaddr_in)); listenaddr->sin_addr.s_addr = htonl(addr); @@ -851,7 +765,13 @@ create_unix_sockaddr(const char *listenaddress, char **readable_address, sockaddr = tor_malloc_zero(sizeof(struct sockaddr_un)); sockaddr->sun_family = AF_UNIX; - strncpy(sockaddr->sun_path, listenaddress, sizeof(sockaddr->sun_path)); + if (strlcpy(sockaddr->sun_path, listenaddress, sizeof(sockaddr->sun_path)) + >= sizeof(sockaddr->sun_path)) { + log_warn(LD_CONFIG, "Unix socket path '%s' is too long to fit.", + escaped(listenaddress)); + tor_free(sockaddr); + return NULL; + } if (readable_address) *readable_address = tor_strdup(listenaddress); @@ -892,6 +812,62 @@ warn_too_many_conns(void) } } +#ifdef HAVE_SYS_UN_H +/** Check whether we should be willing to open an AF_UNIX socket in + * <b>path</b>. Return 0 if we should go ahead and -1 if we shouldn't. */ +static int +check_location_for_unix_socket(const or_options_t *options, const char *path) +{ + int r = -1; + char *p = tor_strdup(path); + cpd_check_t flags = CPD_CHECK_MODE_ONLY; + if (get_parent_directory(p)<0) + goto done; + + if (options->ControlSocketsGroupWritable) + flags |= CPD_GROUP_OK; + + if (check_private_dir(p, flags, options->User) < 0) { + char *escpath, *escdir; + escpath = esc_for_log(path); + escdir = esc_for_log(p); + log_warn(LD_GENERAL, "Before Tor can create a control socket in %s, the " + "directory %s needs to exist, and to be accessible only by the " + "user%s account that is running Tor. (On some Unix systems, " + "anybody who can list a socket can conect to it, so Tor is " + "being careful.)", escpath, escdir, + options->ControlSocketsGroupWritable ? " and group" : ""); + tor_free(escpath); + tor_free(escdir); + goto done; + } + + r = 0; + done: + tor_free(p); + return r; +} +#endif + +/** Tell the TCP stack that it shouldn't wait for a long time after + * <b>sock</b> has closed before reusing its port. */ +static void +make_socket_reuseable(tor_socket_t sock) +{ +#ifdef MS_WINDOWS + (void) sock; +#else + int one=1; + + /* REUSEADDR on normal places means you can rebind to the port + * right after somebody else has let it go. But REUSEADDR on win32 + * means you can bind to the port _even when somebody else + * already has it bound_. So, don't do that on Win32. */ + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*) &one, + (socklen_t)sizeof(one)); +#endif +} + /** Bind a new non-blocking socket listening to the socket described * by <b>listensockaddr</b>. * @@ -899,12 +875,13 @@ warn_too_many_conns(void) * to the conn. */ static connection_t * -connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen, +connection_create_listener(const struct sockaddr *listensockaddr, + socklen_t socklen, int type, char* address) { connection_t *conn; - int s; /* the socket we're going to make */ - uint16_t usePort = 0; + tor_socket_t s; /* the socket we're going to make */ + uint16_t usePort = 0, gotPort = 0; int start_reading = 0; if (get_n_open_sockets() >= get_options()->_ConnLimit-1) { @@ -913,35 +890,25 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen, } if (listensockaddr->sa_family == AF_INET) { + tor_addr_t addr; int is_tcp = (type != CONN_TYPE_AP_DNS_LISTENER); -#ifndef MS_WINDOWS - int one=1; -#endif if (is_tcp) start_reading = 1; - usePort = ntohs( (uint16_t) - ((struct sockaddr_in *)listensockaddr)->sin_port); + tor_addr_from_sockaddr(&addr, listensockaddr, &usePort); log_notice(LD_NET, "Opening %s on %s:%d", - conn_type_to_string(type), address, usePort); + conn_type_to_string(type), fmt_addr(&addr), usePort); s = tor_open_socket(PF_INET, is_tcp ? SOCK_STREAM : SOCK_DGRAM, is_tcp ? IPPROTO_TCP: IPPROTO_UDP); - if (s < 0) { + if (!SOCKET_OK(s)) { log_warn(LD_NET,"Socket creation failed."); goto err; } -#ifndef MS_WINDOWS - /* REUSEADDR on normal places means you can rebind to the port - * right after somebody else has let it go. But REUSEADDR on win32 - * means you can bind to the port _even when somebody else - * already has it bound_. So, don't do that on Win32. */ - setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*) &one, - (socklen_t)sizeof(one)); -#endif + make_socket_reuseable(s); if (bind(s,listensockaddr,socklen) < 0) { const char *helpfulhint = ""; @@ -962,6 +929,21 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen, goto err; } } + + if (usePort != 0) { + gotPort = usePort; + } else { + tor_addr_t addr2; + struct sockaddr_storage ss; + socklen_t ss_len=sizeof(ss); + if (getsockname(s, (struct sockaddr*)&ss, &ss_len)<0) { + log_warn(LD_NET, "getsockname() couldn't learn address for %s: %s", + conn_type_to_string(type), + tor_socket_strerror(tor_socket_errno(s))); + gotPort = 0; + } + tor_addr_from_sockaddr(&addr2, (struct sockaddr*)&ss, &gotPort); + } #ifdef HAVE_SYS_UN_H } else if (listensockaddr->sa_family == AF_UNIX) { start_reading = 1; @@ -970,6 +952,9 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen, * and listeners at the same time */ tor_assert(type == CONN_TYPE_CONTROL_LISTENER); + if (check_location_for_unix_socket(get_options(), address) < 0) + goto err; + log_notice(LD_NET, "Opening %s on %s", conn_type_to_string(type), address); @@ -989,6 +974,15 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen, tor_socket_strerror(tor_socket_errno(s))); goto err; } + if (get_options()->ControlSocketsGroupWritable) { + /* We need to use chmod; fchmod doesn't work on sockets on all + * platforms. */ + if (chmod(address, 0660) < 0) { + log_warn(LD_FS,"Unable to make %s group-writable.", address); + tor_close_socket(s); + goto err; + } + } if (listen(s,SOMAXCONN) < 0) { log_warn(LD_NET, "Could not listen on %s: %s", address, @@ -1009,7 +1003,7 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen, conn->socket_family = listensockaddr->sa_family; conn->s = s; conn->address = tor_strdup(address); - conn->port = usePort; + conn->port = gotPort; if (connection_add(conn) < 0) { /* no space, forget it */ log_warn(LD_NET,"connection_add for listener failed. Giving up."); @@ -1017,8 +1011,12 @@ connection_create_listener(struct sockaddr *listensockaddr, socklen_t socklen, goto err; } - log_debug(LD_NET,"%s listening on port %u.", - conn_type_to_string(type), usePort); + log_fn(usePort==gotPort ? LOG_DEBUG : LOG_NOTICE, LD_NET, + "%s listening on port %u.", + conn_type_to_string(type), gotPort); + + if (type == CONN_TYPE_CONTROL_LISTENER) + control_ports_write_to_file(); conn->state = LISTENER_STATE_READY; if (start_reading) { @@ -1098,20 +1096,20 @@ check_sockaddr_family_match(sa_family_t got, connection_t *listener) static int connection_handle_listener_read(connection_t *conn, int new_type) { - int news; /* the new socket */ + tor_socket_t news; /* the new socket */ connection_t *newconn; /* information about the remote peer when connecting to other routers */ char addrbuf[256]; struct sockaddr *remote = (struct sockaddr*)addrbuf; /* length of the remote address. Must be whatever accept() needs. */ socklen_t remotelen = (socklen_t)sizeof(addrbuf); - or_options_t *options = get_options(); + const or_options_t *options = get_options(); tor_assert((size_t)remotelen >= sizeof(struct sockaddr_in)); memset(addrbuf, 0, sizeof(addrbuf)); news = tor_accept_socket(conn->s,remote,&remotelen); - if (news < 0) { /* accept() error */ + if (!SOCKET_OK(news)) { /* accept() error */ int e = tor_socket_errno(conn->s); if (ERRNO_IS_ACCEPT_EAGAIN(e)) { return 0; /* he hung up before we could accept(). that's fine. */ @@ -1127,8 +1125,9 @@ connection_handle_listener_read(connection_t *conn, int new_type) } log_debug(LD_NET, "Connection accepted on socket %d (child of fd %d).", - news,conn->s); + (int)news,(int)conn->s); + make_socket_reuseable(news); set_socket_nonblocking(news); if (options->ConstrainedSockets) @@ -1219,7 +1218,8 @@ connection_handle_listener_read(connection_t *conn, int new_type) } if (connection_init_accepted_conn(newconn, conn->type) < 0) { - connection_mark_for_close(newconn); + if (! newconn->marked_for_close) + connection_mark_for_close(newconn); return 0; } return 0; @@ -1245,9 +1245,11 @@ connection_init_accepted_conn(connection_t *conn, uint8_t listener_type) conn->state = AP_CONN_STATE_SOCKS_WAIT; break; case CONN_TYPE_AP_TRANS_LISTENER: + TO_EDGE_CONN(conn)->is_transparent_ap = 1; conn->state = AP_CONN_STATE_CIRCUIT_WAIT; return connection_ap_process_transparent(TO_EDGE_CONN(conn)); case CONN_TYPE_AP_NATD_LISTENER: + TO_EDGE_CONN(conn)->is_transparent_ap = 1; conn->state = AP_CONN_STATE_NATD_WAIT; break; } @@ -1276,11 +1278,12 @@ int connection_connect(connection_t *conn, const char *address, const tor_addr_t *addr, uint16_t port, int *socket_error) { - int s, inprogress = 0; + tor_socket_t s; + int inprogress = 0; char addrbuf[256]; - struct sockaddr *dest_addr = (struct sockaddr*) addrbuf; + struct sockaddr *dest_addr; int dest_addr_len; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int protocol_family; if (get_n_open_sockets() >= get_options()->_ConnLimit-1) { @@ -1335,6 +1338,8 @@ connection_connect(connection_t *conn, const char *address, log_debug(LD_NET, "Connecting to %s:%u.", escaped_safe_str_client(address), port); + make_socket_reuseable(s); + if (connect(s, dest_addr, (socklen_t)dest_addr_len) < 0) { int e = tor_socket_errno(s); if (!ERRNO_IS_CONN_EINPROGRESS(e)) { @@ -1373,6 +1378,7 @@ connection_proxy_state_to_string(int state) static const char *unknown = "???"; static const char *states[] = { "PROXY_NONE", + "PROXY_INFANT", "PROXY_HTTPS_WANT_CONNECT_OK", "PROXY_SOCKS4_WANT_CONNECT_OK", "PROXY_SOCKS5_WANT_AUTH_METHOD_NONE", @@ -1401,7 +1407,7 @@ connection_proxy_state_to_string(int state) int connection_proxy_connect(connection_t *conn, int type) { - or_options_t *options; + const or_options_t *options; tor_assert(conn); @@ -1542,10 +1548,20 @@ connection_read_https_proxy_response(connection_t *conn) return 1; } /* else, bad news on the status code */ - log_warn(LD_NET, - "The https proxy sent back an unexpected status code %d (%s). " - "Closing.", - status_code, escaped(reason)); + switch (status_code) { + case 403: + log_warn(LD_NET, + "The https proxy refused to allow connection to %s " + "(status code %d, %s). Closing.", + conn->address, status_code, escaped(reason)); + break; + default: + log_warn(LD_NET, + "The https proxy sent back an unexpected status code %d (%s). " + "Closing.", + status_code, escaped(reason)); + break; + } tor_free(reason); return -1; } @@ -1794,10 +1810,23 @@ retry_listeners(int type, config_line_t *cfg, if (!parse_addr_port(LOG_WARN, wanted->value, &address, NULL, &port)) { int addr_matches = !strcasecmp(address, conn->address); + int port_matches; tor_free(address); - if (! port) - port = port_option; - if (port == conn->port && addr_matches) { + if (port) { + /* The Listener line has a port */ + port_matches = (port == conn->port); + } else if (port_option == CFG_AUTO_PORT) { + /* The Listener line has no port, and the Port line is "auto". + * "auto" matches anything; transitions from any port to + * "auto" succeed. */ + port_matches = 1; + } else { + /* The Listener line has no port, and the Port line is "auto". + * "auto" matches anything; transitions from any port to + * "auto" succeed. */ + port_matches = (port_option == conn->port); + } + if (port_matches && addr_matches) { line = wanted; break; } @@ -1845,7 +1874,7 @@ retry_listeners(int type, config_line_t *cfg, case AF_INET: listensockaddr = (struct sockaddr *) create_inet_sockaddr(cfg_line->value, - (uint16_t) port_option, + port_option, &address, &listensocklen); break; case AF_UNIX: @@ -1894,38 +1923,41 @@ int retry_all_listeners(smartlist_t *replaced_conns, smartlist_t *new_conns) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); + int retval = 0; + const uint16_t old_or_port = router_get_advertised_or_port(options); + const uint16_t old_dir_port = router_get_advertised_dir_port(options, 0); if (retry_listeners(CONN_TYPE_OR_LISTENER, options->ORListenAddress, options->ORPort, "0.0.0.0", replaced_conns, new_conns, options->ClientOnly, AF_INET)<0) - return -1; + retval = -1; if (retry_listeners(CONN_TYPE_DIR_LISTENER, options->DirListenAddress, options->DirPort, "0.0.0.0", replaced_conns, new_conns, options->ClientOnly, AF_INET)<0) - return -1; + retval = -1; if (retry_listeners(CONN_TYPE_AP_LISTENER, options->SocksListenAddress, options->SocksPort, "127.0.0.1", replaced_conns, new_conns, 0, AF_INET)<0) - return -1; + retval = -1; if (retry_listeners(CONN_TYPE_AP_TRANS_LISTENER, options->TransListenAddress, options->TransPort, "127.0.0.1", replaced_conns, new_conns, 0, AF_INET)<0) - return -1; + retval = -1; if (retry_listeners(CONN_TYPE_AP_NATD_LISTENER, options->NATDListenAddress, options->NATDPort, "127.0.0.1", replaced_conns, new_conns, 0, AF_INET)<0) - return -1; + retval = -1; if (retry_listeners(CONN_TYPE_AP_DNS_LISTENER, options->DNSListenAddress, options->DNSPort, "127.0.0.1", replaced_conns, new_conns, 0, AF_INET)<0) - return -1; + retval = -1; if (retry_listeners(CONN_TYPE_CONTROL_LISTENER, options->ControlListenAddress, options->ControlPort, "127.0.0.1", @@ -1939,7 +1971,16 @@ retry_all_listeners(smartlist_t *replaced_conns, AF_UNIX)<0) return -1; - return 0; + if (old_or_port != router_get_advertised_or_port(options) || + old_dir_port != router_get_advertised_dir_port(options, 0)) { + /* Our chosen ORPort or DirPort is not what it used to be: the + * descriptor we had (if any) should be regenerated. (We won't + * automatically notice this because of changes in the option, + * since the value could be "auto".) */ + mark_my_descriptor_dirty("Chosen Or/DirPort changed"); + } + + return retval; } /** Return 1 if we should apply rate limiting to <b>conn</b>, @@ -1948,10 +1989,13 @@ retry_all_listeners(smartlist_t *replaced_conns, static int connection_is_rate_limited(connection_t *conn) { - if (conn->linked || /* internal connection */ - tor_addr_family(&conn->addr) == AF_UNSPEC || /* no address */ - tor_addr_is_internal(&conn->addr, 0)) /* internal address */ - return 0; + const or_options_t *options = get_options(); + if (conn->linked) + return 0; /* Internal connection */ + else if (! options->CountPrivateBandwidth && + (tor_addr_family(&conn->addr) == AF_UNSPEC || /* no address */ + tor_addr_is_internal(&conn->addr, 0))) + return 0; /* Internal address */ else return 1; } @@ -2143,7 +2187,7 @@ global_write_bucket_low(connection_t *conn, size_t attempt, int priority) if (priority == 1) { /* old-style v1 query */ /* Could we handle *two* of these requests within the next two seconds? */ - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int64_t can_write = (int64_t)smaller_bucket + 2*(options->RelayBandwidthRate ? options->RelayBandwidthRate : options->BandwidthRate); @@ -2261,7 +2305,7 @@ connection_consider_empty_write_buckets(connection_t *conn) void connection_bucket_init(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); /* start it at max traffic */ global_read_bucket = (int)options->BandwidthBurst; global_write_bucket = (int)options->BandwidthBurst; @@ -2306,7 +2350,7 @@ connection_bucket_refill_helper(int *bucket, int rate, int burst, void connection_bucket_refill(int seconds_elapsed, time_t now) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); smartlist_t *conns = get_connection_array(); int relayrate, relayburst; @@ -2369,7 +2413,7 @@ connection_bucket_refill(int seconds_elapsed, time_t now) TO_OR_CONN(conn)->read_bucket > 0)) { /* and either a non-cell conn or a cell conn with non-empty bucket */ LOG_FN_CONN(conn, (LOG_DEBUG,LD_NET, - "waking up conn (fd %d) for read", conn->s)); + "waking up conn (fd %d) for read", (int)conn->s)); conn->read_blocked_on_bw = 0; connection_start_reading(conn); } @@ -2382,7 +2426,7 @@ connection_bucket_refill(int seconds_elapsed, time_t now) conn->state != OR_CONN_STATE_OPEN || TO_OR_CONN(conn)->write_bucket > 0)) { LOG_FN_CONN(conn, (LOG_DEBUG,LD_NET, - "waking up conn (fd %d) for write", conn->s)); + "waking up conn (fd %d) for write", (int)conn->s)); conn->write_blocked_on_bw = 0; connection_start_writing(conn); } @@ -2426,7 +2470,7 @@ connection_bucket_refill(int seconds_elapsed, time_t now) void connection_bucket_init(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); const struct timeval *tick = tor_libevent_get_one_tick_timeout(); struct ev_token_bucket_cfg *bucket_cfg; @@ -2502,7 +2546,7 @@ connection_consider_empty_read_buckets(connection_t *conn) static int connection_handle_read_impl(connection_t *conn) { - int max_to_read=-1, try_to_read; + ssize_t max_to_read=-1, try_to_read; size_t before, n_read = 0; int socket_error = 0; @@ -2620,7 +2664,8 @@ connection_handle_read(connection_t *conn) * Return -1 if we want to break conn, else return 0. */ static int -connection_read_to_buf(connection_t *conn, int *max_to_read, int *socket_error) +connection_read_to_buf(connection_t *conn, ssize_t *max_to_read, + int *socket_error) { int result; ssize_t at_most = *max_to_read; @@ -2655,7 +2700,7 @@ connection_read_to_buf(connection_t *conn, int *max_to_read, int *socket_error) log_debug(LD_NET, "%d: starting, inbuf_datalen %ld (%d pending in tls object)." " at_most %ld.", - conn->s,(long)buf_datalen(conn->inbuf), + (int)conn->s,(long)buf_datalen(conn->inbuf), tor_tls_get_pending_bytes(or_conn->tls), (long)at_most); initial_size = buf_datalen(conn->inbuf); @@ -2738,15 +2783,19 @@ connection_read_to_buf(connection_t *conn, int *max_to_read, int *socket_error) n_read = (size_t) result; } - if (n_read > 0) { /* change *max_to_read */ - /*XXXX022 check for overflow*/ - *max_to_read = (int)(at_most - n_read); - } + if (n_read > 0) { + /* change *max_to_read */ + *max_to_read = at_most - n_read; - if (conn->type == CONN_TYPE_AP) { - edge_connection_t *edge_conn = TO_EDGE_CONN(conn); - /*XXXX022 check for overflow*/ - edge_conn->n_read += (int)n_read; + /* Update edge_conn->n_read */ + if (conn->type == CONN_TYPE_AP) { + edge_connection_t *edge_conn = TO_EDGE_CONN(conn); + /* Check for overflow: */ + if (PREDICT_LIKELY(UINT32_MAX - edge_conn->n_read > n_read)) + edge_conn->n_read += (int)n_read; + else + edge_conn->n_read = UINT32_MAX; + } } connection_buckets_decrement(conn, approx_time(), n_read, n_written); @@ -2820,9 +2869,11 @@ connection_handle_read_cb(struct bufferevent *bufev, void *arg) { connection_t *conn = arg; (void) bufev; - if (!conn->marked_for_close) + if (!conn->marked_for_close) { if (connection_process_inbuf(conn, 1)<0) /* XXXX Always 1? */ - connection_mark_for_close(conn); + if (!conn->marked_for_close) + connection_mark_for_close(conn); + } } /** Callback: invoked whenever a bufferevent has written data. */ @@ -2832,7 +2883,8 @@ connection_handle_write_cb(struct bufferevent *bufev, void *arg) connection_t *conn = arg; struct evbuffer *output; if (connection_flushed_some(conn)<0) { - connection_mark_for_close(conn); + if (!conn->marked_for_close) + connection_mark_for_close(conn); return; } @@ -2983,15 +3035,15 @@ connection_outbuf_too_full(connection_t *conn) return (conn->outbuf_flushlen > 10*CELL_PAYLOAD_SIZE); } -/** Try to flush more bytes onto conn-\>s. +/** Try to flush more bytes onto <b>conn</b>-\>s. * * This function gets called either from conn_write() in main.c * when poll() has declared that conn wants to write, or below * from connection_write_to_buf() when an entire TLS record is ready. * - * Update conn-\>timestamp_lastwritten to now, and call flush_buf + * Update <b>conn</b>-\>timestamp_lastwritten to now, and call flush_buf * or flush_buf_tls appropriately. If it succeeds and there are no more - * more bytes on conn->outbuf, then call connection_finished_flushing + * more bytes on <b>conn</b>-\>outbuf, then call connection_finished_flushing * on it too. * * If <b>force</b>, then write as many bytes as possible, ignoring bandwidth @@ -3013,7 +3065,7 @@ connection_handle_write_impl(connection_t *conn, int force) tor_assert(!connection_is_listener(conn)); - if (conn->marked_for_close || conn->s < 0) + if (conn->marked_for_close || !SOCKET_OK(conn->s)) return 0; /* do nothing */ if (conn->in_flushed_some) { @@ -3137,10 +3189,14 @@ connection_handle_write_impl(connection_t *conn, int force) n_written = (size_t) result; } - if (conn->type == CONN_TYPE_AP) { + if (n_written && conn->type == CONN_TYPE_AP) { edge_connection_t *edge_conn = TO_EDGE_CONN(conn); - /*XXXX022 check for overflow.*/ - edge_conn->n_written += (int)n_written; + + /* Check for overflow: */ + if (PREDICT_LIKELY(UINT32_MAX - edge_conn->n_written > n_written)) + edge_conn->n_written += (int)n_written; + else + edge_conn->n_written = UINT32_MAX; } connection_buckets_decrement(conn, approx_time(), n_read, n_written); @@ -3179,6 +3235,25 @@ connection_handle_write(connection_t *conn, int force) return res; } +/** + * Try to flush data that's waiting for a write on <b>conn</b>. Return + * -1 on failure, 0 on success. + * + * Don't use this function for regular writing; the buffers/bufferevents + * system should be good enough at scheduling writes there. Instead, this + * function is for cases when we're about to exit or something and we want + * to report it right away. + */ +int +connection_flush(connection_t *conn) +{ + IF_HAS_BUFFEREVENT(conn, { + int r = bufferevent_flush(conn->bufev, EV_WRITE, BEV_FLUSH); + return (r < 0) ? -1 : 0; + }); + return connection_handle_write(conn, 1); +} + /** OpenSSL TLS record size is 16383; this is close. The goal here is to * push data out as soon as we know there's enough for a TLS record, so * during periods of high load we won't read entire megabytes from @@ -3243,18 +3318,25 @@ _connection_write_to_buf_impl(const char *string, size_t len, /* if it failed, it means we have our package/delivery windows set wrong compared to our max outbuf size. close the whole circuit. */ log_warn(LD_NET, - "write_to_buf failed. Closing circuit (fd %d).", conn->s); + "write_to_buf failed. Closing circuit (fd %d).", (int)conn->s); circuit_mark_for_close(circuit_get_by_edge_conn(TO_EDGE_CONN(conn)), END_CIRC_REASON_INTERNAL); } else { log_warn(LD_NET, - "write_to_buf failed. Closing connection (fd %d).", conn->s); + "write_to_buf failed. Closing connection (fd %d).", + (int)conn->s); connection_mark_for_close(conn); } return; } - connection_start_writing(conn); + /* If we receive optimistic data in the EXIT_CONN_STATE_RESOLVING + * state, we don't want to try to write it right away, since + * conn->write_event won't be set yet. Otherwise, write data from + * this conn as the socket is available. */ + if (conn->write_event) { + connection_start_writing(conn); + } if (zlib) { conn->outbuf_flushlen += buf_datalen(conn->outbuf) - old_datalen; } else { @@ -3288,7 +3370,7 @@ _connection_write_to_buf_impl(const char *string, size_t len, /* this connection is broken. remove it. */ log_warn(LD_BUG, "unhandled error on write for " "conn (type %d, fd %d); removing", - conn->type, conn->s); + conn->type, (int)conn->s); tor_fragile_assert(); /* do a close-immediate here, so we don't try to flush */ connection_close_immediate(conn); @@ -3516,8 +3598,17 @@ alloc_http_authenticator(const char *authenticator) authenticator, authenticator_length) < 0) { tor_free(base64_authenticator); /* free and set to null */ } else { - /* remove extra \n at end of encoding */ - base64_authenticator[strlen(base64_authenticator) - 1] = 0; + int i = 0, j = 0; + ssize_t len = strlen(base64_authenticator); + + /* remove all newline occurrences within the string */ + for (i=0; i < len; ++i) { + if ('\n' != base64_authenticator[i]) { + base64_authenticator[j] = base64_authenticator[i]; + ++j; + } + } + base64_authenticator[j]='\0'; } return base64_authenticator; } @@ -3528,7 +3619,7 @@ alloc_http_authenticator(const char *authenticator) * call init_keys(). */ static void -client_check_address_changed(int sock) +client_check_address_changed(tor_socket_t sock) { uint32_t iface_ip, ip_out; /* host order */ struct sockaddr_in out_addr; @@ -3584,7 +3675,7 @@ client_check_address_changed(int sock) * to the desired size to stay below system TCP buffer limits. */ static void -set_constrained_socket_buffers(int sock, int size) +set_constrained_socket_buffers(tor_socket_t sock, int size) { void *sz = (void*)&size; socklen_t sz_sz = (socklen_t) sizeof(size); @@ -3643,6 +3734,8 @@ connection_flushed_some(connection_t *conn) r = connection_dirserv_flushed_some(TO_DIR_CONN(conn)); } else if (conn->type == CONN_TYPE_OR) { r = connection_or_flushed_some(TO_OR_CONN(conn)); + } else if (CONN_IS_EDGE(conn)) { + r = connection_edge_flushed_some(TO_EDGE_CONN(conn)); } conn->in_flushed_some = 0; return r; @@ -3827,11 +3920,18 @@ assert_connection_ok(connection_t *conn, time_t now) tor_assert(conn->linked); } if (conn->linked) - tor_assert(conn->s < 0); + tor_assert(!SOCKET_OK(conn->s)); if (conn->outbuf_flushlen > 0) { - tor_assert(connection_is_writing(conn) || conn->write_blocked_on_bw || - (CONN_IS_EDGE(conn) && TO_EDGE_CONN(conn)->edge_blocked_on_circ)); + /* With optimistic data, we may have queued data in + * EXIT_CONN_STATE_RESOLVING while the conn is not yet marked to writing. + * */ + tor_assert((conn->type == CONN_TYPE_EXIT && + conn->state == EXIT_CONN_STATE_RESOLVING) || + connection_is_writing(conn) || + conn->write_blocked_on_bw || + (CONN_IS_EDGE(conn) && + TO_EDGE_CONN(conn)->edge_blocked_on_circ)); } if (conn->hold_open_until_flushed) @@ -3938,3 +4038,101 @@ assert_connection_ok(connection_t *conn, time_t now) } } +/** Fills <b>addr</b> and <b>port</b> with the details of the global + * proxy server we are using. + * <b>conn</b> contains the connection we are using the proxy for. + * + * Return 0 on success, -1 on failure. + */ +int +get_proxy_addrport(tor_addr_t *addr, uint16_t *port, int *proxy_type, + const connection_t *conn) +{ + const or_options_t *options = get_options(); + + if (options->HTTPSProxy) { + tor_addr_copy(addr, &options->HTTPSProxyAddr); + *port = options->HTTPSProxyPort; + *proxy_type = PROXY_CONNECT; + return 0; + } else if (options->Socks4Proxy) { + tor_addr_copy(addr, &options->Socks4ProxyAddr); + *port = options->Socks4ProxyPort; + *proxy_type = PROXY_SOCKS4; + return 0; + } else if (options->Socks5Proxy) { + tor_addr_copy(addr, &options->Socks5ProxyAddr); + *port = options->Socks5ProxyPort; + *proxy_type = PROXY_SOCKS5; + return 0; + } else if (options->ClientTransportPlugin || + options->Bridges) { + const transport_t *transport = NULL; + int r; + r = find_transport_by_bridge_addrport(&conn->addr, conn->port, &transport); + if (r<0) + return -1; + if (transport) { /* transport found */ + tor_addr_copy(addr, &transport->addr); + *port = transport->port; + *proxy_type = transport->socks_version; + return 0; + } + } + + *proxy_type = PROXY_NONE; + return 0; +} + +/** Returns the global proxy type used by tor. */ +static int +get_proxy_type(void) +{ + const or_options_t *options = get_options(); + + if (options->HTTPSProxy) + return PROXY_CONNECT; + else if (options->Socks4Proxy) + return PROXY_SOCKS4; + else if (options->Socks5Proxy) + return PROXY_SOCKS5; + else if (options->ClientTransportPlugin) + return PROXY_PLUGGABLE; + else + return PROXY_NONE; +} + +/** Log a failed connection to a proxy server. + * <b>conn</b> is the connection we use the proxy server for. */ +void +log_failed_proxy_connection(connection_t *conn) +{ + tor_addr_t proxy_addr; + uint16_t proxy_port; + int proxy_type; + + if (get_proxy_addrport(&proxy_addr, &proxy_port, &proxy_type, conn) != 0) + return; /* if we have no proxy set up, leave this function. */ + + log_warn(LD_NET, + "The connection to the %s proxy server at %s:%u just failed. " + "Make sure that the proxy server is up and running.", + proxy_type_to_string(get_proxy_type()), fmt_addr(&proxy_addr), + proxy_port); +} + +/** Return string representation of <b>proxy_type</b>. */ +static const char * +proxy_type_to_string(int proxy_type) +{ + switch (proxy_type) { + case PROXY_CONNECT: return "HTTP"; + case PROXY_SOCKS4: return "SOCKS4"; + case PROXY_SOCKS5: return "SOCKS5"; + case PROXY_PLUGGABLE: return "pluggable transports SOCKS"; + case PROXY_NONE: return "NULL"; + default: tor_assert(0); + } + return NULL; /*Unreached*/ +} + diff --git a/src/or/connection.h b/src/or/connection.h index dc8c5df812..fedeba4b3a 100644 --- a/src/or/connection.h +++ b/src/or/connection.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -57,6 +57,9 @@ int connection_connect(connection_t *conn, const char *address, int connection_proxy_connect(connection_t *conn, int type); int connection_read_proxy_handshake(connection_t *conn); +void log_failed_proxy_connection(connection_t *conn); +int get_proxy_addrport(tor_addr_t *addr, uint16_t *port, int *proxy_type, + const connection_t *conn); int retry_all_listeners(smartlist_t *replaced_conns, smartlist_t *new_conns); @@ -79,6 +82,8 @@ int connection_fetch_from_buf_http(connection_t *conn, int connection_wants_to_flush(connection_t *conn); int connection_outbuf_too_full(connection_t *conn); int connection_handle_write(connection_t *conn, int force); +int connection_flush(connection_t *conn); + void _connection_write_to_buf_impl(const char *string, size_t len, connection_t *conn, int zlib); static void connection_write_to_buf(const char *string, size_t len, diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index bff73d4a9e..c19e8b74d6 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -301,6 +301,23 @@ connection_edge_end_errno(edge_connection_t *conn) return connection_edge_end(conn, reason); } +/** We just wrote some data to <b>conn</b>; act appropriately. + * + * (That is, if it's open, consider sending a stream-level sendme cell if we + * have just flushed enough.) + */ +int +connection_edge_flushed_some(edge_connection_t *conn) +{ + switch (conn->_base.state) { + case AP_CONN_STATE_OPEN: + case EXIT_CONN_STATE_OPEN: + connection_edge_consider_sending_sendme(conn); + break; + } + return 0; +} + /** Connection <b>conn</b> has finished writing and has no bytes left on * its outbuf. * @@ -391,6 +408,71 @@ connection_edge_finished_connecting(edge_connection_t *edge_conn) return connection_edge_process_inbuf(edge_conn, 1); } +/** Common code to connection_(ap|exit)_about_to_close. */ +static void +connection_edge_about_to_close(edge_connection_t *edge_conn) +{ + if (!edge_conn->edge_has_sent_end) { + connection_t *conn = TO_CONN(edge_conn); + log_warn(LD_BUG, "(Harmless.) Edge connection (marked at %s:%d) " + "hasn't sent end yet?", + conn->marked_for_close_file, conn->marked_for_close); + tor_fragile_assert(); + } +} + +/* Called when we're about to finally unlink and free an AP (client) + * connection: perform necessary accounting and cleanup */ +void +connection_ap_about_to_close(edge_connection_t *edge_conn) +{ + circuit_t *circ; + connection_t *conn = TO_CONN(edge_conn); + + if (edge_conn->socks_request->has_finished == 0) { + /* since conn gets removed right after this function finishes, + * there's no point trying to send back a reply at this point. */ + log_warn(LD_BUG,"Closing stream (marked at %s:%d) without sending" + " back a socks reply.", + conn->marked_for_close_file, conn->marked_for_close); + } + if (!edge_conn->end_reason) { + log_warn(LD_BUG,"Closing stream (marked at %s:%d) without having" + " set end_reason.", + conn->marked_for_close_file, conn->marked_for_close); + } + if (edge_conn->dns_server_request) { + log_warn(LD_BUG,"Closing stream (marked at %s:%d) without having" + " replied to DNS request.", + conn->marked_for_close_file, conn->marked_for_close); + dnsserv_reject_request(edge_conn); + } + control_event_stream_bandwidth(edge_conn); + control_event_stream_status(edge_conn, STREAM_EVENT_CLOSED, + edge_conn->end_reason); + circ = circuit_get_by_edge_conn(edge_conn); + if (circ) + circuit_detach_stream(circ, edge_conn); +} + +/* Called when we're about to finally unlink and free an exit + * connection: perform necessary accounting and cleanup */ +void +connection_exit_about_to_close(edge_connection_t *edge_conn) +{ + circuit_t *circ; + connection_t *conn = TO_CONN(edge_conn); + + connection_edge_about_to_close(edge_conn); + + circ = circuit_get_by_edge_conn(edge_conn); + if (circ) + circuit_detach_stream(circ, edge_conn); + if (conn->state == EXIT_CONN_STATE_RESOLVING) { + connection_dns_remove(edge_conn); + } +} + /** Define a schedule for how long to wait between retrying * application connections. Rather than waiting a fixed amount of * time between each retry, we wait 10 seconds each for the first @@ -422,7 +504,7 @@ connection_ap_expire_beginning(void) edge_connection_t *conn; circuit_t *circ; time_t now = time(NULL); - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int severity; int cutoff; int seconds_idle, seconds_since_born; @@ -486,12 +568,12 @@ connection_ap_expire_beginning(void) } tor_assert(circ->purpose == CIRCUIT_PURPOSE_C_GENERAL); log_fn(cutoff < 15 ? LOG_INFO : severity, LD_APP, - "We tried for %d seconds to connect to '%s' using exit '%s'." + "We tried for %d seconds to connect to '%s' using exit %s." " Retrying on a new circuit.", seconds_idle, safe_str_client(conn->socks_request->address), conn->cpath_layer ? - conn->cpath_layer->extend_info->nickname : "*unnamed*"); + extend_info_describe(conn->cpath_layer->extend_info): "*unnamed*"); /* send an end down the circuit */ connection_edge_end(conn, END_STREAM_REASON_TIMEOUT); /* un-mark it as ending, since we're going to reuse it */ @@ -500,6 +582,7 @@ connection_ap_expire_beginning(void) /* kludge to make us not try this circuit again, yet to allow * current streams on it to survive if they can: make it * unattractive to use for new streams */ + /* XXXX023 this is a kludgy way to do this. */ tor_assert(circ->timestamp_dirty); circ->timestamp_dirty -= options->MaxCircuitDirtiness; /* give our stream another 'cutoff' seconds to try */ @@ -540,7 +623,7 @@ connection_ap_attach_pending(void) /** Tell any AP streams that are waiting for a one-hop tunnel to * <b>failed_digest</b> that they are going to fail. */ -/* XXX022 We should get rid of this function, and instead attach +/* XXX023 We should get rid of this function, and instead attach * one-hop streams to circ->p_streams so they get marked in * circuit_mark_for_close like normal p_streams. */ void @@ -559,7 +642,7 @@ connection_ap_fail_onehop(const char *failed_digest, if (!edge_conn->want_onehop) continue; if (hexdigest_to_digest(edge_conn->chosen_exit_name, digest) < 0 || - memcmp(digest, failed_digest, DIGEST_LEN)) + tor_memneq(digest, failed_digest, DIGEST_LEN)) continue; if (tor_digest_is_zero(digest)) { /* we don't know the digest; have to compare addr:port */ @@ -781,7 +864,8 @@ clear_trackexithost_mappings(const char *exitname) tor_strlower(suffix); STRMAP_FOREACH_MODIFY(addressmap, address, addressmap_entry_t *, ent) { - if (ent->source == ADDRMAPSRC_TRACKEXIT && !strcmpend(address, suffix)) { + if (ent->source == ADDRMAPSRC_TRACKEXIT && + !strcmpend(ent->new_address, suffix)) { addressmap_ent_remove(address, ent); MAP_DEL_CURRENT(address); } @@ -790,6 +874,101 @@ clear_trackexithost_mappings(const char *exitname) tor_free(suffix); } +/** Remove all TRACKEXIT mappings from the addressmap for which the target + * host is unknown or no longer allowed, or for which the source address + * is no longer in trackexithosts. */ +void +addressmap_clear_excluded_trackexithosts(const or_options_t *options) +{ + const routerset_t *allow_nodes = options->ExitNodes; + const routerset_t *exclude_nodes = options->_ExcludeExitNodesUnion; + + if (!addressmap) + return; + if (routerset_is_empty(allow_nodes)) + allow_nodes = NULL; + if (allow_nodes == NULL && routerset_is_empty(exclude_nodes)) + return; + + STRMAP_FOREACH_MODIFY(addressmap, address, addressmap_entry_t *, ent) { + size_t len; + const char *target = ent->new_address, *dot; + char *nodename; + const node_t *node; + + if (strcmpend(target, ".exit")) { + /* Not a .exit mapping */ + continue; + } else if (ent->source != ADDRMAPSRC_TRACKEXIT) { + /* Not a trackexit mapping. */ + continue; + } + len = strlen(target); + if (len < 6) + continue; /* malformed. */ + dot = target + len - 6; /* dot now points to just before .exit */ + dot = strrchr(dot, '.'); /* dot now points to the . before .exit or NULL */ + if (!dot) { + nodename = tor_strndup(target, len-5); + } else { + nodename = tor_strndup(dot+1, strlen(dot+1)-5); + } + node = node_get_by_nickname(nodename, 0); + tor_free(nodename); + if (!node || + (allow_nodes && !routerset_contains_node(allow_nodes, node)) || + routerset_contains_node(exclude_nodes, node) || + !hostname_in_track_host_exits(options, address)) { + /* We don't know this one, or we want to be rid of it. */ + addressmap_ent_remove(address, ent); + MAP_DEL_CURRENT(address); + } + } STRMAP_FOREACH_END; +} + +/** Remove all AUTOMAP mappings from the addressmap for which the + * source address no longer matches AutomapHostsSuffixes, which is + * no longer allowed by AutomapHostsOnResolve, or for which the + * target address is no longer in the virtual network. */ +void +addressmap_clear_invalid_automaps(const or_options_t *options) +{ + int clear_all = !options->AutomapHostsOnResolve; + const smartlist_t *suffixes = options->AutomapHostsSuffixes; + + if (!addressmap) + return; + + if (!suffixes) + clear_all = 1; /* This should be impossible, but let's be sure. */ + + STRMAP_FOREACH_MODIFY(addressmap, src_address, addressmap_entry_t *, ent) { + int remove = clear_all; + if (ent->source != ADDRMAPSRC_AUTOMAP) + continue; /* not an automap mapping. */ + + if (!remove) { + int suffix_found = 0; + SMARTLIST_FOREACH(suffixes, const char *, suffix, { + if (!strcasecmpend(src_address, suffix)) { + suffix_found = 1; + break; + } + }); + if (!suffix_found) + remove = 1; + } + + if (!remove && ! address_is_in_virtual_range(ent->new_address)) + remove = 1; + + if (remove) { + addressmap_ent_remove(src_address, ent); + MAP_DEL_CURRENT(src_address); + } + } STRMAP_FOREACH_END; +} + /** Remove all entries from the addressmap that were set via the * configuration file or the command line. */ void @@ -1177,9 +1356,23 @@ address_is_in_virtual_range(const char *address) return 0; } +/** Increment the value of next_virtual_addr; reset it to the start of the + * virtual address range if it wraps around. + */ +static INLINE void +increment_virtual_addr(void) +{ + ++next_virtual_addr; + if (addr_mask_cmp_bits(next_virtual_addr, virtual_addr_network, + virtual_addr_netmask_bits)) + next_virtual_addr = virtual_addr_network; +} + /** Return a newly allocated string holding an address of <b>type</b> * (one of RESOLVED_TYPE_{IPV4|HOSTNAME}) that has not yet been mapped, * and that is very unlikely to be the address of any real host. + * + * May return NULL if we have run out of virtual addresses. */ static char * addressmap_get_virtual_address(int type) @@ -1198,28 +1391,32 @@ addressmap_get_virtual_address(int type) } else if (type == RESOLVED_TYPE_IPV4) { // This is an imperfect estimate of how many addresses are available, but // that's ok. + struct in_addr in; uint32_t available = 1u << (32-virtual_addr_netmask_bits); while (available) { /* Don't hand out any .0 or .255 address. */ while ((next_virtual_addr & 0xff) == 0 || (next_virtual_addr & 0xff) == 0xff) { - ++next_virtual_addr; + increment_virtual_addr(); + if (! --available) { + log_warn(LD_CONFIG, "Ran out of virtual addresses!"); + return NULL; + } } - if (!strmap_get(addressmap, fmt_addr32(next_virtual_addr))) { - ++next_virtual_addr; + in.s_addr = htonl(next_virtual_addr); + tor_inet_ntoa(&in, buf, sizeof(buf)); + if (!strmap_get(addressmap, buf)) { + increment_virtual_addr(); break; } - ++next_virtual_addr; + increment_virtual_addr(); --available; - log_info(LD_CONFIG, "%d addrs available", (int)available); - if (! --available) { + // log_info(LD_CONFIG, "%d addrs available", (int)available); + if (! available) { log_warn(LD_CONFIG, "Ran out of virtual addresses!"); return NULL; } - if (addr_mask_cmp_bits(next_virtual_addr, virtual_addr_network, - virtual_addr_netmask_bits)) - next_virtual_addr = virtual_addr_network; } return tor_strdup(buf); } else { @@ -1234,14 +1431,15 @@ addressmap_get_virtual_address(int type) * allocated string. If another address of the same type is already * mapped to <b>new_address</b>, try to return a copy of that address. * - * The string in <b>new_address</b> may be freed, or inserted into a map - * as appropriate. + * The string in <b>new_address</b> may be freed or inserted into a map + * as appropriate. May return NULL if are out of virtual addresses. **/ const char * addressmap_register_virtual_address(int type, char *new_address) { char **addrp; virtaddress_entry_t *vent; + int vent_needs_to_be_added = 0; tor_assert(new_address); tor_assert(addressmap); @@ -1250,7 +1448,7 @@ addressmap_register_virtual_address(int type, char *new_address) vent = strmap_get(virtaddress_reversemap, new_address); if (!vent) { vent = tor_malloc_zero(sizeof(virtaddress_entry_t)); - strmap_set(virtaddress_reversemap, new_address, vent); + vent_needs_to_be_added = 1; } addrp = (type == RESOLVED_TYPE_IPV4) ? @@ -1260,6 +1458,7 @@ addressmap_register_virtual_address(int type, char *new_address) if (ent && ent->new_address && !strcasecmp(new_address, ent->new_address)) { tor_free(new_address); + tor_assert(!vent_needs_to_be_added); return tor_strdup(*addrp); } else log_warn(LD_BUG, @@ -1273,8 +1472,15 @@ addressmap_register_virtual_address(int type, char *new_address) tor_free(*addrp); *addrp = addressmap_get_virtual_address(type); + if (!*addrp) { + tor_free(vent); + tor_free(new_address); + return NULL; + } log_info(LD_APP, "Registering map from %s to %s", *addrp, new_address); - addressmap_register(*addrp, new_address, 2, ADDRMAPSRC_CONTROLLER); + if (vent_needs_to_be_added) + strmap_set(virtaddress_reversemap, new_address, vent); + addressmap_register(*addrp, new_address, 2, ADDRMAPSRC_AUTOMAP); #if 0 { @@ -1379,7 +1585,7 @@ addressmap_get_mappings(smartlist_t *sl, time_t min_expires, static int consider_plaintext_ports(edge_connection_t *conn, uint16_t port) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int reject = smartlist_string_num_isin(options->RejectPlaintextPorts, port); if (smartlist_string_num_isin(options->WarnPlaintextPorts, port)) { @@ -1416,7 +1622,7 @@ connection_ap_rewrite_and_attach_if_allowed(edge_connection_t *conn, origin_circuit_t *circ, crypt_path_t *cpath) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (options->LeaveStreamsUnattached) { conn->_base.state = AP_CONN_STATE_CONTROLLER_WAIT; @@ -1447,11 +1653,15 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, { socks_request_t *socks = conn->socks_request; hostname_type_t addresstype; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); struct in_addr addr_tmp; + /* We set this to true if this is an address we should automatically + * remap to a local address in VirtualAddrNetwork */ int automap = 0; char orig_address[MAX_SOCKS_ADDR_LEN]; time_t map_expires = TIME_MAX; + /* This will be set to true iff the address starts out as a non-.exit + address, and we remap it to one because of an entry in the addressmap. */ int remapped_to_exit = 0; time_t now = time(NULL); @@ -1473,7 +1683,12 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, const char *new_addr; new_addr = addressmap_register_virtual_address( RESOLVED_TYPE_IPV4, tor_strdup(socks->address)); - tor_assert(new_addr); + if (! new_addr) { + log_warn(LD_APP, "Unable to automap address %s", + escaped_safe_str(socks->address)); + connection_mark_unattached_ap(conn, END_STREAM_REASON_INTERNAL); + return -1; + } log_info(LD_APP, "Automapping %s to %s", escaped_safe_str_client(socks->address), safe_str_client(new_addr)); @@ -1489,7 +1704,8 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, tor_snprintf(socks->address, sizeof(socks->address), "REVERSE[%s]", orig_address); connection_ap_handshake_socks_resolved(conn, RESOLVED_TYPE_HOSTNAME, - strlen(result), result, -1, + strlen(result), (uint8_t*)result, + -1, map_expires); connection_mark_unattached_ap(conn, END_STREAM_REASON_DONE | @@ -1556,14 +1772,23 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, /* foo.exit -- modify conn->chosen_exit_node to specify the exit * node, and conn->address to hold only the address portion. */ char *s = strrchr(socks->address,'.'); + + /* If StrictNodes is not set, then .exit overrides ExcludeNodes. */ + routerset_t *excludeset = options->StrictNodes ? + options->_ExcludeExitNodesUnion : options->ExcludeExitNodes; + const node_t *node; + tor_assert(!automap); if (s) { + /* The address was of the form "(stuff).(name).exit */ if (s[1] != '\0') { conn->chosen_exit_name = tor_strdup(s+1); + node = node_get_by_nickname(conn->chosen_exit_name, 1); if (remapped_to_exit) /* 5 tries before it expires the addressmap */ conn->chosen_exit_retries = TRACKHOSTEXITS_RETRIES; *s = 0; } else { + /* Oops, the address was (stuff)..exit. That's not okay. */ log_warn(LD_APP,"Malformed exit address '%s.exit'. Refusing.", safe_str_client(socks->address)); control_event_client_status(LOG_WARN, "SOCKS_BAD_HOSTNAME HOSTNAME=%s", @@ -1572,20 +1797,34 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, return -1; } } else { - const node_t *r; + /* It looks like they just asked for "foo.exit". */ + conn->chosen_exit_name = tor_strdup(socks->address); - r = node_get_by_nickname(conn->chosen_exit_name, 1); - *socks->address = 0; - if (r) { - node_get_address_string(r, socks->address, sizeof(socks->address)); - } else { - log_warn(LD_APP, - "Unrecognized server in exit address '%s.exit'. Refusing.", - safe_str_client(socks->address)); - connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL); - return -1; + node = node_get_by_nickname(conn->chosen_exit_name, 1); + if (node) { + *socks->address = 0; + node_get_address_string(node, socks->address, sizeof(socks->address)); } } + /* Now make sure that the chosen exit exists... */ + if (!node) { + log_warn(LD_APP, + "Unrecognized relay in exit address '%s.exit'. Refusing.", + safe_str_client(socks->address)); + connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL); + return -1; + } + /* ...and make sure that it isn't excluded. */ + if (routerset_contains_node(excludeset, node)) { + log_warn(LD_APP, + "Excluded relay in exit address '%s.exit'. Refusing.", + safe_str_client(socks->address)); + connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL); + return -1; + } + /* XXXX022-1090 Should we also allow foo.bar.exit if ExitNodes is set and + Bar is not listed in it? I say yes, but our revised manpage branch + implies no. */ } if (addresstype != ONION_HOSTNAME) { @@ -1610,7 +1849,8 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, /* remember _what_ is supposed to have been resolved. */ strlcpy(socks->address, orig_address, sizeof(socks->address)); connection_ap_handshake_socks_resolved(conn,RESOLVED_TYPE_IPV4,4, - (char*)&answer,-1,map_expires); + (uint8_t*)&answer, + -1,map_expires); connection_mark_unattached_ap(conn, END_STREAM_REASON_DONE | END_STREAM_REASON_FLAG_ALREADY_SOCKS_REPLIED); @@ -1625,6 +1865,28 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL); return -1; } + if (options->ClientRejectInternalAddresses && + !conn->use_begindir && !conn->chosen_exit_name && !circ) { + tor_addr_t addr; + if (tor_addr_from_str(&addr, socks->address) >= 0 && + tor_addr_is_internal(&addr, 0)) { + /* If this is an explicit private address with no chosen exit node, + * then we really don't want to try to connect to it. That's + * probably an error. */ + if (conn->is_transparent_ap) { + log_warn(LD_NET, + "Rejecting request for anonymous connection to private " + "address %s on a TransPort or NATDPort. Possible loop " + "in your NAT rules?", safe_str_client(socks->address)); + } else { + log_warn(LD_NET, + "Rejecting SOCKS request for anonymous connection to " + "private address %s", safe_str_client(socks->address)); + } + connection_mark_unattached_ap(conn, END_STREAM_REASON_PRIVATE_ADDR); + return -1; + } + } if (!conn->use_begindir && !conn->chosen_exit_name && !circ) { /* see if we can find a suitable enclave exit */ @@ -1633,7 +1895,7 @@ connection_ap_handshake_rewrite_and_attach(edge_connection_t *conn, if (r) { log_info(LD_APP, "Redirecting address %s to exit at enclave router %s", - safe_str_client(socks->address), node_get_nickname(r)); + safe_str_client(socks->address), node_describe(r)); /* use the hex digest, not nickname, in case there are two routers with this nickname */ conn->chosen_exit_name = @@ -1882,7 +2144,7 @@ connection_ap_handshake_process_socks(edge_connection_t *conn) { socks_request_t *socks; int sockshere; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int had_reply = 0; tor_assert(conn); @@ -2093,8 +2355,14 @@ connection_ap_handshake_send_begin(edge_connection_t *ap_conn) ap_conn->stream_id = get_unique_stream_id_by_circ(circ); if (ap_conn->stream_id==0) { + /* XXXX023 Instead of closing this stream, we should make it get + * retried on another circuit. */ connection_mark_unattached_ap(ap_conn, END_STREAM_REASON_INTERNAL); - circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT); + + /* Mark this circuit "unusable for new streams". */ + /* XXXX023 this is a kludgy way to do this. */ + tor_assert(circ->_base.timestamp_dirty); + circ->_base.timestamp_dirty -= get_options()->MaxCircuitDirtiness; return -1; } @@ -2154,9 +2422,14 @@ connection_ap_handshake_send_resolve(edge_connection_t *ap_conn) ap_conn->stream_id = get_unique_stream_id_by_circ(circ); if (ap_conn->stream_id==0) { + /* XXXX023 Instead of closing this stream, we should make it get + * retried on another circuit. */ connection_mark_unattached_ap(ap_conn, END_STREAM_REASON_INTERNAL); - /*XXXX022 _close_ the circuit because it's full? That sounds dumb. */ - circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT); + + /* Mark this circuit "unusable for new streams". */ + /* XXXX023 this is a kludgy way to do this. */ + tor_assert(circ->_base.timestamp_dirty); + circ->_base.timestamp_dirty -= get_options()->MaxCircuitDirtiness; return -1; } @@ -2316,13 +2589,13 @@ tell_controller_about_resolved_result(edge_connection_t *conn, * certain errors or for values that didn't come via DNS. <b>expires</b> is * a time when the answer expires, or -1 or TIME_MAX if there's a good TTL. **/ -/* XXXX022 the use of the ttl and expires fields is nutty. Let's make this +/* XXXX023 the use of the ttl and expires fields is nutty. Let's make this * interface and those that use it less ugly. */ void connection_ap_handshake_socks_resolved(edge_connection_t *conn, int answer_type, size_t answer_len, - const char *answer, + const uint8_t *answer, int ttl, time_t expires) { @@ -2336,7 +2609,7 @@ connection_ap_handshake_socks_resolved(edge_connection_t *conn, client_dns_set_addressmap(conn->socks_request->address, a, conn->chosen_exit_name, ttl); } else if (answer_type == RESOLVED_TYPE_HOSTNAME && answer_len < 256) { - char *cp = tor_strndup(answer, answer_len); + char *cp = tor_strndup((char*)answer, answer_len); client_dns_set_reverse_addressmap(conn->socks_request->address, cp, conn->chosen_exit_name, ttl); @@ -2347,14 +2620,14 @@ connection_ap_handshake_socks_resolved(edge_connection_t *conn, if (conn->is_dns_request) { if (conn->dns_server_request) { /* We had a request on our DNS port: answer it. */ - dnsserv_resolved(conn, answer_type, answer_len, answer, ttl); + dnsserv_resolved(conn, answer_type, answer_len, (char*)answer, ttl); conn->socks_request->has_finished = 1; return; } else { /* This must be a request from the controller. We already sent * a mapaddress if there's a ttl. */ tell_controller_about_resolved_result(conn, answer_type, answer_len, - answer, ttl, expires); + (char*)answer, ttl, expires); conn->socks_request->has_finished = 1; return; } @@ -2409,7 +2682,8 @@ connection_ap_handshake_socks_resolved(edge_connection_t *conn, } connection_ap_handshake_socks_reply(conn, buf, replylen, (answer_type == RESOLVED_TYPE_IPV4 || - answer_type == RESOLVED_TYPE_IPV6) ? + answer_type == RESOLVED_TYPE_IPV6 || + answer_type == RESOLVED_TYPE_HOSTNAME) ? 0 : END_STREAM_REASON_RESOLVEFAILED); } @@ -2492,13 +2766,15 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ) char *address=NULL; uint16_t port; or_circuit_t *or_circ = NULL; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); assert_circuit_ok(circ); if (!CIRCUIT_IS_ORIGIN(circ)) or_circ = TO_OR_CIRCUIT(circ); relay_header_unpack(&rh, cell->payload); + if (rh.length > RELAY_PAYLOAD_SIZE) + return -1; /* Note: we have to use relay_send_command_from_edge here, not * connection_edge_end or connection_edge_send_command, since those require @@ -2522,7 +2798,8 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ) END_STREAM_REASON_TORPROTOCOL, NULL); return 0; } - if (parse_addr_port(LOG_PROTOCOL_WARN, cell->payload+RELAY_HEADER_SIZE, + if (parse_addr_port(LOG_PROTOCOL_WARN, + (char*)(cell->payload+RELAY_HEADER_SIZE), &address,NULL,&port)<0) { log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Unable to parse addr:port in relay begin cell. Closing."); @@ -2687,6 +2964,8 @@ connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ) assert_circuit_ok(TO_CIRCUIT(circ)); relay_header_unpack(&rh, cell->payload); + if (rh.length > RELAY_PAYLOAD_SIZE) + return -1; /* This 'dummy_conn' only exists to remember the stream ID * associated with the resolve request; and to make the @@ -2697,8 +2976,9 @@ connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ) */ dummy_conn = edge_connection_new(CONN_TYPE_EXIT, AF_INET); dummy_conn->stream_id = rh.stream_id; - dummy_conn->_base.address = tor_strndup(cell->payload+RELAY_HEADER_SIZE, - rh.length); + dummy_conn->_base.address = tor_strndup( + (char*)cell->payload+RELAY_HEADER_SIZE, + rh.length); dummy_conn->_base.port = 0; dummy_conn->_base.state = EXIT_CONN_STATE_RESOLVEFAILED; dummy_conn->_base.purpose = EXIT_PURPOSE_RESOLVE; @@ -2751,13 +3031,13 @@ connection_exit_connect(edge_connection_t *edge_conn) log_debug(LD_EXIT,"about to try connecting"); switch (connection_connect(conn, conn->address, addr, port, &socket_error)) { - case -1: - /* XXX021 use socket_error below rather than trying to piece things - * together from the current errno, which may have been clobbered. */ - connection_edge_end_errno(edge_conn); + case -1: { + int reason = errno_to_stream_end_reason(socket_error); + connection_edge_end(edge_conn, reason); circuit_detach_stream(circuit_get_by_edge_conn(edge_conn), edge_conn); connection_free(conn); return; + } case 0: conn->state = EXIT_CONN_STATE_CONNECTING; @@ -2883,15 +3163,11 @@ connection_edge_is_rendezvous_stream(edge_connection_t *conn) * to exit from it, or 0 if it probably will not allow it. * (We might be uncertain if conn's destination address has not yet been * resolved.) - * - * If <b>excluded_means_no</b> is 1 and Exclude*Nodes is set and excludes - * this relay, return 0. */ int -connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit, - int excluded_means_no) +connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); tor_assert(conn); tor_assert(conn->_base.type == CONN_TYPE_AP); @@ -2904,7 +3180,7 @@ connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit, if (conn->chosen_exit_name) { const node_t *chosen_exit = node_get_by_nickname(conn->chosen_exit_name, 1); - if (!chosen_exit || memcmp(chosen_exit->identity, + if (!chosen_exit || tor_memneq(chosen_exit->identity, exit->identity, DIGEST_LEN)) { /* doesn't match */ // log_debug(LD_APP,"Requested node '%s', considering node '%s'. No.", @@ -2932,18 +3208,8 @@ connection_ap_can_use_exit(edge_connection_t *conn, const node_t *exit, if (!conn->chosen_exit_name && node_exit_policy_rejects_all(exit)) return 0; } - if (options->_ExcludeExitNodesUnion && - (options->StrictNodes || excluded_means_no) && - routerset_contains_node(options->_ExcludeExitNodesUnion, exit)) { - /* If we are trying to avoid this node as exit, and we have StrictNodes - * set, then this is not a suitable exit. Refuse it. - * - * If we don't have StrictNodes set, then this function gets called in - * two contexts. First, we've got a circuit open and we want to know - * whether we can use it. In that case, we somehow built this circuit - * despite having the last hop in ExcludeExitNodes, so we should be - * willing to use it. Second, we are evaluating whether this is an - * acceptable exit for a new circuit. In that case, skip it. */ + if (routerset_contains_node(options->_ExcludeExitNodesUnion, exit)) { + /* Not a suitable exit. Refuse it. */ return 0; } diff --git a/src/or/connection_edge.h b/src/or/connection_edge.h index f54d7a44ec..1cb1281dbd 100644 --- a/src/or/connection_edge.h +++ b/src/or/connection_edge.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -23,9 +23,13 @@ int connection_edge_process_inbuf(edge_connection_t *conn, int connection_edge_destroy(circid_t circ_id, edge_connection_t *conn); int connection_edge_end(edge_connection_t *conn, uint8_t reason); int connection_edge_end_errno(edge_connection_t *conn); +int connection_edge_flushed_some(edge_connection_t *conn); int connection_edge_finished_flushing(edge_connection_t *conn); int connection_edge_finished_connecting(edge_connection_t *conn); +void connection_ap_about_to_close(edge_connection_t *edge_conn); +void connection_exit_about_to_close(edge_connection_t *edge_conn); + int connection_ap_handshake_send_begin(edge_connection_t *ap_conn); int connection_ap_handshake_send_resolve(edge_connection_t *ap_conn); @@ -39,7 +43,7 @@ void connection_ap_handshake_socks_reply(edge_connection_t *conn, char *reply, void connection_ap_handshake_socks_resolved(edge_connection_t *conn, int answer_type, size_t answer_len, - const char *answer, + const uint8_t *answer, int ttl, time_t expires); @@ -48,8 +52,7 @@ int connection_exit_begin_resolve(cell_t *cell, or_circuit_t *circ); void connection_exit_connect(edge_connection_t *conn); int connection_edge_is_rendezvous_stream(edge_connection_t *conn); int connection_ap_can_use_exit(edge_connection_t *conn, - const node_t *exit, - int excluded_means_no); + const node_t *exit); void connection_ap_expire_beginning(void); void connection_ap_attach_pending(void); void connection_ap_fail_onehop(const char *failed_digest, @@ -63,6 +66,8 @@ int connection_ap_process_transparent(edge_connection_t *conn); int address_is_invalid_destination(const char *address, int client); void addressmap_init(void); +void addressmap_clear_excluded_trackexithosts(const or_options_t *options); +void addressmap_clear_invalid_automaps(const or_options_t *options); void addressmap_clean(time_t now); void addressmap_clear_configured(void); void addressmap_clear_transient(void); diff --git a/src/or/connection_or.c b/src/or/connection_or.c index a79c1e5079..2871f1f36a 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -13,6 +13,7 @@ #include "or.h" #include "buffers.h" #include "circuitbuild.h" +#include "circuitlist.h" #include "command.h" #include "config.h" #include "connection.h" @@ -124,7 +125,7 @@ connection_or_set_identity_digest(or_connection_t *conn, const char *digest) if (!orconn_identity_map) orconn_identity_map = digestmap_new(); - if (!memcmp(conn->identity_digest, digest, DIGEST_LEN)) + if (tor_memeq(conn->identity_digest, digest, DIGEST_LEN)) return; /* If the identity was set previously, remove the old mapping. */ @@ -143,12 +144,147 @@ connection_or_set_identity_digest(or_connection_t *conn, const char *digest) #if 1 /* Testing code to check for bugs in representation. */ for (; tmp; tmp = tmp->next_with_same_id) { - tor_assert(!memcmp(tmp->identity_digest, digest, DIGEST_LEN)); + tor_assert(tor_memeq(tmp->identity_digest, digest, DIGEST_LEN)); tor_assert(tmp != conn); } #endif } +/**************************************************************/ + +/** Map from a string describing what a non-open OR connection was doing when + * failed, to an intptr_t describing the count of connections that failed that + * way. Note that the count is stored _as_ the pointer. + */ +static strmap_t *broken_connection_counts; + +/** If true, do not record information in <b>broken_connection_counts</b>. */ +static int disable_broken_connection_counts = 0; + +/** Record that an OR connection failed in <b>state</b>. */ +static void +note_broken_connection(const char *state) +{ + void *ptr; + intptr_t val; + if (disable_broken_connection_counts) + return; + + if (!broken_connection_counts) + broken_connection_counts = strmap_new(); + + ptr = strmap_get(broken_connection_counts, state); + val = (intptr_t)ptr; + val++; + ptr = (void*)val; + strmap_set(broken_connection_counts, state, ptr); +} + +/** Forget all recorded states for failed connections. If + * <b>stop_recording</b> is true, don't record any more. */ +void +clear_broken_connection_map(int stop_recording) +{ + if (broken_connection_counts) + strmap_free(broken_connection_counts, NULL); + broken_connection_counts = NULL; + if (stop_recording) + disable_broken_connection_counts = 1; +} + +/** Write a detailed description the state of <b>orconn</b> into the + * <b>buflen</b>-byte buffer at <b>buf</b>. This description includes not + * only the OR-conn level state but also the TLS state. It's useful for + * diagnosing broken handshakes. */ +static void +connection_or_get_state_description(or_connection_t *orconn, + char *buf, size_t buflen) +{ + connection_t *conn = TO_CONN(orconn); + const char *conn_state; + char tls_state[256]; + + tor_assert(conn->type == CONN_TYPE_OR); + + conn_state = conn_state_to_string(conn->type, conn->state); + tor_tls_get_state_description(orconn->tls, tls_state, sizeof(tls_state)); + + tor_snprintf(buf, buflen, "%s with SSL state %s", conn_state, tls_state); +} + +/** Record the current state of <b>orconn</b> as the state of a broken + * connection. */ +static void +connection_or_note_state_when_broken(or_connection_t *orconn) +{ + char buf[256]; + if (disable_broken_connection_counts) + return; + connection_or_get_state_description(orconn, buf, sizeof(buf)); + log_info(LD_HANDSHAKE,"Connection died in state '%s'", buf); + note_broken_connection(buf); +} + +/** Helper type used to sort connection states and find the most frequent. */ +typedef struct broken_state_count_t { + intptr_t count; + const char *state; +} broken_state_count_t; + +/** Helper function used to sort broken_state_count_t by frequency. */ +static int +broken_state_count_compare(const void **a_ptr, const void **b_ptr) +{ + const broken_state_count_t *a = *a_ptr, *b = *b_ptr; + if (b->count < a->count) + return -1; + else if (b->count == a->count) + return 0; + else + return 1; +} + +/** Upper limit on the number of different states to report for connection + * failure. */ +#define MAX_REASONS_TO_REPORT 10 + +/** Report a list of the top states for failed OR connections at log level + * <b>severity</b>, in log domain <b>domain</b>. */ +void +connection_or_report_broken_states(int severity, int domain) +{ + int total = 0; + smartlist_t *items; + + if (!broken_connection_counts || disable_broken_connection_counts) + return; + + items = smartlist_create(); + STRMAP_FOREACH(broken_connection_counts, state, void *, countptr) { + broken_state_count_t *c = tor_malloc(sizeof(broken_state_count_t)); + total += c->count = (intptr_t)countptr; + c->state = state; + smartlist_add(items, c); + } STRMAP_FOREACH_END; + + smartlist_sort(items, broken_state_count_compare); + + log(severity, domain, "%d connections have failed%s", total, + smartlist_len(items) > MAX_REASONS_TO_REPORT ? ". Top reasons:" : ":"); + + SMARTLIST_FOREACH_BEGIN(items, const broken_state_count_t *, c) { + if (c_sl_idx > MAX_REASONS_TO_REPORT) + break; + log(severity, domain, + " %d connections died in state %s", (int)c->count, c->state); + } SMARTLIST_FOREACH_END(c); + + SMARTLIST_FOREACH(items, broken_state_count_t *, c, tor_free(c)); + smartlist_free(items); +} + +/**************************************************************/ + /** Pack the cell_t host-order structure <b>src</b> into network-order * in the buffer <b>dest</b>. See tor-spec.txt for details about the * wire format. @@ -191,7 +327,8 @@ var_cell_pack_header(const var_cell_t *cell, char *hdr_out) var_cell_t * var_cell_new(uint16_t payload_len) { - var_cell_t *cell = tor_malloc(sizeof(var_cell_t)+payload_len-1); + size_t size = STRUCT_OFFSET(var_cell_t, payload) + payload_len; + var_cell_t *cell = tor_malloc(size); cell->payload_len = payload_len; cell->command = 0; cell->circ_id = 0; @@ -316,7 +453,7 @@ connection_or_finished_flushing(or_connection_t *conn) int connection_or_finished_connecting(or_connection_t *or_conn) { - int proxy_type; + const int proxy_type = or_conn->proxy_type; connection_t *conn; tor_assert(or_conn); conn = TO_CONN(or_conn); @@ -326,15 +463,6 @@ connection_or_finished_connecting(or_connection_t *or_conn) conn->address,conn->port); control_event_bootstrap(BOOTSTRAP_STATUS_HANDSHAKE, 0); - proxy_type = PROXY_NONE; - - if (get_options()->HTTPSProxy) - proxy_type = PROXY_CONNECT; - else if (get_options()->Socks4Proxy) - proxy_type = PROXY_SOCKS4; - else if (get_options()->Socks5Proxy) - proxy_type = PROXY_SOCKS5; - if (proxy_type != PROXY_NONE) { /* start proxy handshake */ if (connection_proxy_connect(conn, proxy_type) < 0) { @@ -355,6 +483,51 @@ connection_or_finished_connecting(or_connection_t *or_conn) return 0; } +/* Called when we're about to finally unlink and free an OR connection: + * perform necessary accounting and cleanup */ +void +connection_or_about_to_close(or_connection_t *or_conn) +{ + time_t now = time(NULL); + connection_t *conn = TO_CONN(or_conn); + + /* Remember why we're closing this connection. */ + if (conn->state != OR_CONN_STATE_OPEN) { + /* Inform any pending (not attached) circs that they should + * give up. */ + circuit_n_conn_done(TO_OR_CONN(conn), 0); + /* now mark things down as needed */ + if (connection_or_nonopen_was_started_here(or_conn)) { + const or_options_t *options = get_options(); + connection_or_note_state_when_broken(or_conn); + rep_hist_note_connect_failed(or_conn->identity_digest, now); + entry_guard_register_connect_status(or_conn->identity_digest,0, + !options->HTTPSProxy, now); + if (conn->state >= OR_CONN_STATE_TLS_HANDSHAKING) { + int reason = tls_error_to_orconn_end_reason(or_conn->tls_error); + control_event_or_conn_status(or_conn, OR_CONN_EVENT_FAILED, + reason); + if (!authdir_mode_tests_reachability(options)) + control_event_bootstrap_problem( + orconn_end_reason_to_control_string(reason), reason); + } + } + } else if (conn->hold_open_until_flushed) { + /* We only set hold_open_until_flushed when we're intentionally + * closing a connection. */ + rep_hist_note_disconnect(or_conn->identity_digest, now); + control_event_or_conn_status(or_conn, OR_CONN_EVENT_CLOSED, + tls_error_to_orconn_end_reason(or_conn->tls_error)); + } else if (!tor_digest_is_zero(or_conn->identity_digest)) { + rep_hist_note_connection_died(or_conn->identity_digest, now); + control_event_or_conn_status(or_conn, OR_CONN_EVENT_CLOSED, + tls_error_to_orconn_end_reason(or_conn->tls_error)); + } + /* Now close all the attached circuits on it. */ + circuit_unlink_all_from_or_conn(TO_OR_CONN(conn), + END_CIRC_REASON_OR_CONN_CLOSED); +} + /** Return 1 if identity digest <b>id_digest</b> is known to be a * currently or recently running relay. Otherwise return 0. */ int @@ -373,10 +546,13 @@ connection_or_digest_is_known_relay(const char *id_digest) * per-conn limits that are big enough they'll never matter. But if it's * not a known relay, first check if we set PerConnBwRate/Burst, then * check if the consensus sets them, else default to 'big enough'. + * + * If <b>reset</b> is true, set the bucket to be full. Otherwise, just + * clip the bucket if it happens to be <em>too</em> full. */ static void connection_or_update_token_buckets_helper(or_connection_t *conn, int reset, - or_options_t *options) + const or_options_t *options) { int rate, burst; /* per-connection rate limiting params */ if (connection_or_digest_is_known_relay(conn->identity_digest)) { @@ -390,11 +566,11 @@ connection_or_update_token_buckets_helper(or_connection_t *conn, int reset, * bandwidth parameters in the consensus, but allow local config * options to override. */ rate = options->PerConnBWRate ? (int)options->PerConnBWRate : - (int)networkstatus_get_param(NULL, "perconnbwrate", - (int)options->BandwidthRate); + networkstatus_get_param(NULL, "perconnbwrate", + (int)options->BandwidthRate, 1, INT32_MAX); burst = options->PerConnBWBurst ? (int)options->PerConnBWBurst : - (int)networkstatus_get_param(NULL, "perconnbwburst", - (int)options->BandwidthBurst); + networkstatus_get_param(NULL, "perconnbwburst", + (int)options->BandwidthBurst, 1, INT32_MAX); } conn->bandwidthrate = rate; @@ -429,9 +605,11 @@ connection_or_update_token_buckets_helper(or_connection_t *conn, int reset, } /** Either our set of relays or our per-conn rate limits have changed. - * Go through all the OR connections and update their token buckets. */ + * Go through all the OR connections and update their token buckets to make + * sure they don't exceed their maximum values. */ void -connection_or_update_token_buckets(smartlist_t *conns, or_options_t *options) +connection_or_update_token_buckets(smartlist_t *conns, + const or_options_t *options) { SMARTLIST_FOREACH(conns, connection_t *, conn, { @@ -506,7 +684,7 @@ connection_or_init_conn_from_address(or_connection_t *conn, * Requires that both input connections are open; not is_bad_for_new_circs, * and not impossibly non-canonical. * - * If </b>forgive_new_connections</b> is true, then we do not call + * If <b>forgive_new_connections</b> is true, then we do not call * <b>a</b>better than <b>b</b> simply because b has no circuits, * unless b is also relatively old. */ @@ -580,7 +758,7 @@ connection_or_get_for_extend(const char *digest, for (; conn; conn = conn->next_with_same_id) { tor_assert(conn->_base.magic == OR_CONNECTION_MAGIC); tor_assert(conn->_base.type == CONN_TYPE_OR); - tor_assert(!memcmp(conn->identity_digest, digest, DIGEST_LEN)); + tor_assert(tor_memeq(conn->identity_digest, digest, DIGEST_LEN)); if (conn->_base.marked_for_close) continue; /* Never return a non-open connection. */ @@ -783,7 +961,7 @@ connection_or_set_bad_connections(const char *digest, int force) return; DIGESTMAP_FOREACH(orconn_identity_map, identity, or_connection_t *, conn) { - if (!digest || !memcmp(digest, conn->identity_digest, DIGEST_LEN)) + if (!digest || tor_memeq(digest, conn->identity_digest, DIGEST_LEN)) connection_or_group_set_badness(conn, force); } DIGESTMAP_FOREACH_END; } @@ -822,11 +1000,15 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port, const char *id_digest) { or_connection_t *conn; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int socket_error = 0; - int using_proxy = 0; tor_addr_t addr; + int r; + tor_addr_t proxy_addr; + uint16_t proxy_port; + int proxy_type; + tor_assert(_addr); tor_assert(id_digest); tor_addr_copy(&addr, _addr); @@ -843,19 +1025,20 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port, conn->_base.state = OR_CONN_STATE_CONNECTING; control_event_or_conn_status(conn, OR_CONN_EVENT_LAUNCHED, 0); - /* use a proxy server if available */ - if (options->HTTPSProxy) { - using_proxy = 1; - tor_addr_copy(&addr, &options->HTTPSProxyAddr); - port = options->HTTPSProxyPort; - } else if (options->Socks4Proxy) { - using_proxy = 1; - tor_addr_copy(&addr, &options->Socks4ProxyAddr); - port = options->Socks4ProxyPort; - } else if (options->Socks5Proxy) { - using_proxy = 1; - tor_addr_copy(&addr, &options->Socks5ProxyAddr); - port = options->Socks5ProxyPort; + /* If we are using a proxy server, find it and use it. */ + r = get_proxy_addrport(&proxy_addr, &proxy_port, &proxy_type, TO_CONN(conn)); + if (r == 0) { + conn->proxy_type = proxy_type; + if (proxy_type != PROXY_NONE) { + tor_addr_copy(&addr, &proxy_addr); + port = proxy_port; + conn->_base.proxy_state = PROXY_INFANT; + } + } else { + log_warn(LD_GENERAL, "Tried to connect through proxy, but proxy address " + "could not be found."); + connection_free(TO_CONN(conn)); + return NULL; } switch (connection_connect(TO_CONN(conn), conn->_base.address, @@ -863,7 +1046,7 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port, case -1: /* If the connection failed immediately, and we're using * a proxy, our proxy is down. Don't blame the Tor server. */ - if (!using_proxy) + if (conn->_base.proxy_state == PROXY_INFANT) entry_guard_register_connect_status(conn->identity_digest, 0, 1, time(NULL)); connection_or_connect_failed(conn, @@ -991,13 +1174,16 @@ connection_tls_continue_handshake(or_connection_t *conn) if (! tor_tls_used_v1_handshake(conn->tls)) { if (!tor_tls_is_server(conn->tls)) { if (conn->_base.state == OR_CONN_STATE_TLS_HANDSHAKING) { - // log_notice(LD_OR,"Done. state was TLS_HANDSHAKING."); + log_debug(LD_OR, "Done with initial SSL handshake (client-side). " + "Requesting renegotiation."); conn->_base.state = OR_CONN_STATE_TLS_CLIENT_RENEGOTIATING; goto again; } // log_notice(LD_OR,"Done. state was %d.", conn->_base.state); } else { /* improved handshake, but not a client. */ + log_debug(LD_OR, "Done with initial SSL handshake (server-side). " + "Expecting renegotiation."); tor_tls_set_renegotiate_callback(conn->tls, connection_or_tls_renegotiated_cb, conn); @@ -1139,7 +1325,7 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn, char *digest_rcvd_out) { crypto_pk_env_t *identity_rcvd=NULL; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int severity = server_mode(options) ? LOG_PROTOCOL_WARN : LOG_WARN; const char *safe_address = started_here ? conn->_base.address : @@ -1216,7 +1402,7 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn, int as_advertised = 1; tor_assert(has_cert); tor_assert(has_identity); - if (memcmp(digest_rcvd_out, conn->identity_digest, DIGEST_LEN)) { + if (tor_memneq(digest_rcvd_out, conn->identity_digest, DIGEST_LEN)) { /* I was aiming for a particular digest. I didn't get it! */ char seen[HEX_DIGEST_LEN+1]; char expected[HEX_DIGEST_LEN+1]; @@ -1236,9 +1422,6 @@ connection_or_check_valid_tls_handshake(or_connection_t *conn, as_advertised = 0; } if (authdir_mode_tests_reachability(options)) { - /* We initiated this connection to address:port. Drop all routers - * with the same address:port and a different key. - */ dirserv_orconn_tls_done(conn->_base.address, conn->_base.port, digest_rcvd_out, as_advertised); } @@ -1403,7 +1586,8 @@ connection_or_write_var_cell_to_buf(const var_cell_t *cell, tor_assert(conn); var_cell_pack_header(cell, hdr); connection_write_to_buf(hdr, sizeof(hdr), TO_CONN(conn)); - connection_write_to_buf(cell->payload, cell->payload_len, TO_CONN(conn)); + connection_write_to_buf((char*)cell->payload, + cell->payload_len, TO_CONN(conn)); if (cell->command != CELL_PADDING) conn->timestamp_last_added_nonpadding = approx_time(); } @@ -1538,7 +1722,7 @@ connection_or_send_netinfo(or_connection_t *conn) time_t now = time(NULL); const routerinfo_t *me; int len; - char *out; + uint8_t *out; memset(&cell, 0, sizeof(cell_t)); cell.command = CELL_NETINFO; @@ -1562,9 +1746,8 @@ connection_or_send_netinfo(or_connection_t *conn) len = append_address_to_payload(out, &my_addr); if (len < 0) return -1; - out += len; } else { - *out++ = 0; + *out = 0; } connection_or_write_cell_to_buf(&cell, conn); diff --git a/src/or/connection_or.h b/src/or/connection_or.h index 216a9bd648..072edbd8cf 100644 --- a/src/or/connection_or.h +++ b/src/or/connection_or.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -14,6 +14,7 @@ void connection_or_remove_from_identity_map(or_connection_t *conn); void connection_or_clear_identity_map(void); +void clear_broken_connection_map(int disable); or_connection_t *connection_or_get_for_extend(const char *digest, const tor_addr_t *target_addr, const char **msg_out, @@ -25,15 +26,18 @@ int connection_or_process_inbuf(or_connection_t *conn); int connection_or_flushed_some(or_connection_t *conn); int connection_or_finished_flushing(or_connection_t *conn); int connection_or_finished_connecting(or_connection_t *conn); +void connection_or_about_to_close(or_connection_t *conn); int connection_or_digest_is_known_relay(const char *id_digest); void connection_or_update_token_buckets(smartlist_t *conns, - or_options_t *options); + const or_options_t *options); void connection_or_connect_failed(or_connection_t *conn, int reason, const char *msg); or_connection_t *connection_or_connect(const tor_addr_t *addr, uint16_t port, const char *id_digest); +void connection_or_report_broken_states(int severity, int domain); + int connection_tls_start_handshake(or_connection_t *conn, int receiving); int connection_tls_continue_handshake(or_connection_t *conn); diff --git a/src/or/control.c b/src/or/control.c index 5e2bcc702f..fa0c6cf4e0 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -18,6 +18,7 @@ #include "config.h" #include "connection.h" #include "connection_edge.h" +#include "connection_or.h" #include "control.h" #include "directory.h" #include "dirserv.h" @@ -33,6 +34,13 @@ #include "routerlist.h" #include "routerparse.h" +#ifndef MS_WINDOWS +#include <pwd.h> +#include <sys/resource.h> +#endif + +#include "procmon.h" + /** Yield true iff <b>s</b> is the state of a control_connection_t that has * finished authentication and is accepting commands. */ #define STATE_IS_OPEN(s) ((s) == CONTROL_CONN_STATE_OPEN) @@ -98,7 +106,7 @@ static int disable_log_messages = 0; static int authentication_cookie_is_set = 0; /** If authentication_cookie_is_set, a secret cookie that we've stored to disk * and which we're using to authenticate controllers. (If the controller can - * read it off disk, it has permission to connect. */ + * read it off disk, it has permission to connect.) */ static char authentication_cookie[AUTHENTICATION_COOKIE_LEN]; /** A sufficiently large size to record the last bootstrap phase string. */ @@ -336,7 +344,7 @@ write_escaped_data(const char *data, size_t len, char **out) } *outp++ = *data++; } - if (outp < *out+2 || memcmp(outp-2, "\r\n", 2)) { + if (outp < *out+2 || fast_memcmp(outp-2, "\r\n", 2)) { *outp++ = '\r'; *outp++ = '\n'; } @@ -481,33 +489,73 @@ decode_escaped_string(const char *start, size_t in_len_max, } /** Acts like sprintf, but writes its formatted string to the end of - * <b>conn</b>-\>outbuf. The message may be truncated if it is too long, - * but it will always end with a CRLF sequence. - * - * Currently the length of the message is limited to 1024 (including the - * ending CR LF NUL ("\\r\\n\\0"). */ + * <b>conn</b>-\>outbuf. */ static void connection_printf_to_buf(control_connection_t *conn, const char *format, ...) { -#define CONNECTION_PRINTF_TO_BUF_BUFFERSIZE 1024 va_list ap; - char buf[CONNECTION_PRINTF_TO_BUF_BUFFERSIZE]; - int r; - size_t len; + char *buf = NULL; + int len; + va_start(ap,format); - r = tor_vsnprintf(buf, sizeof(buf), format, ap); + len = tor_vasprintf(&buf, format, ap); va_end(ap); - if (r<0) { + + if (len < 0) { log_warn(LD_BUG, "Unable to format string for controller."); return; } - len = strlen(buf); - if (memcmp("\r\n\0", buf+len-2, 3)) { - buf[CONNECTION_PRINTF_TO_BUF_BUFFERSIZE-1] = '\0'; - buf[CONNECTION_PRINTF_TO_BUF_BUFFERSIZE-2] = '\n'; - buf[CONNECTION_PRINTF_TO_BUF_BUFFERSIZE-3] = '\r'; + + connection_write_to_buf(buf, (size_t)len, TO_CONN(conn)); + + tor_free(buf); +} + +/** Write all of the open control ports to ControlPortWriteToFile */ +void +control_ports_write_to_file(void) +{ + smartlist_t *lines; + char *joined = NULL; + const or_options_t *options = get_options(); + + if (!options->ControlPortWriteToFile) + return; + + lines = smartlist_create(); + + SMARTLIST_FOREACH_BEGIN(get_connection_array(), const connection_t *, conn) { + char *port_str = NULL; + if (conn->type != CONN_TYPE_CONTROL_LISTENER || conn->marked_for_close) + continue; +#ifdef AF_UNIX + if (conn->socket_family == AF_UNIX) { + tor_asprintf(&port_str, "UNIX_PORT=%s\n", conn->address); + smartlist_add(lines, port_str); + continue; + } +#endif + tor_asprintf(&port_str, "PORT=%s:%d\n", conn->address, conn->port); + smartlist_add(lines, port_str); + } SMARTLIST_FOREACH_END(conn); + + joined = smartlist_join_strings(lines, "", 0, NULL); + + if (write_str_to_file(options->ControlPortWriteToFile, joined, 0) < 0) { + log_warn(LD_CONTROL, "Writing %s failed: %s", + options->ControlPortWriteToFile, strerror(errno)); + } +#ifndef MS_WINDOWS + if (options->ControlPortFileGroupReadable) { + if (chmod(options->ControlPortWriteToFile, 0640)) { + log_warn(LD_FS,"Unable to make %s group-readable.", + options->ControlPortWriteToFile); + } } - connection_write_to_buf(buf, len, TO_CONN(conn)); +#endif + tor_free(joined); + SMARTLIST_FOREACH(lines, char *, cp, tor_free(cp)); + smartlist_free(lines); } /** Send a "DONE" message down the control connection <b>conn</b>. */ @@ -553,52 +601,37 @@ send_control_event_string(uint16_t event, event_format_t which, else if (event == EVENT_STATUS_SERVER) is_err = !strcmpstart(msg, "STATUS_SERVER ERR "); if (is_err) - connection_handle_write(TO_CONN(control_conn), 1); + connection_flush(TO_CONN(control_conn)); } } } SMARTLIST_FOREACH_END(conn); } -/** Helper for send_control1_event and send_control1_event_extended: +/** Helper for send_control_event and control_event_status: * Send an event to all v1 controllers that are listening for code * <b>event</b>. The event's body is created by the printf-style format in - * <b>format</b>, and other arguments as provided. - * - * Currently the length of the message is limited to 1024 (including the - * ending \\r\\n\\0). */ + * <b>format</b>, and other arguments as provided. */ static void send_control_event_impl(uint16_t event, event_format_t which, const char *format, va_list ap) { - /* This is just a little longer than the longest allowed log message */ -#define SEND_CONTROL1_EVENT_BUFFERSIZE 10064 - int r; - char buf[SEND_CONTROL1_EVENT_BUFFERSIZE]; - size_t len; + char *buf = NULL; + int len; - r = tor_vsnprintf(buf, sizeof(buf), format, ap); - if (r<0) { + len = tor_vasprintf(&buf, format, ap); + if (len < 0) { log_warn(LD_BUG, "Unable to format event for controller."); return; } - len = strlen(buf); - if (memcmp("\r\n\0", buf+len-2, 3)) { - /* if it is not properly terminated, do it now */ - buf[SEND_CONTROL1_EVENT_BUFFERSIZE-1] = '\0'; - buf[SEND_CONTROL1_EVENT_BUFFERSIZE-2] = '\n'; - buf[SEND_CONTROL1_EVENT_BUFFERSIZE-3] = '\r'; - } - send_control_event_string(event, which|ALL_FORMATS, buf); + + tor_free(buf); } /** Send an event to all v1 controllers that are listening for code * <b>event</b>. The event's body is created by the printf-style format in - * <b>format</b>, and other arguments as provided. - * - * Currently the length of the message is limited to 1024 (including the - * ending \\n\\r\\0. */ + * <b>format</b>, and other arguments as provided. */ static void send_control_event(uint16_t event, event_format_t which, const char *format, ...) @@ -773,7 +806,7 @@ handle_control_getconf(control_connection_t *conn, uint32_t body_len, smartlist_t *unrecognized = smartlist_create(); char *msg = NULL; size_t msg_len; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int i, len; (void) body_len; /* body is NUL-terminated; so we can ignore len. */ @@ -885,13 +918,44 @@ handle_control_loadconf(control_connection_t *conn, uint32_t len, return 0; } +struct control_event_t { + uint16_t event_code; + const char *event_name; +}; +static const struct control_event_t control_event_table[] = { + { EVENT_CIRCUIT_STATUS, "CIRC" }, + { EVENT_STREAM_STATUS, "STREAM" }, + { EVENT_OR_CONN_STATUS, "ORCONN" }, + { EVENT_BANDWIDTH_USED, "BW" }, + { EVENT_DEBUG_MSG, "DEBUG" }, + { EVENT_INFO_MSG, "INFO" }, + { EVENT_NOTICE_MSG, "NOTICE" }, + { EVENT_WARN_MSG, "WARN" }, + { EVENT_ERR_MSG, "ERR" }, + { EVENT_NEW_DESC, "NEWDESC" }, + { EVENT_ADDRMAP, "ADDRMAP" }, + { EVENT_AUTHDIR_NEWDESCS, "AUTHDIR_NEWDESCS" }, + { EVENT_DESCCHANGED, "DESCCHANGED" }, + { EVENT_NS, "NS" }, + { EVENT_STATUS_GENERAL, "STATUS_GENERAL" }, + { EVENT_STATUS_CLIENT, "STATUS_CLIENT" }, + { EVENT_STATUS_SERVER, "STATUS_SERVER" }, + { EVENT_GUARD, "GUARD" }, + { EVENT_STREAM_BANDWIDTH_USED, "STREAM_BW" }, + { EVENT_CLIENTS_SEEN, "CLIENTS_SEEN" }, + { EVENT_NEWCONSENSUS, "NEWCONSENSUS" }, + { EVENT_BUILDTIMEOUT_SET, "BUILDTIMEOUT_SET" }, + { EVENT_SIGNAL, "SIGNAL" }, + { 0, NULL }, +}; + /** Called when we get a SETEVENTS message: update conn->event_mask, * and reply with DONE or ERROR. */ static int handle_control_setevents(control_connection_t *conn, uint32_t len, const char *body) { - uint16_t event_code; + int event_code = -1; uint32_t event_mask = 0; smartlist_t *events = smartlist_create(); @@ -903,58 +967,22 @@ handle_control_setevents(control_connection_t *conn, uint32_t len, { if (!strcasecmp(ev, "EXTENDED")) { continue; - } else if (!strcasecmp(ev, "CIRC")) - event_code = EVENT_CIRCUIT_STATUS; - else if (!strcasecmp(ev, "STREAM")) - event_code = EVENT_STREAM_STATUS; - else if (!strcasecmp(ev, "ORCONN")) - event_code = EVENT_OR_CONN_STATUS; - else if (!strcasecmp(ev, "BW")) - event_code = EVENT_BANDWIDTH_USED; - else if (!strcasecmp(ev, "DEBUG")) - event_code = EVENT_DEBUG_MSG; - else if (!strcasecmp(ev, "INFO")) - event_code = EVENT_INFO_MSG; - else if (!strcasecmp(ev, "NOTICE")) - event_code = EVENT_NOTICE_MSG; - else if (!strcasecmp(ev, "WARN")) - event_code = EVENT_WARN_MSG; - else if (!strcasecmp(ev, "ERR")) - event_code = EVENT_ERR_MSG; - else if (!strcasecmp(ev, "NEWDESC")) - event_code = EVENT_NEW_DESC; - else if (!strcasecmp(ev, "ADDRMAP")) - event_code = EVENT_ADDRMAP; - else if (!strcasecmp(ev, "AUTHDIR_NEWDESCS")) - event_code = EVENT_AUTHDIR_NEWDESCS; - else if (!strcasecmp(ev, "DESCCHANGED")) - event_code = EVENT_DESCCHANGED; - else if (!strcasecmp(ev, "NS")) - event_code = EVENT_NS; - else if (!strcasecmp(ev, "STATUS_GENERAL")) - event_code = EVENT_STATUS_GENERAL; - else if (!strcasecmp(ev, "STATUS_CLIENT")) - event_code = EVENT_STATUS_CLIENT; - else if (!strcasecmp(ev, "STATUS_SERVER")) - event_code = EVENT_STATUS_SERVER; - else if (!strcasecmp(ev, "GUARD")) - event_code = EVENT_GUARD; - else if (!strcasecmp(ev, "STREAM_BW")) - event_code = EVENT_STREAM_BANDWIDTH_USED; - else if (!strcasecmp(ev, "CLIENTS_SEEN")) - event_code = EVENT_CLIENTS_SEEN; - else if (!strcasecmp(ev, "NEWCONSENSUS")) - event_code = EVENT_NEWCONSENSUS; - else if (!strcasecmp(ev, "BUILDTIMEOUT_SET")) - event_code = EVENT_BUILDTIMEOUT_SET; - else if (!strcasecmp(ev, "SIGNAL")) - event_code = EVENT_SIGNAL; - else { - connection_printf_to_buf(conn, "552 Unrecognized event \"%s\"\r\n", - ev); - SMARTLIST_FOREACH(events, char *, e, tor_free(e)); - smartlist_free(events); - return 0; + } else { + int i; + for (i = 0; control_event_table[i].event_name != NULL; ++i) { + if (!strcasecmp(ev, control_event_table[i].event_name)) { + event_code = control_event_table[i].event_code; + break; + } + } + + if (event_code == -1) { + connection_printf_to_buf(conn, "552 Unrecognized event \"%s\"\r\n", + ev); + SMARTLIST_FOREACH(events, char *, e, tor_free(e)); + smartlist_free(events); + return 0; + } } event_mask |= (1 << event_code); } @@ -1016,7 +1044,7 @@ handle_control_authenticate(control_connection_t *conn, uint32_t len, const char *body) { int used_quoted_string = 0; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); const char *errstr = NULL; char *password; size_t password_len; @@ -1073,7 +1101,7 @@ handle_control_authenticate(control_connection_t *conn, uint32_t len, goto err; } bad_cookie = 1; - } else if (memcmp(authentication_cookie, password, password_len)) { + } else if (tor_memneq(authentication_cookie, password, password_len)) { if (!also_password) { log_warn(LD_CONTROL, "Got mismatched authentication cookie"); errstr = "Authentication cookie did not match expected value."; @@ -1123,7 +1151,7 @@ handle_control_authenticate(control_connection_t *conn, uint32_t len, SMARTLIST_FOREACH(sl, char *, expected, { secret_to_key(received,DIGEST_LEN,password,password_len,expected); - if (!memcmp(expected+S2K_SPECIFIER_LEN, received, DIGEST_LEN)) + if (tor_memeq(expected+S2K_SPECIFIER_LEN, received, DIGEST_LEN)) goto ok; }); SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp)); @@ -1225,8 +1253,30 @@ handle_control_signal(control_connection_t *conn, uint32_t len, send_control_done(conn); /* Flush the "done" first if the signal might make us shut down. */ if (sig == SIGTERM || sig == SIGINT) - connection_handle_write(TO_CONN(conn), 1); - control_signal_act(sig); + connection_flush(TO_CONN(conn)); + + process_signal(sig); + + return 0; +} + +/** Called when we get a TAKEOWNERSHIP command. Mark this connection + * as an owning connection, so that we will exit if the connection + * closes. */ +static int +handle_control_takeownership(control_connection_t *conn, uint32_t len, + const char *body) +{ + (void)len; + (void)body; + + conn->is_owning_control_connection = 1; + + log_info(LD_CONTROL, "Control connection %d has taken ownership of this " + "Tor instance.", + (int)(conn->_base.s)); + + send_control_done(conn); return 0; } @@ -1332,10 +1382,16 @@ getinfo_helper_misc(control_connection_t *conn, const char *question, } else if (!strcmp(question, "info/names")) { *answer = list_getinfo_options(); } else if (!strcmp(question, "events/names")) { - *answer = tor_strdup("CIRC STREAM ORCONN BW DEBUG INFO NOTICE WARN ERR " - "NEWDESC ADDRMAP AUTHDIR_NEWDESCS DESCCHANGED " - "NS STATUS_GENERAL STATUS_CLIENT STATUS_SERVER " - "GUARD STREAM_BW CLIENTS_SEEN NEWCONSENSUS"); + int i; + smartlist_t *event_names = smartlist_create(); + + for (i = 0; control_event_table[i].event_name != NULL; ++i) { + smartlist_add(event_names, (char *)control_event_table[i].event_name); + } + + *answer = smartlist_join_strings(event_names, " ", 0, NULL); + + smartlist_free(event_names); } else if (!strcmp(question, "features/names")) { *answer = tor_strdup("VERBOSE_NAMES EXTENDED_EVENTS"); } else if (!strcmp(question, "address")) { @@ -1345,6 +1401,61 @@ getinfo_helper_misc(control_connection_t *conn, const char *question, return -1; } *answer = tor_dup_ip(addr); + } else if (!strcmp(question, "traffic/read")) { + tor_asprintf(answer, U64_FORMAT, U64_PRINTF_ARG(get_bytes_read())); + } else if (!strcmp(question, "traffic/written")) { + tor_asprintf(answer, U64_FORMAT, U64_PRINTF_ARG(get_bytes_written())); + } else if (!strcmp(question, "process/pid")) { + int myPid = -1; + + #ifdef MS_WINDOWS + myPid = _getpid(); + #else + myPid = getpid(); + #endif + + tor_asprintf(answer, "%d", myPid); + } else if (!strcmp(question, "process/uid")) { + #ifdef MS_WINDOWS + *answer = tor_strdup("-1"); + #else + int myUid = geteuid(); + tor_asprintf(answer, "%d", myUid); + #endif + } else if (!strcmp(question, "process/user")) { + #ifdef MS_WINDOWS + *answer = tor_strdup(""); + #else + int myUid = geteuid(); + struct passwd *myPwEntry = getpwuid(myUid); + + if (myPwEntry) { + *answer = tor_strdup(myPwEntry->pw_name); + } else { + *answer = tor_strdup(""); + } + #endif + } else if (!strcmp(question, "process/descriptor-limit")) { + /** platform specifc limits are from the set_max_file_descriptors function + * of src/common/compat.c */ + /* XXXX023 This is duplicated code from compat.c; it should turn into a + * function. */ + #ifdef HAVE_GETRLIMIT + struct rlimit descriptorLimit; + + if (getrlimit(RLIMIT_NOFILE, &descriptorLimit) == 0) { + tor_asprintf(answer, U64_FORMAT, + U64_PRINTF_ARG(descriptorLimit.rlim_max)); + } else { + *answer = tor_strdup("-1"); + } + #elif defined(CYGWIN) || defined(__CYGWIN__) + *answer = tor_strdup("3200"); + #elif defined(MS_WINDOWS) + *answer = tor_strdup("15000"); + #else + *answer = tor_strdup("15000"); + #endif } else if (!strcmp(question, "dir-usage")) { *answer = directory_dump_request_log(); } else if (!strcmp(question, "fingerprint")) { @@ -1410,6 +1521,63 @@ munge_extrainfo_into_routerinfo(const char *ri_body, return tor_strndup(ri_body, ri->signed_descriptor_len); } +/** Implementation helper for GETINFO: answers requests for information about + * which ports are bound. */ +static int +getinfo_helper_listeners(control_connection_t *control_conn, + const char *question, + char **answer, const char **errmsg) +{ + int type; + smartlist_t *res; + + (void)control_conn; + (void)errmsg; + + if (!strcmp(question, "net/listeners/or")) + type = CONN_TYPE_OR_LISTENER; + else if (!strcmp(question, "net/listeners/dir")) + type = CONN_TYPE_DIR_LISTENER; + else if (!strcmp(question, "net/listeners/socks")) + type = CONN_TYPE_AP_LISTENER; + else if (!strcmp(question, "net/listeners/trans")) + type = CONN_TYPE_AP_TRANS_LISTENER; + else if (!strcmp(question, "net/listeners/natd")) + type = CONN_TYPE_AP_NATD_LISTENER; + else if (!strcmp(question, "net/listeners/dns")) + type = CONN_TYPE_AP_DNS_LISTENER; + else if (!strcmp(question, "net/listeners/control")) + type = CONN_TYPE_CONTROL_LISTENER; + else + return 0; /* unknown key */ + + res = smartlist_create(); + SMARTLIST_FOREACH_BEGIN(get_connection_array(), connection_t *, conn) { + char *addr; + struct sockaddr_storage ss; + socklen_t ss_len = sizeof(ss); + + if (conn->type != type || conn->marked_for_close || !SOCKET_OK(conn->s)) + continue; + + if (getsockname(conn->s, (struct sockaddr *)&ss, &ss_len) < 0) { + tor_asprintf(&addr, "%s:%d", conn->address, (int)conn->port); + } else { + char *tmp = tor_sockaddr_to_str((struct sockaddr *)&ss); + addr = esc_for_log(tmp); + tor_free(tmp); + } + if (addr) + smartlist_add(res, addr); + } SMARTLIST_FOREACH_END(conn); + + *answer = smartlist_join_strings(res, " ", 0, NULL); + + SMARTLIST_FOREACH(res, char *, cp, tor_free(cp)); + smartlist_free(res); + return 0; +} + /** Implementation helper for GETINFO: knows the answers for questions about * directory information. */ static int @@ -1785,18 +1953,18 @@ getinfo_helper_events(control_connection_t *control_conn, } else if (!strcmp(question, "status/version/num-versioning") || !strcmp(question, "status/version/num-concurring")) { char s[33]; - tor_snprintf(s, sizeof(s), "%d", get_n_authorities(V3_AUTHORITY)); + tor_snprintf(s, sizeof(s), "%d", get_n_authorities(V3_DIRINFO)); *answer = tor_strdup(s); log_warn(LD_GENERAL, "%s is deprecated; it no longer gives useful " "information", question); } } else if (!strcmp(question, "status/clients-seen")) { - const char *bridge_stats = geoip_get_bridge_stats_controller(time(NULL)); + char *bridge_stats = geoip_get_bridge_stats_controller(time(NULL)); if (!bridge_stats) { *errmsg = "No bridge-client stats available"; return -1; } - *answer = tor_strdup(bridge_stats); + *answer = bridge_stats; } else { return 0; } @@ -1865,6 +2033,7 @@ static const getinfo_item_t getinfo_items[] = { "All non-expired, non-superseded router descriptors."), ITEM("desc/all-recent-extrainfo-hack", dir, NULL), /* Hack. */ PREFIX("extra-info/digest/", dir, "Extra-info documents by digest."), + PREFIX("net/listeners/", listeners, "Bound addresses by type"), ITEM("ns/all", networkstatus, "Brief summary of router status (v2 directory format)"), PREFIX("ns/id/", networkstatus, @@ -1902,6 +2071,14 @@ static const getinfo_item_t getinfo_items[] = { "Number of versioning authorities agreeing on the status of the " "current version"), ITEM("address", misc, "IP address of this Tor host, if we can guess it."), + ITEM("traffic/read", misc,"Bytes read since the process was started."), + ITEM("traffic/written", misc, + "Bytes written since the process was started."), + ITEM("process/pid", misc, "Process id belonging to the main tor process."), + ITEM("process/uid", misc, "User id running the tor process."), + ITEM("process/user", misc, + "Username under which the tor process is running."), + ITEM("process/descriptor-limit", misc, "File descriptor limit."), ITEM("dir-usage", misc, "Breakdown of bytes transferred over DirPort."), PREFIX("desc-annotations/id/", dir, "Router annotations by hexdigest."), PREFIX("dir/server/", dir,"Router descriptors as retrieved from a DirPort."), @@ -1909,8 +2086,8 @@ static const getinfo_item_t getinfo_items[] = { "v2 networkstatus docs as retrieved from a DirPort."), ITEM("dir/status-vote/current/consensus", dir, "v3 Networkstatus consensus as retrieved from a DirPort."), - PREFIX("exit-policy/default", policies, - "The default value appended to the configured exit policy."), + ITEM("exit-policy/default", policies, + "The default value appended to the configured exit policy."), PREFIX("ip-to-country/", geoip, "Perform a GEOIP lookup"), { NULL, NULL, NULL, 0 } }; @@ -2652,7 +2829,7 @@ handle_control_protocolinfo(control_connection_t *conn, uint32_t len, connection_mark_for_close(TO_CONN(conn)); goto done; } else { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int cookies = options->CookieAuthentication; char *cfile = get_cookie_file(); char *esc_cfile = esc_for_log(cfile); @@ -2744,6 +2921,43 @@ connection_control_reached_eof(control_connection_t *conn) return 0; } +/** Shut down this Tor instance in the same way that SIGINT would, but + * with a log message appropriate for the loss of an owning controller. */ +static void +lost_owning_controller(const char *owner_type, const char *loss_manner) +{ + int shutdown_slowly = server_mode(get_options()); + + log_notice(LD_CONTROL, "Owning controller %s has %s -- %s.", + owner_type, loss_manner, + shutdown_slowly ? "shutting down" : "exiting now"); + + /* XXXX Perhaps this chunk of code should be a separate function, + * called here and by process_signal(SIGINT). */ + + if (!shutdown_slowly) { + tor_cleanup(); + exit(0); + } + /* XXXX This will close all listening sockets except control-port + * listeners. Perhaps we should close those too. */ + hibernate_begin_shutdown(); +} + +/** Called when <b>conn</b> is being freed. */ +void +connection_control_closed(control_connection_t *conn) +{ + tor_assert(conn); + + conn->event_mask = 0; + control_update_global_event_mask(); + + if (conn->is_owning_control_connection) { + lost_owning_controller("connection", "closed"); + } +} + /** Return true iff <b>cmd</b> is allowable (or at least forgivable) at this * stage of the protocol. */ static int @@ -2851,13 +3065,13 @@ connection_control_process_inbuf(control_connection_t *conn) break; /* XXXX this code duplication is kind of dumb. */ if (last_idx+3 == conn->incoming_cmd_cur_len && - !memcmp(conn->incoming_cmd + last_idx, ".\r\n", 3)) { + tor_memeq(conn->incoming_cmd + last_idx, ".\r\n", 3)) { /* Just appended ".\r\n"; we're done. Remove it. */ conn->incoming_cmd[last_idx] = '\0'; conn->incoming_cmd_cur_len -= 3; break; } else if (last_idx+2 == conn->incoming_cmd_cur_len && - !memcmp(conn->incoming_cmd + last_idx, ".\n", 2)) { + tor_memeq(conn->incoming_cmd + last_idx, ".\n", 2)) { /* Just appended ".\n"; we're done. Remove it. */ conn->incoming_cmd[last_idx] = '\0'; conn->incoming_cmd_cur_len -= 2; @@ -2908,6 +3122,9 @@ connection_control_process_inbuf(control_connection_t *conn) return 0; } + /* XXXX Why is this not implemented as a table like the GETINFO + * items are? Even handling the plus signs at the beginnings of + * commands wouldn't be very hard with proper macros. */ cmd_data_len = (uint32_t)data_len; if (!strcasecmp(conn->incoming_cmd, "SETCONF")) { if (handle_control_setconf(conn, cmd_data_len, args)) @@ -2933,6 +3150,9 @@ connection_control_process_inbuf(control_connection_t *conn) } else if (!strcasecmp(conn->incoming_cmd, "SIGNAL")) { if (handle_control_signal(conn, cmd_data_len, args)) return -1; + } else if (!strcasecmp(conn->incoming_cmd, "TAKEOWNERSHIP")) { + if (handle_control_takeownership(conn, cmd_data_len, args)) + return -1; } else if (!strcasecmp(conn->incoming_cmd, "MAPADDRESS")) { if (handle_control_mapaddress(conn, cmd_data_len, args)) return -1; @@ -2988,7 +3208,6 @@ control_event_circuit_status(origin_circuit_t *circ, circuit_status_event_t tp, { const char *status; char extended_buf[96]; - int providing_reason=0; if (!EVENT_IS_INTERESTING(EVENT_CIRCUIT_STATUS)) return 0; tor_assert(circ); @@ -3012,7 +3231,6 @@ control_event_circuit_status(origin_circuit_t *circ, circuit_status_event_t tp, const char *reason_str = circuit_end_reason_to_control_string(reason_code); char *reason = NULL; size_t n=strlen(extended_buf); - providing_reason=1; if (!reason_str) { reason = tor_malloc(16); tor_snprintf(reason, 16, "UNKNOWN_%d", reason_code); @@ -3783,7 +4001,7 @@ control_event_guard(const char *nickname, const char *digest, static char * get_cookie_file(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (options->CookieAuthFile && strlen(options->CookieAuthFile)) { return tor_strdup(options->CookieAuthFile); } else { @@ -3831,6 +4049,75 @@ init_cookie_authentication(int enabled) return 0; } +/** A copy of the process specifier of Tor's owning controller, or + * NULL if this Tor instance is not currently owned by a process. */ +static char *owning_controller_process_spec = NULL; + +/** A process-termination monitor for Tor's owning controller, or NULL + * if this Tor instance is not currently owned by a process. */ +static tor_process_monitor_t *owning_controller_process_monitor = NULL; + +/** Process-termination monitor callback for Tor's owning controller + * process. */ +static void +owning_controller_procmon_cb(void *unused) +{ + (void)unused; + + lost_owning_controller("process", "vanished"); +} + +/** Set <b>process_spec</b> as Tor's owning controller process. + * Exit on failure. */ +void +monitor_owning_controller_process(const char *process_spec) +{ + const char *msg; + + tor_assert((owning_controller_process_spec == NULL) == + (owning_controller_process_monitor == NULL)); + + if (owning_controller_process_spec != NULL) { + if ((process_spec != NULL) && !strcmp(process_spec, + owning_controller_process_spec)) { + /* Same process -- return now, instead of disposing of and + * recreating the process-termination monitor. */ + return; + } + + /* We are currently owned by a process, and we should no longer be + * owned by it. Free the process-termination monitor. */ + tor_process_monitor_free(owning_controller_process_monitor); + owning_controller_process_monitor = NULL; + + tor_free(owning_controller_process_spec); + owning_controller_process_spec = NULL; + } + + tor_assert((owning_controller_process_spec == NULL) && + (owning_controller_process_monitor == NULL)); + + if (process_spec == NULL) + return; + + owning_controller_process_spec = tor_strdup(process_spec); + owning_controller_process_monitor = + tor_process_monitor_new(tor_libevent_get_base(), + owning_controller_process_spec, + LD_CONTROL, + owning_controller_procmon_cb, NULL, + &msg); + + if (owning_controller_process_monitor == NULL) { + log_err(LD_BUG, "Couldn't create process-termination monitor for " + "owning controller: %s. Exiting.", + msg); + owning_controller_process_spec = NULL; + tor_cleanup(); + exit(0); + } +} + /** Convert the name of a bootstrapping phase <b>s</b> into strings * <b>tag</b> and <b>summary</b> suitable for display by the controller. */ static int @@ -3927,7 +4214,7 @@ static int bootstrap_problems = 0; * information and initial circuits. * * <b>status</b> is the new status, that is, what task we will be doing - * next. <b>percent</b> is zero if we just started this task, else it + * next. <b>progress</b> is zero if we just started this task, else it * represents progress on the task. */ void control_event_bootstrap(bootstrap_status_t status, int progress) @@ -3982,6 +4269,10 @@ control_event_bootstrap_problem(const char *warn, int reason) const char *tag, *summary; char buf[BOOTSTRAP_MSG_LEN]; const char *recommendation = "ignore"; + int severity; + + /* bootstrap_percent must not be in "undefined" state here. */ + tor_assert(status >= 0); if (bootstrap_percent == 100) return; /* already bootstrapped; nothing to be done here. */ @@ -4003,12 +4294,17 @@ control_event_bootstrap_problem(const char *warn, int reason) status--; /* find a recognized status string based on current progress */ status = bootstrap_percent; /* set status back to the actual number */ - log_fn(!strcmp(recommendation, "warn") ? LOG_WARN : LOG_INFO, + severity = !strcmp(recommendation, "warn") ? LOG_WARN : LOG_INFO; + + log_fn(severity, LD_CONTROL, "Problem bootstrapping. Stuck at %d%%: %s. (%s; %s; " "count %d; recommendation %s)", status, summary, warn, orconn_end_reason_to_control_string(reason), bootstrap_problems, recommendation); + + connection_or_report_broken_states(severity, LD_HANDSHAKE); + tor_snprintf(buf, sizeof(buf), "BOOTSTRAP PROGRESS=%d TAG=%s SUMMARY=\"%s\" WARNING=\"%s\" REASON=%s " "COUNT=%d RECOMMENDATION=%s", diff --git a/src/or/control.h b/src/or/control.h index ef91f06c26..147a5af0bb 100644 --- a/src/or/control.h +++ b/src/or/control.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -15,6 +15,8 @@ void control_update_global_event_mask(void); void control_adjust_event_log_severity(void); +void control_ports_write_to_file(void); + /** Log information about the connection <b>conn</b>, protecting it as with * CONN_LOG_PROTECT. Example: * @@ -25,6 +27,8 @@ void control_adjust_event_log_severity(void); int connection_control_finished_flushing(control_connection_t *conn); int connection_control_reached_eof(control_connection_t *conn); +void connection_control_closed(control_connection_t *conn); + int connection_control_process_inbuf(control_connection_t *conn); #define EVENT_AUTHDIR_NEWDESCS 0x000D @@ -71,6 +75,8 @@ smartlist_t *decode_hashed_passwords(config_line_t *passwords); void disable_control_logging(void); void enable_control_logging(void); +void monitor_owning_controller_process(const char *process_spec); + void control_event_bootstrap(bootstrap_status_t status, int progress); void control_event_bootstrap_problem(const char *warn, int reason); diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index cfe9f3af9c..bf8964c29c 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -225,8 +225,8 @@ cpuworker_main(void *data) { char question[ONIONSKIN_CHALLENGE_LEN]; uint8_t question_type; - int *fdarray = data; - int fd; + tor_socket_t *fdarray = data; + tor_socket_t fd; /* variables for onion processing */ char keys[CPATH_KEY_MATERIAL_LEN]; @@ -249,7 +249,7 @@ cpuworker_main(void *data) for (;;) { ssize_t r; - if ((r = recv(fd, &question_type, 1, 0)) != 1) { + if ((r = recv(fd, (void *)&question_type, 1, 0)) != 1) { // log_fn(LOG_ERR,"read type failed. Exiting."); if (r == 0) { log_info(LD_OR, @@ -316,12 +316,12 @@ cpuworker_main(void *data) static int spawn_cpuworker(void) { - int *fdarray; - int fd; + tor_socket_t *fdarray; + tor_socket_t fd; connection_t *conn; int err; - fdarray = tor_malloc(sizeof(int)*2); + fdarray = tor_malloc(sizeof(tor_socket_t)*2); if ((err = tor_socketpair(AF_UNIX, SOCK_STREAM, 0, fdarray)) < 0) { log_warn(LD_NET, "Couldn't construct socketpair for cpuworker: %s", tor_socket_strerror(-err)); diff --git a/src/or/cpuworker.h b/src/or/cpuworker.h index e09703f217..04e37ee459 100644 --- a/src/or/cpuworker.h +++ b/src/or/cpuworker.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/or/directory.c b/src/or/directory.c index 8dece8629a..ac35d3c599 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "or.h" @@ -66,7 +66,7 @@ static int purpose_needs_anonymity(uint8_t dir_purpose, uint8_t router_purpose); static char *http_get_header(const char *headers, const char *which); static void http_set_address_origin(const char *headers, connection_t *conn); -static void connection_dir_download_networkstatus_failed( +static void connection_dir_download_v2_networkstatus_failed( dir_connection_t *conn, int status_code); static void connection_dir_download_routerdesc_failed(dir_connection_t *conn); static void connection_dir_bridge_routerdesc_failed(dir_connection_t *conn); @@ -147,21 +147,22 @@ purpose_needs_anonymity(uint8_t dir_purpose, uint8_t router_purpose) return 1; } -/** Return a newly allocated string describing <b>auth</b>. */ -char * -authority_type_to_string(authority_type_t auth) +/** Return a newly allocated string describing <b>auth</b>. Only describes + * authority features. */ +static char * +authdir_type_to_string(dirinfo_type_t auth) { char *result; smartlist_t *lst = smartlist_create(); - if (auth & V1_AUTHORITY) + if (auth & V1_DIRINFO) smartlist_add(lst, (void*)"V1"); - if (auth & V2_AUTHORITY) + if (auth & V2_DIRINFO) smartlist_add(lst, (void*)"V2"); - if (auth & V3_AUTHORITY) + if (auth & V3_DIRINFO) smartlist_add(lst, (void*)"V3"); - if (auth & BRIDGE_AUTHORITY) + if (auth & BRIDGE_DIRINFO) smartlist_add(lst, (void*)"Bridge"); - if (auth & HIDSERV_AUTHORITY) + if (auth & HIDSERV_DIRINFO) smartlist_add(lst, (void*)"Hidden service"); if (smartlist_len(lst)) { result = smartlist_join_strings(lst, ", ", 0, NULL); @@ -251,7 +252,7 @@ int directories_have_accepted_server_descriptor(void) { smartlist_t *servers = router_get_trusted_dir_servers(); - or_options_t *options = get_options(); + const or_options_t *options = get_options(); SMARTLIST_FOREACH(servers, trusted_dir_server_t *, d, { if ((d->type & options->_PublishServerDescriptor) && d->has_accepted_serverdesc) { @@ -262,10 +263,13 @@ directories_have_accepted_server_descriptor(void) } /** Start a connection to every suitable directory authority, using - * connection purpose 'purpose' and uploading the payload 'payload' - * (length 'payload_len'). dir_purpose should be one of + * connection purpose <b>dir_purpose</b> and uploading <b>payload</b> + * (of length <b>payload_len</b>). The dir_purpose should be one of * 'DIR_PURPOSE_UPLOAD_DIR' or 'DIR_PURPOSE_UPLOAD_RENDDESC'. * + * <b>router_purpose</b> describes the type of descriptor we're + * publishing, if we're publishing a descriptor -- e.g. general or bridge. + * * <b>type</b> specifies what sort of dir authorities (V1, V2, * HIDSERV, BRIDGE) we should upload to. * @@ -277,13 +281,16 @@ directories_have_accepted_server_descriptor(void) */ void directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose, - authority_type_t type, + dirinfo_type_t type, const char *payload, size_t payload_len, size_t extrainfo_len) { + const or_options_t *options = get_options(); int post_via_tor; smartlist_t *dirservers = router_get_trusted_dir_servers(); int found = 0; + const int exclude_self = (dir_purpose == DIR_PURPOSE_UPLOAD_VOTE || + dir_purpose == DIR_PURPOSE_UPLOAD_SIGNATURES); tor_assert(dirservers); /* This tries dirservers which we believe to be down, but ultimately, that's * harmless, and we may as well err on the side of getting things uploaded. @@ -296,6 +303,19 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose, if ((type & ds->type) == 0) continue; + if (exclude_self && router_digest_is_me(ds->digest)) + continue; + + if (options->StrictNodes && + routerset_contains_routerstatus(options->ExcludeNodes, rs, -1)) { + log_warn(LD_DIR, "Wanted to contact authority '%s' for %s, but " + "it's in our ExcludedNodes list and StrictNodes is set. " + "Skipping.", + ds->nickname, + dir_conn_purpose_to_string(dir_purpose)); + continue; + } + found = 1; /* at least one authority of this type was listed */ if (dir_purpose == DIR_PURPOSE_UPLOAD_DIR) ds->has_accepted_serverdesc = 0; @@ -314,7 +334,7 @@ directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose, NULL, payload, upload_len, 0); } SMARTLIST_FOREACH_END(ds); if (!found) { - char *s = authority_type_to_string(type); + char *s = authdir_type_to_string(type); log_warn(LD_DIR, "Publishing server descriptor to directory authorities " "of type '%s', but no authorities of that type listed!", s); tor_free(s); @@ -332,40 +352,41 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, const char *resource, int pds_flags) { const routerstatus_t *rs = NULL; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int prefer_authority = directory_fetches_from_authorities(options); int get_via_tor = purpose_needs_anonymity(dir_purpose, router_purpose); - authority_type_t type; + dirinfo_type_t type; time_t if_modified_since = 0; /* FFFF we could break this switch into its own function, and call * it elsewhere in directory.c. -RD */ switch (dir_purpose) { case DIR_PURPOSE_FETCH_EXTRAINFO: - type = EXTRAINFO_CACHE | - (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_AUTHORITY : - V3_AUTHORITY); + type = EXTRAINFO_DIRINFO | + (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_DIRINFO : + V3_DIRINFO); break; case DIR_PURPOSE_FETCH_V2_NETWORKSTATUS: - type = V2_AUTHORITY; + type = V2_DIRINFO; + prefer_authority = 1; /* Only v2 authorities have these anyway. */ break; case DIR_PURPOSE_FETCH_SERVERDESC: - type = (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_AUTHORITY : - V3_AUTHORITY); + type = (router_purpose == ROUTER_PURPOSE_BRIDGE ? BRIDGE_DIRINFO : + V3_DIRINFO); break; case DIR_PURPOSE_FETCH_RENDDESC: - type = HIDSERV_AUTHORITY; + type = HIDSERV_DIRINFO; break; case DIR_PURPOSE_FETCH_STATUS_VOTE: case DIR_PURPOSE_FETCH_DETACHED_SIGNATURES: - type = V3_AUTHORITY; + type = V3_DIRINFO; break; case DIR_PURPOSE_FETCH_CONSENSUS: case DIR_PURPOSE_FETCH_CERTIFICATE: - type = V3_AUTHORITY; + type = V3_DIRINFO; break; case DIR_PURPOSE_FETCH_MICRODESC: - type = V3_AUTHORITY; + type = MICRODESC_DIRINFO; break; default: log_warn(LD_BUG, "Unexpected purpose %d", (int)dir_purpose); @@ -393,13 +414,13 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, } } - if (!options->FetchServerDescriptors && type != HIDSERV_AUTHORITY) + if (!options->FetchServerDescriptors && type != HIDSERV_DIRINFO) return; if (!get_via_tor) { - if (options->UseBridges && type != BRIDGE_AUTHORITY) { + if (options->UseBridges && type != BRIDGE_DIRINFO) { /* want to ask a running bridge for which we have a descriptor. */ - /* XXX022 we assume that all of our bridges can answer any + /* XXX023 we assume that all of our bridges can answer any * possible directory question. This won't be true forever. -RD */ /* It certainly is not true with conditional consensus downloading, * so, for now, never assume the server supports that. */ @@ -421,7 +442,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, "nodes are available yet."); return; } else { - if (prefer_authority || type == BRIDGE_AUTHORITY) { + if (prefer_authority || type == BRIDGE_DIRINFO) { /* only ask authdirservers, and don't ask myself */ rs = router_pick_trusteddirserver(type, pds_flags); if (rs == NULL && (pds_flags & (PDS_NO_EXISTING_SERVERDESC_FETCH| @@ -443,7 +464,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, } } } - if (!rs && type != BRIDGE_AUTHORITY) { + if (!rs && type != BRIDGE_DIRINFO) { /* anybody with a non-zero dirport will do */ rs = router_pick_directory_server(type, pds_flags); if (!rs) { @@ -460,7 +481,7 @@ directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, if (dir_purpose == DIR_PURPOSE_FETCH_RENDDESC) { /* only ask hidserv authorities, any of them will do */ pds_flags |= PDS_IGNORE_FASCISTFIREWALL|PDS_ALLOW_SELF; - rs = router_pick_trusteddirserver(HIDSERV_AUTHORITY, pds_flags); + rs = router_pick_trusteddirserver(HIDSERV_DIRINFO, pds_flags); } else { /* anybody with a non-zero dirport will do. Disregard firewalls. */ pds_flags |= PDS_IGNORE_FASCISTFIREWALL; @@ -506,7 +527,7 @@ directory_get_from_all_authorities(uint8_t dir_purpose, routerstatus_t *rs; if (router_digest_is_me(ds->digest)) continue; - if (!(ds->type & V3_AUTHORITY)) + if (!(ds->type & V3_DIRINFO)) continue; rs = &ds->fake_status; directory_initiate_command_routerstatus(rs, dir_purpose, router_purpose, @@ -527,15 +548,18 @@ directory_initiate_command_routerstatus_rend(const routerstatus_t *status, time_t if_modified_since, const rend_data_t *rend_query) { + const or_options_t *options = get_options(); const node_t *node; char address_buf[INET_NTOA_BUF_LEN+1]; struct in_addr in; const char *address; tor_addr_t addr; node = node_get_by_id(status->identity_digest); + if (!node && anonymized_connection) { log_info(LD_DIR, "Not sending anonymized request to directory '%s'; we " - "don't have its router descriptor.", status->nickname); + "don't have its router descriptor.", + routerstatus_describe(status)); return; } else if (node) { node_get_address_string(node, address_buf, sizeof(address_buf)); @@ -546,6 +570,17 @@ directory_initiate_command_routerstatus_rend(const routerstatus_t *status, address = address_buf; } tor_addr_from_ipv4h(&addr, status->addr); + + if (options->ExcludeNodes && options->StrictNodes && + routerset_contains_routerstatus(options->ExcludeNodes, status, -1)) { + log_warn(LD_DIR, "Wanted to contact directory mirror %s for %s, but " + "it's in our ExcludedNodes list and StrictNodes is set. " + "Skipping. This choice might make your Tor not work.", + routerstatus_describe(status), + dir_conn_purpose_to_string(dir_purpose)); + return; + } + directory_initiate_command_rend(address, &addr, status->or_port, status->dir_port, status->version_supports_conditional_consensus, @@ -610,7 +645,7 @@ directory_conn_is_self_reachability_test(dir_connection_t *conn) * server due to a network error: Mark the router as down and try again if * possible. */ -void +static void connection_dir_request_failed(dir_connection_t *conn) { if (directory_conn_is_self_reachability_test(conn)) { @@ -621,7 +656,7 @@ connection_dir_request_failed(dir_connection_t *conn) if (conn->_base.purpose == DIR_PURPOSE_FETCH_V2_NETWORKSTATUS) { log_info(LD_DIR, "Giving up on directory server at '%s'; retrying", conn->_base.address); - connection_dir_download_networkstatus_failed(conn, -1); + connection_dir_download_v2_networkstatus_failed(conn, -1); } else if (conn->_base.purpose == DIR_PURPOSE_FETCH_SERVERDESC || conn->_base.purpose == DIR_PURPOSE_FETCH_EXTRAINFO) { log_info(LD_DIR, "Giving up on serverdesc/extrainfo fetch from " @@ -631,9 +666,8 @@ connection_dir_request_failed(dir_connection_t *conn) connection_dir_bridge_routerdesc_failed(conn); connection_dir_download_routerdesc_failed(conn); } else if (conn->_base.purpose == DIR_PURPOSE_FETCH_CONSENSUS) { - const char *flavname = - conn->requested_resource ? conn->requested_resource : "ns"; - networkstatus_consensus_download_failed(0, flavname); + if (conn->requested_resource) + networkstatus_consensus_download_failed(0, conn->requested_resource); } else if (conn->_base.purpose == DIR_PURPOSE_FETCH_CERTIFICATE) { log_info(LD_DIR, "Giving up on certificate fetch from directory server " "at '%s'; retrying", @@ -657,7 +691,7 @@ connection_dir_request_failed(dir_connection_t *conn) * retry the fetch now, later, or never. */ static void -connection_dir_download_networkstatus_failed(dir_connection_t *conn, +connection_dir_download_v2_networkstatus_failed(dir_connection_t *conn, int status_code) { if (!conn->requested_resource) { @@ -783,7 +817,7 @@ connection_dir_download_cert_failed(dir_connection_t *conn, int status) * 3) Else yes. */ static int -directory_command_should_use_begindir(or_options_t *options, +directory_command_should_use_begindir(const or_options_t *options, const tor_addr_t *addr, int or_port, uint8_t router_purpose, int anonymized_connection) @@ -824,6 +858,20 @@ directory_initiate_command(const char *address, const tor_addr_t *_addr, if_modified_since, NULL); } +/** Return non-zero iff a directory connection with purpose + * <b>dir_purpose</b> reveals sensitive information about a Tor + * instance's client activities. (Such connections must be performed + * through normal three-hop Tor circuits.) */ +static int +is_sensitive_dir_purpose(uint8_t dir_purpose) +{ + return ((dir_purpose == DIR_PURPOSE_FETCH_RENDDESC) || + (dir_purpose == DIR_PURPOSE_HAS_FETCHED_RENDDESC) || + (dir_purpose == DIR_PURPOSE_UPLOAD_RENDDESC) || + (dir_purpose == DIR_PURPOSE_UPLOAD_RENDDESC_V2) || + (dir_purpose == DIR_PURPOSE_FETCH_RENDDESC_V2)); +} + /** Same as directory_initiate_command(), but accepts rendezvous data to * fetch a hidden service descriptor. */ static void @@ -839,7 +887,7 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr, const rend_data_t *rend_query) { dir_connection_t *conn; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int socket_error = 0; int use_begindir = supports_begindir && directory_command_should_use_begindir(options, _addr, @@ -858,6 +906,9 @@ directory_initiate_command_rend(const char *address, const tor_addr_t *_addr, log_debug(LD_DIR, "Initiating %s", dir_conn_purpose_to_string(dir_purpose)); + tor_assert(!(is_sensitive_dir_purpose(dir_purpose) && + !anonymized_connection)); + /* ensure that we don't make direct connections when a SOCKS server is * configured. */ if (!anonymized_connection && !use_begindir && !options->HTTPProxy && @@ -1004,8 +1055,14 @@ directory_get_consensus_url(int supports_conditional_consensus, const char *resource) { char *url = NULL; - const char *hyphen = resource ? "-" : ""; - const char *flavor = resource ? resource : ""; + const char *hyphen, *flavor; + if (resource==NULL || strcmp(resource, "ns")==0) { + flavor = ""; /* Request ns consensuses as "", so older servers will work*/ + hyphen = ""; + } else { + flavor = resource; + hyphen = "-"; + } if (supports_conditional_consensus) { char *authority_id_list; @@ -1015,7 +1072,7 @@ directory_get_consensus_url(int supports_conditional_consensus, trusted_dir_server_t *, ds, { char *hex; - if (!(ds->type & V3_AUTHORITY)) + if (!(ds->type & V3_DIRINFO)) continue; hex = tor_malloc(2*CONDITIONAL_CONSENSUS_FPR_LEN+1); @@ -1585,9 +1642,10 @@ connection_dir_client_reached_eof(dir_connection_t *conn) delta>0 ? "ahead" : "behind", dbuf, delta>0 ? "behind" : "ahead"); skewed = 1; /* don't check the recommended-versions line */ - control_event_general_status(trusted ? LOG_WARN : LOG_NOTICE, - "CLOCK_SKEW SKEW=%ld SOURCE=DIRSERV:%s:%d", - delta, conn->_base.address, conn->_base.port); + if (trusted) + control_event_general_status(LOG_WARN, + "CLOCK_SKEW SKEW=%ld SOURCE=DIRSERV:%s:%d", + delta, conn->_base.address, conn->_base.port); } else { log_debug(LD_HTTP, "Time on received directory is within tolerance; " "we are %ld seconds skewed. (That's okay.)", delta); @@ -1596,27 +1654,20 @@ connection_dir_client_reached_eof(dir_connection_t *conn) (void) skewed; /* skewed isn't used yet. */ if (status_code == 503) { - if (body_len < 16) { - routerstatus_t *rs; - trusted_dir_server_t *ds; - log_info(LD_DIR,"Received http status code %d (%s) from server " - "'%s:%d'. I'll try again soon.", - status_code, escaped(reason), conn->_base.address, - conn->_base.port); - rs = router_get_mutable_consensus_status_by_id(conn->identity_digest); - if (rs) - rs->last_dir_503_at = now; - if ((ds = router_get_trusteddirserver_by_digest(conn->identity_digest))) - ds->fake_status.last_dir_503_at = now; + routerstatus_t *rs; + trusted_dir_server_t *ds; + const char *id_digest = conn->identity_digest; + log_info(LD_DIR,"Received http status code %d (%s) from server " + "'%s:%d'. I'll try again soon.", + status_code, escaped(reason), conn->_base.address, + conn->_base.port); + if ((rs = router_get_mutable_consensus_status_by_id(id_digest))) + rs->last_dir_503_at = now; + if ((ds = router_get_trusteddirserver_by_digest(id_digest))) + ds->fake_status.last_dir_503_at = now; - tor_free(body); tor_free(headers); tor_free(reason); - return -1; - } - /* XXXX022 Remove this once every server with bug 539 is obsolete. */ - log_info(LD_DIR, "Server at '%s:%d' sent us a 503 response, but included " - "a body anyway. We'll pretend it gave us a 200.", - conn->_base.address, conn->_base.port); - status_code = 200; + tor_free(body); tor_free(headers); tor_free(reason); + return -1; } plausible = body_is_plausible(body, body_len, conn->_base.purpose); @@ -1685,13 +1736,19 @@ connection_dir_client_reached_eof(dir_connection_t *conn) log_info(LD_DIR,"Received networkstatus objects (size %d) from server " "'%s:%d'", (int)body_len, conn->_base.address, conn->_base.port); if (status_code != 200) { - log_warn(LD_DIR, - "Received http status code %d (%s) from server " - "'%s:%d' while fetching \"/tor/status/%s\". I'll try again soon.", - status_code, escaped(reason), conn->_base.address, - conn->_base.port, conn->requested_resource); + static ratelim_t warning_limit = RATELIM_INIT(3600); + char *m; + if ((m = rate_limit_log(&warning_limit, now))) { + log_warn(LD_DIR, + "Received http status code %d (%s) from server " + "'%s:%d' while fetching \"/tor/status/%s\". " + "I'll try again soon.%s", + status_code, escaped(reason), conn->_base.address, + conn->_base.port, conn->requested_resource, m); + tor_free(m); + } tor_free(body); tor_free(headers); tor_free(reason); - connection_dir_download_networkstatus_failed(conn, status_code); + connection_dir_download_v2_networkstatus_failed(conn, status_code); return -1; } if (conn->requested_resource && @@ -1745,8 +1802,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn) if (conn->_base.purpose == DIR_PURPOSE_FETCH_CONSENSUS) { int r; - const char *flavname = - conn->requested_resource ? conn->requested_resource : "ns"; + const char *flavname = conn->requested_resource; if (status_code != 200) { int severity = (status_code == 304) ? LOG_INFO : LOG_WARN; log(severity, LD_DIR, @@ -1956,6 +2012,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn) } SMARTLIST_FOREACH(which, char *, cp, tor_free(cp)); smartlist_free(which); + smartlist_free(mds); } } @@ -1966,7 +2023,6 @@ connection_dir_client_reached_eof(dir_connection_t *conn) router_get_trusteddirserver_by_digest(conn->identity_digest); char *rejected_hdr = http_get_header(headers, "X-Descriptor-Not-New: "); - int rejected = 0; if (rejected_hdr) { if (!strcmp(rejected_hdr, "Yes")) { log_info(LD_GENERAL, @@ -1974,12 +2030,11 @@ connection_dir_client_reached_eof(dir_connection_t *conn) ds->nickname); /* XXXX use this information; be sure to upload next one * sooner. -NM */ - /* XXXX021 On further thought, the task above implies that we're + /* XXXX023 On further thought, the task above implies that we're * basing our regenerate-descriptor time on when we uploaded the * last descriptor, not on the published time of the last * descriptor. If those are different, that's a bad thing to * do. -NM */ - rejected = 1; } tor_free(rejected_hdr); } @@ -2069,7 +2124,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn) (int)body_len, status_code, escaped(reason)); switch (status_code) { case 200: - if (rend_cache_store(body, body_len, 0) < -1) { + if (rend_cache_store(body, body_len, 0, + conn->rend_data->onion_address) < -1) { log_warn(LD_REND,"Failed to parse rendezvous descriptor."); /* Any pending rendezvous attempts will notice when * connection_about_to_close_connection() @@ -2245,6 +2301,28 @@ connection_dir_process_inbuf(dir_connection_t *conn) return 0; } +/** Called when we're about to finally unlink and free a directory connection: + * perform necessary accounting and cleanup */ +void +connection_dir_about_to_close(dir_connection_t *dir_conn) +{ + connection_t *conn = TO_CONN(dir_conn); + + if (conn->state < DIR_CONN_STATE_CLIENT_FINISHED) { + /* It's a directory connection and connecting or fetching + * failed: forget about this router, and maybe try again. */ + connection_dir_request_failed(dir_conn); + } + /* If we were trying to fetch a v2 rend desc and did not succeed, + * retry as needed. (If a fetch is successful, the connection state + * is changed to DIR_PURPOSE_HAS_FETCHED_RENDDESC to mark that + * refetching is unnecessary.) */ + if (conn->purpose == DIR_PURPOSE_FETCH_RENDDESC_V2 && + dir_conn->rend_data && + strlen(dir_conn->rend_data->onion_address) == REND_SERVICE_ID_LEN_BASE32) + rend_client_refetch_v2_renddesc(dir_conn->rend_data); +} + /** Create an http response for the client <b>conn</b> out of * <b>status</b> and <b>reason_phrase</b>. Write it to <b>conn</b>. */ @@ -2513,7 +2591,7 @@ client_likes_consensus(networkstatus_t *v, const char *want_url) SMARTLIST_FOREACH_BEGIN(v->voters, networkstatus_voter_info_t *, vi) { if (smartlist_len(vi->sigs) && - !memcmp(vi->identity_digest, want_digest, want_len)) { + tor_memeq(vi->identity_digest, want_digest, want_len)) { have++; break; }; @@ -2536,18 +2614,18 @@ client_likes_consensus(networkstatus_t *v, const char *want_url) * Always return 0. */ static int directory_handle_command_get(dir_connection_t *conn, const char *headers, - const char *body, size_t body_len) + const char *req_body, size_t req_body_len) { size_t dlen; char *url, *url_mem, *header; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); time_t if_modified_since = 0; int compressed; size_t url_len; /* We ignore the body of a GET request. */ - (void)body; - (void)body_len; + (void)req_body; + (void)req_body_len; log_debug(LD_DIRSERV,"Received GET command."); @@ -2804,7 +2882,7 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers, ssize_t estimated_len = 0; smartlist_t *items = smartlist_create(); smartlist_t *dir_items = smartlist_create(); - int lifetime = 60; /* XXXX022 should actually use vote intervals. */ + int lifetime = 60; /* XXXX023 should actually use vote intervals. */ url += strlen("/tor/status-vote/"); current = !strcmpstart(url, "current/"); url = strchr(url, '/'); @@ -3256,7 +3334,7 @@ directory_handle_command_post(dir_connection_t *conn, const char *headers, const char *body, size_t body_len) { char *url = NULL; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); log_debug(LD_DIRSERV,"Received POST command."); @@ -3337,7 +3415,7 @@ directory_handle_command_post(dir_connection_t *conn, const char *headers, !strcmpstart(url,"/tor/rendezvous/publish")) { /* rendezvous descriptor post */ log_info(LD_REND, "Handling rendezvous descriptor post."); - if (rend_cache_store(body, body_len, 1) < 0) { + if (rend_cache_store(body, body_len, 1, NULL) < 0) { log_fn(LOG_PROTOCOL_WARN, LD_DIRSERV, "Rejected rend descriptor (length %d) from %s.", (int)body_len, conn->_base.address); @@ -3357,6 +3435,8 @@ directory_handle_command_post(dir_connection_t *conn, const char *headers, write_http_status_line(conn, status, "Vote stored"); } else { tor_assert(msg); + log_warn(LD_DIRSERV, "Rejected vote from %s (\"%s\").", + conn->_base.address, msg); write_http_status_line(conn, status, msg); } goto done; @@ -3714,17 +3794,17 @@ dir_microdesc_download_failed(smartlist_t *failed, } SMARTLIST_FOREACH_END(d); } -/** Helper. Compare two fp_pair_t objects, and return -1, 0, or 1 as - * appropriate. */ +/** Helper. Compare two fp_pair_t objects, and return negative, 0, or + * positive as appropriate. */ static int _compare_pairs(const void **a, const void **b) { const fp_pair_t *fp1 = *a, *fp2 = *b; int r; - if ((r = memcmp(fp1->first, fp2->first, DIGEST_LEN))) + if ((r = fast_memcmp(fp1->first, fp2->first, DIGEST_LEN))) return r; else - return memcmp(fp1->second, fp2->second, DIGEST_LEN); + return fast_memcmp(fp1->second, fp2->second, DIGEST_LEN); } /** Divide a string <b>res</b> of the form FP1-FP2+FP3-FP4...[.z], where each diff --git a/src/or/directory.h b/src/or/directory.h index 5782df9267..8c63bb5dfd 100644 --- a/src/or/directory.h +++ b/src/or/directory.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -13,9 +13,8 @@ #define _TOR_DIRECTORY_H int directories_have_accepted_server_descriptor(void); -char *authority_type_to_string(authority_type_t auth); void directory_post_to_dirservers(uint8_t dir_purpose, uint8_t router_purpose, - authority_type_t type, const char *payload, + dirinfo_type_t type, const char *payload, size_t payload_len, size_t extrainfo_len); void directory_get_from_dirserver(uint8_t dir_purpose, uint8_t router_purpose, const char *resource, @@ -49,7 +48,7 @@ int connection_dir_reached_eof(dir_connection_t *conn); int connection_dir_process_inbuf(dir_connection_t *conn); int connection_dir_finished_flushing(dir_connection_t *conn); int connection_dir_finished_connecting(dir_connection_t *conn); -void connection_dir_request_failed(dir_connection_t *conn); +void connection_dir_about_to_close(dir_connection_t *dir_conn); void directory_initiate_command(const char *address, const tor_addr_t *addr, uint16_t or_port, uint16_t dir_port, int supports_conditional_consensus, diff --git a/src/or/dirserv.c b/src/or/dirserv.c index ec848a64b1..0ea1ef6489 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #define DIRSERV_PRIVATE @@ -44,6 +44,8 @@ extern time_t time_of_process_start; /* from main.c */ +extern long stats_n_seconds_working; /* from main.c */ + /** Do we need to regenerate the v1 directory when someone asks for it? */ static time_t the_directory_is_dirty = 1; /** Do we need to regenerate the v1 runningrouters document when somebody @@ -210,7 +212,7 @@ dirserv_load_fingerprint_file(void) authdir_config_t *fingerprint_list_new; int result; config_line_t *front=NULL, *list; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); fname = get_datadir_fname("approved-routers"); log_info(LD_GENERAL, @@ -516,14 +518,15 @@ dirserv_router_has_valid_address(routerinfo_t *ri) if (get_options()->DirAllowPrivateAddresses) return 0; /* whatever it is, we're fine with it */ if (!tor_inet_aton(ri->address, &iaddr)) { - log_info(LD_DIRSERV,"Router '%s' published non-IP address '%s'. Refusing.", - ri->nickname, ri->address); + log_info(LD_DIRSERV,"Router %s published non-IP address '%s'. Refusing.", + router_describe(ri), + ri->address); return -1; } if (is_internal_IP(ntohl(iaddr.s_addr), 0)) { log_info(LD_DIRSERV, - "Router '%s' published internal IP address '%s'. Refusing.", - ri->nickname, ri->address); + "Router %s published internal IP address '%s'. Refusing.", + router_describe(ri), ri->address); return -1; /* it's a private IP, we should reject it */ } return 0; @@ -552,10 +555,11 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, /* Is there too much clock skew? */ now = time(NULL); if (ri->cache_info.published_on > now+ROUTER_ALLOW_SKEW) { - log_fn(severity, LD_DIRSERV, "Publication time for nickname '%s' is too " + log_fn(severity, LD_DIRSERV, "Publication time for %s is too " "far (%d minutes) in the future; possible clock skew. Not adding " "(%s)", - ri->nickname, (int)((ri->cache_info.published_on-now)/60), + router_describe(ri), + (int)((ri->cache_info.published_on-now)/60), esc_router_info(ri)); *msg = "Rejected: Your clock is set too far in the future, or your " "timezone is not correct."; @@ -563,9 +567,10 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, } if (ri->cache_info.published_on < now-ROUTER_MAX_AGE_TO_PUBLISH) { log_fn(severity, LD_DIRSERV, - "Publication time for router with nickname '%s' is too far " + "Publication time for %s is too far " "(%d minutes) in the past. Not adding (%s)", - ri->nickname, (int)((now-ri->cache_info.published_on)/60), + router_describe(ri), + (int)((now-ri->cache_info.published_on)/60), esc_router_info(ri)); *msg = "Rejected: Server is expired, or your clock is too far in the past," " or your timezone is not correct."; @@ -573,9 +578,10 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg, } if (dirserv_router_has_valid_address(ri) < 0) { log_fn(severity, LD_DIRSERV, - "Router with nickname '%s' has invalid address '%s'. " + "Router %s has invalid address '%s'. " "Not adding (%s).", - ri->nickname, ri->address, + router_describe(ri), + ri->address, esc_router_info(ri)); *msg = "Rejected: Address is not an IP, or IP is a private address."; return -1; @@ -727,9 +733,9 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source) && router_differences_are_cosmetic(ri_old, ri) && !router_is_me(ri)) { log_info(LD_DIRSERV, - "Not replacing descriptor from '%s' (source: %s); " + "Not replacing descriptor from %s (source: %s); " "differences are cosmetic.", - ri->nickname, source); + router_describe(ri), source); *msg = "Not replacing router descriptor; no information has changed since " "the last one with this identity."; control_event_or_authdir_new_descriptor("DROPPED", @@ -829,13 +835,15 @@ directory_remove_invalid(void) SMARTLIST_FOREACH_BEGIN(nodes, node_t *, node) { const char *msg; routerinfo_t *ent = node->ri; + char description[NODE_DESC_BUF_LEN]; uint32_t r; if (!ent) continue; r = dirserv_router_get_status(ent, &msg); + router_get_description(description, ent); if (r & FP_REJECT) { - log_info(LD_DIRSERV, "Router '%s' is now rejected: %s", - ent->nickname, msg?msg:""); + log_info(LD_DIRSERV, "Router %s is now rejected: %s", + description, msg?msg:""); routerlist_remove(rl, ent, 0, time(NULL)); changed = 1; continue; @@ -843,33 +851,33 @@ directory_remove_invalid(void) #if 0 if (bool_neq((r & FP_NAMED), ent->auth_says_is_named)) { log_info(LD_DIRSERV, - "Router '%s' is now %snamed.", ent->nickname, + "Router %s is now %snamed.", description, (r&FP_NAMED)?"":"un"); ent->is_named = (r&FP_NAMED)?1:0; changed = 1; } if (bool_neq((r & FP_UNNAMED), ent->auth_says_is_unnamed)) { log_info(LD_DIRSERV, - "Router '%s' is now %snamed. (FP_UNNAMED)", ent->nickname, + "Router '%s' is now %snamed. (FP_UNNAMED)", description, (r&FP_NAMED)?"":"un"); ent->is_named = (r&FP_NUNAMED)?0:1; changed = 1; } #endif if (bool_neq((r & FP_INVALID), !node->is_valid)) { - log_info(LD_DIRSERV, "Router '%s' is now %svalid.", ent->nickname, + log_info(LD_DIRSERV, "Router '%s' is now %svalid.", description, (r&FP_INVALID) ? "in" : ""); node->is_valid = (r&FP_INVALID)?0:1; changed = 1; } if (bool_neq((r & FP_BADDIR), node->is_bad_directory)) { - log_info(LD_DIRSERV, "Router '%s' is now a %s directory", ent->nickname, + log_info(LD_DIRSERV, "Router '%s' is now a %s directory", description, (r & FP_BADDIR) ? "bad" : "good"); node->is_bad_directory = (r&FP_BADDIR) ? 1: 0; changed = 1; } if (bool_neq((r & FP_BADEXIT), node->is_bad_exit)) { - log_info(LD_DIRSERV, "Router '%s' is now a %s exit", ent->nickname, + log_info(LD_DIRSERV, "Router '%s' is now a %s exit", description, (r & FP_BADEXIT) ? "bad" : "good"); node->is_bad_exit = (r&FP_BADEXIT) ? 1: 0; changed = 1; @@ -965,7 +973,7 @@ running_long_enough_to_decide_unreachable(void) void dirserv_set_router_is_running(routerinfo_t *router, time_t now) { - /*XXXX022 This function is a mess. Separate out the part that calculates + /*XXXX023 This function is a mess. Separate out the part that calculates whether it's reachable and the part that tells rephist that the router was unreachable. */ @@ -992,8 +1000,18 @@ dirserv_set_router_is_running(routerinfo_t *router, time_t now) } if (!answer && running_long_enough_to_decide_unreachable()) { - /* not considered reachable. tell rephist. */ - rep_hist_note_router_unreachable(router->cache_info.identity_digest, now); + /* Not considered reachable. tell rephist about that. + + Because we launch a reachability test for each router every + REACHABILITY_TEST_CYCLE_PERIOD seconds, then the router has probably + been down since at least that time after we last successfully reached + it. + */ + time_t when = now; + if (router->last_reachable && + router->last_reachable + REACHABILITY_TEST_CYCLE_PERIOD < now) + when = router->last_reachable + REACHABILITY_TEST_CYCLE_PERIOD; + rep_hist_note_router_unreachable(router->cache_info.identity_digest, when); } node->is_running = answer; @@ -1014,7 +1032,7 @@ list_server_status_v1(smartlist_t *routers, char **router_status_out, smartlist_t *rs_entries; time_t now = time(NULL); time_t cutoff = now - ROUTER_MAX_AGE_TO_PUBLISH; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); /* We include v2 dir auths here too, because they need to answer * controllers. Eventually we'll deprecate this whole function; * see also networkstatus_getinfo_by_purpose(). */ @@ -1181,7 +1199,7 @@ dirserv_dump_directory_to_string(char **dir_out, /** Return 1 if we fetch our directory material directly from the * authorities, rather than from a mirror. */ int -directory_fetches_from_authorities(or_options_t *options) +directory_fetches_from_authorities(const or_options_t *options) { const routerinfo_t *me; uint32_t addr; @@ -1208,7 +1226,7 @@ directory_fetches_from_authorities(or_options_t *options) * on the "mirror" schedule rather than the "client" schedule. */ int -directory_fetches_dir_info_early(or_options_t *options) +directory_fetches_dir_info_early(const or_options_t *options) { return directory_fetches_from_authorities(options); } @@ -1220,7 +1238,7 @@ directory_fetches_dir_info_early(or_options_t *options) * client as a directory guard. */ int -directory_fetches_dir_info_later(or_options_t *options) +directory_fetches_dir_info_later(const or_options_t *options) { return options->UseBridges != 0; } @@ -1228,7 +1246,7 @@ directory_fetches_dir_info_later(or_options_t *options) /** Return 1 if we want to cache v2 dir info (each status file). */ int -directory_caches_v2_dir_info(or_options_t *options) +directory_caches_v2_dir_info(const or_options_t *options) { return options->DirPort != 0; } @@ -1237,7 +1255,7 @@ directory_caches_v2_dir_info(or_options_t *options) * and we're willing to serve them to others. Else return 0. */ int -directory_caches_dir_info(or_options_t *options) +directory_caches_dir_info(const or_options_t *options) { if (options->BridgeRelay || options->DirPort) return 1; @@ -1253,7 +1271,7 @@ directory_caches_dir_info(or_options_t *options) * requests via the "begin_dir" interface, which doesn't require * having any separate port open. */ int -directory_permits_begindir_requests(or_options_t *options) +directory_permits_begindir_requests(const or_options_t *options) { return options->BridgeRelay != 0 || options->DirPort != 0; } @@ -1262,7 +1280,7 @@ directory_permits_begindir_requests(or_options_t *options) * requests via the controller interface, which doesn't require * having any separate port open. */ int -directory_permits_controller_requests(or_options_t *options) +directory_permits_controller_requests(const or_options_t *options) { return options->DirPort != 0; } @@ -1272,7 +1290,8 @@ directory_permits_controller_requests(or_options_t *options) * lately. */ int -directory_too_idle_to_fetch_descriptors(or_options_t *options, time_t now) +directory_too_idle_to_fetch_descriptors(const or_options_t *options, + time_t now) { return !directory_caches_dir_info(options) && !options->FetchUselessDescriptors && @@ -1540,11 +1559,11 @@ dirserv_pick_cached_dir_obj(cached_dir_t *cache_src, cached_dir_t *auth_src, time_t dirty, cached_dir_t *(*regenerate)(void), const char *name, - authority_type_t auth_type) + dirinfo_type_t auth_type) { - or_options_t *options = get_options(); - int authority = (auth_type == V1_AUTHORITY && authdir_mode_v1(options)) || - (auth_type == V2_AUTHORITY && authdir_mode_v2(options)); + const or_options_t *options = get_options(); + int authority = (auth_type == V1_DIRINFO && authdir_mode_v1(options)) || + (auth_type == V2_DIRINFO && authdir_mode_v2(options)); if (!authority || authdir_mode_bridge(options)) { return cache_src; @@ -1573,7 +1592,7 @@ dirserv_get_directory(void) return dirserv_pick_cached_dir_obj(cached_directory, the_directory, the_directory_is_dirty, dirserv_regenerate_directory, - "v1 server directory", V1_AUTHORITY); + "v1 server directory", V1_DIRINFO); } /** Only called by v1 auth dirservers. @@ -1666,7 +1685,7 @@ dirserv_get_runningrouters(void) &cached_runningrouters, &the_runningrouters, runningrouters_is_dirty, generate_runningrouters, - "v1 network status list", V1_AUTHORITY); + "v1 network status list", V1_DIRINFO); } /** Return the latest downloaded consensus networkstatus in encoded, signed, @@ -1769,9 +1788,12 @@ dirserv_thinks_router_is_unreliable(time_t now, { if (need_uptime) { if (!enough_mtbf_info) { - /* XXX022 Once most authorities are on v3, we should change the rule from + /* XXX023 Once most authorities are on v3, we should change the rule from * "use uptime if we don't have mtbf data" to "don't advertise Stable on - * v3 if we don't have enough mtbf data." */ + * v3 if we don't have enough mtbf data." Or maybe not, since if we ever + * hit a point where we need to reset a lot of authorities at once, + * none of them would be in a position to declare Stable. + */ long uptime = real_uptime(router, now); if ((unsigned)uptime < stable_uptime && (unsigned)uptime < UPTIME_TO_GUARANTEE_STABLE) @@ -1803,12 +1825,30 @@ static int dirserv_thinks_router_is_hs_dir(const routerinfo_t *router, const node_t *node, time_t now) { - long uptime = real_uptime(router, now); + + long uptime; + + /* If we haven't been running for at least + * get_options()->MinUptimeHidServDirectoryV2 seconds, we can't + * have accurate data telling us a relay has been up for at least + * that long. We also want to allow a bit of slack: Reachability + * tests aren't instant. If we haven't been running long enough, + * trust the relay. */ + + if (stats_n_seconds_working > + get_options()->MinUptimeHidServDirectoryV2 * 1.1) + uptime = MIN(rep_hist_get_uptime(router->cache_info.identity_digest, now), + real_uptime(router, now)); + else + uptime = real_uptime(router, now); /* XXX We shouldn't need to check dir_port, but we do because of * bug 1693. In the future, once relays set wants_to_be_hs_dir * correctly, we can revert to only checking dir_port if router's * version is too old. */ + /* XXX Unfortunately, we need to keep checking dir_port until all + * *clients* suffering from bug 2722 are obsolete. The first version + * to fix the bug was 0.2.2.25-alpha. */ return (router->wants_to_be_hs_dir && router->dir_port && uptime > get_options()->MinUptimeHidServDirectoryV2 && node->is_running); @@ -2083,7 +2123,7 @@ routerstatus_format_entry(char *buf, size_t buf_len, /* This assert can fire for the control port, because * it can request NS documents before all descriptors * have been fetched. */ - if (memcmp(desc->cache_info.signed_descriptor_digest, + if (tor_memneq(desc->cache_info.signed_descriptor_digest, rs->descriptor_digest, DIGEST_LEN)) { char rl_d[HEX_DIGEST_LEN+1]; @@ -2099,7 +2139,7 @@ routerstatus_format_entry(char *buf, size_t buf_len, "(router %s)\n", rl_d, rs_d, id); - tor_assert(!memcmp(desc->cache_info.signed_descriptor_digest, + tor_assert(tor_memeq(desc->cache_info.signed_descriptor_digest, rs->descriptor_digest, DIGEST_LEN)); }; @@ -2201,9 +2241,9 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b) /* They're equal! Compare by identity digest, so there's a * deterministic order and we avoid flapping. */ - return memcmp(first->cache_info.identity_digest, - second->cache_info.identity_digest, - DIGEST_LEN); + return fast_memcmp(first->cache_info.identity_digest, + second->cache_info.identity_digest, + DIGEST_LEN); } /** Given a list of routerinfo_t in <b>routers</b>, return a new digestmap_t @@ -2212,7 +2252,7 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b) static digestmap_t * get_possible_sybil_list(const smartlist_t *routers) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); digestmap_t *omit_as_sybil; smartlist_t *routers_by_ip = smartlist_create(); uint32_t last_addr; @@ -2400,7 +2440,7 @@ measured_bw_line_parse(measured_bw_line_t *out, const char *orig_line) tor_free(line); return -1; } - strncpy(out->node_hex, cp, sizeof(out->node_hex)); + strlcpy(out->node_hex, cp, sizeof(out->node_hex)); got_node_id=1; } } while ((cp = tor_strtok_r(NULL, " \t", &strtok_state))); @@ -2512,7 +2552,7 @@ networkstatus_t * dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, authority_cert_t *cert) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); networkstatus_t *v3_out = NULL; uint32_t addr; char *hostname = NULL, *client_versions = NULL, *server_versions = NULL; @@ -2693,13 +2733,16 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, voter->sigs = smartlist_create(); voter->address = hostname; voter->addr = addr; - voter->dir_port = options->DirPort; - voter->or_port = options->ORPort; + voter->dir_port = router_get_advertised_dir_port(options, 0); + voter->or_port = router_get_advertised_or_port(options); voter->contact = tor_strdup(contact); if (options->V3AuthUseLegacyKey) { authority_cert_t *c = get_my_v3_legacy_cert(); if (c) { - crypto_pk_get_digest(c->identity_key, voter->legacy_id_digest); + if (crypto_pk_get_digest(c->identity_key, voter->legacy_id_digest)) { + log_warn(LD_BUG, "Unable to compute digest of legacy v3 identity key"); + memset(voter->legacy_id_digest, 0, DIGEST_LEN); + } } } @@ -2724,7 +2767,7 @@ generate_v2_networkstatus_opinion(void) char *status = NULL, *client_versions = NULL, *server_versions = NULL, *identity_pkey = NULL, *hostname = NULL; char *outp, *endp; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); char fingerprint[FINGERPRINT_LEN+1]; char published[ISO_TIME_LEN+1]; char digest[DIGEST_LEN]; @@ -2793,7 +2836,8 @@ generate_v2_networkstatus_opinion(void) "dir-options%s%s%s%s\n" "%s" /* client version line, server version line. */ "dir-signing-key\n%s", - hostname, fmt_addr32(addr), (int)options->DirPort, + hostname, fmt_addr32(addr), + (int)router_get_advertised_dir_port(options, 0), fingerprint, contact, published, @@ -2931,7 +2975,7 @@ dirserv_get_networkstatus_v2_fingerprints(smartlist_t *result, } else { SMARTLIST_FOREACH(router_get_trusted_dir_servers(), trusted_dir_server_t *, ds, - if (ds->type & V2_AUTHORITY) + if (ds->type & V2_DIRINFO) smartlist_add(result, tor_memdup(ds->digest, DIGEST_LEN))); } smartlist_sort_digests(result); @@ -2997,6 +3041,8 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key, SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r, smartlist_add(fps_out, tor_memdup(r->cache_info.identity_digest, DIGEST_LEN))); + /* Treat "all" requests as if they were unencrypted */ + for_unencrypted_conn = 1; } else if (!strcmp(key, "authority")) { const routerinfo_t *ri = router_get_my_routerinfo(); if (ri) @@ -3141,20 +3187,28 @@ dirserv_orconn_tls_done(const char *address, tor_assert(address); tor_assert(digest_rcvd); - SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri, { + /* XXX023 Doing a loop like this is stupid. We should just look up the + * router by digest_rcvd, and see if address, orport, and as_advertised + * match up. -NM */ + SMARTLIST_FOREACH_BEGIN(rl->routers, routerinfo_t *, ri) { if (!strcasecmp(address, ri->address) && or_port == ri->or_port && as_advertised && - !memcmp(ri->cache_info.identity_digest, digest_rcvd, DIGEST_LEN)) { + fast_memeq(ri->cache_info.identity_digest, digest_rcvd, DIGEST_LEN)) { /* correct digest. mark this router reachable! */ if (!bridge_auth || ri->purpose == ROUTER_PURPOSE_BRIDGE) { - log_info(LD_DIRSERV, "Found router %s to be reachable. Yay.", - ri->nickname); - rep_hist_note_router_reachable(digest_rcvd, now); + tor_addr_t addr, *addrp=NULL; + log_info(LD_DIRSERV, "Found router %s to be reachable at %s:%d. Yay.", + router_describe(ri), + address, ri->or_port); + if (tor_addr_from_str(&addr, ri->address) != -1) + addrp = &addr; + else + log_warn(LD_BUG, "Couldn't parse IP address \"%s\"", ri->address); + rep_hist_note_router_reachable(digest_rcvd, addrp, or_port, now); ri->last_reachable = now; } } - }); - + } SMARTLIST_FOREACH_END(ri); /* FFFF Maybe we should reinstate the code that dumps routers with the same * addr/port but with nonmatching keys, but instead of dumping, we should * skip testing. */ @@ -3206,8 +3260,8 @@ dirserv_single_reachability_test(time_t now, routerinfo_t *router) * try a few connections per call. * * The load balancing is such that if we get called once every ten - * seconds, we will cycle through all the tests in 1280 seconds (a - * bit over 20 minutes). + * seconds, we will cycle through all the tests in + * REACHABILITY_TEST_CYCLE_PERIOD seconds (a bit over 20 minutes). */ void dirserv_test_reachability(time_t now) @@ -3233,11 +3287,11 @@ dirserv_test_reachability(time_t now) continue; /* bridge authorities only test reachability on bridges */ // if (router->cache_info.published_on > cutoff) // continue; - if ((((uint8_t)id_digest[0]) % 128) == ctr) { + if ((((uint8_t)id_digest[0]) % REACHABILITY_MODULO_PER_TEST) == ctr) { dirserv_single_reachability_test(now, router); } } SMARTLIST_FOREACH_END(router); - ctr = (ctr + 1) % 128; /* increment ctr */ + ctr = (ctr + 1) % REACHABILITY_MODULO_PER_TEST; /* increment ctr */ } /** Given a fingerprint <b>fp</b> which is either set if we're looking for a @@ -3252,7 +3306,7 @@ lookup_cached_dir_by_fp(const char *fp) d = strmap_get(cached_consensuses, "ns"); else if (memchr(fp, '\0', DIGEST_LEN) && cached_consensuses && (d = strmap_get(cached_consensuses, fp))) { - /* this here interface is a nasty hack XXXX022 */; + /* this here interface is a nasty hack XXXX023 */; } else if (router_digest_is_me(fp) && the_v2_networkstatus) d = the_v2_networkstatus; else if (cached_v2_networkstatus) diff --git a/src/or/dirserv.h b/src/or/dirserv.h index a779632430..d3fd90ceb5 100644 --- a/src/or/dirserv.h +++ b/src/or/dirserv.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -12,6 +12,18 @@ #ifndef _TOR_DIRSERV_H #define _TOR_DIRSERV_H +/** What fraction (1 over this number) of the relay ID space do we + * (as a directory authority) launch connections to at each reachability + * test? */ +#define REACHABILITY_MODULO_PER_TEST 128 + +/** How often (in seconds) do we launch reachability tests? */ +#define REACHABILITY_TEST_INTERVAL 10 + +/** How many seconds apart are the reachability tests for a given relay? */ +#define REACHABILITY_TEST_CYCLE_PERIOD \ + (REACHABILITY_TEST_INTERVAL*REACHABILITY_MODULO_PER_TEST) + /** Maximum length of an exit policy summary. */ #define MAX_EXITPOLICY_SUMMARY_LEN 1000 @@ -59,15 +71,16 @@ int list_server_status_v1(smartlist_t *routers, char **router_status_out, int dirserv_dump_directory_to_string(char **dir_out, crypto_pk_env_t *private_key); -int directory_fetches_from_authorities(or_options_t *options); -int directory_fetches_dir_info_early(or_options_t *options); -int directory_fetches_dir_info_later(or_options_t *options); -int directory_caches_v2_dir_info(or_options_t *options); +int directory_fetches_from_authorities(const or_options_t *options); +int directory_fetches_dir_info_early(const or_options_t *options); +int directory_fetches_dir_info_later(const or_options_t *options); +int directory_caches_v2_dir_info(const or_options_t *options); #define directory_caches_v1_dir_info(o) directory_caches_v2_dir_info(o) -int directory_caches_dir_info(or_options_t *options); -int directory_permits_begindir_requests(or_options_t *options); -int directory_permits_controller_requests(or_options_t *options); -int directory_too_idle_to_fetch_descriptors(or_options_t *options, time_t now); +int directory_caches_dir_info(const or_options_t *options); +int directory_permits_begindir_requests(const or_options_t *options); +int directory_permits_controller_requests(const or_options_t *options); +int directory_too_idle_to_fetch_descriptors(const or_options_t *options, + time_t now); void directory_set_dirty(void); cached_dir_t *dirserv_get_directory(void); diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 1cb35637d7..bf34c62af3 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #define DIRVOTE_PRIVATE @@ -50,7 +50,7 @@ static int dirvote_publish_consensus(void); static char *make_consensus_method_list(int low, int high, const char *sep); /** The highest consensus method that we currently support. */ -#define MAX_SUPPORTED_CONSENSUS_METHOD 10 +#define MAX_SUPPORTED_CONSENSUS_METHOD 11 /** Lowest consensus method that contains a 'directory-footer' marker */ #define MIN_METHOD_FOR_FOOTER 9 @@ -337,7 +337,7 @@ static int _compare_votes_by_authority_id(const void **_a, const void **_b) { const networkstatus_t *a = *_a, *b = *_b; - return memcmp(get_voter(a)->identity_digest, + return fast_memcmp(get_voter(a)->identity_digest, get_voter(b)->identity_digest, DIGEST_LEN); } @@ -354,7 +354,7 @@ _compare_dir_src_ents_by_authority_id(const void **_a, const void **_b) a_id = a->is_legacy ? a_v->legacy_id_digest : a_v->identity_digest; b_id = b->is_legacy ? b_v->legacy_id_digest : b_v->identity_digest; - return memcmp(a_id, b_id, DIGEST_LEN); + return fast_memcmp(a_id, b_id, DIGEST_LEN); } /** Given a sorted list of strings <b>in</b>, add every member to <b>out</b> @@ -391,11 +391,12 @@ static int compare_vote_rs(const vote_routerstatus_t *a, const vote_routerstatus_t *b) { int r; - if ((r = memcmp(a->status.identity_digest, b->status.identity_digest, + if ((r = fast_memcmp(a->status.identity_digest, b->status.identity_digest, DIGEST_LEN))) return r; - if ((r = memcmp(a->status.descriptor_digest, b->status.descriptor_digest, - DIGEST_LEN))) + if ((r = fast_memcmp(a->status.descriptor_digest, + b->status.descriptor_digest, + DIGEST_LEN))) return r; if ((r = (int)(b->status.published_on - a->status.published_on))) return r; @@ -441,9 +442,9 @@ compute_routerstatus_consensus(smartlist_t *votes, int consensus_method, if (cur && !compare_vote_rs(cur, rs)) { ++cur_n; } else { - if (cur_n > most_n || - (cur && cur_n == most_n && - cur->status.published_on > most_published)) { + if (cur && (cur_n > most_n || + (cur_n == most_n && + cur->status.published_on > most_published))) { most = cur; most_n = cur_n; most_published = cur->status.published_on; @@ -1584,7 +1585,7 @@ networkstatus_compute_consensus(smartlist_t *votes, * is the same flag as votes[j]->known_flags[b]. */ int *named_flag; /* Index of the flag "Named" for votes[j] */ int *unnamed_flag; /* Index of the flag "Unnamed" for votes[j] */ - int chosen_named_idx, chosen_unnamed_idx; + int chosen_named_idx; strmap_t *name_to_id_map = strmap_new(); char conflict[DIGEST_LEN]; @@ -1602,7 +1603,6 @@ networkstatus_compute_consensus(smartlist_t *votes, for (i = 0; i < smartlist_len(votes); ++i) unnamed_flag[i] = named_flag[i] = -1; chosen_named_idx = smartlist_string_pos(flags, "Named"); - chosen_unnamed_idx = smartlist_string_pos(flags, "Unnamed"); /* Build the flag index. */ SMARTLIST_FOREACH(votes, networkstatus_t *, v, @@ -1641,7 +1641,7 @@ networkstatus_compute_consensus(smartlist_t *votes, strmap_set_lc(name_to_id_map, rs->status.nickname, rs->status.identity_digest); } else if (d != conflict && - memcmp(d, rs->status.identity_digest, DIGEST_LEN)) { + fast_memcmp(d, rs->status.identity_digest, DIGEST_LEN)) { /* Authorities disagree about this nickname. */ strmap_set_lc(name_to_id_map, rs->status.nickname, conflict); } else { @@ -1665,7 +1665,7 @@ networkstatus_compute_consensus(smartlist_t *votes, } else if (!d) { /* We have no name officially mapped to this digest. */ strmap_set_lc(name_to_id_map, rs->status.nickname, unknown); - } else if (!memcmp(d, rs->status.identity_digest, DIGEST_LEN)) { + } else if (fast_memeq(d, rs->status.identity_digest, DIGEST_LEN)) { /* Authorities disagree about this nickname. */ strmap_set_lc(name_to_id_map, rs->status.nickname, conflict); } else { @@ -1686,7 +1686,7 @@ networkstatus_compute_consensus(smartlist_t *votes, const char *chosen_name = NULL; int exitsummary_disagreement = 0; int is_named = 0, is_unnamed = 0, is_running = 0; - int is_guard = 0, is_exit = 0; + int is_guard = 0, is_exit = 0, is_bad_exit = 0; int naming_conflict = 0; int n_listing = 0; int i; @@ -1698,7 +1698,8 @@ networkstatus_compute_consensus(smartlist_t *votes, if (index[v_sl_idx] < size[v_sl_idx]) { rs = smartlist_get(v->routerstatus_list, index[v_sl_idx]); if (!lowest_id || - memcmp(rs->status.identity_digest, lowest_id, DIGEST_LEN) < 0) + fast_memcmp(rs->status.identity_digest, + lowest_id, DIGEST_LEN) < 0) lowest_id = rs->status.identity_digest; } }); @@ -1717,7 +1718,7 @@ networkstatus_compute_consensus(smartlist_t *votes, if (index[v_sl_idx] >= size[v_sl_idx]) continue; /* out of entries. */ rs = smartlist_get(v->routerstatus_list, index[v_sl_idx]); - if (memcmp(rs->status.identity_digest, lowest_id, DIGEST_LEN)) + if (fast_memcmp(rs->status.identity_digest, lowest_id, DIGEST_LEN)) continue; /* doesn't include this router. */ /* At this point, we know that we're looking at a routerstatus with * identity "lowest". @@ -1762,7 +1763,7 @@ networkstatus_compute_consensus(smartlist_t *votes, rs = compute_routerstatus_consensus(matching_descs, consensus_method, microdesc_digest); /* Copy bits of that into rs_out. */ - tor_assert(!memcmp(lowest_id, rs->status.identity_digest, DIGEST_LEN)); + tor_assert(fast_memeq(lowest_id, rs->status.identity_digest,DIGEST_LEN)); memcpy(rs_out.identity_digest, lowest_id, DIGEST_LEN); memcpy(rs_out.descriptor_digest, rs->status.descriptor_digest, DIGEST_LEN); @@ -1786,7 +1787,7 @@ networkstatus_compute_consensus(smartlist_t *votes, const char *d = strmap_get_lc(name_to_id_map, rs_out.nickname); if (!d) { is_named = is_unnamed = 0; - } else if (!memcmp(d, lowest_id, DIGEST_LEN)) { + } else if (fast_memeq(d, lowest_id, DIGEST_LEN)) { is_named = 1; is_unnamed = 0; } else { is_named = 0; is_unnamed = 1; @@ -1812,6 +1813,8 @@ networkstatus_compute_consensus(smartlist_t *votes, is_guard = 1; else if (!strcmp(fl, "Running")) is_running = 1; + else if (!strcmp(fl, "BadExit")) + is_bad_exit = 1; } } }); @@ -1838,6 +1841,11 @@ networkstatus_compute_consensus(smartlist_t *votes, rs_out.bandwidth = median_uint32(bandwidths, num_bandwidths); } + /* Fix bug 2203: Do not count BadExit nodes as Exits for bw weights */ + if (consensus_method >= 11) { + is_exit = is_exit && !is_bad_exit; + } + if (consensus_method >= MIN_METHOD_FOR_BW_WEIGHTS) { if (rs_out.has_bandwidth) { T += rs_out.bandwidth; @@ -1877,11 +1885,11 @@ networkstatus_compute_consensus(smartlist_t *votes, SMARTLIST_FOREACH(matching_descs, vote_routerstatus_t *, vsr, { /* Check if the vote where this status comes from had the * proper descriptor */ - tor_assert(!memcmp(rs_out.identity_digest, + tor_assert(fast_memeq(rs_out.identity_digest, vsr->status.identity_digest, DIGEST_LEN)); if (vsr->status.has_exitsummary && - !memcmp(rs_out.descriptor_digest, + fast_memeq(rs_out.descriptor_digest, vsr->status.descriptor_digest, DIGEST_LEN)) { tor_assert(vsr->status.exitsummary); @@ -2197,7 +2205,8 @@ networkstatus_add_detached_signatures(networkstatus_t *target, } for (alg = DIGEST_SHA1; alg < N_DIGEST_ALGORITHMS; ++alg) { if (!tor_mem_is_zero(digests->d[alg], DIGEST256_LEN)) { - if (!memcmp(target->digests.d[alg], digests->d[alg], DIGEST256_LEN)) { + if (fast_memeq(target->digests.d[alg], digests->d[alg], + DIGEST256_LEN)) { ++n_matches; } else { *msg_out = "Mismatched digest."; @@ -2495,7 +2504,7 @@ authority_cert_dup(authority_cert_t *cert) void dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); tor_assert(timing_out); @@ -2569,7 +2578,7 @@ static struct { /** Set voting_schedule to hold the timing for the next vote we should be * doing. */ void -dirvote_recalculate_timing(or_options_t *options, time_t now) +dirvote_recalculate_timing(const or_options_t *options, time_t now) { int interval, vote_delay, dist_delay; time_t start; @@ -2620,7 +2629,7 @@ dirvote_recalculate_timing(or_options_t *options, time_t now) /** Entry point: Take whatever voting actions are pending as of <b>now</b>. */ void -dirvote_act(or_options_t *options, time_t now) +dirvote_act(const or_options_t *options, time_t now) { if (!authdir_mode_v3(options)) return; @@ -2735,7 +2744,7 @@ dirvote_perform_vote(void) directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_VOTE, ROUTER_PURPOSE_GENERAL, - V3_AUTHORITY, + V3_DIRINFO, pending_vote->vote_body->dir, pending_vote->vote_body->dir_len, 0); log_notice(LD_DIR, "Vote posted."); @@ -2754,7 +2763,7 @@ dirvote_fetch_missing_votes(void) SMARTLIST_FOREACH(router_get_trusted_dir_servers(), trusted_dir_server_t *, ds, { - if (!(ds->type & V3_AUTHORITY)) + if (!(ds->type & V3_DIRINFO)) continue; if (!dirvote_get_vote(ds->v3_identity_digest, DGV_BY_ID|DGV_INCLUDE_PENDING)) { @@ -2867,7 +2876,7 @@ list_v3_auth_ids(void) char *keys; SMARTLIST_FOREACH(router_get_trusted_dir_servers(), trusted_dir_server_t *, ds, - if ((ds->type & V3_AUTHORITY) && + if ((ds->type & V3_DIRINFO) && !tor_digest_is_zero(ds->v3_identity_digest)) smartlist_add(known_v3_keys, tor_strdup(hex_str(ds->v3_identity_digest, DIGEST_LEN)))); @@ -2961,11 +2970,11 @@ dirvote_add_vote(const char *vote_body, const char **msg_out, int *status_out) /* Now see whether we already have a vote from this authority. */ SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, v, { - if (! memcmp(v->vote->cert->cache_info.identity_digest, + if (fast_memeq(v->vote->cert->cache_info.identity_digest, vote->cert->cache_info.identity_digest, DIGEST_LEN)) { networkstatus_voter_info_t *vi_old = get_voter(v->vote); - if (!memcmp(vi_old->vote_digest, vi->vote_digest, DIGEST_LEN)) { + if (fast_memeq(vi_old->vote_digest, vi->vote_digest, DIGEST_LEN)) { /* Ah, it's the same vote. Not a problem. */ log_info(LD_DIR, "Discarding a vote we already have (from %s).", vi->address); @@ -3062,11 +3071,11 @@ dirvote_compute_consensuses(void) if (!pending_vote_list) pending_vote_list = smartlist_create(); - n_voters = get_n_authorities(V3_AUTHORITY); + n_voters = get_n_authorities(V3_DIRINFO); n_votes = smartlist_len(pending_vote_list); if (n_votes <= n_voters/2) { log_warn(LD_DIR, "We don't have enough votes to generate a consensus: " - "%d of %d", n_votes, n_voters/2); + "%d of %d", n_votes, n_voters/2+1); goto err; } tor_assert(pending_vote_list); @@ -3115,8 +3124,12 @@ dirvote_compute_consensuses(void) authority_cert_t *cert = get_my_v3_legacy_cert(); legacy_sign = get_my_v3_legacy_signing_key(); if (cert) { - crypto_pk_get_digest(cert->identity_key, legacy_dbuf); - legacy_id_digest = legacy_dbuf; + if (crypto_pk_get_digest(cert->identity_key, legacy_dbuf)) { + log_warn(LD_BUG, + "Unable to compute digest of legacy v3 identity key"); + } else { + legacy_id_digest = legacy_dbuf; + } } } @@ -3197,7 +3210,7 @@ dirvote_compute_consensuses(void) directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_SIGNATURES, ROUTER_PURPOSE_GENERAL, - V3_AUTHORITY, + V3_DIRINFO, pending_consensus_signatures, strlen(pending_consensus_signatures), 0); log_notice(LD_DIR, "Signature(s) posted."); @@ -3462,23 +3475,23 @@ dirvote_get_vote(const char *fp, int flags) if (by_id) { if (pending_vote_list && include_pending) { SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, pv, - if (!memcmp(get_voter(pv->vote)->identity_digest, fp, DIGEST_LEN)) + if (fast_memeq(get_voter(pv->vote)->identity_digest, fp, DIGEST_LEN)) return pv->vote_body); } if (previous_vote_list && include_previous) { SMARTLIST_FOREACH(previous_vote_list, pending_vote_t *, pv, - if (!memcmp(get_voter(pv->vote)->identity_digest, fp, DIGEST_LEN)) + if (fast_memeq(get_voter(pv->vote)->identity_digest, fp, DIGEST_LEN)) return pv->vote_body); } } else { if (pending_vote_list && include_pending) { SMARTLIST_FOREACH(pending_vote_list, pending_vote_t *, pv, - if (!memcmp(pv->vote->digests.d[DIGEST_SHA1], fp, DIGEST_LEN)) + if (fast_memeq(pv->vote->digests.d[DIGEST_SHA1], fp, DIGEST_LEN)) return pv->vote_body); } if (previous_vote_list && include_previous) { SMARTLIST_FOREACH(previous_vote_list, pending_vote_t *, pv, - if (!memcmp(pv->vote->digests.d[DIGEST_SHA1], fp, DIGEST_LEN)) + if (fast_memeq(pv->vote->digests.d[DIGEST_SHA1], fp, DIGEST_LEN)) return pv->vote_body); } } @@ -3597,7 +3610,7 @@ vote_routerstatus_find_microdesc_hash(char *digest256_out, * the first part. */ while (1) { num_len = strspn(cp, "1234567890"); - if (num_len == mlen && !memcmp(mstr, cp, mlen)) { + if (num_len == mlen && fast_memeq(mstr, cp, mlen)) { /* This is the line. */ char buf[BASE64_DIGEST256_LEN+1]; /* XXXX ignores extraneous stuff if the digest is too long. This diff --git a/src/or/dirvote.h b/src/or/dirvote.h index 33213a88c6..b6746c6557 100644 --- a/src/or/dirvote.h +++ b/src/or/dirvote.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -19,9 +19,6 @@ /** Smallest allowable voting interval. */ #define MIN_VOTE_INTERVAL 300 -/** Precision multiplier for the Bw weights */ -#define BW_WEIGHT_SCALE 10000 - void dirvote_free_all(void); /* vote manipulation */ @@ -44,8 +41,8 @@ authority_cert_t *authority_cert_dup(authority_cert_t *cert); /* vote scheduling */ void dirvote_get_preferred_voting_intervals(vote_timing_t *timing_out); time_t dirvote_get_start_of_next_interval(time_t now, int interval); -void dirvote_recalculate_timing(or_options_t *options, time_t now); -void dirvote_act(or_options_t *options, time_t now); +void dirvote_recalculate_timing(const or_options_t *options, time_t now); +void dirvote_act(const or_options_t *options, time_t now); /* invoked on timers and by outside triggers. */ struct pending_vote_t * dirvote_add_vote(const char *vote_body, diff --git a/src/or/dns.c b/src/or/dns.c index 83d47914e4..5d86e81fa0 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -1,6 +1,6 @@ /* Copyright (c) 2003-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -54,12 +54,19 @@ struct evdns_request; evdns_config_windows_nameservers() #define evdns_base_set_option_(base, opt, val) \ evdns_set_option((opt),(val),DNS_OPTIONS_ALL) +/* Note: our internal eventdns.c, plus Libevent 1.4, used a 1 return to + * signify failure to launch a resolve. Libevent 2.0 uses a -1 return to + * signify a failure on a resolve, though if we're on Libevent 2.0, we should + * have event2/dns.h and never hit these macros. Regardless, 0 is success. */ #define evdns_base_resolve_ipv4(base, addr, options, cb, ptr) \ - ((evdns_resolve_ipv4(addr, options, cb, ptr)<0) ? NULL : ((void*)1)) -#define evdns_base_resolve_reverse(base, addr, options, cb, ptr) \ - ((evdns_resolve_reverse(addr, options, cb, ptr)<0) ? NULL : ((void*)1)) -#define evdns_base_resolve_reverse_ipv6(base, addr, options, cb, ptr) \ - ((evdns_resolve_reverse_ipv6(addr, options, cb, ptr)<0) ? NULL : ((void*)1)) + ((evdns_resolve_ipv4((addr), (options), (cb), (ptr))!=0) \ + ? NULL : ((void*)1)) +#define evdns_base_resolve_reverse(base, addr, options, cb, ptr) \ + ((evdns_resolve_reverse((addr), (options), (cb), (ptr))!=0) \ + ? NULL : ((void*)1)) +#define evdns_base_resolve_reverse_ipv6(base, addr, options, cb, ptr) \ + ((evdns_resolve_reverse_ipv6((addr), (options), (cb), (ptr))!=0) \ + ? NULL : ((void*)1)) #elif defined(LIBEVENT_VERSION_NUMBER) && LIBEVENT_VERSION_NUMBER < 0x02000303 #define evdns_base_set_option_(base, opt, val) \ @@ -269,7 +276,7 @@ dns_init(void) int dns_reset(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (! server_mode(options)) { if (!the_evdns_base) { @@ -1019,7 +1026,7 @@ add_answer_to_cache(const char *address, uint8_t is_reverse, uint32_t addr, static INLINE int is_test_address(const char *address) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); return options->ServerDNSTestAddresses && smartlist_string_isin_case(options->ServerDNSTestAddresses, address); } @@ -1170,7 +1177,7 @@ evdns_err_is_transient(int err) static int configure_nameservers(int force) { - or_options_t *options; + const or_options_t *options; const char *conf_fname; struct stat st; int r; @@ -1199,7 +1206,7 @@ configure_nameservers(int force) struct sockaddr_storage ss; socklen = tor_addr_to_sockaddr(&addr, 0, (struct sockaddr *)&ss, sizeof(ss)); - if (socklen < 0) { + if (socklen <= 0) { log_warn(LD_BUG, "Couldn't convert outbound bind address to sockaddr." " Ignoring."); } else { @@ -1288,14 +1295,17 @@ configure_nameservers(int force) nameservers_configured = 1; if (nameserver_config_failed) { nameserver_config_failed = 0; - mark_my_descriptor_dirty(); + /* XXX the three calls to republish the descriptor might be producing + * descriptors that are only cosmetically different, especially on + * non-exit relays! -RD */ + mark_my_descriptor_dirty("dns resolvers back"); } return 0; err: nameservers_configured = 0; if (! nameserver_config_failed) { nameserver_config_failed = 1; - mark_my_descriptor_dirty(); + mark_my_descriptor_dirty("dns resolvers failed"); } return -1; } @@ -1515,7 +1525,7 @@ add_wildcarded_test_address(const char *address) "broken.", address, n); if (!dns_is_completely_invalid) { dns_is_completely_invalid = 1; - mark_my_descriptor_dirty(); + mark_my_descriptor_dirty("dns hijacking confirmed"); } if (!dns_wildcarded_test_address_notice_given) control_event_server_status(LOG_WARN, "DNS_USELESS"); @@ -1585,7 +1595,7 @@ launch_wildcard_check(int min_len, int max_len, const char *suffix) static void launch_test_addresses(int fd, short event, void *args) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); struct evdns_request *req; (void)fd; (void)event; diff --git a/src/or/dns.h b/src/or/dns.h index c4fd4d1fb7..25ff86e2c6 100644 --- a/src/or/dns.h +++ b/src/or/dns.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c index ad4f4122bc..f2c473dfc5 100644 --- a/src/or/dnsserv.c +++ b/src/or/dnsserv.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -19,7 +19,7 @@ #ifdef HAVE_EVENT2_DNS_H #include <event2/dns.h> #include <event2/dns_compat.h> -/* XXXX022 this implies we want an improved evdns */ +/* XXXX023 this implies we want an improved evdns */ #include <event2/dns_struct.h> #else #include "eventdns.h" @@ -95,8 +95,8 @@ evdns_server_callback(struct evdns_server_request *req, void *_data) } if (!q) { log_info(LD_APP, "None of the questions we got were ones we're willing " - "to support. Sending NODATA."); - evdns_server_request_respond(req, DNS_ERR_NONE); + "to support. Sending NOTIMPL."); + evdns_server_request_respond(req, DNS_ERR_NOTIMPL); return; } if (q->type != EVDNS_TYPE_A) { @@ -280,13 +280,14 @@ dnsserv_resolved(edge_connection_t *conn, conn->socks_request->command == SOCKS_COMMAND_RESOLVE) { evdns_server_request_add_a_reply(req, name, - 1, (char*)answer, ttl); + 1, answer, ttl); } else if (answer_type == RESOLVED_TYPE_HOSTNAME && + answer_len < 256 && conn->socks_request->command == SOCKS_COMMAND_RESOLVE_PTR) { char *ans = tor_strndup(answer, answer_len); evdns_server_request_add_ptr_reply(req, NULL, name, - (char*)answer, ttl); + ans, ttl); tor_free(ans); } else if (answer_type == RESOLVED_TYPE_ERROR) { err = DNS_ERR_NOTEXIST; @@ -305,7 +306,7 @@ void dnsserv_configure_listener(connection_t *conn) { tor_assert(conn); - tor_assert(conn->s >= 0); + tor_assert(SOCKET_OK(conn->s)); tor_assert(conn->type == CONN_TYPE_AP_DNS_LISTENER); conn->dns_server_port = diff --git a/src/or/dnsserv.h b/src/or/dnsserv.h index 5bf154ebb2..fcca868885 100644 --- a/src/or/dnsserv.h +++ b/src/or/dnsserv.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/or/eventdns.c b/src/or/eventdns.c index 4c6f60e89d..7fe376baff 100644 --- a/src/or/eventdns.c +++ b/src/or/eventdns.c @@ -461,7 +461,7 @@ sockaddr_eq(const struct sockaddr *sa1, const struct sockaddr *sa2, const struct sockaddr_in6 *sin1, *sin2; sin1 = (const struct sockaddr_in6 *)sa1; sin2 = (const struct sockaddr_in6 *)sa2; - if (memcmp(sin1->sin6_addr.s6_addr, sin2->sin6_addr.s6_addr, 16)) + if (tor_memneq(sin1->sin6_addr.s6_addr, sin2->sin6_addr.s6_addr, 16)) return 0; else if (include_port && sin1->sin6_port != sin2->sin6_port) return 0; @@ -1028,6 +1028,9 @@ request_parse(u8 *packet, ssize_t length, struct evdns_server_port *port, struct GET16(answers); GET16(authority); GET16(additional); + (void)additional; + (void)authority; + (void)answers; if (flags & 0x8000) return -1; /* Must not be an answer. */ flags &= 0x0110; /* Only RD and CD get preserved. */ @@ -1245,7 +1248,8 @@ nameserver_read(struct nameserver *ns) { for (;;) { const int r = - (int)recvfrom(ns->socket, packet, (socklen_t)sizeof(packet), 0, + (int)recvfrom(ns->socket, (void*)packet, + (socklen_t)sizeof(packet), 0, sa, &addrlen); if (r < 0) { int err = last_error(ns->socket); @@ -1276,7 +1280,7 @@ server_port_read(struct evdns_server_port *s) { for (;;) { addrlen = (socklen_t)sizeof(struct sockaddr_storage); - r = recvfrom(s->socket, packet, sizeof(packet), 0, + r = recvfrom(s->socket, (void*)packet, sizeof(packet), 0, (struct sockaddr*) &addr, &addrlen); if (r < 0) { int err = last_error(s->socket); @@ -1559,7 +1563,7 @@ evdns_request_data_build(const char *const name, const size_t name_len, /* exported function */ struct evdns_server_port * -evdns_add_server_port(int socket, int is_tcp, evdns_request_callback_fn_type cb, void *user_data) +evdns_add_server_port(tor_socket_t socket, int is_tcp, evdns_request_callback_fn_type cb, void *user_data) { struct evdns_server_port *port; if (!(port = mm_malloc(sizeof(struct evdns_server_port)))) @@ -1667,7 +1671,7 @@ evdns_server_request_add_reply(struct evdns_server_request *_req, int section, c /* exported function */ int -evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl) +evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl) { return evdns_server_request_add_reply( req, EVDNS_ANSWER_SECTION, name, TYPE_A, CLASS_INET, @@ -1676,7 +1680,7 @@ evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *n /* exported function */ int -evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl) +evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl) { return evdns_server_request_add_reply( req, EVDNS_ANSWER_SECTION, name, TYPE_AAAA, CLASS_INET, @@ -1827,8 +1831,8 @@ evdns_server_request_respond(struct evdns_server_request *_req, int err) r = sendto(port->socket, req->response, req->response_len, 0, (struct sockaddr*) &req->addr, req->addrlen); if (r<0) { - int err = last_error(port->socket); - if (! error_is_eagain(err)) + int error = last_error(port->socket); + if (! error_is_eagain(error)) return -1; if (port->pending_replies) { @@ -1903,7 +1907,7 @@ server_request_free(struct server_request *req) if (req->port) { if (req->port->pending_replies == req) { - if (req->next_pending) + if (req->next_pending && req->next_pending != req) req->port->pending_replies = req->next_pending; else req->port->pending_replies = NULL; @@ -1998,7 +2002,7 @@ evdns_request_timeout_callback(int fd, short events, void *arg) { /* retransmit it */ /* Stop waiting for the timeout. No need to do this in * request_finished; that one already deletes the timeout event. - * XXXX021 port this change to libevent. */ + * XXXX023 port this change to libevent. */ del_timeout_event(req); evdns_request_transmit(req); } @@ -2012,7 +2016,8 @@ evdns_request_timeout_callback(int fd, short events, void *arg) { /* 2 other failure */ static int evdns_request_transmit_to(struct evdns_request *req, struct nameserver *server) { - const ssize_t r = send(server->socket, req->request, req->request_len, 0); + const ssize_t r = send(server->socket, (void*)req->request, + req->request_len, 0); if (r < 0) { int err = last_error(server->socket); if (error_is_eagain(err)) return 1; @@ -2251,7 +2256,7 @@ sockaddr_is_loopback(const struct sockaddr *addr) return (ntohl(sin->sin_addr.s_addr) & 0xff000000) == 0x7f000000; } else if (addr->sa_family == AF_INET6) { struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)addr; - return !memcmp(sin6->sin6_addr.s6_addr, LOOPBACK_S6, 16); + return fast_memeq(sin6->sin6_addr.s6_addr, LOOPBACK_S6, 16); } return 0; } @@ -2286,7 +2291,7 @@ _evdns_nameserver_add_impl(const struct sockaddr *address, evtimer_set(&ns->timeout_event, nameserver_prod_callback, ns); - ns->socket = tor_open_socket(PF_INET, SOCK_DGRAM, 0); + ns->socket = tor_open_socket(address->sa_family, SOCK_DGRAM, 0); if (ns->socket < 0) { err = 1; goto out1; } #ifdef WIN32 { diff --git a/src/or/eventdns.h b/src/or/eventdns.h index bf3b64d08a..3ff8bba4b6 100644 --- a/src/or/eventdns.h +++ b/src/or/eventdns.h @@ -319,12 +319,12 @@ typedef void (*evdns_request_callback_fn_type)(struct evdns_server_request *, vo #define EVDNS_CLASS_INET 1 -struct evdns_server_port *evdns_add_server_port(int socket, int is_tcp, evdns_request_callback_fn_type callback, void *user_data); +struct evdns_server_port *evdns_add_server_port(tor_socket_t socket, int is_tcp, evdns_request_callback_fn_type callback, void *user_data); void evdns_close_server_port(struct evdns_server_port *port); int evdns_server_request_add_reply(struct evdns_server_request *req, int section, const char *name, int type, int class, int ttl, int datalen, int is_name, const char *data); -int evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl); -int evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl); +int evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl); +int evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl); int evdns_server_request_add_ptr_reply(struct evdns_server_request *req, struct in_addr *in, const char *inaddr_name, const char *hostname, int ttl); int evdns_server_request_add_cname_reply(struct evdns_server_request *req, const char *name, const char *cname, int ttl); diff --git a/src/or/eventdns_tor.h b/src/or/eventdns_tor.h index 141ff09f1e..6a178938b6 100644 --- a/src/or/eventdns_tor.h +++ b/src/or/eventdns_tor.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "orconfig.h" diff --git a/src/or/geoip.c b/src/or/geoip.c index 84681821b0..62c7a5c394 100644 --- a/src/or/geoip.c +++ b/src/or/geoip.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2010, The Tor Project, Inc. */ +/* Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -116,10 +116,10 @@ geoip_parse_entry(const char *line) ++line; if (*line == '#') return 0; - if (sscanf(line,"%u,%u,%2s", &low, &high, b) == 3) { + if (tor_sscanf(line,"%u,%u,%2s", &low, &high, b) == 3) { geoip_add_entry(low, high, b); return 0; - } else if (sscanf(line,"\"%u\",\"%u\",\"%2s\",", &low, &high, b) == 3) { + } else if (tor_sscanf(line,"\"%u\",\"%u\",\"%2s\",", &low, &high, b) == 3) { geoip_add_entry(low, high, b); return 0; } else { @@ -162,7 +162,7 @@ _geoip_compare_key_to_entry(const void *_key, const void **_member) /** Return 1 if we should collect geoip stats on bridge users, and * include them in our extrainfo descriptor. Else return 0. */ int -should_record_bridge_info(or_options_t *options) +should_record_bridge_info(const or_options_t *options) { return options->BridgeRelay && options->BridgeRecordUsageByCountry; } @@ -199,7 +199,7 @@ init_geoip_countries(void) * with '#' (comments). */ int -geoip_load_file(const char *filename, or_options_t *options) +geoip_load_file(const char *filename, const or_options_t *options) { FILE *f; const char *msg = ""; @@ -219,7 +219,7 @@ geoip_load_file(const char *filename, or_options_t *options) } geoip_entries = smartlist_create(); geoip_digest_env = crypto_new_digest_env(); - log_notice(LD_GENERAL, "Parsing GEOIP file."); + log_notice(LD_GENERAL, "Parsing GEOIP file %s.", filename); while (!feof(f)) { char buf[512]; if (fgets(buf, (int)sizeof(buf), f) == NULL) @@ -304,11 +304,18 @@ geoip_db_digest(void) typedef struct clientmap_entry_t { HT_ENTRY(clientmap_entry_t) node; uint32_t ipaddr; + /** Time when we last saw this IP address, in MINUTES since the epoch. + * + * (This will run out of space around 4011 CE. If Tor is still in use around + * 4000 CE, please remember to add more bits to last_seen_in_minutes.) */ unsigned int last_seen_in_minutes:30; unsigned int action:2; } clientmap_entry_t; -#define ACTION_MASK 3 +/** Largest allowable value for last_seen_in_minutes. (It's a 30-bit field, + * so it can hold up to (1u<<30)-1, or 0x3fffffffu. + */ +#define MAX_LAST_SEEN_IN_MINUTES 0X3FFFFFFFu /** Map from client IP address to last time seen. */ static HT_HEAD(clientmap, clientmap_entry_t) client_history = @@ -417,7 +424,7 @@ void geoip_note_client_seen(geoip_client_action_t action, uint32_t addr, time_t now) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); clientmap_entry_t lookup, *ent; if (action == GEOIP_CLIENT_CONNECT) { /* Only remember statistics as entry guard or as bridge. */ @@ -433,15 +440,16 @@ geoip_note_client_seen(geoip_client_action_t action, lookup.ipaddr = addr; lookup.action = (int)action; ent = HT_FIND(clientmap, &client_history, &lookup); - if (ent) { - ent->last_seen_in_minutes = now / 60; - } else { + if (! ent) { ent = tor_malloc_zero(sizeof(clientmap_entry_t)); ent->ipaddr = addr; - ent->last_seen_in_minutes = now / 60; ent->action = (int)action; HT_INSERT(clientmap, &client_history, ent); } + if (now / 60 <= (int)MAX_LAST_SEEN_IN_MINUTES && now >= 0) + ent->last_seen_in_minutes = (unsigned)(now/60); + else + ent->last_seen_in_minutes = 0; if (action == GEOIP_CLIENT_NETWORKSTATUS || action == GEOIP_CLIENT_NETWORKSTATUS_V2) { @@ -613,8 +621,9 @@ _dirreq_map_put(dirreq_map_entry_t *entry, dirreq_type_t type, tor_assert(entry->type == type); tor_assert(entry->dirreq_id == dirreq_id); - /* XXXX022 once we're sure the bug case never happens, we can switch - * to HT_INSERT */ + /* XXXX we could switch this to HT_INSERT some time, since it seems that + * this bug doesn't happen. But since this function doesn't seem to be + * critical-path, it's sane to leave it alone. */ old_ent = HT_REPLACE(dirreqmap, &dirreq_map, entry); if (old_ent && old_ent != entry) { log_warn(LD_BUG, "Error when putting directory request into local " @@ -981,7 +990,7 @@ geoip_dirreq_stats_write(time_t now) geoip_remove_old_clients(start_of_dirreq_stats_interval); statsdir = get_datadir_fname("stats"); - if (check_private_dir(statsdir, CPD_CREATE) < 0) + if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) goto done; filename = get_datadir_fname2("stats", "dirreq-stats"); data_v2 = geoip_get_client_history(GEOIP_CLIENT_NETWORKSTATUS_V2); @@ -1095,14 +1104,14 @@ geoip_bridge_stats_term(void) start_of_bridge_stats_interval = 0; } -/** Parse the bridge statistics as they are written to extra-info - * descriptors for being returned to controller clients. Return the - * controller string if successful, or NULL otherwise. */ -static char * -parse_bridge_stats_controller(const char *stats_str, time_t now) +/** Validate a bridge statistics string as it would be written to a + * current extra-info descriptor. Return 1 if the string is valid and + * recent enough, or 0 otherwise. */ +static int +validate_bridge_stats(const char *stats_str, time_t now) { char stats_end_str[ISO_TIME_LEN+1], stats_start_str[ISO_TIME_LEN+1], - *controller_str, *eos, *eol, *summary; + *eos; const char *BRIDGE_STATS_END = "bridge-stats-end "; const char *BRIDGE_IPS = "bridge-ips "; @@ -1116,63 +1125,90 @@ parse_bridge_stats_controller(const char *stats_str, time_t now) "bridge-stats-end YYYY-MM-DD HH:MM:SS (N s)" */ tmp = find_str_at_start_of_line(stats_str, BRIDGE_STATS_END); if (!tmp) - return NULL; + return 0; tmp += strlen(BRIDGE_STATS_END); if (strlen(tmp) < ISO_TIME_LEN + 6) - return NULL; + return 0; strlcpy(stats_end_str, tmp, sizeof(stats_end_str)); if (parse_iso_time(stats_end_str, &stats_end_time) < 0) - return NULL; + return 0; if (stats_end_time < now - (25*60*60) || stats_end_time > now + (1*60*60)) - return NULL; + return 0; seconds = (int)strtol(tmp + ISO_TIME_LEN + 2, &eos, 10); if (!eos || seconds < 23*60*60) - return NULL; + return 0; format_iso_time(stats_start_str, stats_end_time - seconds); /* Parse: "bridge-ips CC=N,CC=N,..." */ tmp = find_str_at_start_of_line(stats_str, BRIDGE_IPS); - if (tmp) { - tmp += strlen(BRIDGE_IPS); - tmp = eat_whitespace_no_nl(tmp); - eol = strchr(tmp, '\n'); - if (eol) - summary = tor_strndup(tmp, eol-tmp); - else - summary = tor_strdup(tmp); - } else { + if (!tmp) { /* Look if there is an empty "bridge-ips" line */ tmp = find_str_at_start_of_line(stats_str, BRIDGE_IPS_EMPTY_LINE); if (!tmp) - return NULL; - summary = tor_strdup(""); + return 0; } - tor_asprintf(&controller_str, - "TimeStarted=\"%s\" CountrySummary=%s", - stats_start_str, summary); - tor_free(summary); - return controller_str; + return 1; } /** Most recent bridge statistics formatted to be written to extra-info * descriptors. */ static char *bridge_stats_extrainfo = NULL; -/** Most recent bridge statistics formatted to be returned to controller - * clients. */ -static char *bridge_stats_controller = NULL; +/** Return a newly allocated string holding our bridge usage stats by country + * in a format suitable for inclusion in an extrainfo document. Return NULL on + * failure. */ +static char * +format_bridge_stats_extrainfo(time_t now) +{ + char *out = NULL, *data = NULL; + long duration = now - start_of_bridge_stats_interval; + char written[ISO_TIME_LEN+1]; + + if (duration < 0) + return NULL; + + format_iso_time(written, now); + data = geoip_get_client_history(GEOIP_CLIENT_CONNECT); + + tor_asprintf(&out, + "bridge-stats-end %s (%ld s)\n" + "bridge-ips %s\n", + written, duration, + data ? data : ""); + tor_free(data); + + return out; +} + +/** Return a newly allocated string holding our bridge usage stats by country + * in a format suitable for the answer to a controller request. Return NULL on + * failure. */ +static char * +format_bridge_stats_controller(time_t now) +{ + char *out = NULL, *data = NULL; + char started[ISO_TIME_LEN+1]; + (void) now; + + format_iso_time(started, start_of_bridge_stats_interval); + data = geoip_get_client_history(GEOIP_CLIENT_CONNECT); + + tor_asprintf(&out, + "TimeStarted=\"%s\" CountrySummary=%s", + started, data ? data : ""); + tor_free(data); + return out; +} /** Write bridge statistics to $DATADIR/stats/bridge-stats and return * when we should next try to write statistics. */ time_t geoip_bridge_stats_write(time_t now) { - char *statsdir = NULL, *filename = NULL, *data = NULL, - written[ISO_TIME_LEN+1], *out = NULL, *controller_str; - size_t len; + char *filename = NULL, *val = NULL, *statsdir = NULL; /* Check if 24 hours have passed since starting measurements. */ if (now < start_of_bridge_stats_interval + WRITE_STATS_INTERVAL) @@ -1181,64 +1217,54 @@ geoip_bridge_stats_write(time_t now) /* Discard all items in the client history that are too old. */ geoip_remove_old_clients(start_of_bridge_stats_interval); + /* Generate formatted string */ + val = format_bridge_stats_extrainfo(now); + if (val == NULL) + goto done; + + /* Update the stored value. */ + tor_free(bridge_stats_extrainfo); + bridge_stats_extrainfo = val; + start_of_bridge_stats_interval = now; + + /* Write it to disk. */ statsdir = get_datadir_fname("stats"); - if (check_private_dir(statsdir, CPD_CREATE) < 0) + if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) goto done; filename = get_datadir_fname2("stats", "bridge-stats"); - data = geoip_get_client_history(GEOIP_CLIENT_CONNECT); - format_iso_time(written, now); - len = strlen("bridge-stats-end (999999 s)\nbridge-ips \n") + - ISO_TIME_LEN + (data ? strlen(data) : 0) + 42; - out = tor_malloc(len); - if (tor_snprintf(out, len, "bridge-stats-end %s (%u s)\nbridge-ips %s\n", - written, (unsigned) (now - start_of_bridge_stats_interval), - data ? data : "") < 0) - goto done; - write_str_to_file(filename, out, 0); - controller_str = parse_bridge_stats_controller(out, now); - if (!controller_str) - goto done; - start_of_bridge_stats_interval = now; - tor_free(bridge_stats_extrainfo); - tor_free(bridge_stats_controller); - bridge_stats_extrainfo = out; - out = NULL; - bridge_stats_controller = controller_str; - control_event_clients_seen(controller_str); + + write_str_to_file(filename, bridge_stats_extrainfo, 0); + + /* Tell the controller, "hey, there are clients!" */ + { + char *controller_str = format_bridge_stats_controller(now); + if (controller_str) + control_event_clients_seen(controller_str); + tor_free(controller_str); + } done: tor_free(filename); tor_free(statsdir); - tor_free(data); - tor_free(out); - return start_of_bridge_stats_interval + - WRITE_STATS_INTERVAL; + + return start_of_bridge_stats_interval + WRITE_STATS_INTERVAL; } /** Try to load the most recent bridge statistics from disk, unless we - * have finished a measurement interval lately. */ + * have finished a measurement interval lately, and check whether they + * are still recent enough. */ static void load_bridge_stats(time_t now) { - char *statsdir, *fname=NULL, *contents, *controller_str; + char *fname, *contents; if (bridge_stats_extrainfo) return; - statsdir = get_datadir_fname("stats"); - if (check_private_dir(statsdir, CPD_CREATE) < 0) - goto done; + fname = get_datadir_fname2("stats", "bridge-stats"); contents = read_file_to_str(fname, RFTS_IGNORE_MISSING, NULL); - if (contents) { - controller_str = parse_bridge_stats_controller(contents, now); - if (controller_str) { - bridge_stats_extrainfo = contents; - bridge_stats_controller = controller_str; - } else { - tor_free(contents); - } - } - done: + if (contents && validate_bridge_stats(contents, now)) + bridge_stats_extrainfo = contents; + tor_free(fname); - tor_free(statsdir); } /** Return most recent bridge statistics for inclusion in extra-info @@ -1250,13 +1276,12 @@ geoip_get_bridge_stats_extrainfo(time_t now) return bridge_stats_extrainfo; } -/** Return most recent bridge statistics to be returned to controller - * clients, or NULL if we don't have recent bridge statistics. */ -const char * +/** Return a new string containing the recent bridge statistics to be returned + * to controller clients, or NULL if we don't have any bridge statistics. */ +char * geoip_get_bridge_stats_controller(time_t now) { - load_bridge_stats(now); - return bridge_stats_controller; + return format_bridge_stats_controller(now); } /** Start time of entry stats or 0 if we're not collecting entry @@ -1299,7 +1324,7 @@ geoip_entry_stats_write(time_t now) geoip_remove_old_clients(start_of_entry_stats_interval); statsdir = get_datadir_fname("stats"); - if (check_private_dir(statsdir, CPD_CREATE) < 0) + if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) goto done; filename = get_datadir_fname2("stats", "entry-stats"); data = geoip_get_client_history(GEOIP_CLIENT_CONNECT); diff --git a/src/or/geoip.h b/src/or/geoip.h index ac38c00da5..b50da74dc3 100644 --- a/src/or/geoip.h +++ b/src/or/geoip.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -15,8 +15,8 @@ #ifdef GEOIP_PRIVATE int geoip_parse_entry(const char *line); #endif -int should_record_bridge_info(or_options_t *options); -int geoip_load_file(const char *filename, or_options_t *options); +int should_record_bridge_info(const or_options_t *options); +int geoip_load_file(const char *filename, const or_options_t *options); int geoip_get_country_by_ip(uint32_t ipaddr); int geoip_get_n_countries(void); const char *geoip_get_country_name(country_t num); @@ -52,7 +52,7 @@ void geoip_bridge_stats_init(time_t now); time_t geoip_bridge_stats_write(time_t now); void geoip_bridge_stats_term(void); const char *geoip_get_bridge_stats_extrainfo(time_t); -const char *geoip_get_bridge_stats_controller(time_t); +char *geoip_get_bridge_stats_controller(time_t); #endif diff --git a/src/or/hibernate.c b/src/or/hibernate.c index 929c1994c3..f03433a279 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -134,7 +134,7 @@ static void accounting_set_wakeup_time(void); * options->AccountingStart. Return 0 on success, -1 on failure. If * <b>validate_only</b> is true, do not change the current settings. */ int -accounting_parse_options(or_options_t *options, int validate_only) +accounting_parse_options(const or_options_t *options, int validate_only) { time_unit_t unit; int ok, idx; @@ -249,7 +249,7 @@ accounting_parse_options(or_options_t *options, int validate_only) * hibernate, return 1, else return 0. */ int -accounting_is_enabled(or_options_t *options) +accounting_is_enabled(const or_options_t *options) { if (options->AccountingMax) return 1; @@ -378,7 +378,8 @@ configure_accounting(time_t now) /* We are in the interval we thought we were in. Do nothing.*/ interval_end_time = start_of_accounting_period_after(interval_start_time); } else { - long duration = length_of_accounting_period_containing(now); + long duration = + length_of_accounting_period_containing(interval_start_time); double delta = ((double)(s_now - interval_start_time)) / duration; if (-0.50 <= delta && delta <= 0.50) { /* The start of the period is now a little later or earlier than we @@ -410,7 +411,7 @@ static void update_expected_bandwidth(void) { uint64_t expected; - or_options_t *options= get_options(); + const or_options_t *options= get_options(); uint64_t max_configured = (options->RelayBandwidthRate > 0 ? options->RelayBandwidthRate : options->BandwidthRate) * 60; @@ -749,7 +750,7 @@ static void hibernate_begin(hibernate_state_t new_state, time_t now) { connection_t *conn; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (new_state == HIBERNATE_STATE_EXITING && hibernate_state != HIBERNATE_STATE_LIVE) { @@ -783,7 +784,8 @@ hibernate_begin(hibernate_state_t new_state, time_t now) /* XXX upload rendezvous service descriptors with no intro points */ if (new_state == HIBERNATE_STATE_EXITING) { - log_notice(LD_GENERAL,"Interrupt: will shut down in %d seconds. Interrupt " + log_notice(LD_GENERAL,"Interrupt: we have stopped accepting new " + "connections, and will shut down in %d seconds. Interrupt " "again to exit now.", options->ShutdownWaitLength); shutdown_time = time(NULL) + options->ShutdownWaitLength; } else { /* soft limit reached */ @@ -940,7 +942,8 @@ consider_hibernation(time_t now) if (hibernate_state == HIBERNATE_STATE_LIVE) { if (hibernate_soft_limit_reached()) { log_notice(LD_ACCT, - "Bandwidth soft limit reached; commencing hibernation."); + "Bandwidth soft limit reached; commencing hibernation. " + "No new conncetions will be accepted"); hibernate_begin(HIBERNATE_STATE_LOWBANDWIDTH, now); } else if (accounting_enabled && now < interval_wakeup_time) { format_local_iso_time(buf,interval_wakeup_time); diff --git a/src/or/hibernate.h b/src/or/hibernate.h index 687fadb669..b5826bced4 100644 --- a/src/or/hibernate.h +++ b/src/or/hibernate.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -12,8 +12,8 @@ #ifndef _TOR_HIBERNATE_H #define _TOR_HIBERNATE_H -int accounting_parse_options(or_options_t *options, int validate_only); -int accounting_is_enabled(or_options_t *options); +int accounting_parse_options(const or_options_t *options, int validate_only); +int accounting_is_enabled(const or_options_t *options); void configure_accounting(time_t now); void accounting_run_housekeeping(time_t now); void accounting_add_bytes(size_t n_read, size_t n_written, int seconds); diff --git a/src/or/main.c b/src/or/main.c index 08a93133ef..1baefc71bd 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -45,6 +45,7 @@ #include "router.h" #include "routerlist.h" #include "routerparse.h" +#include "status.h" #ifdef USE_DMALLOC #include <dmalloc.h> #include <openssl/crypto.h> @@ -67,9 +68,8 @@ void evdns_shutdown(int); static void dumpmemusage(int severity); static void dumpstats(int severity); /* log stats */ -static void conn_read_callback(int fd, short event, void *_conn); -static void conn_write_callback(int fd, short event, void *_conn); -static void signal_callback(int fd, short events, void *arg); +static void conn_read_callback(evutil_socket_t fd, short event, void *_conn); +static void conn_write_callback(evutil_socket_t fd, short event, void *_conn); static void second_elapsed_callback(periodic_timer_t *timer, void *args); static int conn_close_if_marked(int i); static void connection_start_reading_from_linked_conn(connection_t *conn); @@ -195,7 +195,7 @@ int connection_add_impl(connection_t *conn, int is_connecting) { tor_assert(conn); - tor_assert(conn->s >= 0 || + tor_assert(SOCKET_OK(conn->s) || conn->linked || (conn->type == CONN_TYPE_AP && TO_EDGE_CONN(conn)->is_dns_request)); @@ -206,7 +206,7 @@ connection_add_impl(connection_t *conn, int is_connecting) #ifdef USE_BUFFEREVENTS if (connection_type_uses_bufferevent(conn)) { - if (conn->s >= 0 && !conn->linked) { + if (SOCKET_OK(conn->s) && !conn->linked) { conn->bufev = bufferevent_socket_new( tor_libevent_get_base(), conn->s, @@ -225,7 +225,7 @@ connection_add_impl(connection_t *conn, int is_connecting) connection_configure_bufferevent_callbacks(conn); } else if (conn->linked && conn->linked_conn && connection_type_uses_bufferevent(conn->linked_conn)) { - tor_assert(conn->s < 0); + tor_assert(!(SOCKET_OK(conn->s))); if (!conn->bufev) { struct bufferevent *pair[2] = { NULL, NULL }; if (bufferevent_pair_new(tor_libevent_get_base(), @@ -255,7 +255,7 @@ connection_add_impl(connection_t *conn, int is_connecting) (void) is_connecting; #endif - if (!HAS_BUFFEREVENT(conn) && (conn->s >= 0 || conn->linked)) { + if (!HAS_BUFFEREVENT(conn) && (SOCKET_OK(conn->s) || conn->linked)) { conn->read_event = tor_event_new(tor_libevent_get_base(), conn->s, EV_READ|EV_PERSIST, conn_read_callback, conn); conn->write_event = tor_event_new(tor_libevent_get_base(), @@ -264,7 +264,7 @@ connection_add_impl(connection_t *conn, int is_connecting) } log_debug(LD_NET,"new conn type %s, socket %d, address %s, n_conns %d.", - conn_type_to_string(conn->type), conn->s, conn->address, + conn_type_to_string(conn->type), (int)conn->s, conn->address, smartlist_len(connection_array)); return 0; @@ -276,12 +276,12 @@ connection_unregister_events(connection_t *conn) { if (conn->read_event) { if (event_del(conn->read_event)) - log_warn(LD_BUG, "Error removing read event for %d", conn->s); + log_warn(LD_BUG, "Error removing read event for %d", (int)conn->s); tor_free(conn->read_event); } if (conn->write_event) { if (event_del(conn->write_event)) - log_warn(LD_BUG, "Error removing write event for %d", conn->s); + log_warn(LD_BUG, "Error removing write event for %d", (int)conn->s); tor_free(conn->write_event); } #ifdef USE_BUFFEREVENTS @@ -308,7 +308,7 @@ connection_remove(connection_t *conn) tor_assert(conn); log_debug(LD_NET,"removing socket %d (type %s), n_conns now %d", - conn->s, conn_type_to_string(conn->type), + (int)conn->s, conn_type_to_string(conn->type), smartlist_len(connection_array)); tor_assert(conn->conn_array_index >= 0); @@ -398,6 +398,20 @@ get_connection_array(void) return connection_array; } +/** Provides the traffic read and written over the life of the process. */ + +uint64_t +get_bytes_read(void) +{ + return stats_n_bytes_read; +} + +uint64_t +get_bytes_written(void) +{ + return stats_n_bytes_written; +} + /** Set the event mask on <b>conn</b> to <b>events</b>. (The event * mask is a bitmask whose bits are READ_EVENT and WRITE_EVENT) */ @@ -459,7 +473,7 @@ connection_stop_reading(connection_t *conn) if (event_del(conn->read_event)) log_warn(LD_NET, "Error from libevent setting read event state for %d " "to unwatched: %s", - conn->s, + (int)conn->s, tor_socket_strerror(tor_socket_errno(conn->s))); } } @@ -485,7 +499,7 @@ connection_start_reading(connection_t *conn) if (event_add(conn->read_event, NULL)) log_warn(LD_NET, "Error from libevent setting read event state for %d " "to watched: %s", - conn->s, + (int)conn->s, tor_socket_strerror(tor_socket_errno(conn->s))); } } @@ -525,7 +539,7 @@ connection_stop_writing(connection_t *conn) if (event_del(conn->write_event)) log_warn(LD_NET, "Error from libevent setting write event state for %d " "to unwatched: %s", - conn->s, + (int)conn->s, tor_socket_strerror(tor_socket_errno(conn->s))); } } @@ -552,7 +566,7 @@ connection_start_writing(connection_t *conn) if (event_add(conn->write_event, NULL)) log_warn(LD_NET, "Error from libevent setting write event state for %d " "to watched: %s", - conn->s, + (int)conn->s, tor_socket_strerror(tor_socket_errno(conn->s))); } } @@ -638,13 +652,13 @@ close_closeable_connections(void) /** Libevent callback: this gets invoked when (connection_t*)<b>conn</b> has * some data to read. */ static void -conn_read_callback(int fd, short event, void *_conn) +conn_read_callback(evutil_socket_t fd, short event, void *_conn) { connection_t *conn = _conn; (void)fd; (void)event; - log_debug(LD_NET,"socket %d wants to read.",conn->s); + log_debug(LD_NET,"socket %d wants to read.",(int)conn->s); /* assert_connection_ok(conn, time(NULL)); */ @@ -653,7 +667,7 @@ conn_read_callback(int fd, short event, void *_conn) #ifndef MS_WINDOWS log_warn(LD_BUG,"Unhandled error on read for %s connection " "(fd %d); removing", - conn_type_to_string(conn->type), conn->s); + conn_type_to_string(conn->type), (int)conn->s); tor_fragile_assert(); #endif if (CONN_IS_EDGE(conn)) @@ -670,13 +684,14 @@ conn_read_callback(int fd, short event, void *_conn) /** Libevent callback: this gets invoked when (connection_t*)<b>conn</b> has * some data to write. */ static void -conn_write_callback(int fd, short events, void *_conn) +conn_write_callback(evutil_socket_t fd, short events, void *_conn) { connection_t *conn = _conn; (void)fd; (void)events; - LOG_FN_CONN(conn, (LOG_DEBUG, LD_NET, "socket %d wants to write.",conn->s)); + LOG_FN_CONN(conn, (LOG_DEBUG, LD_NET, "socket %d wants to write.", + (int)conn->s)); /* assert_connection_ok(conn, time(NULL)); */ @@ -685,7 +700,7 @@ conn_write_callback(int fd, short events, void *_conn) /* this connection is broken. remove it. */ log_fn(LOG_WARN,LD_BUG, "unhandled error on write for %s connection (fd %d); removing", - conn_type_to_string(conn->type), conn->s); + conn_type_to_string(conn->type), (int)conn->s); tor_fragile_assert(); if (CONN_IS_EDGE(conn)) { /* otherwise we cry wolf about duplicate close */ @@ -742,8 +757,16 @@ conn_close_if_marked(int i) #endif log_debug(LD_NET,"Cleaning up connection (fd %d).",conn->s); + + /* If the connection we are about to close was trying to connect to + a proxy server and failed, the client won't be able to use that + proxy. We should warn the user about this. */ + if (conn->proxy_state == PROXY_INFANT) + log_failed_proxy_connection(conn); + IF_HAS_BUFFEREVENT(conn, goto unlink); - if ((conn->s >= 0 || conn->linked_conn) && connection_wants_to_flush(conn)) { + if ((SOCKET_OK(conn->s) || conn->linked_conn) && + connection_wants_to_flush(conn)) { /* s == -1 means it's an incomplete edge connection, or that the socket * has already been closed as unflushable. */ ssize_t sz = connection_bucket_write_limit(conn, now); @@ -752,7 +775,7 @@ conn_close_if_marked(int i) "Conn (addr %s, fd %d, type %s, state %d) marked, but wants " "to flush %d bytes. (Marked at %s:%d)", escaped_safe_str_client(conn->address), - conn->s, conn_type_to_string(conn->type), conn->state, + (int)conn->s, conn_type_to_string(conn->type), conn->state, (int)conn->outbuf_flushlen, conn->marked_for_close_file, conn->marked_for_close); if (conn->linked_conn) { @@ -783,7 +806,7 @@ conn_close_if_marked(int i) if (retval > 0) { LOG_FN_CONN(conn, (LOG_INFO,LD_NET, "Holding conn (fd %d) open for more flushing.", - conn->s)); + (int)conn->s)); conn->timestamp_lastwritten = now; /* reset so we can flush more */ } return 0; @@ -805,7 +828,7 @@ conn_close_if_marked(int i) "(fd %d, type %s, state %d, marked at %s:%d).", (int)connection_get_outbuf_len(conn), escaped_safe_str_client(conn->address), - conn->s, conn_type_to_string(conn->type), conn->state, + (int)conn->s, conn_type_to_string(conn->type), conn->state, conn->marked_for_close_file, conn->marked_for_close); } @@ -851,20 +874,18 @@ directory_all_unreachable(time_t now) void directory_info_has_arrived(time_t now, int from_cache) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (!router_have_minimum_dir_info()) { int quiet = directory_too_idle_to_fetch_descriptors(options, now); log(quiet ? LOG_INFO : LOG_NOTICE, LD_DIR, "I learned some more directory information, but not enough to " "build a circuit: %s", get_dir_info_status_string()); - update_router_descriptor_downloads(now); - update_microdesc_downloads(now); + update_all_descriptor_downloads(now); return; } else { if (directory_fetches_from_authorities(options)) { - update_router_descriptor_downloads(now); - update_microdesc_downloads(now); + update_all_descriptor_downloads(now); } /* if we have enough dir info, then update our guard status with @@ -898,7 +919,7 @@ run_connection_housekeeping(int i, time_t now) { cell_t cell; connection_t *conn = smartlist_get(connection_array, i); - or_options_t *options = get_options(); + const or_options_t *options = get_options(); or_connection_t *or_conn; int past_keepalive = now >= conn->timestamp_lastwritten + options->KeepalivePeriod; @@ -920,7 +941,7 @@ run_connection_housekeeping(int i, time_t now) (!DIR_CONN_IS_SERVER(conn) && conn->timestamp_lastread + DIR_CONN_MAX_STALL < now))) { log_info(LD_DIR,"Expiring wedged directory conn (fd %d, purpose %d)", - conn->s, conn->purpose); + (int)conn->s, conn->purpose); /* This check is temporary; it's to let us know whether we should consider * parsing partial serverdesc responses. */ if (conn->purpose == DIR_PURPOSE_FETCH_SERVERDESC && @@ -952,7 +973,7 @@ run_connection_housekeeping(int i, time_t now) * mark it now. */ log_info(LD_OR, "Expiring non-used OR connection to fd %d (%s:%d) [Too old].", - conn->s, conn->address, conn->port); + (int)conn->s, conn->address, conn->port); if (conn->state == OR_CONN_STATE_CONNECTING) connection_or_connect_failed(TO_OR_CONN(conn), END_OR_CONN_REASON_TIMEOUT, @@ -962,7 +983,7 @@ run_connection_housekeeping(int i, time_t now) if (past_keepalive) { /* We never managed to actually get this connection open and happy. */ log_info(LD_OR,"Expiring non-open OR connection to fd %d (%s:%d).", - conn->s,conn->address, conn->port); + (int)conn->s,conn->address, conn->port); connection_mark_for_close(conn); } } else if (we_are_hibernating() && !or_conn->n_circuits && @@ -970,13 +991,13 @@ run_connection_housekeeping(int i, time_t now) /* We're hibernating, there's no circuits, and nothing to flush.*/ log_info(LD_OR,"Expiring non-used OR connection to fd %d (%s:%d) " "[Hibernating or exiting].", - conn->s,conn->address, conn->port); + (int)conn->s,conn->address, conn->port); connection_mark_and_flush(conn); } else if (!or_conn->n_circuits && now >= or_conn->timestamp_last_added_nonpadding + IDLE_OR_CONN_TIMEOUT) { log_info(LD_OR,"Expiring non-used OR connection to fd %d (%s:%d) " - "[idle %d].", conn->s,conn->address, conn->port, + "[idle %d].", (int)conn->s,conn->address, conn->port, (int)(now - or_conn->timestamp_last_added_nonpadding)); connection_mark_for_close(conn); } else if ( @@ -985,7 +1006,7 @@ run_connection_housekeeping(int i, time_t now) log_fn(LOG_PROTOCOL_WARN,LD_PROTOCOL, "Expiring stuck OR connection to fd %d (%s:%d). (%d bytes to " "flush; %d seconds since last write)", - conn->s, conn->address, conn->port, + (int)conn->s, conn->address, conn->port, (int)connection_get_outbuf_len(conn), (int)(now-conn->timestamp_lastwritten)); connection_mark_for_close(conn); @@ -1004,10 +1025,20 @@ run_connection_housekeeping(int i, time_t now) static void signewnym_impl(time_t now) { + const or_options_t *options = get_options(); + if (!proxy_mode(options)) { + log_info(LD_CONTROL, "Ignoring SIGNAL NEWNYM because client functionality " + "is disabled."); + return; + } + circuit_expire_all_dirty_circs(); addressmap_clear_transient(); + rend_client_purge_state(); time_of_last_signewnym = now; signewnym_is_pending = 0; + + control_event_signal(SIGNEWNYM); } /** Perform regular maintenance tasks. This function gets run once per @@ -1034,9 +1065,11 @@ run_scheduled_events(time_t now) static time_t time_to_write_stats_files = 0; static time_t time_to_write_bridge_stats = 0; static time_t time_to_check_port_forwarding = 0; + static time_t time_to_launch_reachability_tests = 0; static int should_init_bridge_stats = 1; static time_t time_to_retry_dns_init = 0; - or_options_t *options = get_options(); + static time_t time_to_next_heartbeat = 0; + const or_options_t *options = get_options(); int is_server = server_mode(options); int i; int have_dir_info; @@ -1065,6 +1098,9 @@ run_scheduled_events(time_t now) signewnym_impl(now); } + /* 0c. If we've deferred log messages for the controller, handle them now */ + flush_pending_log_callbacks(); + /** 1a. Every MIN_ONION_KEY_LIFETIME seconds, rotate the onion keys, * shut down and restart all cpuworkers, and update the directory if * necessary. @@ -1082,11 +1118,8 @@ run_scheduled_events(time_t now) } if (time_to_try_getting_descriptors < now) { - update_router_descriptor_downloads(now); + update_all_descriptor_downloads(now); update_extrainfo_downloads(now); - update_microdesc_downloads(now); - if (options->UseBridges) - fetch_bridge_descriptors(options, now); if (router_have_minimum_dir_info()) time_to_try_getting_descriptors = now + LAZY_DESCRIPTOR_RETRY_INTERVAL; else @@ -1099,6 +1132,9 @@ run_scheduled_events(time_t now) now + DESCRIPTOR_FAILURE_RESET_INTERVAL; } + if (options->UseBridges) + fetch_bridge_descriptors(options, now); + /** 1b. Every MAX_SSL_KEY_LIFETIME seconds, we change our TLS context. */ if (!last_rotated_x509_certificate) last_rotated_x509_certificate = now; @@ -1132,8 +1168,10 @@ run_scheduled_events(time_t now) if (accounting_is_enabled(options)) accounting_run_housekeeping(now); - if (now % 10 == 0 && (authdir_mode_tests_reachability(options)) && - !we_are_hibernating()) { + if (time_to_launch_reachability_tests < now && + (authdir_mode_tests_reachability(options)) && + !we_are_hibernating()) { + time_to_launch_reachability_tests = now + REACHABILITY_TEST_INTERVAL; /* try to determine reachability of the other Tor relays */ dirserv_test_reachability(now); } @@ -1237,8 +1275,9 @@ run_scheduled_events(time_t now) /* Remove old information from rephist and the rend cache. */ if (time_to_clean_caches < now) { rep_history_clean(now - options->RephistTrackTime); - rend_cache_clean(); - rend_cache_clean_v2_descs_as_dir(); + rend_cache_clean(now); + rend_cache_clean_v2_descs_as_dir(now); + microdesc_cache_rebuild(NULL, 0); #define CLEAN_CACHES_INTERVAL (30*60) time_to_clean_caches = now + CLEAN_CACHES_INTERVAL; } @@ -1247,7 +1286,7 @@ run_scheduled_events(time_t now) /* If we're a server and initializing dns failed, retry periodically. */ if (time_to_retry_dns_init < now) { time_to_retry_dns_init = now + RETRY_DNS_INTERVAL; - if (server_mode(options) && has_dns_init_failed()) + if (is_server && has_dns_init_failed()) dns_init(); } @@ -1278,7 +1317,7 @@ run_scheduled_events(time_t now) consider_publishable_server(0); /* also, check religiously for reachability, if it's within the first * 20 minutes of our uptime. */ - if (server_mode(options) && + if (is_server && (can_complete_circuit || !any_predicted_circuits(now)) && !we_are_hibernating()) { if (stats_n_seconds_working < TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT) { @@ -1322,7 +1361,12 @@ run_scheduled_events(time_t now) * We do this before step 4, so it can try building more if * it's not comfortable with the number of available circuits. */ - circuit_expire_building(now); + /* XXXX022 If our circuit build timeout is much lower than a second, maybe + * we should do this more often? -NM + * It can't be lower than 1.5 seconds currently; see + * circuit_build_times_min_timeout(). -RD + */ + circuit_expire_building(); /** 3b. Also look at pending streams and prune the ones that 'began' * a long time ago but haven't gotten a 'connected' yet. @@ -1415,7 +1459,7 @@ run_scheduled_events(time_t now) if (time_to_check_port_forwarding < now && options->PortForwarding && - server_mode(options)) { + is_server) { #define PORT_FORWARDING_CHECK_INTERVAL 5 tor_check_port_forwarding(options->PortForwardingHelper, options->DirPort, @@ -1423,6 +1467,13 @@ run_scheduled_events(time_t now) now); time_to_check_port_forwarding = now+PORT_FORWARDING_CHECK_INTERVAL; } + + /** 11. write the heartbeat message */ + if (options->HeartbeatPeriod && + time_to_next_heartbeat < now) { + log_heartbeat(now); + time_to_next_heartbeat = now+options->HeartbeatPeriod; + } } /** Timer: used to invoke second_elapsed_callback() once per second. */ @@ -1445,7 +1496,7 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg) #ifdef USE_BUFFEREVENTS uint64_t cur_read,cur_written; #endif - or_options_t *options = get_options(); + const or_options_t *options = get_options(); (void)timer; (void)arg; @@ -1565,7 +1616,7 @@ ip_address_changed(int at_interface) reset_bandwidth_test(); stats_n_seconds_working = 0; router_reset_reachability(); - mark_my_descriptor_dirty(); + mark_my_descriptor_dirty("IP address changed"); } } @@ -1588,7 +1639,7 @@ dns_servers_relaunch_checks(void) static int do_hup(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); #ifdef USE_DMALLOC dmalloc_log_stats(); @@ -1602,7 +1653,6 @@ do_hup(void) router_reset_warnings(); routerlist_reset_warnings(); - addressmap_clear_transient(); /* first, reload config variables, in case they've changed */ if (options->ReloadTorrcOnSIGHUP) { /* no need to provide argc/v, they've been cached in init_from_config */ @@ -1774,46 +1824,7 @@ do_main_loop(void) } } -/** Used to implement the SIGNAL control command: if we accept - * <b>the_signal</b> as a remote pseudo-signal, act on it. */ -/* We don't re-use catch() here because: - * 1. We handle a different set of signals than those allowed in catch. - * 2. Platforms without signal() are unlikely to define SIGfoo. - * 3. The control spec is defined to use fixed numeric signal values - * which just happen to match the Unix values. - */ -void -control_signal_act(int the_signal) -{ - switch (the_signal) - { - case 1: - signal_callback(0,0,(void*)(uintptr_t)SIGHUP); - break; - case 2: - signal_callback(0,0,(void*)(uintptr_t)SIGINT); - break; - case 10: - signal_callback(0,0,(void*)(uintptr_t)SIGUSR1); - break; - case 12: - signal_callback(0,0,(void*)(uintptr_t)SIGUSR2); - break; - case 15: - signal_callback(0,0,(void*)(uintptr_t)SIGTERM); - break; - case SIGNEWNYM: - signal_callback(0,0,(void*)(uintptr_t)SIGNEWNYM); - break; - case SIGCLEARDNSCACHE: - signal_callback(0,0,(void*)(uintptr_t)SIGCLEARDNSCACHE); - break; - default: - log_warn(LD_BUG, "Unrecognized signal number %d.", the_signal); - break; - } -} - +#ifndef MS_WINDOWS /* Only called when we're willing to use signals */ /** Libevent callback: invoked when we get a signal. */ static void @@ -1822,6 +1833,15 @@ signal_callback(int fd, short events, void *arg) uintptr_t sig = (uintptr_t)arg; (void)fd; (void)events; + + process_signal(sig); +} +#endif + +/** Do the work of acting on a signal received in <b>sig</b> */ +void +process_signal(uintptr_t sig) +{ switch (sig) { case SIGTERM: @@ -1876,7 +1896,6 @@ signal_callback(int fd, short events, void *arg) (int)(MAX_SIGNEWNYM_RATE+time_of_last_signewnym-now)); } else { signewnym_impl(now); - control_event_signal(sig); } break; } @@ -1887,6 +1906,13 @@ signal_callback(int fd, short events, void *arg) } } +/** Returns Tor's uptime. */ +long +get_uptime(void) +{ + return stats_n_seconds_working; +} + extern uint64_t rephist_total_alloc; extern uint32_t rephist_total_num; @@ -1922,7 +1948,7 @@ dumpstats(int severity) int i = conn_sl_idx; log(severity, LD_GENERAL, "Conn %d (socket %d) type %d (%s), state %d (%s), created %d secs ago", - i, conn->s, conn->type, conn_type_to_string(conn->type), + i, (int)conn->s, conn->type, conn_type_to_string(conn->type), conn->state, conn_state_to_string(conn->type, conn->state), (int)(now - conn->timestamp_created)); if (!connection_is_listener(conn)) { @@ -2154,7 +2180,7 @@ static tor_lockfile_t *lockfile = NULL; * return -1 if we can't get the lockfile. Return 0 on success. */ int -try_locking(or_options_t *options, int err_if_locked) +try_locking(const or_options_t *options, int err_if_locked) { if (lockfile) return 0; @@ -2268,13 +2294,15 @@ tor_free_all(int postfork) void tor_cleanup(void) { - or_options_t *options = get_options(); - /* Remove our pid file. We don't care if there was an error when we - * unlink, nothing we could do about it anyways. */ + const or_options_t *options = get_options(); if (options->command == CMD_RUN_TOR) { time_t now = time(NULL); + /* Remove our pid file. We don't care if there was an error when we + * unlink, nothing we could do about it anyways. */ if (options->PidFile) unlink(options->PidFile); + if (options->ControlPortWriteToFile) + unlink(options->ControlPortWriteToFile); if (accounting_is_enabled(options)) accounting_record_bandwidth_usage(now, get_or_state()); or_state_mark_dirty(get_or_state(), 0); /* force an immediate save. */ @@ -2402,6 +2430,19 @@ tor_main(int argc, char *argv[]) } #endif +#ifdef MS_WINDOWS + /* Call SetProcessDEPPolicy to permanently enable DEP. + The function will not resolve on earlier versions of Windows, + and failure is not dangerous. */ + HMODULE hMod = GetModuleHandleA("Kernel32.dll"); + if (hMod) { + typedef BOOL (WINAPI *PSETDEP)(DWORD); + PSETDEP setdeppolicy = (PSETDEP)GetProcAddress(hMod, + "SetProcessDEPPolicy"); + if (setdeppolicy) setdeppolicy(1); /* PROCESS_DEP_ENABLE */ + } +#endif + update_approx_time(time(NULL)); tor_threads_init(); init_logging(); diff --git a/src/or/main.h b/src/or/main.h index 10b8aad0fb..db251356fd 100644 --- a/src/or/main.h +++ b/src/or/main.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -24,11 +24,15 @@ void add_connection_to_closeable_list(connection_t *conn); int connection_is_on_closeable_list(connection_t *conn); smartlist_t *get_connection_array(void); +uint64_t get_bytes_read(void); +uint64_t get_bytes_written(void); +/** Bitmask for events that we can turn on and off with + * connection_watch_events. */ typedef enum watchable_events { /* Yes, it is intentional that these match Libevent's EV_READ and EV_WRITE */ - READ_EVENT=0x02, - WRITE_EVENT=0x04 + READ_EVENT=0x02, /**< We want to know when a connection is readable */ + WRITE_EVENT=0x04 /**< We want to know when a connection is writable */ } watchable_events_t; void connection_watch_events(connection_t *conn, watchable_events_t events); int connection_is_reading(connection_t *conn); @@ -47,10 +51,12 @@ void directory_info_has_arrived(time_t now, int from_cache); void ip_address_changed(int at_interface); void dns_servers_relaunch_checks(void); -void control_signal_act(int the_signal); +long get_uptime(void); + void handle_signals(int is_parent); +void process_signal(uintptr_t sig); -int try_locking(or_options_t *options, int err_if_locked); +int try_locking(const or_options_t *options, int err_if_locked); int have_lockfile(void); void release_lockfile(void); diff --git a/src/or/microdesc.c b/src/or/microdesc.c index e014cd0761..1b0c333dae 100644 --- a/src/or/microdesc.c +++ b/src/or/microdesc.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2010, The Tor Project, Inc. */ +/* Copyright (c) 2009-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "or.h" @@ -9,6 +9,7 @@ #include "networkstatus.h" #include "nodelist.h" #include "policies.h" +#include "router.h" #include "routerlist.h" #include "routerparse.h" @@ -54,7 +55,7 @@ _microdesc_hash(microdesc_t *md) static INLINE int _microdesc_eq(microdesc_t *a, microdesc_t *b) { - return !memcmp(a->digest, b->digest, DIGEST256_LEN); + return tor_memeq(a->digest, b->digest, DIGEST256_LEN); } HT_PROTOTYPE(microdesc_map, microdesc_t, node, @@ -133,7 +134,7 @@ get_microdesc_cache(void) * to allow, so we should reject any non-requested microdesc with a different * digest, and alter the list to contain only the digests of those microdescs * we didn't find. - * Return a list of the added microdescriptors. */ + * Return a newly allocated list of the added microdescriptors, or NULL */ smartlist_t * microdescs_add_to_cache(microdesc_cache_t *cache, const char *s, const char *eos, saved_location_t where, @@ -181,7 +182,7 @@ microdescs_add_to_cache(microdesc_cache_t *cache, } /* As microdescs_add_to_cache, but takes a list of micrdescriptors instead of - * a string to encode. Frees any members of <b>descriptors</b> that it does + * a string to decode. Frees any members of <b>descriptors</b> that it does * not add. */ smartlist_t * microdescs_add_list_to_cache(microdesc_cache_t *cache, @@ -214,6 +215,8 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache, if (md2->last_listed < md->last_listed) md2->last_listed = md->last_listed; microdesc_free(md); + if (where != SAVED_NOWHERE) + cache->bytes_dropped += size; continue; } @@ -235,6 +238,7 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache, md->no_save = no_save; HT_INSERT(microdesc_map, &cache->map, md); + md->held_in_map = 1; smartlist_add(added, md); ++cache->n_seen; cache->total_len_seen += md->bodylen; @@ -244,19 +248,14 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache, finish_writing_to_file(open_file); /*XXX Check me.*/ { - size_t old_content_len = - cache->cache_content ? cache->cache_content->size : 0; - if ((cache->journal_len > 16384 + old_content_len && - cache->journal_len > old_content_len / 2)) - microdesc_cache_rebuild(cache); - } - - { networkstatus_t *ns = networkstatus_get_latest_consensus(); if (ns && ns->flavor == FLAV_MICRODESC) SMARTLIST_FOREACH(added, microdesc_t *, md, nodelist_add_microdesc(md)); } + if (smartlist_len(added)) + router_dir_info_changed(); + return added; } @@ -268,6 +267,7 @@ microdesc_cache_clear(microdesc_cache_t *cache) for (entry = HT_START(microdesc_map, &cache->map); entry; entry = next) { microdesc_t *md = *entry; next = HT_NEXT_RMV(microdesc_map, &cache->map, entry); + md->held_in_map = 0; microdesc_free(md); } HT_CLEAR(microdesc_map, &cache->map); @@ -277,6 +277,7 @@ microdesc_cache_clear(microdesc_cache_t *cache) } cache->total_len_seen = 0; cache->n_seen = 0; + cache->bytes_dropped = 0; } /** Reload the contents of <b>cache</b> from disk. If it is empty, load it @@ -305,6 +306,7 @@ microdesc_cache_reload(microdesc_cache_t *cache) journal_content = read_file_to_str(cache->journal_fname, RFTS_IGNORE_MISSING, &st); if (journal_content) { + cache->journal_len = (size_t) st.st_size; added = microdescs_add_to_cache(cache, journal_content, journal_content+st.st_size, SAVED_IN_JOURNAL, 0, -1, NULL); @@ -316,6 +318,9 @@ microdesc_cache_reload(microdesc_cache_t *cache) } log_notice(LD_DIR, "Reloaded microdescriptor cache. Found %d descriptors.", total); + + microdesc_cache_rebuild(cache, 0 /* don't force */); + return 0; } @@ -351,6 +356,7 @@ microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force) ++dropped; victim = *mdp; mdp = HT_NEXT_RMV(microdesc_map, &cache->map, mdp); + victim->held_in_map = 0; bytes_dropped += victim->bodylen; microdesc_free(victim); } else { @@ -366,11 +372,30 @@ microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force) } } +static int +should_rebuild_md_cache(microdesc_cache_t *cache) +{ + const size_t old_len = + cache->cache_content ? cache->cache_content->size : 0; + const size_t journal_len = cache->journal_len; + const size_t dropped = cache->bytes_dropped; + + if (journal_len < 16384) + return 0; /* Don't bother, not enough has happened yet. */ + if (dropped > (journal_len + old_len) / 3) + return 1; /* We could save 1/3 or more of the currently used space. */ + if (journal_len > old_len / 2) + return 1; /* We should append to the regular file */ + + return 0; +} + /** Regenerate the main cache file for <b>cache</b>, clear the journal file, * and update every microdesc_t in the cache with pointers to its new - * location. */ + * location. If <b>force</b> is true, do this unconditionally. If + * <b>force</b> is false, do it only if we expect to save space on disk. */ int -microdesc_cache_rebuild(microdesc_cache_t *cache) +microdesc_cache_rebuild(microdesc_cache_t *cache, int force) { open_file_t *open_file; FILE *f; @@ -380,12 +405,20 @@ microdesc_cache_rebuild(microdesc_cache_t *cache) off_t off = 0; int orig_size, new_size; - log_info(LD_DIR, "Rebuilding the microdescriptor cache..."); + if (cache == NULL) { + cache = the_microdesc_cache; + if (cache == NULL) + return 0; + } /* Remove dead descriptors */ microdesc_cache_clean(cache, 0/*cutoff*/, 0/*force*/); - /* Calculate starting disk usage */ + if (!force && !should_rebuild_md_cache(cache)) + return 0; + + log_info(LD_DIR, "Rebuilding the microdescriptor cache..."); + orig_size = (int)(cache->cache_content ? cache->cache_content->size : 0); orig_size += (int)cache->journal_len; @@ -419,10 +452,11 @@ microdesc_cache_rebuild(microdesc_cache_t *cache) smartlist_add(wrote, md); } - finish_writing_to_file(open_file); /*XXX Check me.*/ - if (cache->cache_content) tor_munmap_file(cache->cache_content); + + finish_writing_to_file(open_file); /*XXX Check me.*/ + cache->cache_content = tor_mmap_file(cache->cache_fname); if (!cache->cache_content && smartlist_len(wrote)) { @@ -435,7 +469,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache) tor_assert(md->saved_location == SAVED_IN_CACHE); md->body = (char*)cache->cache_content->data + md->off; if (PREDICT_UNLIKELY( - md->bodylen < 9 || memcmp(md->body, "onion-key", 9) != 0)) { + md->bodylen < 9 || fast_memneq(md->body, "onion-key", 9) != 0)) { /* XXXX023 once bug 2022 is solved, we can kill this block and turn it * into just the tor_assert(!memcmp) */ off_t avail = cache->cache_content->size - md->off; @@ -447,7 +481,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache) " with \"onion-key\". Instead I got %s.", (int)md->off, escaped(bad_str)); tor_free(bad_str); - tor_assert(!memcmp(md->body, "onion-key", 9)); + tor_assert(fast_memeq(md->body, "onion-key", 9)); } } SMARTLIST_FOREACH_END(md); @@ -457,7 +491,7 @@ microdesc_cache_rebuild(microdesc_cache_t *cache) cache->journal_len = 0; cache->bytes_dropped = 0; - new_size = (int)cache->cache_content->size; + new_size = cache->cache_content ? (int)cache->cache_content->size : 0; log_info(LD_DIR, "Done rebuilding microdesc cache. " "Saved %d bytes; %d still used.", orig_size-new_size, new_size); @@ -472,7 +506,43 @@ microdesc_free(microdesc_t *md) { if (!md) return; - /* Must be removed from hash table! */ + + /* Make sure that the microdesc was really removed from the appropriate data + structures. */ + if (md->held_in_map) { + microdesc_cache_t *cache = get_microdesc_cache(); + microdesc_t *md2 = HT_FIND(microdesc_map, &cache->map, md); + if (md2 == md) { + log_warn(LD_BUG, "microdesc_free() called, but md was still in " + "microdesc_map"); + HT_REMOVE(microdesc_map, &cache->map, md); + } else { + log_warn(LD_BUG, "microdesc_free() called with held_in_map set, but " + "microdesc was not in the map."); + } + tor_fragile_assert(); + } + if (md->held_by_node) { + int found=0; + const smartlist_t *nodes = nodelist_get_list(); + SMARTLIST_FOREACH(nodes, node_t *, node, { + if (node->md == md) { + ++found; + node->md = NULL; + } + }); + if (found) { + log_warn(LD_BUG, "microdesc_free() called, but md was still referenced " + "%d node(s)", found); + } else { + log_warn(LD_BUG, "microdesc_free() called with held_by_node set, but " + "md was not refrenced by any nodes"); + } + tor_fragile_assert(); + } + //tor_assert(md->held_in_map == 0); + //tor_assert(md->held_by_node == 0); + if (md->onion_pkey) crypto_free_pk_env(md->onion_pkey); if (md->body && md->saved_location != SAVED_IN_CACHE) @@ -544,6 +614,8 @@ microdesc_list_missing_digest256(networkstatus_t *ns, microdesc_cache_t *cache, continue; if (skip && digestmap_get(skip, rs->descriptor_digest)) continue; + if (tor_mem_is_zero(rs->descriptor_digest, DIGEST256_LEN)) + continue; /* This indicates a bug somewhere XXXX023*/ /* XXXX Also skip if we're a noncache and wouldn't use this router. * XXXX NM Microdesc */ @@ -562,7 +634,7 @@ microdesc_list_missing_digest256(networkstatus_t *ns, microdesc_cache_t *cache, void update_microdesc_downloads(time_t now) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); networkstatus_t *consensus; smartlist_t *missing; digestmap_t *pending; @@ -576,11 +648,8 @@ update_microdesc_downloads(time_t now) if (!consensus) return; - if (!directory_caches_dir_info(options)) { - /* Right now, only caches fetch microdescriptors. - * XXXX NM Microdescs */ + if (!we_fetch_microdescriptors(options)) return; - } pending = digestmap_new(); list_pending_microdesc_downloads(pending); @@ -621,3 +690,52 @@ update_microdescs_from_networkstatus(time_t now) } SMARTLIST_FOREACH_END(rs); } +/** Return true iff we should prefer to use microdescriptors rather than + * routerdescs for building circuits. */ +int +we_use_microdescriptors_for_circuits(const or_options_t *options) +{ + int ret = options->UseMicrodescriptors; + if (ret == -1) { + /* UseMicrodescriptors is "auto"; we need to decide: */ +#if 0 + /* So we decide that we'll use microdescriptors iff we are not a server */ + ret = ! server_mode(options); +#else + /* We don't use microdescs for now: not enough caches are running + * 0.2.3.1-alpha */ + ret = 0; +#endif + } + return ret; +} + +/** Return true iff we should try to download microdescriptors at all. */ +int +we_fetch_microdescriptors(const or_options_t *options) +{ + if (directory_caches_dir_info(options)) + return 1; + return we_use_microdescriptors_for_circuits(options); +} + +/** Return true iff we should try to download router descriptors at all. */ +int +we_fetch_router_descriptors(const or_options_t *options) +{ + if (directory_caches_dir_info(options)) + return 1; + return ! we_use_microdescriptors_for_circuits(options); +} + +/** Return the consensus flavor we actually want to use to build circuits. */ +int +usable_consensus_flavor(void) +{ + if (we_use_microdescriptors_for_circuits(get_options())) { + return FLAV_MICRODESC; + } else { + return FLAV_NS; + } +} + diff --git a/src/or/microdesc.h b/src/or/microdesc.h index eda7008b91..72e4572f93 100644 --- a/src/or/microdesc.h +++ b/src/or/microdesc.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -23,7 +23,7 @@ smartlist_t *microdescs_add_list_to_cache(microdesc_cache_t *cache, int no_save); void microdesc_cache_clean(microdesc_cache_t *cache, time_t cutoff, int force); -int microdesc_cache_rebuild(microdesc_cache_t *cache); +int microdesc_cache_rebuild(microdesc_cache_t *cache, int force); int microdesc_cache_reload(microdesc_cache_t *cache); void microdesc_cache_clear(microdesc_cache_t *cache); @@ -43,5 +43,10 @@ void microdesc_free_all(void); void update_microdesc_downloads(time_t now); void update_microdescs_from_networkstatus(time_t now); +int usable_consensus_flavor(void); +int we_fetch_microdescriptors(const or_options_t *options); +int we_fetch_router_descriptors(const or_options_t *options); +int we_use_microdescriptors_for_circuits(const or_options_t *options); + #endif diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index fd3fa3d454..2586ce6ebe 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -50,7 +50,9 @@ static strmap_t *unnamed_server_map = NULL; * of whichever type we are using for our own circuits. This will be the same * as one of current_ns_consensus or current_md_consensus. */ -#define current_consensus current_ns_consensus +#define current_consensus \ + (we_use_microdescriptors_for_circuits(get_options()) ? \ + current_md_consensus : current_ns_consensus) /** Most recently received and validated v3 "ns"-flavored consensus network * status. */ @@ -211,7 +213,7 @@ router_reload_consensus_networkstatus(void) char *filename; char *s; struct stat st; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); const unsigned int flags = NSSET_FROM_CACHE | NSSET_DONT_DOWNLOAD_CERTS; int flav; @@ -422,7 +424,7 @@ networkstatus_get_voter_by_id(networkstatus_t *vote, if (!vote || !vote->voters) return NULL; SMARTLIST_FOREACH(vote->voters, networkstatus_voter_info_t *, voter, - if (!memcmp(voter->identity_digest, identity, DIGEST_LEN)) + if (fast_memeq(voter->identity_digest, identity, DIGEST_LEN)) return voter); return NULL; } @@ -443,18 +445,19 @@ networkstatus_check_document_signature(const networkstatus_t *consensus, if (crypto_pk_get_digest(cert->signing_key, key_digest)<0) return -1; - if (memcmp(sig->signing_key_digest, key_digest, DIGEST_LEN) || - memcmp(sig->identity_digest, cert->cache_info.identity_digest, - DIGEST_LEN)) + if (tor_memneq(sig->signing_key_digest, key_digest, DIGEST_LEN) || + tor_memneq(sig->identity_digest, cert->cache_info.identity_digest, + DIGEST_LEN)) return -1; signed_digest_len = crypto_pk_keysize(cert->signing_key); signed_digest = tor_malloc(signed_digest_len); if (crypto_pk_public_checksig(cert->signing_key, signed_digest, + signed_digest_len, sig->signature, sig->signature_len) < dlen || - memcmp(signed_digest, consensus->digests.d[sig->alg], dlen)) { + tor_memneq(signed_digest, consensus->digests.d[sig->alg], dlen)) { log_warn(LD_DIR, "Got a bad signature on a networkstatus vote"); sig->bad_signature = 1; } else { @@ -481,7 +484,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus, int n_bad = 0; int n_unknown = 0; int n_no_signature = 0; - int n_v3_authorities = get_n_authorities(V3_AUTHORITY); + int n_v3_authorities = get_n_authorities(V3_DIRINFO); int n_required = n_v3_authorities/2 + 1; smartlist_t *need_certs_from = smartlist_create(); smartlist_t *unrecognized = smartlist_create(); @@ -506,7 +509,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus, authority_cert_t *cert = authority_cert_get_by_digests(sig->identity_digest, sig->signing_key_digest); - tor_assert(!memcmp(sig->identity_digest, voter->identity_digest, + tor_assert(tor_memeq(sig->identity_digest, voter->identity_digest, DIGEST_LEN)); if (!is_v3_auth) { @@ -552,7 +555,7 @@ networkstatus_check_consensus_signature(networkstatus_t *consensus, SMARTLIST_FOREACH(router_get_trusted_dir_servers(), trusted_dir_server_t *, ds, { - if ((ds->type & V3_AUTHORITY) && + if ((ds->type & V3_DIRINFO) && !networkstatus_get_voter_by_id(consensus, ds->v3_identity_digest)) smartlist_add(missing_authorities, ds); }); @@ -735,7 +738,7 @@ router_set_networkstatus_v2(const char *s, time_t arrived_at, base16_encode(fp, HEX_DIGEST_LEN+1, ns->identity_digest, DIGEST_LEN); if (!(trusted_dir = router_get_trusteddirserver_by_digest(ns->identity_digest)) || - !(trusted_dir->type & V2_AUTHORITY)) { + !(trusted_dir->type & V2_DIRINFO)) { log_info(LD_DIR, "Network status was signed, but not by an authoritative " "directory we recognize."); source_desc = fp; @@ -809,8 +812,8 @@ router_set_networkstatus_v2(const char *s, time_t arrived_at, for (i=0; i < smartlist_len(networkstatus_v2_list); ++i) { networkstatus_v2_t *old_ns = smartlist_get(networkstatus_v2_list, i); - if (!memcmp(old_ns->identity_digest, ns->identity_digest, DIGEST_LEN)) { - if (!memcmp(old_ns->networkstatus_digest, + if (tor_memeq(old_ns->identity_digest, ns->identity_digest, DIGEST_LEN)) { + if (tor_memeq(old_ns->networkstatus_digest, ns->networkstatus_digest, DIGEST_LEN)) { /* Same one we had before. */ networkstatus_v2_free(ns); @@ -936,7 +939,7 @@ compare_digest_to_routerstatus_entry(const void *_key, const void **_member) { const char *key = _key; const routerstatus_t *rs = *_member; - return memcmp(key, rs->identity_digest, DIGEST_LEN); + return tor_memcmp(key, rs->identity_digest, DIGEST_LEN); } /** As networkstatus_v2_find_entry, but do not return a const pointer */ @@ -1129,7 +1132,7 @@ update_v2_networkstatus_cache_downloads(time_t now) { char resource[HEX_DIGEST_LEN+6]; /* fp/hexdigit.z\0 */ tor_addr_t addr; - if (!(ds->type & V2_AUTHORITY)) + if (!(ds->type & V2_DIRINFO)) continue; if (router_digest_is_me(ds->digest)) continue; @@ -1172,7 +1175,7 @@ update_v2_networkstatus_cache_downloads(time_t now) /** DOCDOC */ static int -we_want_to_fetch_flavor(or_options_t *options, int flavor) +we_want_to_fetch_flavor(const or_options_t *options, int flavor) { if (flavor < 0 || flavor > N_CONSENSUS_FLAVORS) { /* This flavor is crazy; we don't want it */ @@ -1186,7 +1189,7 @@ we_want_to_fetch_flavor(or_options_t *options, int flavor) } /* Otherwise, we want the flavor only if we want to use it to build * circuits. */ - return (flavor == USABLE_CONSENSUS_FLAVOR); + return flavor == usable_consensus_flavor(); } /** How many times will we try to fetch a consensus before we give up? */ @@ -1201,7 +1204,7 @@ static void update_consensus_networkstatus_downloads(time_t now) { int i; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (!networkstatus_get_live_consensus(now)) time_to_download_next_consensus = now; /* No live consensus? Get one now!*/ @@ -1216,7 +1219,7 @@ update_consensus_networkstatus_downloads(time_t now) if (! we_want_to_fetch_flavor(options, i)) continue; - resource = i==FLAV_NS ? NULL : networkstatus_get_flavor_name(i); + resource = networkstatus_get_flavor_name(i); if (!download_status_is_ready(&consensus_dl_status[i], now, CONSENSUS_NETWORKSTATUS_MAX_DL_TRIES)) @@ -1271,7 +1274,7 @@ networkstatus_consensus_download_failed(int status_code, const char *flavname) void update_consensus_networkstatus_fetch_time(time_t now) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); networkstatus_t *c = networkstatus_get_live_consensus(now); if (c) { long dl_interval; @@ -1345,7 +1348,7 @@ update_consensus_networkstatus_fetch_time(time_t now) * fetches yet (e.g. we demand bridges and none are yet known). * Else return 0. */ int -should_delay_dir_fetches(or_options_t *options) +should_delay_dir_fetches(const or_options_t *options) { if (options->UseBridges && !any_bridge_descriptors_known()) { log_info(LD_DIR, "delaying dir fetches (no running bridges known)"); @@ -1359,10 +1362,10 @@ should_delay_dir_fetches(or_options_t *options) void update_networkstatus_downloads(time_t now) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (should_delay_dir_fetches(options)) return; - if (directory_fetches_dir_info_early(options)) + if (authdir_mode_any_main(options) || options->FetchV2Networkstatus) update_v2_networkstatus_cache_downloads(now); update_consensus_networkstatus_downloads(now); update_certificate_downloads(now); @@ -1391,7 +1394,7 @@ update_certificate_downloads(time_t now) int consensus_is_waiting_for_certs(void) { - return consensus_waiting_for_certs[USABLE_CONSENSUS_FLAVOR].consensus + return consensus_waiting_for_certs[usable_consensus_flavor()].consensus ? 1 : 0; } @@ -1401,7 +1404,7 @@ networkstatus_v2_get_by_digest(const char *digest) { SMARTLIST_FOREACH(networkstatus_v2_list, networkstatus_v2_t *, ns, { - if (!memcmp(ns->identity_digest, digest, DIGEST_LEN)) + if (tor_memeq(ns->identity_digest, digest, DIGEST_LEN)) return ns; }); return NULL; @@ -1464,10 +1467,10 @@ networkstatus_get_reasonably_live_consensus(time_t now, int flavor) static int routerstatus_has_changed(const routerstatus_t *a, const routerstatus_t *b) { - tor_assert(!memcmp(a->identity_digest, b->identity_digest, DIGEST_LEN)); + tor_assert(tor_memeq(a->identity_digest, b->identity_digest, DIGEST_LEN)); return strcmp(a->nickname, b->nickname) || - memcmp(a->descriptor_digest, b->descriptor_digest, DIGEST_LEN) || + fast_memneq(a->descriptor_digest, b->descriptor_digest, DIGEST_LEN) || a->addr != b->addr || a->or_port != b->or_port || a->dir_port != b->dir_port || @@ -1519,7 +1522,7 @@ notify_control_networkstatus_changed(const networkstatus_t *old_c, SMARTLIST_FOREACH_JOIN( old_c->routerstatus_list, const routerstatus_t *, rs_old, new_c->routerstatus_list, const routerstatus_t *, rs_new, - memcmp(rs_old->identity_digest, + tor_memcmp(rs_old->identity_digest, rs_new->identity_digest, DIGEST_LEN), smartlist_add(changed, (void*) rs_new)) { if (routerstatus_has_changed(rs_old, rs_new)) @@ -1543,13 +1546,13 @@ networkstatus_copy_old_consensus_info(networkstatus_t *new_c, SMARTLIST_FOREACH_JOIN(old_c->routerstatus_list, routerstatus_t *, rs_old, new_c->routerstatus_list, routerstatus_t *, rs_new, - memcmp(rs_old->identity_digest, + tor_memcmp(rs_old->identity_digest, rs_new->identity_digest, DIGEST_LEN), STMT_NIL) { /* Okay, so we're looking at the same identity. */ rs_new->last_dir_503_at = rs_old->last_dir_503_at; - if (!memcmp(rs_old->descriptor_digest, rs_new->descriptor_digest, + if (tor_memeq(rs_old->descriptor_digest, rs_new->descriptor_digest, DIGEST_LEN)) { /* And the same descriptor too! */ memcpy(&rs_new->dl_status, &rs_old->dl_status,sizeof(download_status_t)); @@ -1582,7 +1585,7 @@ networkstatus_set_current_consensus(const char *consensus, networkstatus_t *c=NULL; int r, result = -1; time_t now = time(NULL); - or_options_t *options = get_options(); + const or_options_t *options = get_options(); char *unverified_fname = NULL, *consensus_fname = NULL; int flav = networkstatus_parse_flavor_name(flavor); const unsigned from_cache = flags & NSSET_FROM_CACHE; @@ -1620,7 +1623,7 @@ networkstatus_set_current_consensus(const char *consensus, flavor = networkstatus_get_flavor_name(flav); } - if (flav != USABLE_CONSENSUS_FLAVOR && + if (flav != usable_consensus_flavor() && !directory_caches_dir_info(options)) { /* This consensus is totally boring to us: we won't use it, and we won't * serve it. Drop it. */ @@ -1629,7 +1632,7 @@ networkstatus_set_current_consensus(const char *consensus, if (from_cache && !accept_obsolete && c->valid_until < now-OLD_ROUTER_DESC_MAX_AGE) { - /* XXX022 when we try to make fallbackconsensus work again, we should + /* XXXX If we try to make fallbackconsensus work again, we should * consider taking this out. Until then, believing obsolete consensuses * is causing more harm than good. See also bug 887. */ log_info(LD_DIR, "Loaded an expired consensus. Discarding."); @@ -1665,7 +1668,7 @@ networkstatus_set_current_consensus(const char *consensus, } if (current_digests && - !memcmp(&c->digests, current_digests, sizeof(c->digests))) { + tor_memeq(&c->digests, current_digests, sizeof(c->digests))) { /* We already have this one. That's a failure. */ log_info(LD_DIR, "Got a %s consensus we already have", flavor); goto done; @@ -1725,14 +1728,14 @@ networkstatus_set_current_consensus(const char *consensus, } } - if (!from_cache && flav == USABLE_CONSENSUS_FLAVOR) + if (!from_cache && flav == usable_consensus_flavor()) control_event_client_status(LOG_NOTICE, "CONSENSUS_ARRIVED"); /* Are we missing any certificates at all? */ if (r != 1 && dl_certs) authority_certs_fetch_missing(c, now); - if (flav == USABLE_CONSENSUS_FLAVOR) { + if (flav == usable_consensus_flavor()) { notify_control_networkstatus_changed(current_consensus, c); } if (flav == FLAV_NS) { @@ -1779,8 +1782,8 @@ networkstatus_set_current_consensus(const char *consensus, download_status_failed(&consensus_dl_status[flav], 0); } - if (flav == USABLE_CONSENSUS_FLAVOR) { - /* XXXXNM Microdescs: needs a non-ns variant. */ + if (flav == usable_consensus_flavor()) { + /* XXXXNM Microdescs: needs a non-ns variant. ???? NM*/ update_consensus_networkstatus_fetch_time(now); nodelist_set_consensus(current_consensus); @@ -1789,7 +1792,8 @@ networkstatus_set_current_consensus(const char *consensus, routerstatus_list_update_named_server_map(); cell_ewma_set_scale_factor(options, current_consensus); - /* XXX022 where is the right place to put this call? */ + /* XXXX023 this call might be unnecessary here: can changing the + * current consensus really alter our view of any OR's rate limits? */ connection_or_update_token_buckets(get_connection_array(), options); circuit_build_times_new_consensus_params(&circ_times, current_consensus); @@ -1806,7 +1810,11 @@ networkstatus_set_current_consensus(const char *consensus, write_str_to_file(consensus_fname, consensus, 0); } - if (time_definitely_before(now, c->valid_after, 60)) { +/** If a consensus appears more than this many seconds before its declared + * valid-after time, declare that our clock is skewed. */ +#define EARLY_CONSENSUS_NOTICE_SKEW 60 + + if (now < c->valid_after - EARLY_CONSENSUS_NOTICE_SKEW) { char tbuf[ISO_TIME_LEN+1]; char dbuf[64]; long delta = now - c->valid_after; @@ -1983,7 +1991,7 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers, int reset_failures) { trusted_dir_server_t *ds; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int authdir = authdir_mode_v2(options) || authdir_mode_v3(options); networkstatus_t *ns = current_consensus; if (!ns || !smartlist_len(ns->routerstatus_list)) @@ -1995,7 +2003,7 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers, SMARTLIST_FOREACH_JOIN(ns->routerstatus_list, routerstatus_t *, rs, routers, routerinfo_t *, router, - memcmp(rs->identity_digest, + tor_memcmp(rs->identity_digest, router->cache_info.identity_digest, DIGEST_LEN), { #if 0 @@ -2012,7 +2020,7 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers, ds = router_get_trusteddirserver_by_digest(digest); /* Is it the same descriptor, or only the same identity? */ - if (!memcmp(router->cache_info.signed_descriptor_digest, + if (tor_memeq(router->cache_info.signed_descriptor_digest, rs->descriptor_digest, DIGEST_LEN)) { if (ns->valid_until > router->cache_info.last_listed_as_valid_until) router->cache_info.last_listed_as_valid_until = ns->valid_until; @@ -2041,10 +2049,10 @@ routers_update_status_from_consensus_networkstatus(smartlist_t *routers, time_t live_until = ns->published_on + V2_NETWORKSTATUS_ROUTER_LIFETIME; SMARTLIST_FOREACH_JOIN(ns->entries, const routerstatus_t *, rs, routers, routerinfo_t *, ri, - memcmp(rs->identity_digest, + tor_memcmp(rs->identity_digest, ri->cache_info.identity_digest, DIGEST_LEN), STMT_NIL) { - if (!memcmp(ri->cache_info.signed_descriptor_digest, + if (tor_memeq(ri->cache_info.signed_descriptor_digest, rs->descriptor_digest, DIGEST_LEN)) { if (live_until > ri->cache_info.last_listed_as_valid_until) ri->cache_info.last_listed_as_valid_until = live_until; @@ -2143,7 +2151,7 @@ void networkstatus_dump_bridge_status_to_file(time_t now) { char *status = networkstatus_getinfo_by_purpose("bridge", now); - or_options_t *options = get_options(); + const or_options_t *options = get_options(); size_t len = strlen(options->DataDirectory) + 32; char *fname = tor_malloc(len); tor_snprintf(fname, len, "%s"PATH_SEPARATOR"networkstatus-bridges", @@ -2153,32 +2161,52 @@ networkstatus_dump_bridge_status_to_file(time_t now) tor_free(status); } -int32_t +static int32_t get_net_param_from_list(smartlist_t *net_params, const char *param_name, - int default_val) + int32_t default_val, int32_t min_val, int32_t max_val) { + int32_t res = default_val; size_t name_len = strlen(param_name); + tor_assert(max_val > min_val); + tor_assert(min_val <= default_val); + tor_assert(max_val >= default_val); + SMARTLIST_FOREACH_BEGIN(net_params, const char *, p) { if (!strcmpstart(p, param_name) && p[name_len] == '=') { int ok=0; long v = tor_parse_long(p+name_len+1, 10, INT32_MIN, INT32_MAX, &ok, NULL); - if (ok) - return (int32_t) v; + if (ok) { + res = (int32_t) v; + break; + } } } SMARTLIST_FOREACH_END(p); - return default_val; + if (res < min_val) { + log_warn(LD_DIR, "Consensus parameter %s is too small. Got %d, raising to " + "%d.", param_name, res, min_val); + res = min_val; + } else if (res > max_val) { + log_warn(LD_DIR, "Consensus parameter %s is too large. Got %d, capping to " + "%d.", param_name, res, max_val); + res = max_val; + } + + return res; } /** Return the value of a integer parameter from the networkstatus <b>ns</b> * whose name is <b>param_name</b>. If <b>ns</b> is NULL, try loading the * latest consensus ourselves. Return <b>default_val</b> if no latest - * consensus, or if it has no parameter called <b>param_name</b>. */ + * consensus, or if it has no parameter called <b>param_name</b>. + * Make sure the value parsed from the consensus is at least + * <b>min_val</b> and at most <b>max_val</b> and raise/cap the parsed value + * if necessary. */ int32_t -networkstatus_get_param(networkstatus_t *ns, const char *param_name, - int32_t default_val) +networkstatus_get_param(const networkstatus_t *ns, const char *param_name, + int32_t default_val, int32_t min_val, int32_t max_val) { if (!ns) /* if they pass in null, go find it ourselves */ ns = networkstatus_get_latest_consensus(); @@ -2186,24 +2214,36 @@ networkstatus_get_param(networkstatus_t *ns, const char *param_name, if (!ns || !ns->net_params) return default_val; - return get_net_param_from_list(ns->net_params, param_name, default_val); + return get_net_param_from_list(ns->net_params, param_name, + default_val, min_val, max_val); } /** Return the value of a integer bw weight parameter from the networkstatus * <b>ns</b> whose name is <b>weight_name</b>. If <b>ns</b> is NULL, try * loading the latest consensus ourselves. Return <b>default_val</b> if no - * latest consensus, or if it has no parameter called <b>param_name</b>. */ + * latest consensus, or if it has no parameter called <b>weight_name</b>. */ int32_t networkstatus_get_bw_weight(networkstatus_t *ns, const char *weight_name, - int32_t default_val) + int32_t default_val) { + int32_t param; + int max; if (!ns) /* if they pass in null, go find it ourselves */ ns = networkstatus_get_latest_consensus(); if (!ns || !ns->weight_params) return default_val; - return get_net_param_from_list(ns->weight_params, weight_name, default_val); + max = circuit_build_times_get_bw_scale(ns); + param = get_net_param_from_list(ns->weight_params, weight_name, + default_val, -1, + BW_MAX_WEIGHT_SCALE); + if (param > max) { + log_warn(LD_DIR, "Value of consensus weight %s was too large, capping " + "to %d", weight_name, max); + param = max; + } + return param; } /** Return the name of the consensus flavor <b>flav</b> as used to identify diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h index aa5496e2b1..1b10f27388 100644 --- a/src/or/networkstatus.h +++ b/src/or/networkstatus.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -67,7 +67,7 @@ int networkstatus_nickname_is_unnamed(const char *nickname); void networkstatus_consensus_download_failed(int status_code, const char *flavname); void update_consensus_networkstatus_fetch_time(time_t now); -int should_delay_dir_fetches(or_options_t *options); +int should_delay_dir_fetches(const or_options_t *options); void update_networkstatus_downloads(time_t now); void update_certificate_downloads(time_t now); int consensus_is_waiting_for_certs(void); @@ -96,10 +96,10 @@ void signed_descs_update_status_from_consensus_networkstatus( char *networkstatus_getinfo_helper_single(const routerstatus_t *rs); char *networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now); void networkstatus_dump_bridge_status_to_file(time_t now); -int32_t get_net_param_from_list(smartlist_t *net_params, const char *name, - int default_val); -int32_t networkstatus_get_param(networkstatus_t *ns, const char *param_name, - int32_t default_val); +int32_t networkstatus_get_param(const networkstatus_t *ns, + const char *param_name, + int32_t default_val, int32_t min_val, + int32_t max_val); int getinfo_helper_networkstatus(control_connection_t *conn, const char *question, char **answer, const char **errmsg); diff --git a/src/or/nodelist.c b/src/or/nodelist.c index 951a7a8e87..308aaa8658 100644 --- a/src/or/nodelist.c +++ b/src/or/nodelist.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "or.h" @@ -47,7 +47,7 @@ node_id_hash(const node_t *node) static INLINE unsigned int node_id_eq(const node_t *node1, const node_t *node2) { - return 0 == memcmp(node1->identity, node2->identity, DIGEST_LEN); + return tor_memeq(node1->identity, node2->identity, DIGEST_LEN); } HT_PROTOTYPE(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq); @@ -158,8 +158,12 @@ nodelist_add_microdesc(microdesc_t *md) if (rs == NULL) return NULL; node = node_get_mutable_by_id(rs->identity_digest); - if (node) + if (node) { + if (node->md) + node->md->held_by_node = 0; node->md = md; + md->held_by_node = 1; + } return node; } @@ -171,7 +175,7 @@ nodelist_add_microdesc(microdesc_t *md) void nodelist_set_consensus(networkstatus_t *ns) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int authdir = authdir_mode_v2(options) || authdir_mode_v3(options); init_nodelist(); @@ -183,9 +187,13 @@ nodelist_set_consensus(networkstatus_t *ns) node->rs = rs; if (ns->flavor == FLAV_MICRODESC) { if (node->md == NULL || - 0!=memcmp(node->md->digest,rs->descriptor_digest,DIGEST256_LEN)) { + tor_memneq(node->md->digest,rs->descriptor_digest,DIGEST256_LEN)) { + if (node->md) + node->md->held_by_node = 0; node->md = microdesc_cache_lookup_by_digest256(NULL, rs->descriptor_digest); + if (node->md) + node->md->held_by_node = 1; } } @@ -240,8 +248,10 @@ void nodelist_remove_microdesc(const char *identity_digest, microdesc_t *md) { node_t *node = node_get_mutable_by_id(identity_digest); - if (node && node->md == md) + if (node && node->md == md) { node->md = NULL; + md->held_by_node = 0; + } } /** Tell the nodelist that <b>ri</b> is no longer in the routerlist. */ @@ -288,6 +298,8 @@ node_free(node_t *node) { if (!node) return; + if (node->md) + node->md->held_by_node = 0; tor_assert(node->nodelist_idx == -1); tor_free(node); } @@ -305,6 +317,12 @@ nodelist_purge(void) for (iter = HT_START(nodelist_map, &the_nodelist->nodes_by_id); iter; ) { node_t *node = *iter; + if (node->md && !node->rs) { + /* An md is only useful if there is an rs. */ + node->md->held_by_node = 0; + node->md = NULL; + } + if (node_is_usable(node)) { iter = HT_NEXT(nodelist_map, &the_nodelist->nodes_by_id, iter); } else { @@ -342,17 +360,19 @@ nodelist_assert_ok(void) { routerlist_t *rl = router_get_routerlist(); networkstatus_t *ns = networkstatus_get_latest_consensus(); - digestmap_t *dm = digestmap_new(); + digestmap_t *dm; if (!the_nodelist) return; + dm = digestmap_new(); + /* every routerinfo in rl->routers should be in the nodelist. */ if (rl) { SMARTLIST_FOREACH_BEGIN(rl->routers, routerinfo_t *, ri) { const node_t *node = node_get_by_id(ri->cache_info.identity_digest); tor_assert(node && node->ri == ri); - tor_assert(0 == memcmp(ri->cache_info.identity_digest, + tor_assert(fast_memeq(ri->cache_info.identity_digest, node->identity, DIGEST_LEN)); tor_assert(! digestmap_get(dm, node->identity)); digestmap_set(dm, node->identity, (void*)node); @@ -364,7 +384,7 @@ nodelist_assert_ok(void) SMARTLIST_FOREACH_BEGIN(ns->routerstatus_list, routerstatus_t *, rs) { const node_t *node = node_get_by_id(rs->identity_digest); tor_assert(node && node->rs == rs); - tor_assert(0 == memcmp(rs->identity_digest, node->identity, DIGEST_LEN)); + tor_assert(fast_memeq(rs->identity_digest, node->identity, DIGEST_LEN)); digestmap_set(dm, node->identity, (void*)node); if (ns->flavor == FLAV_MICRODESC) { /* If it's a microdesc consensus, every entry that has a @@ -373,6 +393,8 @@ nodelist_assert_ok(void) microdesc_t *md = microdesc_cache_lookup_by_digest256(NULL, rs->descriptor_digest); tor_assert(md == node->md); + if (md) + tor_assert(md->held_by_node == 1); } } SMARTLIST_FOREACH_END(rs); } @@ -422,7 +444,7 @@ node_get_by_hex_id(const char *hex_id) if (nn_char == '=') { const char *named_id = networkstatus_get_router_digest_by_nickname(nn_buf); - if (!named_id || memcmp(named_id, digest_buf, DIGEST_LEN)) + if (!named_id || tor_memneq(named_id, digest_buf, DIGEST_LEN)) return NULL; } } @@ -540,7 +562,7 @@ node_is_named(const node_t *node) named_id = networkstatus_get_router_digest_by_nickname(nickname); if (!named_id) return 0; - return !memcmp(named_id, node->identity, DIGEST_LEN); + return tor_memeq(named_id, node->identity, DIGEST_LEN); } /** Return true iff <b>node</b> appears to be a directory authority or diff --git a/src/or/nodelist.h b/src/or/nodelist.h index d85d3eb417..bd2e63953c 100644 --- a/src/or/nodelist.h +++ b/src/or/nodelist.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -53,7 +53,7 @@ smartlist_t *nodelist_get_list(void); /* XXXX These need to move out of routerlist.c */ void nodelist_refresh_countries(void); void node_set_country(node_t *node); -void nodelist_add_node_family(smartlist_t *nodes, const node_t *node); +void nodelist_add_node_and_family(smartlist_t *nodes, const node_t *node); int nodes_in_same_family(const node_t *node1, const node_t *node2); #endif diff --git a/src/or/ntmain.c b/src/or/ntmain.c index c5c6a58bbe..4eb487e976 100644 --- a/src/or/ntmain.c +++ b/src/or/ntmain.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #define MAIN_PRIVATE @@ -54,6 +54,11 @@ static int nt_service_cmd_stop(void); struct service_fns { int loaded; + /** @{ */ + /** Function pointers for Windows API functions related to service + * management. These are NULL, or they point to the . They're set by + * calling the LOAD macro below. */ + BOOL (WINAPI *ChangeServiceConfig2A_fn)( SC_HANDLE hService, DWORD dwInfoLevel, @@ -122,6 +127,7 @@ struct service_fns { LPTSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse); + /** @} */ } service_fns = { 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @@ -144,6 +150,10 @@ nt_service_loadlibrary(void) goto err; } +/* Helper macro: try to load a function named <b>f</b> from "library" into + * service_functions.<b>f</b>_fn. On failure, log an error message, and goto + * err. + */ #define LOAD(f) STMT_BEGIN \ if (!(fn = GetProcAddress(library, #f))) { \ log_err(LD_BUG, \ @@ -517,7 +527,7 @@ nt_service_install(int argc, char **argv) SERVICE_DESCRIPTIONA sdBuff; char *command; char *errmsg; - const char *user_acct = GENSRV_USERACCT; + const char *user_acct = NULL; const char *password = ""; int i; OSVERSIONINFOEX info; @@ -561,13 +571,12 @@ nt_service_install(int argc, char **argv) is_win2k_or_worse = 1; } - if (user_acct == GENSRV_USERACCT) { + if (!user_acct) { if (is_win2k_or_worse) { /* On Win2k, there is no LocalService account, so we actually need to * fall back on NULL (the system account). */ printf("Running on Win2K or earlier, so the LocalService account " "doesn't exist. Falling back to SYSTEM account.\n"); - user_acct = NULL; } else { /* Genericity is apparently _so_ last year in Redmond, where some * accounts are accounts that you can look up, and some accounts @@ -576,6 +585,7 @@ nt_service_install(int argc, char **argv) */ printf("Running on a Post-Win2K OS, so we'll assume that the " "LocalService account exists.\n"); + user_acct = GENSRV_USERACCT; } } else if (0 && service_fns.LookupAccountNameA_fn(NULL, // On this system user_acct, diff --git a/src/or/ntmain.h b/src/or/ntmain.h index 2cfa653c3d..acd0e1d7eb 100644 --- a/src/or/ntmain.h +++ b/src/or/ntmain.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/or/onion.c b/src/or/onion.c index fa001656e6..211d14c1e1 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -184,7 +184,7 @@ onion_skin_create(crypto_pk_env_t *dest_router_key, *handshake_state_out = NULL; memset(onion_skin_out, 0, ONIONSKIN_CHALLENGE_LEN); - if (!(dh = crypto_dh_new())) + if (!(dh = crypto_dh_new(DH_TYPE_CIRCUIT))) goto err; dhbytes = crypto_dh_get_bytes(dh); @@ -199,6 +199,7 @@ onion_skin_create(crypto_pk_env_t *dest_router_key, /* set meeting point, meeting cookie, etc here. Leave zero for now. */ if (crypto_pk_public_hybrid_encrypt(dest_router_key, onion_skin_out, + ONIONSKIN_CHALLENGE_LEN, challenge, DH_KEY_LEN, PK_PKCS1_OAEP_PADDING, 1)<0) goto err; @@ -241,6 +242,7 @@ onion_skin_server_handshake(const char *onion_skin, /*ONIONSKIN_CHALLENGE_LEN*/ break; note_crypto_pk_op(DEC_ONIONSKIN); len = crypto_pk_private_hybrid_decrypt(k, challenge, + ONIONSKIN_CHALLENGE_LEN, onion_skin, ONIONSKIN_CHALLENGE_LEN, PK_PKCS1_OAEP_PADDING,0); if (len>0) @@ -256,7 +258,11 @@ onion_skin_server_handshake(const char *onion_skin, /*ONIONSKIN_CHALLENGE_LEN*/ goto err; } - dh = crypto_dh_new(); + dh = crypto_dh_new(DH_TYPE_CIRCUIT); + if (!dh) { + log_warn(LD_BUG, "Couldn't allocate DH key"); + goto err; + } if (crypto_dh_get_public(dh, handshake_reply_out, DH_KEY_LEN)) { log_info(LD_GENERAL, "crypto_dh_get_public failed."); goto err; @@ -322,7 +328,7 @@ onion_skin_client_handshake(crypto_dh_env_t *handshake_state, if (len < 0) goto err; - if (memcmp(key_material, handshake_reply+DH_KEY_LEN, DIGEST_LEN)) { + if (tor_memneq(key_material, handshake_reply+DH_KEY_LEN, DIGEST_LEN)) { /* H(K) does *not* match. Something fishy. */ log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on onion handshake. " "Bug or attack."); @@ -349,9 +355,9 @@ onion_skin_client_handshake(crypto_dh_env_t *handshake_state, * Return 0 on success, <0 on failure. **/ int -fast_server_handshake(const char *key_in, /* DIGEST_LEN bytes */ - char *handshake_reply_out, /* DIGEST_LEN*2 bytes */ - char *key_out, +fast_server_handshake(const uint8_t *key_in, /* DIGEST_LEN bytes */ + uint8_t *handshake_reply_out, /* DIGEST_LEN*2 bytes */ + uint8_t *key_out, size_t key_out_len) { char tmp[DIGEST_LEN+DIGEST_LEN]; @@ -359,7 +365,7 @@ fast_server_handshake(const char *key_in, /* DIGEST_LEN bytes */ size_t out_len; int r = -1; - if (crypto_rand(handshake_reply_out, DIGEST_LEN)<0) + if (crypto_rand((char*)handshake_reply_out, DIGEST_LEN)<0) return -1; memcpy(tmp, key_in, DIGEST_LEN); @@ -392,9 +398,9 @@ fast_server_handshake(const char *key_in, /* DIGEST_LEN bytes */ * and protected by TLS). */ int -fast_client_handshake(const char *handshake_state, /* DIGEST_LEN bytes */ - const char *handshake_reply_out, /* DIGEST_LEN*2 bytes */ - char *key_out, +fast_client_handshake(const uint8_t *handshake_state,/*DIGEST_LEN bytes*/ + const uint8_t *handshake_reply_out,/*DIGEST_LEN*2 bytes*/ + uint8_t *key_out, size_t key_out_len) { char tmp[DIGEST_LEN+DIGEST_LEN]; @@ -409,7 +415,7 @@ fast_client_handshake(const char *handshake_state, /* DIGEST_LEN bytes */ if (crypto_expand_key_material(tmp, sizeof(tmp), out, out_len)) { goto done; } - if (memcmp(out, handshake_reply_out+DIGEST_LEN, DIGEST_LEN)) { + if (tor_memneq(out, handshake_reply_out+DIGEST_LEN, DIGEST_LEN)) { /* H(K) does *not* match. Something fishy. */ log_warn(LD_PROTOCOL,"Digest DOES NOT MATCH on fast handshake. " "Bug or attack."); diff --git a/src/or/onion.h b/src/or/onion.h index e84dbb47be..7f603b8147 100644 --- a/src/or/onion.h +++ b/src/or/onion.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -32,14 +32,14 @@ int onion_skin_client_handshake(crypto_dh_env_t *handshake_state, char *key_out, size_t key_out_len); -int fast_server_handshake(const char *key_in, - char *handshake_reply_out, - char *key_out, +int fast_server_handshake(const uint8_t *key_in, + uint8_t *handshake_reply_out, + uint8_t *key_out, size_t key_out_len); -int fast_client_handshake(const char *handshake_state, - const char *handshake_reply_out, - char *key_out, +int fast_client_handshake(const uint8_t *handshake_state, + const uint8_t *handshake_reply_out, + uint8_t *key_out, size_t key_out_len); void clear_pending_onions(void); diff --git a/src/or/or.h b/src/or/or.h index e9fab82f18..7669efb665 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -98,7 +98,7 @@ #include "compat_libevent.h" #include "ht.h" -/* These signals are defined to help control_signal_act work. +/* These signals are defined to help handle_control_signal work. */ #ifndef SIGHUP #define SIGHUP 1 @@ -230,15 +230,30 @@ typedef enum { #define PROXY_CONNECT 1 #define PROXY_SOCKS4 2 #define PROXY_SOCKS5 3 +/* !!!! If there is ever a PROXY_* type over 2, we must grow the proxy_type + * field in or_connection_t */ +/* pluggable transports proxy type */ +#define PROXY_PLUGGABLE 4 /* Proxy client handshake states */ -#define PROXY_HTTPS_WANT_CONNECT_OK 1 -#define PROXY_SOCKS4_WANT_CONNECT_OK 2 -#define PROXY_SOCKS5_WANT_AUTH_METHOD_NONE 3 -#define PROXY_SOCKS5_WANT_AUTH_METHOD_RFC1929 4 -#define PROXY_SOCKS5_WANT_AUTH_RFC1929_OK 5 -#define PROXY_SOCKS5_WANT_CONNECT_OK 6 -#define PROXY_CONNECTED 7 +/* We use a proxy but we haven't even connected to it yet. */ +#define PROXY_INFANT 1 +/* We use an HTTP proxy and we've sent the CONNECT command. */ +#define PROXY_HTTPS_WANT_CONNECT_OK 2 +/* We use a SOCKS4 proxy and we've sent the CONNECT command. */ +#define PROXY_SOCKS4_WANT_CONNECT_OK 3 +/* We use a SOCKS5 proxy and we try to negotiate without + any authentication . */ +#define PROXY_SOCKS5_WANT_AUTH_METHOD_NONE 4 +/* We use a SOCKS5 proxy and we try to negotiate with + Username/Password authentication . */ +#define PROXY_SOCKS5_WANT_AUTH_METHOD_RFC1929 5 +/* We use a SOCKS5 proxy and we just sent our credentials. */ +#define PROXY_SOCKS5_WANT_AUTH_RFC1929_OK 6 +/* We use a SOCKS5 proxy and we just sent our CONNECT command. */ +#define PROXY_SOCKS5_WANT_CONNECT_OK 7 +/* We use a proxy and we CONNECTed successfully!. */ +#define PROXY_CONNECTED 8 /** True iff <b>x</b> is an edge connection. */ #define CONN_IS_EDGE(x) \ @@ -592,6 +607,9 @@ typedef enum { /** This is a connection on the NATD port, and the destination IP:Port was * either ill-formed or out-of-range. */ #define END_STREAM_REASON_INVALID_NATD_DEST 261 +/** The target address is in a private network (like 127.0.0.1 or 10.0.0.1); + * you don't want to do that over a randomly chosen exit */ +#define END_STREAM_REASON_PRIVATE_ADDR 262 /** Bitwise-and this value with endreason to mask out all flags. */ #define END_STREAM_REASON_MASK 511 @@ -774,6 +792,8 @@ typedef enum { /** Initial value for both sides of a circuit transmission window when the * circuit is initialized. Measured in cells. */ #define CIRCWINDOW_START 1000 +#define CIRCWINDOW_START_MIN 100 +#define CIRCWINDOW_START_MAX 1000 /** Amount to increment a circuit window when we get a circuit SENDME. */ #define CIRCWINDOW_INCREMENT 100 /** Initial value on both sides of a stream transmission window when the @@ -850,15 +870,19 @@ typedef struct cell_t { circid_t circ_id; /**< Circuit which received the cell. */ uint8_t command; /**< Type of the cell: one of CELL_PADDING, CELL_CREATE, * CELL_DESTROY, etc */ - char payload[CELL_PAYLOAD_SIZE]; /**< Cell body. */ + uint8_t payload[CELL_PAYLOAD_SIZE]; /**< Cell body. */ } cell_t; /** Parsed variable-length onion routing cell. */ typedef struct var_cell_t { + /** Type of the cell: CELL_VERSIONS, etc. */ uint8_t command; + /** Circuit thich received the cell */ circid_t circ_id; + /** Number of bytes actually stored in <b>payload</b> */ uint16_t payload_len; - char payload[1]; + /** Payload of this cell */ + uint8_t payload[FLEXIBLE_ARRAY_MEMBER]; } var_cell_t; /** A cell as packed for writing to the network. */ @@ -973,7 +997,7 @@ typedef struct connection_t { unsigned int proxy_state:4; /** Our socket; -1 if this connection is closed, or has no socket. */ - evutil_socket_t s; + tor_socket_t s; int conn_array_index; /**< Index into the global connection array. */ struct event *read_event; /**< Libevent event structure. */ @@ -1015,10 +1039,10 @@ typedef struct connection_t { /** Unique identifier for this connection on this Tor instance. */ uint64_t global_identifier; - /* XXXX022 move this field, and all the listener-only fields (just + /* XXXX023 move this field, and all the listener-only fields (just socket_family, I think), into a new listener_connection_t subtype. */ /** If the connection is a CONN_TYPE_AP_DNS_LISTENER, this field points - * to the evdns_server_port is uses to listen to and answer connections. */ + * to the evdns_server_port it uses to listen to and answer connections. */ struct evdns_server_port *dns_server_port; /** Unique ID for measuring tunneled network status requests. */ @@ -1075,6 +1099,7 @@ typedef struct or_connection_t { * router itself has a problem. */ unsigned int is_bad_for_new_circs:1; + unsigned int proxy_type:2; /**< One of PROXY_NONE...PROXY_SOCKS5 */ uint8_t link_proto; /**< What protocol version are we using? 0 for * "none negotiated yet." */ circid_t next_circ_id; /**< Which circ_id do we try to use next on @@ -1166,6 +1191,13 @@ typedef struct edge_connection_t { * already retried several times. */ uint8_t num_socks_retries; +#define NUM_CIRCUITS_LAUNCHED_THRESHOLD 10 + /** Number of times we've launched a circuit to handle this stream. If + * it gets too high, that could indicate an inconsistency between our + * "launch a circuit to handle this stream" logic and our "attach our + * stream to one of the available circuits" logic. */ + unsigned int num_circuits_launched:4; + /** True iff this connection is for a DNS request only. */ unsigned int is_dns_request:1; @@ -1192,6 +1224,10 @@ typedef struct edge_connection_t { * zero, abandon the associated mapaddress. */ unsigned int chosen_exit_retries:3; + /** True iff this is an AP connection that came from a transparent or + * NATd connection */ + unsigned int is_transparent_ap:1; + /** If this is a DNSPort connection, this field holds the pending DNS * request that we're going to try to answer. */ struct evdns_server_request *dns_server_request; @@ -1251,6 +1287,9 @@ typedef struct control_connection_t { /** True if we have sent a protocolinfo reply on this connection. */ unsigned int have_sent_protocolinfo:1; + /** True if we have received a takeownership command on this + * connection. */ + unsigned int is_owning_control_connection:1; /** Amount of space allocated in incoming_cmd. */ uint32_t incoming_cmd_len; @@ -1621,6 +1660,9 @@ typedef struct routerstatus_t { /** True iff this router is a version that, if it caches directory info, * we can get v3 downloads from. */ unsigned int version_supports_v3_dir:1; + /** True iff this router is a version that, if it caches directory info, + * we can get microdescriptors from. */ + unsigned int version_supports_microdesc_cache:1; unsigned int has_bandwidth:1; /**< The vote/consensus had bw info */ unsigned int has_exitsummary:1; /**< The vote/consensus had exit summaries */ @@ -1660,11 +1702,11 @@ typedef struct short_policy_t { unsigned int is_accept : 1; /** The actual number of values in 'entries'. */ unsigned int n_entries : 31; - /** An array of (probably more than 1!) short_policy_entry_t values, - * each descriping a range of ports that this policy accepts or rejects - * (depending on the value of is_accept). + /** An array of 0 or more short_policy_entry_t values, each describing a + * range of ports that this policy accepts or rejects (depending on the + * value of is_accept). */ - short_policy_entry_t entries[1]; + short_policy_entry_t entries[FLEXIBLE_ARRAY_MEMBER]; } short_policy_t; /** A microdescriptor is the smallest amount of information needed to build a @@ -1686,6 +1728,11 @@ typedef struct microdesc_t { saved_location_t saved_location : 3; /** If true, do not attempt to cache this microdescriptor on disk. */ unsigned int no_save : 1; + /** If true, this microdesc is attached to a node_t. */ + unsigned int held_by_node : 1; + /** If true, this microdesc has an entry in the microdesc_map */ + unsigned int held_in_map : 1; + /** If saved_location == SAVED_IN_CACHE, this field holds the offset of the * microdescriptor in the cache. */ off_t off; @@ -1823,8 +1870,13 @@ typedef struct networkstatus_v2_t { * sorted by identity_digest. */ } networkstatus_v2_t; +/** Linked list of microdesc hash lines for a single router in a directory + * vote. + */ typedef struct vote_microdesc_hash_t { + /** Next element in the list, or NULL. */ struct vote_microdesc_hash_t *next; + /** The raw contents of the microdesc hash line, excluding the "m". */ char *microdesc_hash_line; } vote_microdesc_hash_t; @@ -1836,6 +1888,7 @@ typedef struct vote_routerstatus_t { * networkstatus_t.known_flags. */ char *version; /**< The version that the authority says this router is * running. */ + /** The hash or hashes that the authority claims this microdesc has. */ vote_microdesc_hash_t *microdesc; } vote_routerstatus_t; @@ -1892,9 +1945,6 @@ typedef enum { FLAV_MICRODESC = 1, } consensus_flavor_t; -/** Which consensus flavor do we actually want to use to build circuits? */ -#define USABLE_CONSENSUS_FLAVOR FLAV_NS - /** How many different consensus flavors are there? */ #define N_CONSENSUS_FLAVORS ((int)(FLAV_MICRODESC)+1) @@ -2064,24 +2114,33 @@ typedef struct authority_cert_t { uint8_t is_cross_certified; } authority_cert_t; -/** Bitfield enum type listing types of directory authority/directory - * server. */ +/** Bitfield enum type listing types of information that directory authorities + * can be authoritative about, and that directory caches may or may not cache. + * + * Note that the granularity here is based on authority granularity and on + * cache capabilities. Thus, one particular bit may correspond in practice to + * a few types of directory info, so long as every authority that pronounces + * officially about one of the types prounounces officially about all of them, + * and so long as every cache that caches one of them caches all of them. + */ typedef enum { - NO_AUTHORITY = 0, + NO_DIRINFO = 0, /** Serves/signs v1 directory information: Big lists of routers, and short * routerstatus documents. */ - V1_AUTHORITY = 1 << 0, + V1_DIRINFO = 1 << 0, /** Serves/signs v2 directory information: i.e. v2 networkstatus documents */ - V2_AUTHORITY = 1 << 1, + V2_DIRINFO = 1 << 1, /** Serves/signs v3 directory information: votes, consensuses, certs */ - V3_AUTHORITY = 1 << 2, + V3_DIRINFO = 1 << 2, /** Serves hidden service descriptors. */ - HIDSERV_AUTHORITY = 1 << 3, + HIDSERV_DIRINFO = 1 << 3, /** Serves bridge descriptors. */ - BRIDGE_AUTHORITY = 1 << 4, - /** Serves extrainfo documents. (XXX Not precisely an authority type)*/ - EXTRAINFO_CACHE = 1 << 5, -} authority_type_t; + BRIDGE_DIRINFO = 1 << 4, + /** Serves extrainfo documents. */ + EXTRAINFO_DIRINFO=1 << 5, + /** Serves microdescriptors. */ + MICRODESC_DIRINFO=1 << 6, +} dirinfo_type_t; #define CRYPT_PATH_MAGIC 0x70127012u @@ -2111,7 +2170,7 @@ typedef struct crypt_path_t { * authentication, secrecy, and integrity we need, and we're already * distinguishable from an OR. */ - char fast_handshake_state[DIGEST_LEN]; + uint8_t fast_handshake_state[DIGEST_LEN]; /** Negotiated key material shared with the OR at this step. */ char handshake_digest[DIGEST_LEN];/* KH in tor-spec.txt */ @@ -2154,15 +2213,15 @@ typedef struct { /** How to extend to the planned exit node. */ extend_info_t *chosen_exit; /** Whether every node in the circ must have adequate uptime. */ - int need_uptime; + unsigned int need_uptime : 1; /** Whether every node in the circ must have adequate capacity. */ - int need_capacity; + unsigned int need_capacity : 1; /** Whether the last hop was picked with exiting in mind. */ - int is_internal; - /** Did we pick this as a one-hop tunnel (not safe for other conns)? - * These are for encrypted connections that exit to this router, not + unsigned int is_internal : 1; + /** Did we pick this as a one-hop tunnel (not safe for other streams)? + * These are for encrypted dir conns that exit to this router, not * for arbitrary exits from the circuit. */ - int onehop_tunnel; + unsigned int onehop_tunnel : 1; /** The crypt_path_t to append after rendezvous: used for rendezvous. */ crypt_path_t *pending_final_cpath; /** How many times has building a circuit for this task failed? */ @@ -2264,8 +2323,19 @@ typedef struct circuit_t { * resolution than most so that the circuit-build-time tracking code can * get millisecond resolution. */ struct timeval timestamp_created; - time_t timestamp_dirty; /**< When the circuit was first used, or 0 if the - * circuit is clean. */ + /** When the circuit was first used, or 0 if the circuit is clean. + * + * XXXX023 Note that some code will artifically adjust this value backward + * in time in order to indicate that a circuit shouldn't be used for new + * streams, but that it can stay alive as long as it has streams on it. + * That's a kludge we should fix. + * + * XXX023 The CBT code uses this field to record when HS-related + * circuits entered certain states. This usage probably won't + * interfere with this field's primary purpose, but we should + * document it more thoroughly to make sure of that. + */ + time_t timestamp_dirty; uint16_t marked_for_close; /**< Should we close this circuit at the end of * the main loop? (If true, holds the line number @@ -2434,14 +2504,14 @@ typedef struct or_circuit_t { cell_ewma_t p_cell_ewma; } or_circuit_t; -/** Convert a circuit subtype to a circuit_t.*/ +/** Convert a circuit subtype to a circuit_t. */ #define TO_CIRCUIT(x) (&((x)->_base)) -/** Convert a circuit_t* to a pointer to the enclosing or_circuit_t. Asserts +/** Convert a circuit_t* to a pointer to the enclosing or_circuit_t. Assert * if the cast is impossible. */ static or_circuit_t *TO_OR_CIRCUIT(circuit_t *); /** Convert a circuit_t* to a pointer to the enclosing origin_circuit_t. - * Asserts if the cast is impossible. */ + * Assert if the cast is impossible. */ static origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *); static INLINE or_circuit_t *TO_OR_CIRCUIT(circuit_t *x) @@ -2477,6 +2547,10 @@ typedef struct config_line_t { typedef struct routerset_t routerset_t; +/** A magic value for the (Socks|OR|...)Port options below, telling Tor + * to pick its own port. */ +#define CFG_AUTO_PORT 0xc4005e + /** Configuration options for a Tor process. */ typedef struct { uint32_t _magic; @@ -2492,6 +2566,9 @@ typedef struct { * for logs */ int LogTimeGranularity; /**< Log resolution in milliseconds. */ + int LogMessageDomains; /**< Boolean: Should we log the domain(s) in which + * each log message occurs? */ + char *DebugLogFile; /**< Where to send verbose log messages. */ char *DataDirectory; /**< OR only: where to store long-term data. */ char *Nickname; /**< OR only: nickname of this onion router. */ @@ -2516,7 +2593,7 @@ typedef struct { * ORs not to consider as exits. */ /** Union of ExcludeNodes and ExcludeExitNodes */ - struct routerset_t *_ExcludeExitNodesUnion; + routerset_t *_ExcludeExitNodesUnion; int DisableAllSwap; /**< Boolean: Attempt to call mlockall() on our * process for all current and future memory. */ @@ -2563,6 +2640,7 @@ typedef struct { int ControlPort; /**< Port to listen on for control connections. */ config_line_t *ControlSocket; /**< List of Unix Domain Sockets to listen on * for control connections. */ + int ControlSocketsGroupWritable; /**< Boolean: Are control sockets g+rw? */ int DirPort; /**< Port to listen on for directory connections. */ int DNSPort; /**< Port to listen on for DNS requests. */ int AssumeReachable; /**< Whether to publish our descriptor regardless. */ @@ -2592,6 +2670,9 @@ typedef struct { int UseBridges; /**< Boolean: should we start all circuits with a bridge? */ config_line_t *Bridges; /**< List of bootstrap bridge addresses. */ + config_line_t *ClientTransportPlugin; /**< List of client + transport plugins. */ + int BridgeRelay; /**< Boolean: are we acting as a bridge relay? We make * this explicit so we can change how we behave in the * future. */ @@ -2606,12 +2687,14 @@ typedef struct { /** To what authority types do we publish our descriptor? Choices are * "v1", "v2", "v3", "bridge", or "". */ smartlist_t *PublishServerDescriptor; - /** An authority type, derived from PublishServerDescriptor. */ - authority_type_t _PublishServerDescriptor; + /** A bitfield of authority types, derived from PublishServerDescriptor. */ + dirinfo_type_t _PublishServerDescriptor; /** Boolean: do we publish hidden service descriptors to the HS auths? */ int PublishHidServDescriptors; int FetchServerDescriptors; /**< Do we fetch server descriptors as normal? */ - int FetchHidServDescriptors; /** and hidden service descriptors? */ + int FetchHidServDescriptors; /**< and hidden service descriptors? */ + int FetchV2Networkstatus; /**< Do we fetch v2 networkstatus documents when + * we don't need to? */ int HidServDirectoryV2; /**< Do we participate in the HS DHT? */ int MinUptimeHidServDirectoryV2; /**< As directory authority, accept hidden @@ -2634,12 +2717,10 @@ typedef struct { uint64_t ConstrainedSockSize; /**< Size of constrained buffers. */ /** Whether we should drop exit streams from Tors that we don't know are - * relays. One of "0" (never refuse), "1" (always refuse), or "auto" (do + * relays. One of "0" (never refuse), "1" (always refuse), or "-1" (do * what the consensus says, defaulting to 'refuse' if the consensus says * nothing). */ - char *RefuseUnknownExits; - /** Parsed version of RefuseUnknownExits. -1 for auto. */ - int RefuseUnknownExits_; + int RefuseUnknownExits; /** Application ports that require all nodes in circ to have sufficient * uptime. */ @@ -2710,6 +2791,9 @@ typedef struct { * authorizations for hidden services */ char *ContactInfo; /**< Contact info to be published in the directory. */ + int HeartbeatPeriod; /**< Log heartbeat messages after this many seconds + * have passed. */ + char *HTTPProxy; /**< hostname[:port] to use as http proxy, if any. */ tor_addr_t HTTPProxyAddr; /**< Parsed IPv4 addr for http proxy, if any. */ uint16_t HTTPProxyPort; /**< Parsed port for http proxy, if any. */ @@ -2790,6 +2874,11 @@ typedef struct { int DisablePredictedCircuits; /**< Boolean: does Tor preemptively * make circuits in the background (0), * or not (1)? */ + + /** Process specifier for a controller that ‘owns’ this Tor + * instance. Tor will terminate if its owning controller does. */ + char *OwningControllerProcess; + int ShutdownWaitLength; /**< When we get a SIGINT and we're a server, how * long do we wait before exiting? */ char *SafeLogging; /**< Contains "relay", "1", "0" (meaning no scrubbing). */ @@ -2843,7 +2932,9 @@ typedef struct { /** Boolean: if set, we start even if our resolv.conf file is missing * or broken. */ int ServerDNSAllowBrokenConfig; - + /** Boolean: if set, then even connections to private addresses will get + * rate-limited. */ + int CountPrivateBandwidth; smartlist_t *ServerDNSTestAddresses; /**< A list of addresses that definitely * should be resolvable. Used for * testing our DNS server. */ @@ -2911,6 +3002,10 @@ typedef struct { * Helps avoid some cross-site attacks. */ int ClientDNSRejectInternalAddresses; + /** If true, do not accept any requests to connect to internal addresses + * over randomly chosen exits. */ + int ClientRejectInternalAddresses; + /** The length of time that we think a consensus should be fresh. */ int V3AuthVotingInterval; /** The length of time we think it will take to distribute votes. */ @@ -2995,6 +3090,20 @@ typedef struct { /** For testing only: will go away in 0.2.3.x. */ int _UseFilteringSSLBufferevents; + /** Set to true if the TestingTorNetwork configuration option is set. + * This is used so that options_validate() has a chance to realize that + * the defaults have changed. */ + int _UsingTestNetworkDefaults; + + /** If 1, we try to use microdescriptors to build circuits. If 0, we don't. + * If -1, Tor decides. */ + int UseMicrodescriptors; + + /** File where we should write the ControlPort. */ + char *ControlPortWriteToFile; + /** Should that file be group-readable? */ + int ControlPortFileGroupReadable; + } or_options_t; /** Persistent state for an onion router, as saved to disk. */ @@ -3026,19 +3135,25 @@ typedef struct { * bandwidth usage. The "Interval" fields hold the granularity, in seconds, * of the entries of Values. The "Values" lists hold decimal string * representations of the number of bytes read or written in each - * interval. */ + * interval. The "Maxima" list holds decimal strings describing the highest + * rate achieved during the interval. + */ time_t BWHistoryReadEnds; int BWHistoryReadInterval; smartlist_t *BWHistoryReadValues; + smartlist_t *BWHistoryReadMaxima; time_t BWHistoryWriteEnds; int BWHistoryWriteInterval; smartlist_t *BWHistoryWriteValues; + smartlist_t *BWHistoryWriteMaxima; time_t BWHistoryDirReadEnds; int BWHistoryDirReadInterval; smartlist_t *BWHistoryDirReadValues; + smartlist_t *BWHistoryDirReadMaxima; time_t BWHistoryDirWriteEnds; int BWHistoryDirWriteInterval; smartlist_t *BWHistoryDirWriteValues; + smartlist_t *BWHistoryDirWriteMaxima; /** Build time histogram */ config_line_t * BuildtimeHistogram; @@ -3130,6 +3245,11 @@ struct socks_request_t { /* Circuit Build Timeout "public" structures. */ +/** Precision multiplier for the Bw weights */ +#define BW_WEIGHT_SCALE 10000 +#define BW_MIN_WEIGHT_SCALE 1 +#define BW_MAX_WEIGHT_SCALE INT32_MAX + /** Total size of the circuit timeout history to accumulate. * 1000 is approx 2.5 days worth of continual-use circuits. */ #define CBT_NCIRCUITS_TO_OBSERVE 1000 @@ -3139,6 +3259,8 @@ struct socks_request_t { /** Number of modes to use in the weighted-avg computation of Xm */ #define CBT_DEFAULT_NUM_XM_MODES 3 +#define CBT_MIN_NUM_XM_MODES 1 +#define CBT_MAX_NUM_XM_MODES 20 /** A build_time_t is milliseconds */ typedef uint32_t build_time_t; @@ -3160,12 +3282,16 @@ typedef uint32_t build_time_t; * build in terms of CDF quantile. */ #define CBT_DEFAULT_CLOSE_QUANTILE 95 +#define CBT_MIN_CLOSE_QUANTILE CBT_MIN_QUANTILE_CUTOFF +#define CBT_MAX_CLOSE_QUANTILE CBT_MAX_QUANTILE_CUTOFF /** * How many circuits count as recent when considering if the * connection has gone gimpy or changed. */ #define CBT_DEFAULT_RECENT_CIRCUITS 20 +#define CBT_MIN_RECENT_CIRCUITS 3 +#define CBT_MAX_RECENT_CIRCUITS 1000 /** * Maximum count of timeouts that finish the first hop in the past @@ -3176,25 +3302,37 @@ typedef uint32_t build_time_t; * gives us. */ #define CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT (CBT_DEFAULT_RECENT_CIRCUITS*9/10) +#define CBT_MIN_MAX_RECENT_TIMEOUT_COUNT 3 +#define CBT_MAX_MAX_RECENT_TIMEOUT_COUNT 10000 /** Minimum circuits before estimating a timeout */ #define CBT_DEFAULT_MIN_CIRCUITS_TO_OBSERVE 100 +#define CBT_MIN_MIN_CIRCUITS_TO_OBSERVE 1 +#define CBT_MAX_MIN_CIRCUITS_TO_OBSERVE 10000 /** Cutoff percentile on the CDF for our timeout estimation. */ #define CBT_DEFAULT_QUANTILE_CUTOFF 80 +#define CBT_MIN_QUANTILE_CUTOFF 10 +#define CBT_MAX_QUANTILE_CUTOFF 99 double circuit_build_times_quantile_cutoff(void); /** How often in seconds should we build a test circuit */ #define CBT_DEFAULT_TEST_FREQUENCY 60 +#define CBT_MIN_TEST_FREQUENCY 1 +#define CBT_MAX_TEST_FREQUENCY INT32_MAX /** Lowest allowable value for CircuitBuildTimeout in milliseconds */ #define CBT_DEFAULT_TIMEOUT_MIN_VALUE (1500) +#define CBT_MIN_TIMEOUT_MIN_VALUE 500 +#define CBT_MAX_TIMEOUT_MIN_VALUE INT32_MAX /** Initial circuit build timeout in milliseconds */ #define CBT_DEFAULT_TIMEOUT_INITIAL_VALUE (60*1000) +#define CBT_MIN_TIMEOUT_INITIAL_VALUE CBT_MIN_TIMEOUT_MIN_VALUE +#define CBT_MAX_TIMEOUT_INITIAL_VALUE INT32_MAX int32_t circuit_build_times_initial_timeout(void); -#if CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT < 1 +#if CBT_DEFAULT_MAX_RECENT_TIMEOUT_COUNT < CBT_MIN_MAX_RECENT_TIMEOUT_COUNT #error "RECENT_CIRCUITS is set too low." #endif @@ -3255,6 +3393,9 @@ typedef enum setopt_err_t { typedef enum { /** We're remapping this address because the controller told us to. */ ADDRMAPSRC_CONTROLLER, + /** We're remapping this address because of an AutomapHostsOnResolve + * configuration. */ + ADDRMAPSRC_AUTOMAP, /** We're remapping this address because our configuration (via torrc, the * command line, or a SETCONF command) told us to. */ ADDRMAPSRC_TORRC, @@ -3319,7 +3460,9 @@ typedef enum buildtimeout_set_event_t { */ #define CONN_LOG_PROTECT(conn, stmt) \ STMT_BEGIN \ - int _log_conn_is_control = (conn && conn->type == CONN_TYPE_CONTROL); \ + int _log_conn_is_control; \ + tor_assert(conn); \ + _log_conn_is_control = (conn->type == CONN_TYPE_CONTROL); \ if (_log_conn_is_control) \ disable_control_logging(); \ STMT_BEGIN stmt; STMT_END; \ @@ -3356,8 +3499,19 @@ typedef struct { } fp_pair_t; /********************************* dirserv.c ***************************/ + +/** An enum to describe what format we're generating a routerstatus line in. + */ typedef enum { - NS_V2, NS_V3_CONSENSUS, NS_V3_VOTE, NS_CONTROL_PORT, + /** For use in a v2 opinion */ + NS_V2, + /** For use in a consensus networkstatus document (ns flavor) */ + NS_V3_CONSENSUS, + /** For use in a vote networkstatus document */ + NS_V3_VOTE, + /** For passing to the controlport in response to a GETINFO request */ + NS_CONTROL_PORT, + /** For use in a consensus networkstatus document (microdesc flavor) */ NS_V3_CONSENSUS_MICRODESC } routerstatus_format_type_t; @@ -3374,9 +3528,14 @@ typedef struct measured_bw_line_t { /** Describes the schedule by which votes should be generated. */ typedef struct vote_timing_t { + /** Length in seconds between one consensus becoming valid and the next + * becoming valid. */ int vote_interval; + /** For how many intervals is a consensus valid? */ int n_intervals_valid; + /** Time in seconds allowed to propagate votes */ int vote_delay; + /** Time in seconds allowed to propagate signatures */ int dist_delay; } vote_timing_t; @@ -3576,7 +3735,7 @@ typedef struct trusted_dir_server_t { unsigned int has_accepted_serverdesc:1; /** What kind of authority is this? (Bitfield.) */ - authority_type_t type; + dirinfo_type_t type; download_status_t v2_ns_dl_status; /**< Status of downloading this server's * v2 network status. */ @@ -3594,7 +3753,7 @@ typedef struct trusted_dir_server_t { #define ROUTER_MAX_DECLARED_BANDWIDTH INT32_MAX -/* Flags for pick_directory_server and pick_trusteddirserver. */ +/* Flags for pick_directory_server() and pick_trusteddirserver(). */ /** Flag to indicate that we should not automatically be willing to use * ourself to answer a directory request. * Passed to router_pick_directory_server (et al).*/ @@ -3654,6 +3813,7 @@ typedef enum was_router_added_t { ROUTER_NOT_IN_CONSENSUS = -3, ROUTER_NOT_IN_CONSENSUS_OR_NETWORKSTATUS = -4, ROUTER_AUTHDIR_REJECTS = -5, + ROUTER_WAS_NOT_WANTED = -6 } was_router_added_t; /********************************* routerparse.c ************************/ diff --git a/src/or/policies.c b/src/or/policies.c index 8d8de11828..f80808dd62 100644 --- a/src/or/policies.c +++ b/src/or/policies.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -46,7 +46,7 @@ typedef struct policy_summary_item_t { uint16_t prt_max; /**< Highest port number to accept/reject. */ uint64_t reject_count; /**< Number of IP-Addresses that are rejected to this port range. */ - int accepted:1; /** Has this port already been accepted */ + unsigned int accepted:1; /** Has this port already been accepted */ } policy_summary_item_t; /** Private networks. This list is used in two places, once to expand the @@ -83,15 +83,15 @@ policy_expand_private(smartlist_t **policy) continue; } for (i = 0; private_nets[i]; ++i) { - addr_policy_t policy; - memcpy(&policy, p, sizeof(addr_policy_t)); - policy.is_private = 0; - policy.is_canonical = 0; - if (tor_addr_parse_mask_ports(private_nets[i], &policy.addr, - &policy.maskbits, &port_min, &port_max)<0) { + addr_policy_t newpolicy; + memcpy(&newpolicy, p, sizeof(addr_policy_t)); + newpolicy.is_private = 0; + newpolicy.is_canonical = 0; + if (tor_addr_parse_mask_ports(private_nets[i], &newpolicy.addr, + &newpolicy.maskbits, &port_min, &port_max)<0) { tor_assert(0); } - smartlist_add(tmp, addr_policy_get_canonical_entry(&policy)); + smartlist_add(tmp, addr_policy_get_canonical_entry(&newpolicy)); } addr_policy_free(p); }); @@ -164,7 +164,7 @@ parse_addr_policy(config_line_t *cfg, smartlist_t **dest, static int parse_reachable_addresses(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); int ret = 0; if (options->ReachableDirAddresses && @@ -356,7 +356,7 @@ authdir_policy_badexit_address(uint32_t addr, uint16_t port) * options in <b>options</b>, return -1 and set <b>msg</b> to a newly * allocated description of the error. Else return 0. */ int -validate_addr_policies(or_options_t *options, char **msg) +validate_addr_policies(const or_options_t *options, char **msg) { /* XXXX Maybe merge this into parse_policies_from_options, to make sure * that the two can't go out of sync. */ @@ -440,7 +440,7 @@ load_policy_from_option(config_line_t *config, smartlist_t **policy, /** Set all policies based on <b>options</b>, which should have been validated * first by validate_addr_policies. */ int -policies_parse_from_options(or_options_t *options) +policies_parse_from_options(const or_options_t *options) { int ret = 0; if (load_policy_from_option(options->SocksPolicy, &socks_policy, -1) < 0) @@ -875,6 +875,14 @@ policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest, return 0; } +/** Add "reject *:*" to the end of the policy in *<b>dest</b>, allocating + * *<b>dest</b> as needed. */ +void +policies_exit_policy_append_reject_star(smartlist_t **dest) +{ + append_exit_policy_string(dest, "reject *:*"); +} + /** Replace the exit policy of <b>node</b> with reject *:* */ void policies_set_node_exitpolicy_to_reject_all(node_t *node) @@ -893,6 +901,8 @@ exit_policy_is_general_exit_helper(smartlist_t *policy, int port) memset(subnet_status, 0, sizeof(subnet_status)); SMARTLIST_FOREACH(policy, addr_policy_t *, p, { + if (tor_addr_family(&p->addr) != AF_INET) + continue; /* IPv4 only for now */ if (p->prt_min > port || p->prt_max < port) continue; /* Doesn't cover our port. */ mask = 0; @@ -1256,8 +1266,8 @@ policy_summarize(smartlist_t *policy) accepts_str = smartlist_join_strings(accepts, ",", 0, &accepts_len); rejects_str = smartlist_join_strings(rejects, ",", 0, &rejects_len); - if (rejects_len > MAX_EXITPOLICY_SUMMARY_LEN && - accepts_len > MAX_EXITPOLICY_SUMMARY_LEN) { + if (rejects_len > MAX_EXITPOLICY_SUMMARY_LEN-strlen("reject")-1 && + accepts_len > MAX_EXITPOLICY_SUMMARY_LEN-strlen("accept")-1) { char *c; shorter_str = accepts_str; prefix = "accept"; @@ -1382,8 +1392,8 @@ parse_short_policy(const char *summary) } { - size_t size = sizeof(short_policy_t) + - sizeof(short_policy_entry_t)*(n_entries-1); + size_t size = STRUCT_OFFSET(short_policy_t, entries) + + sizeof(short_policy_entry_t)*(n_entries); result = tor_malloc_zero(size); tor_assert( (char*)&result->entries[n_entries-1] < ((char*)result)+size); @@ -1480,7 +1490,7 @@ compare_tor_addr_to_node_policy(const tor_addr_t *addr, uint16_t port, if (node->ri) return compare_tor_addr_to_addr_policy(addr, port, node->ri->exit_policy); - else if (node->md && node->md) { + else if (node->md) { if (node->md->exit_policy == NULL) return ADDR_POLICY_REJECTED; else diff --git a/src/or/policies.h b/src/or/policies.h index 5c1113e75a..6f3624aba1 100644 --- a/src/or/policies.h +++ b/src/or/policies.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -29,9 +29,9 @@ int authdir_policy_valid_address(uint32_t addr, uint16_t port); int authdir_policy_baddir_address(uint32_t addr, uint16_t port); int authdir_policy_badexit_address(uint32_t addr, uint16_t port); -int validate_addr_policies(or_options_t *options, char **msg); +int validate_addr_policies(const or_options_t *options, char **msg); void policy_expand_private(smartlist_t **policy); -int policies_parse_from_options(or_options_t *options); +int policies_parse_from_options(const or_options_t *options); addr_policy_t *addr_policy_get_canonical_entry(addr_policy_t *ent); int cmp_addr_policies(smartlist_t *a, smartlist_t *b); @@ -48,6 +48,7 @@ addr_policy_result_t compare_tor_addr_to_node_policy(const tor_addr_t *addr, int policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest, int rejectprivate, const char *local_address, int add_default_policy); +void policies_exit_policy_append_reject_star(smartlist_t **dest); void policies_set_node_exitpolicy_to_reject_all(node_t *exitrouter); int exit_policy_is_general_exit(smartlist_t *policy); int policy_is_reject_star(const smartlist_t *policy); diff --git a/src/or/reasons.c b/src/or/reasons.c index aa7972be5b..319e6c055a 100644 --- a/src/or/reasons.c +++ b/src/or/reasons.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -40,6 +40,8 @@ stream_end_reason_to_control_string(int reason) case END_STREAM_REASON_NET_UNREACHABLE: return "NET_UNREACHABLE"; case END_STREAM_REASON_SOCKSPROTOCOL: return "SOCKS_PROTOCOL"; + case END_STREAM_REASON_PRIVATE_ADDR: return "PRIVATE_ADDR"; + default: return NULL; } } @@ -125,6 +127,9 @@ stream_end_reason_to_socks5_response(int reason) return SOCKS5_NET_UNREACHABLE; case END_STREAM_REASON_SOCKSPROTOCOL: return SOCKS5_GENERAL_ERROR; + case END_STREAM_REASON_PRIVATE_ADDR: + return SOCKS5_GENERAL_ERROR; + default: log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Reason for ending (%d) not recognized; " @@ -169,13 +174,7 @@ errno_to_stream_end_reason(int e) S_CASE(ENETUNREACH): return END_STREAM_REASON_INTERNAL; S_CASE(EHOSTUNREACH): - /* XXXX022 - * The correct behavior is END_STREAM_REASON_NOROUTE, but older - * clients don't recognize it. So we're going to continue sending - * "MISC" until 0.2.1.27 or later is "well established". - */ - /* return END_STREAM_REASON_NOROUTE; */ - return END_STREAM_REASON_MISC; + return END_STREAM_REASON_NOROUTE; S_CASE(ECONNREFUSED): return END_STREAM_REASON_CONNECTREFUSED; S_CASE(ECONNRESET): diff --git a/src/or/reasons.h b/src/or/reasons.h index b87d36a77a..01f9717948 100644 --- a/src/or/reasons.h +++ b/src/or/reasons.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/or/relay.c b/src/or/relay.c index 6529efb243..df6d0a8a5f 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -29,6 +29,7 @@ #include "reasons.h" #include "relay.h" #include "rendcommon.h" +#include "router.h" #include "routerlist.h" #include "routerparse.h" @@ -53,9 +54,9 @@ static int circuit_consider_stop_edge_reading(circuit_t *circ, crypt_path_t *layer_hint); static int circuit_queue_streams_are_blocked(circuit_t *circ); +/* XXXX023 move this all to compat_libevent */ /** Cache the current hi-res time; the cache gets reset when libevent * calls us. */ - static struct timeval cached_time_hires = {0, 0}; /** Stop reading on edge connections when we have this many cells @@ -77,7 +78,7 @@ tor_gettimeofday_cached(struct timeval *tv) void tor_gettimeofday_cache_clear(void) { - cached_time_hires.tv_sec = 0; + cached_time_hires.tv_sec = 0; } /** Stats: how many relay cells have originated at this hop, or have @@ -98,7 +99,7 @@ relay_set_digest(crypto_digest_env_t *digest, cell_t *cell) char integrity[4]; relay_header_t rh; - crypto_digest_add_bytes(digest, cell->payload, CELL_PAYLOAD_SIZE); + crypto_digest_add_bytes(digest, (char*)cell->payload, CELL_PAYLOAD_SIZE); crypto_digest_get_digest(digest, integrity, 4); // log_fn(LOG_DEBUG,"Putting digest of %u %u %u %u into relay cell.", // integrity[0], integrity[1], integrity[2], integrity[3]); @@ -131,10 +132,10 @@ relay_digest_matches(crypto_digest_env_t *digest, cell_t *cell) // received_integrity[0], received_integrity[1], // received_integrity[2], received_integrity[3]); - crypto_digest_add_bytes(digest, cell->payload, CELL_PAYLOAD_SIZE); + crypto_digest_add_bytes(digest, (char*) cell->payload, CELL_PAYLOAD_SIZE); crypto_digest_get_digest(digest, calculated_integrity, 4); - if (memcmp(received_integrity, calculated_integrity, 4)) { + if (tor_memneq(received_integrity, calculated_integrity, 4)) { // log_fn(LOG_INFO,"Recognized=0 but bad digest. Not recognizing."); // (%d vs %d).", received_integrity, calculated_integrity); /* restore digest to its old form */ @@ -157,12 +158,12 @@ relay_digest_matches(crypto_digest_env_t *digest, cell_t *cell) * Return -1 if the crypto fails, else return 0. */ static int -relay_crypt_one_payload(crypto_cipher_env_t *cipher, char *in, +relay_crypt_one_payload(crypto_cipher_env_t *cipher, uint8_t *in, int encrypt_mode) { int r; (void)encrypt_mode; - r = crypto_cipher_crypt_inplace(cipher, in, CELL_PAYLOAD_SIZE); + r = crypto_cipher_crypt_inplace(cipher, (char*) in, CELL_PAYLOAD_SIZE); if (r) { log_warn(LD_BUG,"Error during relay encryption"); @@ -477,10 +478,9 @@ relay_lookup_conn(circuit_t *circ, cell_t *cell, * about the wire format. */ void -relay_header_pack(char *dest, const relay_header_t *src) +relay_header_pack(uint8_t *dest, const relay_header_t *src) { - *(uint8_t*)(dest) = src->command; - + set_uint8(dest, src->command); set_uint16(dest+1, htons(src->recognized)); set_uint16(dest+3, htons(src->stream_id)); memcpy(dest+5, src->integrity, 4); @@ -491,10 +491,9 @@ relay_header_pack(char *dest, const relay_header_t *src) * relay_header_t structure <b>dest</b>. */ void -relay_header_unpack(relay_header_t *dest, const char *src) +relay_header_unpack(relay_header_t *dest, const uint8_t *src) { - dest->command = *(uint8_t*)(src); - + dest->command = get_uint8(src); dest->recognized = ntohs(get_uint16(src+1)); dest->stream_id = ntohs(get_uint16(src+3)); memcpy(dest->integrity, src+5, 4); @@ -753,9 +752,9 @@ connection_ap_process_end_not_open( (tor_inet_aton(conn->socks_request->address, &in) && !conn->chosen_exit_name))) { log_info(LD_APP, - "Exitrouter '%s' seems to be more restrictive than its exit " + "Exitrouter %s seems to be more restrictive than its exit " "policy. Not using this router as exit for now.", - node_get_nickname(exitrouter)); + node_describe(exitrouter)); policies_set_node_exitpolicy_to_reject_all(exitrouter); } /* rewrite it to an IP if we learned one. */ @@ -795,6 +794,8 @@ connection_ap_process_end_not_open( < MAX_RESOLVE_FAILURES) { /* We haven't retried too many times; reattach the connection. */ circuit_log_path(LOG_INFO,LD_APP,circ); + /* Mark this circuit "unusable for new streams". */ + /* XXXX023 this is a kludgy way to do this. */ tor_assert(circ->_base.timestamp_dirty); circ->_base.timestamp_dirty -= get_options()->MaxCircuitDirtiness; @@ -1033,6 +1034,9 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ, relay_header_t rh; unsigned domain = layer_hint?LD_APP:LD_EXIT; int reason; + int optimistic_data = 0; /* Set to 1 if we receive data on a stream + * that's in the EXIT_CONN_STATE_RESOLVING + * or EXIT_CONN_STATE_CONNECTING states. */ tor_assert(cell); tor_assert(circ); @@ -1052,9 +1056,20 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ, /* either conn is NULL, in which case we've got a control cell, or else * conn points to the recognized stream. */ - if (conn && !connection_state_is_open(TO_CONN(conn))) - return connection_edge_process_relay_cell_not_open( - &rh, cell, circ, conn, layer_hint); + if (conn && !connection_state_is_open(TO_CONN(conn))) { + if (conn->_base.type == CONN_TYPE_EXIT && + (conn->_base.state == EXIT_CONN_STATE_CONNECTING || + conn->_base.state == EXIT_CONN_STATE_RESOLVING) && + rh.command == RELAY_COMMAND_DATA) { + /* Allow DATA cells to be delivered to an exit node in state + * EXIT_CONN_STATE_CONNECTING or EXIT_CONN_STATE_RESOLVING. + * This speeds up HTTP, for example. */ + optimistic_data = 1; + } else { + return connection_edge_process_relay_cell_not_open( + &rh, cell, circ, conn, layer_hint); + } + } switch (rh.command) { case RELAY_COMMAND_DROP: @@ -1119,13 +1134,20 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ, } stats_n_data_bytes_received += rh.length; - connection_write_to_buf(cell->payload + RELAY_HEADER_SIZE, + connection_write_to_buf((char*)(cell->payload + RELAY_HEADER_SIZE), rh.length, TO_CONN(conn)); - connection_edge_consider_sending_sendme(conn); + + if (!optimistic_data) { + /* Only send a SENDME if we're not getting optimistic data; otherwise + * a SENDME could arrive before the CONNECTED. + */ + connection_edge_consider_sending_sendme(conn); + } + return 0; case RELAY_COMMAND_END: reason = rh.length > 0 ? - *(uint8_t *)(cell->payload+RELAY_HEADER_SIZE) : END_STREAM_REASON_MISC; + get_uint8(cell->payload+RELAY_HEADER_SIZE) : END_STREAM_REASON_MISC; if (!conn) { log_info(domain,"end cell (%s) dropped, unknown stream.", stream_end_reason_to_string(reason)); @@ -1405,8 +1427,9 @@ connection_edge_package_raw_inbuf(edge_connection_t *conn, int package_partial, goto repeat_connection_edge_package_raw_inbuf; } -/** Called when we've just received a relay data cell, or when - * we've just finished flushing all bytes to stream <b>conn</b>. +/** Called when we've just received a relay data cell, when + * we've just finished flushing all bytes to stream <b>conn</b>, + * or when we've flushed *some* bytes to the stream <b>conn</b>. * * If conn->outbuf is not too full, and our deliver window is * low, send back a suitable number of stream-level sendme cells. @@ -1987,7 +2010,8 @@ static int ewma_enabled = 0; /** Adjust the global cell scale factor based on <b>options</b> */ void -cell_ewma_set_scale_factor(or_options_t *options, networkstatus_t *consensus) +cell_ewma_set_scale_factor(const or_options_t *options, + const networkstatus_t *consensus) { int32_t halflife_ms; double halflife; @@ -1995,9 +2019,9 @@ cell_ewma_set_scale_factor(or_options_t *options, networkstatus_t *consensus) if (options && options->CircuitPriorityHalflife >= -EPSILON) { halflife = options->CircuitPriorityHalflife; source = "CircuitPriorityHalflife in configuration"; - } else if (consensus && - (halflife_ms = networkstatus_get_param( - consensus, "CircuitPriorityHalflifeMsec", -1)) >= 0) { + } else if (consensus && (halflife_ms = networkstatus_get_param( + consensus, "CircuitPriorityHalflifeMsec", + -1, -1, INT32_MAX)) >= 0) { halflife = ((double)halflife_ms)/1000.0; source = "CircuitPriorityHalflifeMsec in consensus"; } else { @@ -2313,13 +2337,13 @@ connection_or_flush_from_first_active_circuit(or_connection_t *conn, int max, /* Calculate the exact time that this cell has spent in the queue. */ if (get_options()->CellStatistics && !CIRCUIT_IS_ORIGIN(circ)) { - struct timeval now; + struct timeval tvnow; uint32_t flushed; uint32_t cell_waiting_time; insertion_time_queue_t *it_queue = queue->insertion_times; - tor_gettimeofday_cached(&now); - flushed = (uint32_t)((now.tv_sec % SECONDS_IN_A_DAY) * 100L + - (uint32_t)now.tv_usec / (uint32_t)10000L); + tor_gettimeofday_cached(&tvnow); + flushed = (uint32_t)((tvnow.tv_sec % SECONDS_IN_A_DAY) * 100L + + (uint32_t)tvnow.tv_usec / (uint32_t)10000L); if (!it_queue || !it_queue->first) { log_info(LD_GENERAL, "Cannot determine insertion time of cell. " "Looks like the CellStatistics option was " @@ -2457,7 +2481,7 @@ append_cell_to_circuit_queue(circuit_t *circ, or_connection_t *orconn, * ADDRESS [length bytes] * Return the number of bytes added, or -1 on error */ int -append_address_to_payload(char *payload_out, const tor_addr_t *addr) +append_address_to_payload(uint8_t *payload_out, const tor_addr_t *addr) { uint32_t a; switch (tor_addr_family(addr)) { @@ -2482,13 +2506,13 @@ append_address_to_payload(char *payload_out, const tor_addr_t *addr) * encoded as by append_address_to_payload(), try to decode the address into * *<b>addr_out</b>. Return the next byte in the payload after the address on * success, or NULL on failure. */ -const char * -decode_address_from_payload(tor_addr_t *addr_out, const char *payload, +const uint8_t * +decode_address_from_payload(tor_addr_t *addr_out, const uint8_t *payload, int payload_len) { if (payload_len < 2) return NULL; - if (payload_len < 2+(uint8_t)payload[1]) + if (payload_len < 2+payload[1]) return NULL; switch (payload[0]) { @@ -2500,13 +2524,13 @@ decode_address_from_payload(tor_addr_t *addr_out, const char *payload, case RESOLVED_TYPE_IPV6: if (payload[1] != 16) return NULL; - tor_addr_from_ipv6_bytes(addr_out, payload+2); + tor_addr_from_ipv6_bytes(addr_out, (char*)(payload+2)); break; default: tor_addr_make_unspec(addr_out); break; } - return payload + 2 + (uint8_t)payload[1]; + return payload + 2 + payload[1]; } /** Remove all the cells queued on <b>circ</b> for <b>orconn</b>. */ diff --git a/src/or/relay.h b/src/or/relay.h index 08a1ffe789..7fce8edcaf 100644 --- a/src/or/relay.h +++ b/src/or/relay.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -18,8 +18,8 @@ extern uint64_t stats_n_relay_cells_delivered; int circuit_receive_relay_cell(cell_t *cell, circuit_t *circ, cell_direction_t cell_direction); -void relay_header_pack(char *dest, const relay_header_t *src); -void relay_header_unpack(relay_header_t *dest, const char *src); +void relay_header_pack(uint8_t *dest, const relay_header_t *src); +void relay_header_unpack(relay_header_t *dest, const uint8_t *src); int relay_send_command_from_edge(streamid_t stream_id, circuit_t *circ, uint8_t relay_command, const char *payload, size_t payload_len, crypt_path_t *cpath_layer); @@ -55,14 +55,16 @@ void assert_active_circuits_ok(or_connection_t *orconn); void make_circuit_inactive_on_conn(circuit_t *circ, or_connection_t *conn); void make_circuit_active_on_conn(circuit_t *circ, or_connection_t *conn); -int append_address_to_payload(char *payload_out, const tor_addr_t *addr); -const char *decode_address_from_payload(tor_addr_t *addr_out, - const char *payload, +int append_address_to_payload(uint8_t *payload_out, const tor_addr_t *addr); +const uint8_t *decode_address_from_payload(tor_addr_t *addr_out, + const uint8_t *payload, int payload_len); unsigned cell_ewma_get_tick(void); -void cell_ewma_set_scale_factor(or_options_t *options, - networkstatus_t *consensus); +void cell_ewma_set_scale_factor(const or_options_t *options, + const networkstatus_t *consensus); void circuit_clear_cell_queue(circuit_t *circ, or_connection_t *orconn); +void tor_gettimeofday_cache_clear(void); + #endif diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 5c5c48afbd..516455983c 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -21,8 +21,23 @@ #include "rendclient.h" #include "rendcommon.h" #include "rephist.h" +#include "router.h" #include "routerlist.h" +static extend_info_t *rend_client_get_random_intro_impl( + const rend_cache_entry_t *rend_query, + const int strict, const int warnings); + +/** Purge all potentially remotely-detectable state held in the hidden + * service client code. Called on SIGNAL NEWNYM. */ +void +rend_client_purge_state(void) +{ + rend_cache_purge(); + rend_client_cancel_descriptor_fetches(); + rend_client_purge_last_hid_serv_requests(); +} + /** Called when we've established a circuit to an introduction point: * send the introduction request. */ void @@ -63,6 +78,51 @@ rend_client_send_establish_rendezvous(origin_circuit_t *circ) return 0; } +/** Extend the introduction circuit <b>circ</b> to another valid + * introduction point for the hidden service it is trying to connect + * to, or mark it and launch a new circuit if we can't extend it. + * Return 0 on success. Return -1 and mark the introduction + * circuit on failure. + * + * On failure, the caller is responsible for marking the associated + * rendezvous circuit for close. */ +static int +rend_client_reextend_intro_circuit(origin_circuit_t *circ) +{ + extend_info_t *extend_info; + int result; + extend_info = rend_client_get_random_intro(circ->rend_data); + if (!extend_info) { + log_warn(LD_REND, + "No usable introduction points left for %s. Closing.", + safe_str_client(circ->rend_data->onion_address)); + circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL); + return -1; + } + if (circ->remaining_relay_early_cells) { + log_info(LD_REND, + "Re-extending circ %d, this time to %s.", + circ->_base.n_circ_id, + safe_str_client(extend_info_describe(extend_info))); + result = circuit_extend_to_new_exit(circ, extend_info); + } else { + log_info(LD_REND, + "Building a new introduction circuit, this time to %s.", + safe_str_client(extend_info_describe(extend_info))); + circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_FINISHED); + if (!circuit_launch_by_extend_info(CIRCUIT_PURPOSE_C_INTRODUCING, + extend_info, + CIRCLAUNCH_IS_INTERNAL)) { + log_warn(LD_REND, "Building introduction circuit failed."); + result = -1; + } else { + result = 0; + } + } + extend_info_free(extend_info); + return result; +} + /** Called when we're trying to connect an ap conn; sends an INTRODUCE1 cell * down introcirc if possible. */ @@ -85,35 +145,57 @@ rend_client_send_introduction(origin_circuit_t *introcirc, tor_assert(rendcirc->rend_data); tor_assert(!rend_cmp_service_ids(introcirc->rend_data->onion_address, rendcirc->rend_data->onion_address)); + tor_assert(!(introcirc->build_state->onehop_tunnel)); + tor_assert(!(rendcirc->build_state->onehop_tunnel)); if (rend_cache_lookup_entry(introcirc->rend_data->onion_address, -1, &entry) < 1) { - log_warn(LD_REND, - "query %s didn't have valid rend desc in cache. Failing.", - escaped_safe_str_client(introcirc->rend_data->onion_address)); - goto err; + log_info(LD_REND, + "query %s didn't have valid rend desc in cache. " + "Refetching descriptor.", + safe_str_client(introcirc->rend_data->onion_address)); + rend_client_refetch_v2_renddesc(introcirc->rend_data); + { + connection_t *conn; + + while ((conn = connection_get_by_type_state_rendquery(CONN_TYPE_AP, + AP_CONN_STATE_CIRCUIT_WAIT, + introcirc->rend_data->onion_address))) { + conn->state = AP_CONN_STATE_RENDDESC_WAIT; + } + } + + return -1; } - /* first 20 bytes of payload are the hash of the intro key */ + /* first 20 bytes of payload are the hash of Bob's pk */ intro_key = NULL; SMARTLIST_FOREACH(entry->parsed->intro_nodes, rend_intro_point_t *, intro, { - if (!memcmp(introcirc->build_state->chosen_exit->identity_digest, + if (tor_memeq(introcirc->build_state->chosen_exit->identity_digest, intro->extend_info->identity_digest, DIGEST_LEN)) { intro_key = intro->intro_key; break; } }); if (!intro_key) { - log_info(LD_REND, "Our introduction point knowledge changed in " - "mid-connect! Could not find intro key; we only have a " - "v2 rend desc with %d intro points. Giving up.", + log_info(LD_REND, "Could not find intro key for %s at %s; we " + "have a v2 rend desc with %d intro points. " + "Trying a different intro point...", + safe_str_client(introcirc->rend_data->onion_address), + safe_str_client(extend_info_describe( + introcirc->build_state->chosen_exit)), smartlist_len(entry->parsed->intro_nodes)); - goto err; + + if (rend_client_reextend_intro_circuit(introcirc)) { + goto perm_err; + } else { + return -1; + } } if (crypto_pk_get_digest(intro_key, payload)<0) { log_warn(LD_BUG, "Internal error: couldn't hash public key."); - goto err; + goto perm_err; } /* Initialize the pending_final_cpath and start the DH handshake. */ @@ -122,13 +204,13 @@ rend_client_send_introduction(origin_circuit_t *introcirc, cpath = rendcirc->build_state->pending_final_cpath = tor_malloc_zero(sizeof(crypt_path_t)); cpath->magic = CRYPT_PATH_MAGIC; - if (!(cpath->dh_handshake_state = crypto_dh_new())) { + if (!(cpath->dh_handshake_state = crypto_dh_new(DH_TYPE_REND))) { log_warn(LD_BUG, "Internal error: couldn't allocate DH."); - goto err; + goto perm_err; } if (crypto_dh_generate_public(cpath->dh_handshake_state)<0) { log_warn(LD_BUG, "Internal error: couldn't generate g^x."); - goto err; + goto perm_err; } } @@ -178,19 +260,20 @@ rend_client_send_introduction(origin_circuit_t *introcirc, if (crypto_dh_get_public(cpath->dh_handshake_state, tmp+dh_offset, DH_KEY_LEN)<0) { log_warn(LD_BUG, "Internal error: couldn't extract g^x."); - goto err; + goto perm_err; } note_crypto_pk_op(REND_CLIENT); /*XXX maybe give crypto_pk_public_hybrid_encrypt a max_len arg, * to avoid buffer overflows? */ r = crypto_pk_public_hybrid_encrypt(intro_key, payload+DIGEST_LEN, + sizeof(payload)-DIGEST_LEN, tmp, (int)(dh_offset+DH_KEY_LEN), PK_PKCS1_OAEP_PADDING, 0); if (r<0) { log_warn(LD_BUG,"Internal error: hybrid pk encrypt failed."); - goto err; + goto perm_err; } payload_len = DIGEST_LEN + r; @@ -203,17 +286,22 @@ rend_client_send_introduction(origin_circuit_t *introcirc, introcirc->cpath->prev)<0) { /* introcirc is already marked for close. leave rendcirc alone. */ log_warn(LD_BUG, "Couldn't send INTRODUCE1 cell"); - return -1; + return -2; } /* Now, we wait for an ACK or NAK on this circuit. */ introcirc->_base.purpose = CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT; + /* Set timestamp_dirty, because circuit_expire_building expects it + * to specify when a circuit entered the _C_INTRODUCE_ACK_WAIT + * state. */ + introcirc->_base.timestamp_dirty = time(NULL); return 0; - err: - circuit_mark_for_close(TO_CIRCUIT(introcirc), END_CIRC_REASON_INTERNAL); + perm_err: + if (!introcirc->_base.marked_for_close) + circuit_mark_for_close(TO_CIRCUIT(introcirc), END_CIRC_REASON_INTERNAL); circuit_mark_for_close(TO_CIRCUIT(rendcirc), END_CIRC_REASON_INTERNAL); - return -1; + return -2; } /** Called when a rendezvous circuit is open; sends a establish @@ -235,7 +323,7 @@ rend_client_rendcirc_has_opened(origin_circuit_t *circ) */ int rend_client_introduction_acked(origin_circuit_t *circ, - const char *request, size_t request_len) + const uint8_t *request, size_t request_len) { origin_circuit_t *rendcirc; (void) request; // XXXX Use this. @@ -249,6 +337,7 @@ rend_client_introduction_acked(origin_circuit_t *circ, } tor_assert(circ->build_state->chosen_exit); + tor_assert(!(circ->build_state->onehop_tunnel)); tor_assert(circ->rend_data); if (request_len == 0) { @@ -260,7 +349,12 @@ rend_client_introduction_acked(origin_circuit_t *circ, rendcirc = circuit_get_by_rend_query_and_purpose( circ->rend_data->onion_address, CIRCUIT_PURPOSE_C_REND_READY); if (rendcirc) { /* remember the ack */ + tor_assert(!(rendcirc->build_state->onehop_tunnel)); rendcirc->_base.purpose = CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED; + /* Set timestamp_dirty, because circuit_expire_building expects + * it to specify when a circuit entered the + * _C_REND_READY_INTRO_ACKED state. */ + rendcirc->_base.timestamp_dirty = time(NULL); } else { log_info(LD_REND,"...Found no rend circ. Dropping on the floor."); } @@ -274,45 +368,16 @@ rend_client_introduction_acked(origin_circuit_t *circ, * points. If any remain, extend to a new one and try again. * If none remain, refetch the service descriptor. */ + log_info(LD_REND, "Got nack for %s from %s...", + safe_str_client(circ->rend_data->onion_address), + safe_str_client(extend_info_describe(circ->build_state->chosen_exit))); if (rend_client_remove_intro_point(circ->build_state->chosen_exit, circ->rend_data) > 0) { /* There are introduction points left. Re-extend the circuit to * another intro point and try again. */ - extend_info_t *extend_info; - int result; - extend_info = rend_client_get_random_intro(circ->rend_data); - if (!extend_info) { - log_warn(LD_REND, "No introduction points left for %s. Closing.", - escaped_safe_str_client(circ->rend_data->onion_address)); - circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL); - return -1; - } - if (circ->remaining_relay_early_cells) { - log_info(LD_REND, - "Got nack for %s from %s. Re-extending circ %d, " - "this time to %s.", - escaped_safe_str_client(circ->rend_data->onion_address), - circ->build_state->chosen_exit->nickname, - circ->_base.n_circ_id, extend_info->nickname); - result = circuit_extend_to_new_exit(circ, extend_info); - } else { - log_info(LD_REND, - "Got nack for %s from %s. Building a new introduction " - "circuit, this time to %s.", - escaped_safe_str_client(circ->rend_data->onion_address), - circ->build_state->chosen_exit->nickname, - extend_info->nickname); - circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_FINISHED); - if (!circuit_launch_by_extend_info(CIRCUIT_PURPOSE_C_INTRODUCING, - extend_info, - CIRCLAUNCH_IS_INTERNAL)) { - log_warn(LD_REND, "Building introduction circuit failed."); - result = -1; - } else { - result = 0; - } - } - extend_info_free(extend_info); + int result = rend_client_reextend_intro_circuit(circ); + /* XXXX If that call failed, should we close the rend circuit, + * too? */ return result; } } @@ -327,7 +392,17 @@ rend_client_introduction_acked(origin_circuit_t *circ, * certain queries; keys are strings consisting of base32-encoded * hidden service directory identities and base32-encoded descriptor IDs; * values are pointers to timestamps of the last requests. */ -static strmap_t *last_hid_serv_requests = NULL; +static strmap_t *last_hid_serv_requests_ = NULL; + +/** Returns last_hid_serv_requests_, initializing it to a new strmap if + * necessary. */ +static strmap_t * +get_last_hid_serv_requests(void) +{ + if (!last_hid_serv_requests_) + last_hid_serv_requests_ = strmap_new(); + return last_hid_serv_requests_; +} /** Look up the last request time to hidden service directory <b>hs_dir</b> * for descriptor ID <b>desc_id_base32</b>. If <b>set</b> is non-zero, @@ -341,6 +416,7 @@ lookup_last_hid_serv_request(routerstatus_t *hs_dir, char hsdir_id_base32[REND_DESC_ID_V2_LEN_BASE32 + 1]; char hsdir_desc_comb_id[2 * REND_DESC_ID_V2_LEN_BASE32 + 1]; time_t *last_request_ptr; + strmap_t *last_hid_serv_requests = get_last_hid_serv_requests(); base32_encode(hsdir_id_base32, sizeof(hsdir_id_base32), hs_dir->identity_digest, DIGEST_LEN); tor_snprintf(hsdir_desc_comb_id, sizeof(hsdir_desc_comb_id), "%s%s", @@ -362,12 +438,11 @@ lookup_last_hid_serv_request(routerstatus_t *hs_dir, * it does not contain requests older than REND_HID_SERV_DIR_REQUERY_PERIOD * seconds any more. */ static void -directory_clean_last_hid_serv_requests(void) +directory_clean_last_hid_serv_requests(time_t now) { strmap_iter_t *iter; - time_t cutoff = time(NULL) - REND_HID_SERV_DIR_REQUERY_PERIOD; - if (!last_hid_serv_requests) - last_hid_serv_requests = strmap_new(); + time_t cutoff = now - REND_HID_SERV_DIR_REQUERY_PERIOD; + strmap_t *last_hid_serv_requests = get_last_hid_serv_requests(); for (iter = strmap_iter_init(last_hid_serv_requests); !strmap_iter_done(iter); ) { const char *key; @@ -384,6 +459,26 @@ directory_clean_last_hid_serv_requests(void) } } +/** Purge the history of request times to hidden service directories, + * so that future lookups of an HS descriptor will not fail because we + * accessed all of the HSDir relays responsible for the descriptor + * recently. */ +void +rend_client_purge_last_hid_serv_requests(void) +{ + /* Don't create the table if it doesn't exist yet (and it may very + * well not exist if the user hasn't accessed any HSes)... */ + strmap_t *old_last_hid_serv_requests = last_hid_serv_requests_; + /* ... and let get_last_hid_serv_requests re-create it for us if + * necessary. */ + last_hid_serv_requests_ = NULL; + + if (old_last_hid_serv_requests != NULL) { + log_info(LD_REND, "Purging client last-HS-desc-request-time table"); + strmap_free(old_last_hid_serv_requests, _tor_free); + } +} + /** Determine the responsible hidden service directories for <b>desc_id</b> * and fetch the descriptor belonging to that ID from one of them. Only * send a request to hidden service directories that we did not try within @@ -403,14 +498,16 @@ directory_get_from_hs_dir(const char *desc_id, const rend_data_t *rend_query) tor_assert(rend_query); /* Determine responsible dirs. Even if we can't get all we want, * work with the ones we have. If it's empty, we'll notice below. */ - (int) hid_serv_get_responsible_directories(responsible_dirs, desc_id); + hid_serv_get_responsible_directories(responsible_dirs, desc_id); base32_encode(desc_id_base32, sizeof(desc_id_base32), desc_id, DIGEST_LEN); /* Only select those hidden service directories to which we did not send * a request recently and for which we have a router descriptor here. */ - directory_clean_last_hid_serv_requests(); /* Clean request history first. */ + + /* Clean request history first. */ + directory_clean_last_hid_serv_requests(now); SMARTLIST_FOREACH(responsible_dirs, routerstatus_t *, dir, { if (lookup_last_hid_serv_request(dir, desc_id_base32, 0, 0) + @@ -458,12 +555,12 @@ directory_get_from_hs_dir(const char *desc_id, const rend_data_t *rend_query) log_info(LD_REND, "Sending fetch request for v2 descriptor for " "service '%s' with descriptor ID '%s', auth type %d, " "and descriptor cookie '%s' to hidden service " - "directory '%s' on port %d.", + "directory %s", rend_query->onion_address, desc_id_base32, rend_query->auth_type, (rend_query->auth_type == REND_NO_AUTH ? "[none]" : - escaped_safe_str_client(descriptor_cookie_base64)), - hs_dir->nickname, hs_dir->dir_port); + escaped_safe_str_client(descriptor_cookie_base64)), + routerstatus_describe(hs_dir)); return 1; } @@ -522,8 +619,44 @@ rend_client_refetch_v2_renddesc(const rend_data_t *rend_query) return; } +/** Cancel all rendezvous descriptor fetches currently in progress. + */ +void +rend_client_cancel_descriptor_fetches(void) +{ + smartlist_t *connection_array = get_connection_array(); + + SMARTLIST_FOREACH_BEGIN(connection_array, connection_t *, conn) { + if (conn->type == CONN_TYPE_DIR && + (conn->purpose == DIR_PURPOSE_FETCH_RENDDESC || + conn->purpose == DIR_PURPOSE_FETCH_RENDDESC_V2)) { + /* It's a rendezvous descriptor fetch in progress -- cancel it + * by marking the connection for close. + * + * Even if this connection has already reached EOF, this is + * enough to make sure that if the descriptor hasn't been + * processed yet, it won't be. See the end of + * connection_handle_read; connection_reached_eof (indirectly) + * processes whatever response the connection received. */ + + const rend_data_t *rd = (TO_DIR_CONN(conn))->rend_data; + if (!rd) { + log_warn(LD_BUG | LD_REND, + "Marking for close dir conn fetching rendezvous " + "descriptor for unknown service!"); + } else { + log_debug(LD_REND, "Marking for close dir conn fetching " + "rendezvous descriptor for service %s", + safe_str(rd->onion_address)); + } + connection_mark_for_close(conn); + } + } SMARTLIST_FOREACH_END(conn); +} + /** Remove failed_intro from ent. If ent now has no intro points, or * service is unrecognized, then launch a new renddesc fetch. + * * Return -1 if error, 0 if no intro points remain or service * unrecognized, 1 if recognized and some intro points remain. @@ -551,7 +684,7 @@ rend_client_remove_intro_point(extend_info_t *failed_intro, for (i = 0; i < smartlist_len(ent->parsed->intro_nodes); i++) { rend_intro_point_t *intro = smartlist_get(ent->parsed->intro_nodes, i); - if (!memcmp(failed_intro->identity_digest, + if (tor_memeq(failed_intro->identity_digest, intro->extend_info->identity_digest, DIGEST_LEN)) { rend_intro_point_free(intro); smartlist_del(ent->parsed->intro_nodes, i); @@ -559,7 +692,7 @@ rend_client_remove_intro_point(extend_info_t *failed_intro, } } - if (smartlist_len(ent->parsed->intro_nodes) == 0) { + if (! rend_client_any_intro_points_usable(ent)) { log_info(LD_REND, "No more intro points remain for %s. Re-fetching descriptor.", escaped_safe_str_client(rend_query->onion_address)); @@ -584,7 +717,7 @@ rend_client_remove_intro_point(extend_info_t *failed_intro, * the circuit to C_REND_READY. */ int -rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request, +rend_client_rendezvous_acked(origin_circuit_t *circ, const uint8_t *request, size_t request_len) { (void) request; @@ -599,7 +732,10 @@ rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request, log_info(LD_REND,"Got rendezvous ack. This circuit is now ready for " "rendezvous."); circ->_base.purpose = CIRCUIT_PURPOSE_C_REND_READY; - /* XXXX022 This is a pretty brute-force approach. It'd be better to + /* Set timestamp_dirty, because circuit_expire_building expects it + * to specify when a circuit entered the _C_REND_READY state. */ + circ->_base.timestamp_dirty = time(NULL); + /* XXXX023 This is a pretty brute-force approach. It'd be better to * attach only the connections that are waiting on this circuit, rather * than trying to attach them all. See comments bug 743. */ /* If we already have the introduction circuit built, make sure we send @@ -610,7 +746,7 @@ rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request, /** Bob sent us a rendezvous cell; join the circuits. */ int -rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request, +rend_client_receive_rendezvous(origin_circuit_t *circ, const uint8_t *request, size_t request_len) { crypt_path_t *hop; @@ -638,9 +774,10 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request, tor_assert(circ->build_state->pending_final_cpath); hop = circ->build_state->pending_final_cpath; tor_assert(hop->dh_handshake_state); - if (crypto_dh_compute_secret(LOG_PROTOCOL_WARN, hop->dh_handshake_state, - request, DH_KEY_LEN, keys, - DIGEST_LEN+CPATH_KEY_MATERIAL_LEN)<0) { + if (crypto_dh_compute_secret(LOG_PROTOCOL_WARN, + hop->dh_handshake_state, (char*)request, + DH_KEY_LEN, + keys, DIGEST_LEN+CPATH_KEY_MATERIAL_LEN)<0) { log_warn(LD_GENERAL, "Couldn't complete DH handshake."); goto err; } @@ -649,7 +786,7 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request, goto err; /* Check whether the digest is right... */ - if (memcmp(keys, request+DH_KEY_LEN, DIGEST_LEN)) { + if (tor_memneq(keys, request+DH_KEY_LEN, DIGEST_LEN)) { log_warn(LD_PROTOCOL, "Incorrect digest of key material."); goto err; } @@ -668,12 +805,14 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request, onion_append_to_cpath(&circ->cpath, hop); circ->build_state->pending_final_cpath = NULL; /* prevent double-free */ - /* XXXX022 This is a pretty brute-force approach. It'd be better to + /* XXXX023 This is a pretty brute-force approach. It'd be better to * attach only the connections that are waiting on this circuit, rather * than trying to attach them all. See comments bug 743. */ connection_ap_attach_pending(); + memset(keys, 0, sizeof(keys)); return 0; err: + memset(keys, 0, sizeof(keys)); circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_TORPROTOCOL); return -1; } @@ -702,7 +841,7 @@ rend_client_desc_trynow(const char *query) assert_connection_ok(TO_CONN(conn), now); if (rend_cache_lookup_entry(conn->rend_data->onion_address, -1, &entry) == 1 && - smartlist_len(entry->parsed->intro_nodes) > 0) { + rend_client_any_intro_points_usable(entry)) { /* either this fetch worked, or it failed but there was a * valid entry from before which we should reuse */ log_info(LD_REND,"Rend desc is usable. Launching circuits."); @@ -736,23 +875,62 @@ rend_client_desc_trynow(const char *query) extend_info_t * rend_client_get_random_intro(const rend_data_t *rend_query) { - int i; + extend_info_t *result; rend_cache_entry_t *entry; - rend_intro_point_t *intro; if (rend_cache_lookup_entry(rend_query->onion_address, -1, &entry) < 1) { - log_warn(LD_REND, - "Query '%s' didn't have valid rend desc in cache. Failing.", - safe_str_client(rend_query->onion_address)); + log_warn(LD_REND, + "Query '%s' didn't have valid rend desc in cache. Failing.", + safe_str_client(rend_query->onion_address)); return NULL; } + /* See if we can get a node that complies with ExcludeNodes */ + if ((result = rend_client_get_random_intro_impl(entry, 1, 1))) + return result; + /* If not, and StrictNodes is not set, see if we can return any old node + */ + if (!get_options()->StrictNodes) + return rend_client_get_random_intro_impl(entry, 0, 1); + return NULL; +} + +/** As rend_client_get_random_intro, except assume that StrictNodes is set + * iff <b>strict</b> is true. If <b>warnings</b> is false, don't complain + * to the user when we're out of nodes, even if StrictNodes is true. + */ +static extend_info_t * +rend_client_get_random_intro_impl(const rend_cache_entry_t *entry, + const int strict, + const int warnings) +{ + int i; + + rend_intro_point_t *intro; + const or_options_t *options = get_options(); + smartlist_t *usable_nodes; + int n_excluded = 0; + + /* We'll keep a separate list of the usable nodes. If this becomes empty, + * no nodes are usable. */ + usable_nodes = smartlist_create(); + smartlist_add_all(usable_nodes, entry->parsed->intro_nodes); + again: - if (smartlist_len(entry->parsed->intro_nodes) == 0) + if (smartlist_len(usable_nodes) == 0) { + if (n_excluded && get_options()->StrictNodes && warnings) { + /* We only want to warn if StrictNodes is really set. Otherwise + * we're just about to retry anyways. + */ + log_warn(LD_REND, "All introduction points for hidden service are " + "at excluded relays, and StrictNodes is set. Skipping."); + } + smartlist_free(usable_nodes); return NULL; + } - i = crypto_rand_int(smartlist_len(entry->parsed->intro_nodes)); - intro = smartlist_get(entry->parsed->intro_nodes, i); + i = crypto_rand_int(smartlist_len(usable_nodes)); + intro = smartlist_get(usable_nodes, i); /* Do we need to look up the router or is the extend info complete? */ if (!intro->extend_info->onion_key) { const node_t *node; @@ -763,16 +941,34 @@ rend_client_get_random_intro(const rend_data_t *rend_query) if (!node) { log_info(LD_REND, "Unknown router with nickname '%s'; trying another.", intro->extend_info->nickname); - rend_intro_point_free(intro); - smartlist_del(entry->parsed->intro_nodes, i); + smartlist_del(usable_nodes, i); goto again; } extend_info_free(intro->extend_info); intro->extend_info = extend_info_from_node(node); } + /* Check if we should refuse to talk to this router. */ + if (strict && + routerset_contains_extendinfo(options->ExcludeNodes, + intro->extend_info)) { + n_excluded++; + smartlist_del(usable_nodes, i); + goto again; + } + + smartlist_free(usable_nodes); return extend_info_dup(intro->extend_info); } +/** Return true iff any introduction points still listed in <b>entry</b> are + * usable. */ +int +rend_client_any_intro_points_usable(const rend_cache_entry_t *entry) +{ + return rend_client_get_random_intro_impl( + entry, get_options()->StrictNodes, 0) != NULL; +} + /** Client-side authorizations for hidden services; map of onion address to * rend_service_authorization_t*. */ static strmap_t *auth_hid_servs = NULL; @@ -818,7 +1014,8 @@ rend_service_authorization_free_all(void) * service and add it to the local map of hidden service authorizations. * Return 0 for success and -1 for failure. */ int -rend_parse_service_authorization(or_options_t *options, int validate_only) +rend_parse_service_authorization(const or_options_t *options, + int validate_only) { config_line_t *line; int res = -1; diff --git a/src/or/rendclient.h b/src/or/rendclient.h index 842fe0b8ce..1893fd9523 100644 --- a/src/or/rendclient.h +++ b/src/or/rendclient.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -12,24 +12,32 @@ #ifndef _TOR_RENDCLIENT_H #define _TOR_RENDCLIENT_H +void rend_client_purge_state(void); + void rend_client_introcirc_has_opened(origin_circuit_t *circ); void rend_client_rendcirc_has_opened(origin_circuit_t *circ); -int rend_client_introduction_acked(origin_circuit_t *circ, const char *request, +int rend_client_introduction_acked(origin_circuit_t *circ, + const uint8_t *request, size_t request_len); void rend_client_refetch_v2_renddesc(const rend_data_t *rend_query); +void rend_client_cancel_descriptor_fetches(void); +void rend_client_purge_last_hid_serv_requests(void); int rend_client_remove_intro_point(extend_info_t *failed_intro, const rend_data_t *rend_query); -int rend_client_rendezvous_acked(origin_circuit_t *circ, const char *request, +int rend_client_rendezvous_acked(origin_circuit_t *circ, + const uint8_t *request, size_t request_len); -int rend_client_receive_rendezvous(origin_circuit_t *circ, const char *request, +int rend_client_receive_rendezvous(origin_circuit_t *circ, + const uint8_t *request, size_t request_len); void rend_client_desc_trynow(const char *query); extend_info_t *rend_client_get_random_intro(const rend_data_t *rend_query); +int rend_client_any_intro_points_usable(const rend_cache_entry_t *entry); int rend_client_send_introduction(origin_circuit_t *introcirc, origin_circuit_t *rendcirc); -int rend_parse_service_authorization(or_options_t *options, +int rend_parse_service_authorization(const or_options_t *options, int validate_only); rend_service_authorization_t *rend_client_lookup_service_authorization( const char *onion_address); diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c index ec6680b1e6..94bb002210 100644 --- a/src/or/rendcommon.c +++ b/src/or/rendcommon.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -814,14 +814,13 @@ rend_cache_free_all(void) /** Removes all old entries from the service descriptor cache. */ void -rend_cache_clean(void) +rend_cache_clean(time_t now) { strmap_iter_t *iter; const char *key; void *val; rend_cache_entry_t *ent; - time_t cutoff; - cutoff = time(NULL) - REND_CACHE_MAX_AGE - REND_CACHE_MAX_SKEW; + time_t cutoff = now - REND_CACHE_MAX_AGE - REND_CACHE_MAX_SKEW; for (iter = strmap_iter_init(rend_cache); !strmap_iter_done(iter); ) { strmap_iter_get(iter, &key, &val); ent = (rend_cache_entry_t*)val; @@ -834,13 +833,25 @@ rend_cache_clean(void) } } +/** Remove ALL entries from the rendezvous service descriptor cache. + */ +void +rend_cache_purge(void) +{ + if (rend_cache) { + log_info(LD_REND, "Purging client/v0-HS-authority HS descriptor cache"); + strmap_free(rend_cache, _rend_cache_entry_free); + } + rend_cache = strmap_new(); +} + /** Remove all old v2 descriptors and those for which this hidden service * directory is not responsible for any more. */ void -rend_cache_clean_v2_descs_as_dir(void) +rend_cache_clean_v2_descs_as_dir(time_t now) { digestmap_iter_t *iter; - time_t cutoff = time(NULL) - REND_CACHE_MAX_AGE - REND_CACHE_MAX_SKEW; + time_t cutoff = now - REND_CACHE_MAX_AGE - REND_CACHE_MAX_SKEW; for (iter = digestmap_iter_init(rend_cache_v2_dir); !digestmap_iter_done(iter); ) { const char *key; @@ -875,15 +886,15 @@ rend_id_is_in_interval(const char *a, const char *b, const char *c) tor_assert(c); /* There are five cases in which a is outside the interval ]b,c]: */ - a_b = memcmp(a,b,DIGEST_LEN); + a_b = tor_memcmp(a,b,DIGEST_LEN); if (a_b == 0) return 0; /* 1. a == b (b is excluded) */ - b_c = memcmp(b,c,DIGEST_LEN); + b_c = tor_memcmp(b,c,DIGEST_LEN); if (b_c == 0) return 0; /* 2. b == c (interval is empty) */ else if (a_b <= 0 && b_c < 0) return 0; /* 3. a b c */ - c_a = memcmp(c,a,DIGEST_LEN); + c_a = tor_memcmp(c,a,DIGEST_LEN); if (c_a < 0 && a_b <= 0) return 0; /* 4. c a b */ else if (b_c < 0 && c_a < 0) @@ -932,9 +943,9 @@ rend_cache_lookup_entry(const char *query, int version, rend_cache_entry_t **e) if (!*e) return 0; tor_assert((*e)->parsed && (*e)->parsed->intro_nodes); - /* XXX022 hack for now, to return "not found" if there are no intro + /* XXX023 hack for now, to return "not found" if there are no intro * points remaining. See bug 997. */ - if (smartlist_len((*e)->parsed->intro_nodes) == 0) + if (! rend_client_any_intro_points_usable(*e)) return 0; return 1; } @@ -972,15 +983,10 @@ rend_cache_lookup_v2_desc_as_dir(const char *desc_id, const char **desc) tor_assert(rend_cache_v2_dir); if (base32_decode(desc_id_digest, DIGEST_LEN, desc_id, REND_DESC_ID_V2_LEN_BASE32) < 0) { - log_warn(LD_REND, "Descriptor ID contains illegal characters: %s", - safe_str(desc_id)); - return -1; - } - /* Determine if we are responsible. */ - if (hid_serv_responsible_for_desc_id(desc_id_digest) < 0) { - log_info(LD_REND, "Could not answer fetch request for v2 descriptor; " - "either we are no hidden service directory, or we are " - "not responsible for the requested ID."); + log_fn(LOG_PROTOCOL_WARN, LD_REND, + "Rejecting v2 rendezvous descriptor request -- descriptor ID " + "contains illegal characters: %s", + safe_str(desc_id)); return -1; } /* Lookup descriptor and return. */ @@ -1005,9 +1011,14 @@ rend_cache_lookup_v2_desc_as_dir(const char *desc_id, const char **desc) * * The published flag tells us if we store the descriptor * in our role as directory (1) or if we cache it as client (0). + * + * If <b>service_id</b> is non-NULL and the descriptor is not for that + * service ID, reject it. <b>service_id</b> must be specified if and + * only if <b>published</b> is 0 (we fetched this descriptor). */ int -rend_cache_store(const char *desc, size_t desc_len, int published) +rend_cache_store(const char *desc, size_t desc_len, int published, + const char *service_id) { rend_cache_entry_t *e; rend_service_descriptor_t *parsed; @@ -1025,6 +1036,13 @@ rend_cache_store(const char *desc, size_t desc_len, int published) rend_service_descriptor_free(parsed); return -2; } + if ((service_id != NULL) && strcmp(query, service_id)) { + log_warn(LD_REND, "Received service descriptor for service ID %s; " + "expected descriptor for service ID %s.", + query, safe_str(service_id)); + rend_service_descriptor_free(parsed); + return -2; + } now = time(NULL); if (parsed->timestamp < now-REND_CACHE_MAX_AGE-REND_CACHE_MAX_SKEW) { log_fn(LOG_PROTOCOL_WARN, LD_REND, @@ -1057,7 +1075,7 @@ rend_cache_store(const char *desc, size_t desc_len, int published) rend_service_descriptor_free(parsed); return 0; } - if (e && e->len == desc_len && !memcmp(desc,e->desc,desc_len)) { + if (e && e->len == desc_len && tor_memeq(desc,e->desc,desc_len)) { log_info(LD_REND,"We already have this service descriptor %s.", safe_str_client(query)); e->received = time(NULL); @@ -1205,6 +1223,8 @@ rend_cache_store_v2_desc_as_dir(const char *desc) * If we have an older descriptor with the same ID, replace it. * If we have any v0 descriptor with the same ID, reject this one in order * to not get confused with having both versions for the same service. + * If the descriptor's service ID does not match + * <b>rend_query</b>-\>onion_address, reject it. * Return -2 if it's malformed or otherwise rejected; return -1 if we * already have a v0 descriptor here; return 0 if it's the same or older * than one we've already got; return 1 if it's novel. @@ -1255,6 +1275,13 @@ rend_cache_store_v2_desc_as_client(const char *desc, retval = -2; goto err; } + if (strcmp(rend_query->onion_address, service_id)) { + log_warn(LD_REND, "Received service descriptor for service ID %s; " + "expected descriptor for service ID %s.", + service_id, safe_str(rend_query->onion_address)); + retval = -2; + goto err; + } /* Decode/decrypt introduction points. */ if (intro_content) { if (rend_query->auth_type != REND_NO_AUTH && @@ -1358,7 +1385,7 @@ rend_cache_store_v2_desc_as_client(const char *desc, void rend_process_relay_cell(circuit_t *circ, const crypt_path_t *layer_hint, int command, size_t length, - const char *payload) + const uint8_t *payload) { or_circuit_t *or_circ = NULL; origin_circuit_t *origin_circ = NULL; diff --git a/src/or/rendcommon.h b/src/or/rendcommon.h index 00705022a2..0d64466dbe 100644 --- a/src/or/rendcommon.h +++ b/src/or/rendcommon.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -22,7 +22,8 @@ rend_data_free(rend_data_t *data) int rend_cmp_service_ids(const char *one, const char *two); void rend_process_relay_cell(circuit_t *circ, const crypt_path_t *layer_hint, - int command, size_t length, const char *payload); + int command, size_t length, + const uint8_t *payload); void rend_service_descriptor_free(rend_service_descriptor_t *desc); rend_service_descriptor_t *rend_parse_service_descriptor(const char *str, @@ -33,8 +34,9 @@ void rend_encoded_v2_service_descriptor_free( void rend_intro_point_free(rend_intro_point_t *intro); void rend_cache_init(void); -void rend_cache_clean(void); -void rend_cache_clean_v2_descs_as_dir(void); +void rend_cache_clean(time_t now); +void rend_cache_clean_v2_descs_as_dir(time_t now); +void rend_cache_purge(void); void rend_cache_free_all(void); int rend_valid_service_id(const char *query); int rend_cache_lookup_desc(const char *query, int version, const char **desc, @@ -42,7 +44,8 @@ int rend_cache_lookup_desc(const char *query, int version, const char **desc, int rend_cache_lookup_entry(const char *query, int version, rend_cache_entry_t **entry_out); int rend_cache_lookup_v2_desc_as_dir(const char *query, const char **desc); -int rend_cache_store(const char *desc, size_t desc_len, int published); +int rend_cache_store(const char *desc, size_t desc_len, int published, + const char *service_id); int rend_cache_store_v2_desc_as_client(const char *desc, const rend_data_t *rend_query); int rend_cache_store_v2_desc_as_dir(const char *desc); diff --git a/src/or/rendmid.c b/src/or/rendmid.c index d392f8e53a..04edd8e3e2 100644 --- a/src/or/rendmid.c +++ b/src/or/rendmid.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -18,7 +18,7 @@ * setting the circuit's purpose and service pk digest. */ int -rend_mid_establish_intro(or_circuit_t *circ, const char *request, +rend_mid_establish_intro(or_circuit_t *circ, const uint8_t *request, size_t request_len) { crypto_pk_env_t *pk = NULL; @@ -48,7 +48,7 @@ rend_mid_establish_intro(or_circuit_t *circ, const char *request, /* Next asn1len bytes: asn1-encoded key. */ if (request_len < 2+DIGEST_LEN+asn1len) goto truncated; - pk = crypto_pk_asn1_decode(request+2, asn1len); + pk = crypto_pk_asn1_decode((char*)(request+2), asn1len); if (!pk) { reason = END_CIRC_REASON_TORPROTOCOL; log_warn(LD_PROTOCOL, "Couldn't decode public key."); @@ -62,15 +62,16 @@ rend_mid_establish_intro(or_circuit_t *circ, const char *request, log_warn(LD_BUG, "Internal error computing digest."); goto err; } - if (memcmp(expected_digest, request+2+asn1len, DIGEST_LEN)) { + if (tor_memneq(expected_digest, request+2+asn1len, DIGEST_LEN)) { log_warn(LD_PROTOCOL, "Hash of session info was not as expected."); reason = END_CIRC_REASON_TORPROTOCOL; goto err; } /* Rest of body: signature of previous data */ note_crypto_pk_op(REND_MID); - if (crypto_pk_public_checksig_digest(pk, request, 2+asn1len+DIGEST_LEN, - request+2+DIGEST_LEN+asn1len, + if (crypto_pk_public_checksig_digest(pk, + (char*)request, 2+asn1len+DIGEST_LEN, + (char*)(request+2+DIGEST_LEN+asn1len), request_len-(2+DIGEST_LEN+asn1len))<0) { log_warn(LD_PROTOCOL, "Incorrect signature on ESTABLISH_INTRO cell; rejecting."); @@ -130,7 +131,8 @@ rend_mid_establish_intro(or_circuit_t *circ, const char *request, * INTRODUCE2 cell. */ int -rend_mid_introduce(or_circuit_t *circ, const char *request, size_t request_len) +rend_mid_introduce(or_circuit_t *circ, const uint8_t *request, + size_t request_len) { or_circuit_t *intro_circ; char serviceid[REND_SERVICE_ID_LEN_BASE32+1]; @@ -159,10 +161,10 @@ rend_mid_introduce(or_circuit_t *circ, const char *request, size_t request_len) } base32_encode(serviceid, REND_SERVICE_ID_LEN_BASE32+1, - request, REND_SERVICE_ID_LEN); + (char*)request, REND_SERVICE_ID_LEN); /* The first 20 bytes are all we look at: they have a hash of Bob's PK. */ - intro_circ = circuit_get_intro_point(request); + intro_circ = circuit_get_intro_point((char*)request); if (!intro_circ) { log_info(LD_REND, "No intro circ found for INTRODUCE1 cell (%s) from circuit %d; " @@ -180,7 +182,7 @@ rend_mid_introduce(or_circuit_t *circ, const char *request, size_t request_len) /* Great. Now we just relay the cell down the circuit. */ if (relay_send_command_from_edge(0, TO_CIRCUIT(intro_circ), RELAY_COMMAND_INTRODUCE2, - request, request_len, NULL)) { + (char*)request, request_len, NULL)) { log_warn(LD_GENERAL, "Unable to send INTRODUCE2 cell to Tor client."); goto err; @@ -212,7 +214,7 @@ rend_mid_introduce(or_circuit_t *circ, const char *request, size_t request_len) * rendezvous cookie. */ int -rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request, +rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request, size_t request_len) { char hexid[9]; @@ -232,7 +234,7 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request, goto err; } - if (circuit_get_rendezvous(request)) { + if (circuit_get_rendezvous((char*)request)) { log_warn(LD_PROTOCOL, "Duplicate rendezvous cookie in ESTABLISH_RENDEZVOUS."); goto err; @@ -250,7 +252,7 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request, circ->_base.purpose = CIRCUIT_PURPOSE_REND_POINT_WAITING; memcpy(circ->rend_token, request, REND_COOKIE_LEN); - base16_encode(hexid,9,request,4); + base16_encode(hexid,9,(char*)request,4); log_info(LD_REND, "Established rendezvous point on circuit %d for cookie %s", @@ -267,13 +269,13 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request, * connecting the two circuits. */ int -rend_mid_rendezvous(or_circuit_t *circ, const char *request, +rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request, size_t request_len) { or_circuit_t *rend_circ; char hexid[9]; int reason = END_CIRC_REASON_INTERNAL; - base16_encode(hexid,9,request,request_len<4?request_len:4); + base16_encode(hexid,9,(char*)request,request_len<4?request_len:4); if (request_len>=4) { log_info(LD_REND, @@ -297,7 +299,7 @@ rend_mid_rendezvous(or_circuit_t *circ, const char *request, goto err; } - rend_circ = circuit_get_rendezvous(request); + rend_circ = circuit_get_rendezvous((char*)request); if (!rend_circ) { log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Rejecting RENDEZVOUS1 cell with unrecognized rendezvous cookie %s.", @@ -309,7 +311,7 @@ rend_mid_rendezvous(or_circuit_t *circ, const char *request, /* Send the RENDEZVOUS2 cell to Alice. */ if (relay_send_command_from_edge(0, TO_CIRCUIT(rend_circ), RELAY_COMMAND_RENDEZVOUS2, - request+REND_COOKIE_LEN, + (char*)(request+REND_COOKIE_LEN), request_len-REND_COOKIE_LEN, NULL)) { log_warn(LD_GENERAL, "Unable to send RENDEZVOUS2 cell to client on circuit %d.", diff --git a/src/or/rendmid.h b/src/or/rendmid.h index 4d08d4c8b9..5ed87fd2b1 100644 --- a/src/or/rendmid.h +++ b/src/or/rendmid.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -12,13 +12,13 @@ #ifndef _TOR_RENDMID_H #define _TOR_RENDMID_H -int rend_mid_establish_intro(or_circuit_t *circ, const char *request, +int rend_mid_establish_intro(or_circuit_t *circ, const uint8_t *request, size_t request_len); -int rend_mid_introduce(or_circuit_t *circ, const char *request, +int rend_mid_introduce(or_circuit_t *circ, const uint8_t *request, size_t request_len); -int rend_mid_establish_rendezvous(or_circuit_t *circ, const char *request, +int rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request, size_t request_len); -int rend_mid_rendezvous(or_circuit_t *circ, const char *request, +int rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request, size_t request_len); #endif diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 0f63776ef2..47a9fc7276 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -182,6 +182,31 @@ rend_add_service(rend_service_t *service) log_warn(LD_CONFIG, "Hidden service with no ports configured; ignoring."); rend_service_free(service); } else { + int dupe = 0; + /* XXX This duplicate check has two problems: + * + * a) It's O(n^2), but the same comment from the bottom of + * rend_config_services() should apply. + * + * b) We only compare directory paths as strings, so we can't + * detect two distinct paths that specify the same directory + * (which can arise from symlinks, case-insensitivity, bind + * mounts, etc.). + * + * It also can't detect that two separate Tor instances are trying + * to use the same HiddenServiceDir; for that, we would need a + * lock file. But this is enough to detect a simple mistake that + * at least one person has actually made. + */ + SMARTLIST_FOREACH(rend_service_list, rend_service_t*, ptr, + dupe = dupe || + !strcmp(ptr->directory, service->directory)); + if (dupe) { + log_warn(LD_REND, "Another hidden service is already configured for " + "directory %s, ignoring.", service->directory); + rend_service_free(service); + return; + } smartlist_add(rend_service_list, service); log_debug(LD_REND,"Configuring service with directory \"%s\"", service->directory); @@ -267,7 +292,7 @@ parse_port_config(const char *string) * normal, but don't actually change the configured services.) */ int -rend_config_services(or_options_t *options, int validate_only) +rend_config_services(const or_options_t *options, int validate_only) { config_line_t *line; rend_service_t *service = NULL; @@ -466,7 +491,7 @@ rend_config_services(or_options_t *options, int validate_only) int keep_it = 0; tor_assert(oc->rend_data); SMARTLIST_FOREACH(surviving_services, rend_service_t *, ptr, { - if (!memcmp(ptr->pk_digest, oc->rend_data->rend_pk_digest, + if (tor_memeq(ptr->pk_digest, oc->rend_data->rend_pk_digest, DIGEST_LEN)) { keep_it = 1; break; @@ -475,7 +500,8 @@ rend_config_services(or_options_t *options, int validate_only) if (keep_it) continue; log_info(LD_REND, "Closing intro point %s for service %s.", - safe_str_client(oc->build_state->chosen_exit->nickname), + safe_str_client(extend_info_describe( + oc->build_state->chosen_exit)), oc->rend_data->onion_address); circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED); /* XXXX Is there another reason we should use here? */ @@ -544,7 +570,7 @@ rend_service_load_keys(void) s->directory); /* Check/create directory */ - if (check_private_dir(s->directory, CPD_CREATE) < 0) + if (check_private_dir(s->directory, CPD_CREATE, get_options()->User) < 0) return -1; /* Load key */ @@ -761,7 +787,7 @@ static rend_service_t * rend_service_get_by_pk_digest(const char* digest) { SMARTLIST_FOREACH(rend_service_list, rend_service_t*, s, - if (!memcmp(s->pk_digest,digest,DIGEST_LEN)) + if (tor_memeq(s->pk_digest,digest,DIGEST_LEN)) return s); return NULL; } @@ -801,7 +827,7 @@ rend_check_authorization(rend_service_t *service, /* Look up client authorization by descriptor cookie. */ SMARTLIST_FOREACH(service->clients, rend_authorized_client_t *, client, { - if (!memcmp(client->descriptor_cookie, descriptor_cookie, + if (tor_memeq(client->descriptor_cookie, descriptor_cookie, REND_DESC_COOKIE_LEN)) { auth_client = client; break; @@ -849,8 +875,9 @@ clean_accepted_intros(rend_service_t *service, time_t now) /** Respond to an INTRODUCE2 cell by launching a circuit to the chosen * rendezvous point. */ + /* XXX022 this function sure could use some organizing. -RD */ int -rend_service_introduce(origin_circuit_t *circuit, const char *request, +rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request, size_t request_len) { char *ptr, *r_cookie; @@ -876,6 +903,9 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, time_t now = time(NULL); char diffie_hellman_hash[DIGEST_LEN]; time_t *access_time; + const or_options_t *options = get_options(); + + tor_assert(!(circuit->build_state->onehop_tunnel)); tor_assert(circuit->rend_data); base32_encode(serviceid, REND_SERVICE_ID_LEN_BASE32+1, @@ -912,9 +942,9 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, /* first DIGEST_LEN bytes of request is intro or service pk digest */ crypto_pk_get_digest(intro_key, intro_key_digest); - if (memcmp(intro_key_digest, request, DIGEST_LEN)) { + if (tor_memneq(intro_key_digest, request, DIGEST_LEN)) { base32_encode(serviceid, REND_SERVICE_ID_LEN_BASE32+1, - request, REND_SERVICE_ID_LEN); + (char*)request, REND_SERVICE_ID_LEN); log_warn(LD_REND, "Got an INTRODUCE2 cell for the wrong service (%s).", escaped(serviceid)); return -1; @@ -929,7 +959,8 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, /* Next N bytes is encrypted with service key */ note_crypto_pk_op(REND_SERVER); r = crypto_pk_private_hybrid_decrypt( - intro_key,buf,request+DIGEST_LEN,request_len-DIGEST_LEN, + intro_key,buf,sizeof(buf), + (char*)(request+DIGEST_LEN),request_len-DIGEST_LEN, PK_PKCS1_OAEP_PADDING,1); if (r<0) { log_warn(LD_PROTOCOL, "Couldn't decrypt INTRODUCE2 cell."); @@ -1047,6 +1078,15 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, goto err; } + /* Check if we'd refuse to talk to this router */ + if (options->StrictNodes && + routerset_contains_extendinfo(options->ExcludeNodes, extend_info)) { + log_warn(LD_REND, "Client asked to rendezvous at a relay that we " + "exclude, and StrictNodes is set. Refusing service."); + reason = END_CIRC_REASON_INTERNAL; /* XXX might leak why we refused */ + goto err; + } + r_cookie = ptr; base16_encode(hexcookie,9,r_cookie,4); @@ -1100,7 +1140,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, } /* Try DH handshake... */ - dh = crypto_dh_new(); + dh = crypto_dh_new(DH_TYPE_REND); if (!dh || crypto_dh_generate_public(dh)<0) { log_warn(LD_BUG,"Internal error: couldn't build DH state " "or generate public key."); @@ -1134,7 +1174,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, if (!launched) { /* give up */ log_warn(LD_REND, "Giving up launching first hop of circuit to rendezvous " "point %s for service %s.", - escaped_safe_str_client(extend_info->nickname), + safe_str_client(extend_info_describe(extend_info)), serviceid); reason = END_CIRC_REASON_CONNECTFAILED; goto err; @@ -1142,7 +1182,7 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, log_info(LD_REND, "Accepted intro; launching circuit to %s " "(cookie %s) for service %s.", - escaped_safe_str_client(extend_info->nickname), + safe_str_client(extend_info_describe(extend_info)), hexcookie, serviceid); tor_assert(launched->build_state); /* Fill in the circuit's state. */ @@ -1165,8 +1205,10 @@ rend_service_introduce(origin_circuit_t *circuit, const char *request, memcpy(cpath->handshake_digest, keys, DIGEST_LEN); if (extend_info) extend_info_free(extend_info); + memset(keys, 0, sizeof(keys)); return 0; err: + memset(keys, 0, sizeof(keys)); if (dh) crypto_dh_free(dh); if (launched) circuit_mark_for_close(TO_CIRCUIT(launched), reason); @@ -1192,7 +1234,8 @@ rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc) "Attempt to build circuit to %s for rendezvous has failed " "too many times or expired; giving up.", oldcirc->build_state ? - oldcirc->build_state->chosen_exit->nickname : "*unknown*"); + safe_str(extend_info_describe(oldcirc->build_state->chosen_exit)) + : "*unknown*"); return; } @@ -1206,7 +1249,7 @@ rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc) } log_info(LD_REND,"Reattempting rendezvous circuit to '%s'", - oldstate->chosen_exit->nickname); + safe_str(extend_info_describe(oldstate->chosen_exit))); newcirc = circuit_launch_by_extend_info(CIRCUIT_PURPOSE_S_CONNECT_REND, oldstate->chosen_exit, @@ -1214,7 +1257,7 @@ rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc) if (!newcirc) { log_warn(LD_REND,"Couldn't relaunch rendezvous circuit to '%s'.", - oldstate->chosen_exit->nickname); + safe_str(extend_info_describe(oldstate->chosen_exit))); return; } newstate = newcirc->build_state; @@ -1238,7 +1281,7 @@ rend_service_launch_establish_intro(rend_service_t *service, log_info(LD_REND, "Launching circuit to introduction point %s for service %s", - escaped_safe_str_client(intro->extend_info->nickname), + safe_str_client(extend_info_describe(intro->extend_info)), service->service_id); rep_hist_note_used_internal(time(NULL), 1, 0); @@ -1251,11 +1294,11 @@ rend_service_launch_establish_intro(rend_service_t *service, if (!launched) { log_info(LD_REND, "Can't launch circuit to establish introduction at %s.", - escaped_safe_str_client(intro->extend_info->nickname)); + safe_str_client(extend_info_describe(intro->extend_info))); return -1; } - if (memcmp(intro->extend_info->identity_digest, + if (tor_memneq(intro->extend_info->identity_digest, launched->build_state->chosen_exit->identity_digest, DIGEST_LEN)) { char cann[HEX_DIGEST_LEN+1], orig[HEX_DIGEST_LEN+1]; base16_encode(cann, sizeof(cann), @@ -1317,6 +1360,7 @@ rend_service_intro_has_opened(origin_circuit_t *circuit) crypto_pk_env_t *intro_key; tor_assert(circuit->_base.purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO); + tor_assert(!(circuit->build_state->onehop_tunnel)); tor_assert(circuit->cpath); tor_assert(circuit->rend_data); @@ -1333,14 +1377,26 @@ rend_service_intro_has_opened(origin_circuit_t *circuit) } /* If we already have enough introduction circuits for this service, - * redefine this one as a general circuit. */ + * redefine this one as a general circuit or close it, depending. */ if (count_established_intro_points(serviceid) > NUM_INTRO_POINTS) { - log_info(LD_CIRC|LD_REND, "We have just finished an introduction " - "circuit, but we already have enough. Redefining purpose to " - "general."); - TO_CIRCUIT(circuit)->purpose = CIRCUIT_PURPOSE_C_GENERAL; - circuit_has_opened(circuit); - return; + const or_options_t *options = get_options(); + if (options->ExcludeNodes) { + /* XXXX in some future version, we can test whether the transition is + allowed or not given the actual nodes in the circuit. But for now, + this case, we might as well close the thing. */ + log_info(LD_CIRC|LD_REND, "We have just finished an introduction " + "circuit, but we already have enough. Closing it."); + circuit_mark_for_close(TO_CIRCUIT(circuit), END_CIRC_REASON_NONE); + return; + } else { + tor_assert(circuit->build_state->is_internal); + log_info(LD_CIRC|LD_REND, "We have just finished an introduction " + "circuit, but we already have enough. Redefining purpose to " + "general; leaving as internal."); + TO_CIRCUIT(circuit)->purpose = CIRCUIT_PURPOSE_C_GENERAL; + circuit_has_opened(circuit); + return; + } } log_info(LD_REND, @@ -1366,7 +1422,8 @@ rend_service_intro_has_opened(origin_circuit_t *circuit) goto err; len += 20; note_crypto_pk_op(REND_SERVER); - r = crypto_pk_private_sign_digest(intro_key, buf+len, buf, len); + r = crypto_pk_private_sign_digest(intro_key, buf+len, sizeof(buf)-len, + buf, len); if (r<0) { log_warn(LD_BUG, "Internal error: couldn't sign introduction request."); reason = END_CIRC_REASON_INTERNAL; @@ -1391,9 +1448,10 @@ rend_service_intro_has_opened(origin_circuit_t *circuit) /** Called when we get an INTRO_ESTABLISHED cell; mark the circuit as a * live introduction point, and note that the service descriptor is - * now out-of-date.*/ + * now out-of-date. */ int -rend_service_intro_established(origin_circuit_t *circuit, const char *request, +rend_service_intro_established(origin_circuit_t *circuit, + const uint8_t *request, size_t request_len) { rend_service_t *service; @@ -1445,6 +1503,7 @@ rend_service_rendezvous_has_opened(origin_circuit_t *circuit) tor_assert(circuit->_base.purpose == CIRCUIT_PURPOSE_S_CONNECT_REND); tor_assert(circuit->cpath); tor_assert(circuit->build_state); + tor_assert(!(circuit->build_state->onehop_tunnel)); tor_assert(circuit->rend_data); hop = circuit->build_state->pending_final_cpath; tor_assert(hop); @@ -1527,7 +1586,7 @@ find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest) tor_assert(intro); while ((circ = circuit_get_next_by_pk_and_purpose(circ,pk_digest, CIRCUIT_PURPOSE_S_INTRO))) { - if (!memcmp(circ->build_state->chosen_exit->identity_digest, + if (tor_memeq(circ->build_state->chosen_exit->identity_digest, intro->extend_info->identity_digest, DIGEST_LEN) && circ->rend_data) { return circ; @@ -1537,7 +1596,7 @@ find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest) circ = NULL; while ((circ = circuit_get_next_by_pk_and_purpose(circ,pk_digest, CIRCUIT_PURPOSE_S_ESTABLISH_INTRO))) { - if (!memcmp(circ->build_state->chosen_exit->identity_digest, + if (tor_memeq(circ->build_state->chosen_exit->identity_digest, intro->extend_info->identity_digest, DIGEST_LEN) && circ->rend_data) { return circ; @@ -1580,9 +1639,9 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc, continue; if (!router_get_by_id_digest(hs_dir->identity_digest)) { log_info(LD_REND, "Not sending publish request for v2 descriptor to " - "hidden service directory '%s'; we don't have its " + "hidden service directory %s; we don't have its " "router descriptor. Queuing for later upload.", - hs_dir->nickname); + safe_str_client(routerstatus_describe(hs_dir))); failed_upload = -1; continue; } @@ -1761,7 +1820,7 @@ rend_services_introduce(void) int changed, prev_intro_nodes; smartlist_t *intro_nodes; time_t now; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); intro_nodes = smartlist_create(); now = time(NULL); @@ -1790,11 +1849,12 @@ rend_services_introduce(void) node = node_get_by_id(intro->extend_info->identity_digest); if (!node || !find_intro_circuit(intro, service->pk_digest)) { log_info(LD_REND,"Giving up on %s as intro point for %s.", - intro->extend_info->nickname, service->service_id); + safe_str_client(extend_info_describe(intro->extend_info)), + safe_str_client(service->service_id)); if (service->desc) { SMARTLIST_FOREACH(service->desc->intro_nodes, rend_intro_point_t *, dintro, { - if (!memcmp(dintro->extend_info->identity_digest, + if (tor_memeq(dintro->extend_info->identity_digest, intro->extend_info->identity_digest, DIGEST_LEN)) { log_info(LD_REND, "The intro point we are giving up on was " "included in the last published descriptor. " @@ -1856,7 +1916,8 @@ rend_services_introduce(void) tor_assert(!crypto_pk_generate_key(intro->intro_key)); smartlist_add(service->intro_nodes, intro); log_info(LD_REND, "Picked router %s as an intro point for %s.", - node_get_nickname(node), service->service_id); + safe_str_client(node_describe(node)), + safe_str_client(service->service_id)); } /* If there's no need to launch new circuits, stop here. */ @@ -1869,7 +1930,8 @@ rend_services_introduce(void) r = rend_service_launch_establish_intro(service, intro); if (r<0) { log_warn(LD_REND, "Error launching circuit to node %s for service %s.", - intro->extend_info->nickname, service->service_id); + safe_str_client(extend_info_describe(intro->extend_info)), + safe_str_client(service->service_id)); } } } diff --git a/src/or/rendservice.h b/src/or/rendservice.h index 1767714c60..8a2994c4c0 100644 --- a/src/or/rendservice.h +++ b/src/or/rendservice.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -13,7 +13,7 @@ #define _TOR_RENDSERVICE_H int num_rend_services(void); -int rend_config_services(or_options_t *options, int validate_only); +int rend_config_services(const or_options_t *options, int validate_only); int rend_service_load_keys(void); void rend_services_introduce(void); void rend_consider_services_upload(time_t now); @@ -22,10 +22,10 @@ void rend_consider_descriptor_republication(void); void rend_service_intro_has_opened(origin_circuit_t *circuit); int rend_service_intro_established(origin_circuit_t *circuit, - const char *request, + const uint8_t *request, size_t request_len); void rend_service_rendezvous_has_opened(origin_circuit_t *circuit); -int rend_service_introduce(origin_circuit_t *circuit, const char *request, +int rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request, size_t request_len); void rend_service_relaunch_rendezvous(origin_circuit_t *oldcirc); int rend_service_set_connection_addr_port(edge_connection_t *conn, diff --git a/src/or/rephist.c b/src/or/rephist.c index ce2dd337e8..cd74f1b720 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -14,6 +14,7 @@ #include "circuitlist.h" #include "circuituse.h" #include "config.h" +#include "networkstatus.h" #include "nodelist.h" #include "rephist.h" #include "router.h" @@ -74,6 +75,13 @@ typedef struct or_history_t { /** If nonzero, we have been unable to connect since this time. */ time_t down_since; + /** The address at which we most recently connected to this OR + * successfully. */ + tor_addr_t last_reached_addr; + + /** The port at which we most recently connected to this OR successfully */ + uint16_t last_reached_port; + /* === For MTBF tracking: */ /** Weighted sum total of all times that this router has been online. */ @@ -110,7 +118,7 @@ get_or_history(const char* id) { or_history_t *hist; - if (tor_mem_is_zero(id, DIGEST_LEN)) + if (tor_digest_is_zero(id)) return NULL; hist = digestmap_get(history_map, id); @@ -120,6 +128,7 @@ get_or_history(const char* id) rephist_total_num++; hist->link_history_map = digestmap_new(); hist->since = hist->changed = time(NULL); + tor_addr_make_unspec(&hist->last_reached_addr); digestmap_set(history_map, id, hist); } return hist; @@ -137,7 +146,7 @@ get_link_history(const char *from_id, const char *to_id) orhist = get_or_history(from_id); if (!orhist) return NULL; - if (tor_mem_is_zero(to_id, DIGEST_LEN)) + if (tor_digest_is_zero(to_id)) return NULL; lhist = (link_history_t*) digestmap_get(orhist->link_history_map, to_id); if (!lhist) { @@ -290,13 +299,20 @@ rep_hist_note_connection_died(const char* id, time_t when) /** We have just decided that this router with identity digest <b>id</b> is * reachable, meaning we will give it a "Running" flag for the next while. */ void -rep_hist_note_router_reachable(const char *id, time_t when) +rep_hist_note_router_reachable(const char *id, const tor_addr_t *at_addr, + const uint16_t at_port, time_t when) { or_history_t *hist = get_or_history(id); int was_in_run = 1; char tbuf[ISO_TIME_LEN+1]; + int addr_changed, port_changed; tor_assert(hist); + tor_assert((!at_addr && !at_port) || (at_addr && at_port)); + + addr_changed = at_addr && + tor_addr_compare(at_addr, &hist->last_reached_addr, CMP_EXACT) != 0; + port_changed = at_port && at_port != hist->last_reached_port; if (!started_tracking_stability) started_tracking_stability = time(NULL); @@ -316,6 +332,27 @@ rep_hist_note_router_reachable(const char *id, time_t when) down_length = when - hist->start_of_downtime; hist->total_weighted_time += down_length; hist->start_of_downtime = 0; + } else if (addr_changed || port_changed) { + /* If we're reachable, but the address changed, treat this as some + * downtime. */ + int penalty = get_options()->TestingTorNetwork ? 240 : 3600; + networkstatus_t *ns; + + if ((ns = networkstatus_get_latest_consensus())) { + int fresh_interval = (int)(ns->fresh_until - ns->valid_after); + int live_interval = (int)(ns->valid_until - ns->valid_after); + /* on average, a descriptor addr change takes .5 intervals to make it + * into a consensus, and half a liveness period to make it to + * clients. */ + penalty = (int)(fresh_interval + live_interval) / 2; + } + format_local_iso_time(tbuf, hist->start_of_run); + log_info(LD_HIST,"Router %s still seems Running, but its address appears " + "to have changed since the last time it was reachable. I'm " + "going to treat it as having been down for %d seconds", + hex_str(id, DIGEST_LEN), penalty); + rep_hist_note_router_unreachable(id, when-penalty); + rep_hist_note_router_reachable(id, NULL, 0, when); } else { format_local_iso_time(tbuf, hist->start_of_run); if (was_in_run) @@ -325,6 +362,10 @@ rep_hist_note_router_reachable(const char *id, time_t when) log_info(LD_HIST,"Router %s is now Running; it was previously untracked", hex_str(id, DIGEST_LEN)); } + if (at_addr) + tor_addr_copy(&hist->last_reached_addr, at_addr); + if (at_port) + hist->last_reached_port = at_port; } /** We have just decided that this router is unreachable, meaning @@ -345,12 +386,20 @@ rep_hist_note_router_unreachable(const char *id, time_t when) long run_length = when - hist->start_of_run; format_local_iso_time(tbuf, hist->start_of_run); - hist->weighted_run_length += run_length; hist->total_run_weights += 1.0; hist->start_of_run = 0; - hist->weighted_uptime += run_length; - hist->total_weighted_time += run_length; + if (run_length < 0) { + unsigned long penalty = -run_length; +#define SUBTRACT_CLAMPED(var, penalty) \ + do { (var) = (var) < (penalty) ? 0 : (var) - (penalty); } while (0) + SUBTRACT_CLAMPED(hist->weighted_run_length, penalty); + SUBTRACT_CLAMPED(hist->weighted_uptime, penalty); + } else { + hist->weighted_run_length += run_length; + hist->weighted_uptime += run_length; + hist->total_weighted_time += run_length; + } was_running = 1; log_info(LD_HIST, "Router %s is now non-Running: it had previously been " "Running since %s. Its total weighted uptime is %lu/%lu.", @@ -423,7 +472,7 @@ rep_hist_downrate_old_runs(time_t now) static double get_stability(or_history_t *hist, time_t when) { - unsigned long total = hist->weighted_run_length; + long total = hist->weighted_run_length; double total_weights = hist->total_run_weights; if (hist->start_of_run) { @@ -459,8 +508,8 @@ get_total_weighted_time(or_history_t *hist, time_t when) static double get_weighted_fractional_uptime(or_history_t *hist, time_t when) { - unsigned long total = hist->total_weighted_time; - unsigned long up = hist->weighted_uptime; + long total = hist->total_weighted_time; + long up = hist->weighted_uptime; if (hist->start_of_run) { long run_length = (when - hist->start_of_run); @@ -480,6 +529,20 @@ get_weighted_fractional_uptime(or_history_t *hist, time_t when) return ((double) up) / total; } +/** Return how long the router whose identity digest is <b>id</b> has + * been reachable. Return 0 if the router is unknown or currently deemed + * unreachable. */ +long +rep_hist_get_uptime(const char *id, time_t when) +{ + or_history_t *hist = get_or_history(id); + if (!hist) + return 0; + if (!hist->start_of_run || when < hist->start_of_run) + return 0; + return when - hist->start_of_run; +} + /** Return an estimated MTBF for the router whose identity digest is * <b>id</b>. Return 0 if the router is unknown. */ double @@ -525,7 +588,7 @@ rep_hist_get_weighted_time_known(const char *id, time_t when) int rep_hist_have_measured_enough_stability(void) { - /* XXXX021 This doesn't do so well when we change our opinion + /* XXXX022 This doesn't do so well when we change our opinion * as to whether we're tracking router stability. */ return started_tracking_stability < time(NULL) - 4*60*60; } @@ -572,6 +635,7 @@ rep_hist_dump_stats(time_t now, int severity) digestmap_iter_t *orhist_it; const char *name1, *name2, *digest1, *digest2; char hexdigest1[HEX_DIGEST_LEN+1]; + char hexdigest2[HEX_DIGEST_LEN+1]; or_history_t *or_history; link_history_t *link_history; void *or_history_p, *link_history_p; @@ -632,7 +696,10 @@ rep_hist_dump_stats(time_t now, int severity) link_history = (link_history_t*) link_history_p; - ret = tor_snprintf(buffer+len, 2048-len, "%s(%ld/%ld); ", name2, + base16_encode(hexdigest2, sizeof(hexdigest2), digest2, DIGEST_LEN); + ret = tor_snprintf(buffer+len, 2048-len, "%s [%s](%ld/%ld); ", + name2, + hexdigest2, link_history->n_extend_ok, link_history->n_extend_ok+link_history->n_extend_fail); if (ret<0) @@ -934,10 +1001,10 @@ find_next_with(smartlist_t *sl, int i, const char *prefix) return -1; } -/** How many bad times has parse_possibly_bad_iso_time parsed? */ +/** How many bad times has parse_possibly_bad_iso_time() parsed? */ static int n_bogus_times = 0; /** Parse the ISO-formatted time in <b>s</b> into *<b>time_out</b>, but - * rounds any pre-1970 date to Jan 1, 1970. */ + * round any pre-1970 date to Jan 1, 1970. */ static int parse_possibly_bad_iso_time(const char *s, time_t *time_out) { @@ -1170,6 +1237,8 @@ rep_hist_load_mtbf_data(time_t now) * totals? */ #define NUM_SECS_ROLLING_MEASURE 10 /** How large are the intervals for which we track and report bandwidth use? */ +/* XXXX Watch out! Before Tor 0.2.2.21-alpha, using any other value here would + * generate an unparseable state file. */ #define NUM_SECS_BW_SUM_INTERVAL (15*60) /** How far in the past do we remember and publish bandwidth use? */ #define NUM_SECS_BW_SUM_IS_VALID (24*60*60) @@ -1228,7 +1297,7 @@ commit_max(bw_array_t *b) b->total_in_period = 0; } -/** Shift the current observation time of 'b' forward by one second. */ +/** Shift the current observation time of <b>b</b> forward by one second. */ static INLINE void advance_obs(bw_array_t *b) { @@ -1258,14 +1327,18 @@ advance_obs(bw_array_t *b) static INLINE void add_obs(bw_array_t *b, time_t when, uint64_t n) { - /* Don't record data in the past. */ - if (when<b->cur_obs_time) - return; + if (when < b->cur_obs_time) + return; /* Don't record data in the past. */ + /* If we're currently adding observations for an earlier second than * 'when', advance b->cur_obs_time and b->cur_obs_idx by an - * appropriate number of seconds, and do all the other housekeeping */ - while (when>b->cur_obs_time) + * appropriate number of seconds, and do all the other housekeeping. */ + while (when > b->cur_obs_time) { + /* Doing this one second at a time is potentially inefficient, if we start + with a state file that is very old. Fortunately, it doesn't seem to + show up in profiles, so we can just ignore it for now. */ advance_obs(b); + } b->obs[b->cur_obs_idx] += n; b->total_in_period += n; @@ -1296,17 +1369,22 @@ static bw_array_t *dir_read_array = NULL; directory protocol. */ static bw_array_t *dir_write_array = NULL; -/** Set up [dir-]read_array and [dir-]write_array. */ +/** Set up [dir-]read_array and [dir-]write_array, freeing them if they + * already exist. */ static void bw_arrays_init(void) { + tor_free(read_array); + tor_free(write_array); + tor_free(dir_read_array); + tor_free(dir_write_array); read_array = bw_array_new(); write_array = bw_array_new(); dir_read_array = bw_array_new(); dir_write_array = bw_array_new(); } -/** We read <b>num_bytes</b> more bytes in second <b>when</b>. +/** Remember that we read <b>num_bytes</b> bytes in second <b>when</b>. * * Add num_bytes to the current running total for <b>when</b>. * @@ -1327,7 +1405,7 @@ rep_hist_note_bytes_written(size_t num_bytes, time_t when) add_obs(write_array, when, num_bytes); } -/** We wrote <b>num_bytes</b> more bytes in second <b>when</b>. +/** Remember that we wrote <b>num_bytes</b> bytes in second <b>when</b>. * (like rep_hist_note_bytes_written() above) */ void @@ -1337,8 +1415,8 @@ rep_hist_note_bytes_read(size_t num_bytes, time_t when) add_obs(read_array, when, num_bytes); } -/** We wrote <b>num_bytes</b> more directory bytes in second <b>when</b>. - * (like rep_hist_note_bytes_written() above) +/** Remember that we wrote <b>num_bytes</b> directory bytes in second + * <b>when</b>. (like rep_hist_note_bytes_written() above) */ void rep_hist_note_dir_bytes_written(size_t num_bytes, time_t when) @@ -1346,8 +1424,8 @@ rep_hist_note_dir_bytes_written(size_t num_bytes, time_t when) add_obs(dir_write_array, when, num_bytes); } -/** We read <b>num_bytes</b> more directory bytes in second <b>when</b>. - * (like rep_hist_note_bytes_written() above) +/** Remember that we read <b>num_bytes</b> directory bytes in second + * <b>when</b>. (like rep_hist_note_bytes_written() above) */ void rep_hist_note_dir_bytes_read(size_t num_bytes, time_t when) @@ -1397,11 +1475,11 @@ rep_hist_bandwidth_assess(void) * It returns the number of bytes written. */ static size_t -rep_hist_fill_bandwidth_history(char *buf, size_t len, bw_array_t *b) +rep_hist_fill_bandwidth_history(char *buf, size_t len, const bw_array_t *b) { char *cp = buf; int i, n; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); uint64_t cutoff; if (b->num_maxes_set <= b->next_max_idx) { @@ -1442,7 +1520,8 @@ rep_hist_fill_bandwidth_history(char *buf, size_t len, bw_array_t *b) } /** Allocate and return lines for representing this server's bandwidth - * history in its descriptor. + * history in its descriptor. We publish these lines in our extra-info + * descriptor. */ char * rep_hist_get_bandwidth_lines(void) @@ -1455,10 +1534,15 @@ rep_hist_get_bandwidth_lines(void) size_t len; /* opt [dirreq-](read|write)-history yyyy-mm-dd HH:MM:SS (n s) n,n,n... */ - len = (67+21*NUM_TOTALS)*4; +/* The n,n,n part above. Largest representation of a uint64_t is 20 chars + * long, plus the comma. */ +#define MAX_HIST_VALUE_LEN 21*NUM_TOTALS + len = (67+MAX_HIST_VALUE_LEN)*4; buf = tor_malloc_zero(len); cp = buf; for (r=0;r<4;++r) { + char tmp[MAX_HIST_VALUE_LEN]; + size_t slen; switch (r) { case 0: b = write_array; @@ -1478,174 +1562,212 @@ rep_hist_get_bandwidth_lines(void) break; } tor_assert(b); + slen = rep_hist_fill_bandwidth_history(tmp, MAX_HIST_VALUE_LEN, b); + /* If we don't have anything to write, skip to the next entry. */ + if (slen == 0) + continue; format_iso_time(t, b->next_period-NUM_SECS_BW_SUM_INTERVAL); tor_snprintf(cp, len-(cp-buf), "%s %s (%d s) ", desc, t, NUM_SECS_BW_SUM_INTERVAL); cp += strlen(cp); - cp += rep_hist_fill_bandwidth_history(cp, len-(cp-buf), b); + strlcat(cp, tmp, len-(cp-buf)); + cp += slen; strlcat(cp, "\n", len-(cp-buf)); ++cp; } return buf; } -/** Update <b>state</b> with the newest bandwidth history. */ +/** Write a single bw_array_t into the Values, Ends, Interval, and Maximum + * entries of an or_state_t. Done before writing out a new state file. */ +static void +rep_hist_update_bwhist_state_section(or_state_t *state, + const bw_array_t *b, + smartlist_t **s_values, + smartlist_t **s_maxima, + time_t *s_begins, + int *s_interval) +{ + char *cp; + int i,j; + uint64_t maxval; + + if (*s_values) { + SMARTLIST_FOREACH(*s_values, char *, val, tor_free(val)); + smartlist_free(*s_values); + } + if (*s_maxima) { + SMARTLIST_FOREACH(*s_maxima, char *, val, tor_free(val)); + smartlist_free(*s_maxima); + } + if (! server_mode(get_options())) { + /* Clients don't need to store bandwidth history persistently; + * force these values to the defaults. */ + /* FFFF we should pull the default out of config.c's state table, + * so we don't have two defaults. */ + if (*s_begins != 0 || *s_interval != 900) { + time_t now = time(NULL); + time_t save_at = get_options()->AvoidDiskWrites ? now+3600 : now+600; + or_state_mark_dirty(state, save_at); + } + *s_begins = 0; + *s_interval = 900; + *s_values = smartlist_create(); + *s_maxima = smartlist_create(); + return; + } + *s_begins = b->next_period; + *s_interval = NUM_SECS_BW_SUM_INTERVAL; + + *s_values = smartlist_create(); + *s_maxima = smartlist_create(); + /* Set i to first position in circular array */ + i = (b->num_maxes_set <= b->next_max_idx) ? 0 : b->next_max_idx; + for (j=0; j < b->num_maxes_set; ++j,++i) { + if (i >= NUM_TOTALS) + i = 0; + tor_asprintf(&cp, U64_FORMAT, U64_PRINTF_ARG(b->totals[i] & ~0x3ff)); + smartlist_add(*s_values, cp); + maxval = b->maxima[i] / NUM_SECS_ROLLING_MEASURE; + tor_asprintf(&cp, U64_FORMAT, U64_PRINTF_ARG(maxval & ~0x3ff)); + smartlist_add(*s_maxima, cp); + } + tor_asprintf(&cp, U64_FORMAT, U64_PRINTF_ARG(b->total_in_period & ~0x3ff)); + smartlist_add(*s_values, cp); + maxval = b->max_total / NUM_SECS_ROLLING_MEASURE; + tor_asprintf(&cp, U64_FORMAT, U64_PRINTF_ARG(maxval & ~0x3ff)); + smartlist_add(*s_maxima, cp); +} + +/** Update <b>state</b> with the newest bandwidth history. Done before + * writing out a new state file. */ void rep_hist_update_state(or_state_t *state) { - int len, r; - char *buf, *cp; - smartlist_t **s_values = NULL; - time_t *s_begins = NULL; - int *s_interval = NULL; - bw_array_t *b = NULL; +#define UPDATE(arrname,st) \ + rep_hist_update_bwhist_state_section(state,\ + (arrname),\ + &state->BWHistory ## st ## Values, \ + &state->BWHistory ## st ## Maxima, \ + &state->BWHistory ## st ## Ends, \ + &state->BWHistory ## st ## Interval) - len = 20*NUM_TOTALS+1; - buf = tor_malloc_zero(len); + UPDATE(write_array, Write); + UPDATE(read_array, Read); + UPDATE(dir_write_array, DirWrite); + UPDATE(dir_read_array, DirRead); - for (r=0;r<4;++r) { - switch (r) { - case 0: - b = write_array; - s_begins = &state->BWHistoryWriteEnds; - s_interval = &state->BWHistoryWriteInterval; - s_values = &state->BWHistoryWriteValues; - break; - case 1: - b = read_array; - s_begins = &state->BWHistoryReadEnds; - s_interval = &state->BWHistoryReadInterval; - s_values = &state->BWHistoryReadValues; - break; - case 2: - b = dir_write_array; - s_begins = &state->BWHistoryDirWriteEnds; - s_interval = &state->BWHistoryDirWriteInterval; - s_values = &state->BWHistoryDirWriteValues; - break; - case 3: - b = dir_read_array; - s_begins = &state->BWHistoryDirReadEnds; - s_interval = &state->BWHistoryDirReadInterval; - s_values = &state->BWHistoryDirReadValues; - break; - } - if (*s_values) { - SMARTLIST_FOREACH(*s_values, char *, val, tor_free(val)); - smartlist_free(*s_values); - } - if (! server_mode(get_options())) { - /* Clients don't need to store bandwidth history persistently; - * force these values to the defaults. */ - /* FFFF we should pull the default out of config.c's state table, - * so we don't have two defaults. */ - if (*s_begins != 0 || *s_interval != 900) { - time_t now = time(NULL); - time_t save_at = get_options()->AvoidDiskWrites ? now+3600 : now+600; - or_state_mark_dirty(state, save_at); - } - *s_begins = 0; - *s_interval = 900; - *s_values = smartlist_create(); - continue; - } - *s_begins = b->next_period; - *s_interval = NUM_SECS_BW_SUM_INTERVAL; - cp = buf; - cp += rep_hist_fill_bandwidth_history(cp, len, b); - tor_snprintf(cp, len-(cp-buf), cp == buf ? U64_FORMAT : ","U64_FORMAT, - U64_PRINTF_ARG(b->total_in_period)); - *s_values = smartlist_create(); - if (server_mode(get_options())) - smartlist_split_string(*s_values, buf, ",", SPLIT_SKIP_SPACE, 0); - } - tor_free(buf); if (server_mode(get_options())) { - or_state_mark_dirty(get_or_state(), time(NULL)+(2*3600)); + or_state_mark_dirty(state, time(NULL)+(2*3600)); } +#undef UPDATE } -/** Set bandwidth history from our saved state. */ -int -rep_hist_load_state(or_state_t *state, char **err) +/** Load a single bw_array_t from its Values, Ends, Maxima, and Interval + * entries in an or_state_t. Done while reading the state file. */ +static int +rep_hist_load_bwhist_state_section(bw_array_t *b, + const smartlist_t *s_values, + const smartlist_t *s_maxima, + const time_t s_begins, + const int s_interval) { - time_t s_begins = 0, start; time_t now = time(NULL); - uint64_t v; - int r,i,ok; - int all_ok = 1; - int s_interval = 0; - smartlist_t *s_values = NULL; - bw_array_t *b = NULL; - - /* Assert they already have been malloced */ - tor_assert(read_array && write_array); + int retval = 0; + time_t start; - for (r=0;r<4;++r) { - switch (r) { - case 0: - b = write_array; - s_begins = state->BWHistoryWriteEnds; - s_interval = state->BWHistoryWriteInterval; - s_values = state->BWHistoryWriteValues; - break; - case 1: - b = read_array; - s_begins = state->BWHistoryReadEnds; - s_interval = state->BWHistoryReadInterval; - s_values = state->BWHistoryReadValues; - break; - case 2: - b = dir_write_array; - s_begins = state->BWHistoryDirWriteEnds; - s_interval = state->BWHistoryDirWriteInterval; - s_values = state->BWHistoryDirWriteValues; - break; - case 3: - b = dir_read_array; - s_begins = state->BWHistoryDirReadEnds; - s_interval = state->BWHistoryDirReadInterval; - s_values = state->BWHistoryDirReadValues; - break; - } - if (s_values && s_begins >= now - NUM_SECS_BW_SUM_INTERVAL*NUM_TOTALS) { - start = s_begins - s_interval*(smartlist_len(s_values)); - if (start > now) - continue; - b->cur_obs_time = start; - b->next_period = start + NUM_SECS_BW_SUM_INTERVAL; - SMARTLIST_FOREACH(s_values, char *, cp, { + uint64_t v, mv; + int i,ok,ok_m; + int have_maxima = (smartlist_len(s_values) == smartlist_len(s_maxima)); + + if (s_values && s_begins >= now - NUM_SECS_BW_SUM_INTERVAL*NUM_TOTALS) { + start = s_begins - s_interval*(smartlist_len(s_values)); + if (start > now) + return 0; + b->cur_obs_time = start; + b->next_period = start + NUM_SECS_BW_SUM_INTERVAL; + SMARTLIST_FOREACH_BEGIN(s_values, const char *, cp) { + const char *maxstr = NULL; v = tor_parse_uint64(cp, 10, 0, UINT64_MAX, &ok, NULL); + if (have_maxima) { + maxstr = smartlist_get(s_maxima, cp_sl_idx); + mv = tor_parse_uint64(maxstr, 10, 0, UINT64_MAX, &ok_m, NULL); + mv *= NUM_SECS_ROLLING_MEASURE; + } else { + /* No maxima known; guess average rate to be conservative. */ + mv = (v / s_interval) * NUM_SECS_ROLLING_MEASURE; + } if (!ok) { - all_ok=0; - log_notice(LD_HIST, "Could not parse '%s' into a number.'", cp); + retval = -1; + log_notice(LD_HIST, "Could not parse value '%s' into a number.'",cp); } + if (maxstr && !ok_m) { + retval = -1; + log_notice(LD_HIST, "Could not parse maximum '%s' into a number.'", + maxstr); + } + if (start < now) { - add_obs(b, start, v); - start += NUM_SECS_BW_SUM_INTERVAL; + time_t cur_start = start; + time_t actual_interval_len = s_interval; + uint64_t cur_val = 0; + /* Calculate the average per second. This is the best we can do + * because our state file doesn't have per-second resolution. */ + if (start + s_interval > now) + actual_interval_len = now - start; + cur_val = v / actual_interval_len; + /* This is potentially inefficient, but since we don't do it very + * often it should be ok. */ + while (cur_start < start + actual_interval_len) { + add_obs(b, cur_start, cur_val); + ++cur_start; + } + b->max_total = mv; + /* This will result in some fairly choppy history if s_interval + * is not the same as NUM_SECS_BW_SUM_INTERVAL. XXXX */ + start += actual_interval_len; } - }); - } + } SMARTLIST_FOREACH_END(cp); + } - /* Clean up maxima and observed */ - /* Do we really want to zero this for the purpose of max capacity? */ - for (i=0; i<NUM_SECS_ROLLING_MEASURE; ++i) { - b->obs[i] = 0; - } - b->total_obs = 0; - for (i=0; i<NUM_TOTALS; ++i) { - b->maxima[i] = 0; - } - b->max_total = 0; + /* Clean up maxima and observed */ + for (i=0; i<NUM_SECS_ROLLING_MEASURE; ++i) { + b->obs[i] = 0; } + b->total_obs = 0; + return retval; +} + +/** Set bandwidth history from the state file we just loaded. */ +int +rep_hist_load_state(or_state_t *state, char **err) +{ + int all_ok = 1; + + /* Assert they already have been malloced */ + tor_assert(read_array && write_array); + tor_assert(dir_read_array && dir_write_array); + +#define LOAD(arrname,st) \ + if (rep_hist_load_bwhist_state_section( \ + (arrname), \ + state->BWHistory ## st ## Values, \ + state->BWHistory ## st ## Maxima, \ + state->BWHistory ## st ## Ends, \ + state->BWHistory ## st ## Interval)<0) \ + all_ok = 0 + + LOAD(write_array, Write); + LOAD(read_array, Read); + LOAD(dir_write_array, DirWrite); + LOAD(dir_read_array, DirRead); + +#undef LOAD if (!all_ok) { *err = tor_strdup("Parsing of bandwidth history values failed"); /* and create fresh arrays */ - tor_free(read_array); - tor_free(write_array); - read_array = bw_array_new(); - write_array = bw_array_new(); + bw_arrays_init(); return -1; } return 0; @@ -1694,7 +1816,8 @@ predicted_ports_free(void) { rephist_total_alloc -= smartlist_len(predicted_ports_list)*sizeof(predicted_port_t); - SMARTLIST_FOREACH(predicted_ports_list, predicted_port_t *, pp, tor_free(pp)); + SMARTLIST_FOREACH(predicted_ports_list, predicted_port_t *, + pp, tor_free(pp)); smartlist_free(predicted_ports_list); } @@ -1981,9 +2104,12 @@ rep_hist_exit_stats_term(void) tor_free(exit_streams); } -/** Helper for qsort: compare two ints. */ +/** Helper for qsort: compare two ints. Does not handle overflow properly, + * but works fine for sorting an array of port numbers, which is what we use + * it for. */ static int -_compare_int(const void *x, const void *y) { +_compare_int(const void *x, const void *y) +{ return (*(int*)x - *(int*)y); } @@ -2171,7 +2297,7 @@ rep_hist_exit_stats_write(time_t now) /* Try to write to disk. */ statsdir = get_datadir_fname("stats"); - if (check_private_dir(statsdir, CPD_CREATE) < 0) { + if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) { log_warn(LD_HIST, "Unable to create stats/ directory!"); goto done; } @@ -2224,14 +2350,19 @@ rep_hist_buffer_stats_init(time_t now) start_of_buffer_stats_interval = now; } +/** Statistics from a single circuit. Collected when the circuit closes, or + * when we flush statistics to disk. */ typedef struct circ_buffer_stats_t { - uint32_t processed_cells; + /** Average number of cells in the circuit's queue */ double mean_num_cells_in_queue; + /** Average time a cell waits in the queue. */ double mean_time_cells_in_queue; + /** Total number of cells sent over this circuit */ + uint32_t processed_cells; } circ_buffer_stats_t; -/** Holds stats. */ -smartlist_t *circuits_for_buffer_stats = NULL; +/** List of circ_buffer_stats_t. */ +static smartlist_t *circuits_for_buffer_stats = NULL; /** Remember cell statistics for circuit <b>circ</b> at time * <b>end_of_interval</b> and reset cell counters in case the circuit @@ -2255,11 +2386,12 @@ rep_hist_buffer_stats_add_circ(circuit_t *circ, time_t end_of_interval) circ->timestamp_created.tv_sec : start_of_buffer_stats_interval; interval_length = (int) (end_of_interval - start_of_interval); + if (interval_length <= 0) + return; stat = tor_malloc_zero(sizeof(circ_buffer_stats_t)); stat->processed_cells = orcirc->processed_cells; /* 1000.0 for s -> ms; 2.0 because of app-ward and exit-ward queues */ - stat->mean_num_cells_in_queue = interval_length == 0 ? 0.0 : - (double) orcirc->total_cell_waiting_time / + stat->mean_num_cells_in_queue = (double) orcirc->total_cell_waiting_time / (double) interval_length / 1000.0 / 2.0; stat->mean_time_cells_in_queue = (double) orcirc->total_cell_waiting_time / @@ -2309,8 +2441,8 @@ rep_hist_buffer_stats_write(time_t now) int processed_cells[SHARES], circs_in_share[SHARES], number_of_circuits, i; double queued_cells[SHARES], time_in_queue[SHARES]; - smartlist_t *str_build = smartlist_create(); - char *str = NULL, *buf=NULL; + smartlist_t *str_build = NULL; + char *str = NULL, *buf = NULL; circuit_t *circ; if (!start_of_buffer_stats_interval) @@ -2318,6 +2450,8 @@ rep_hist_buffer_stats_write(time_t now) if (start_of_buffer_stats_interval + WRITE_STATS_INTERVAL > now) goto done; /* Not ready to write */ + str_build = smartlist_create(); + /* add current circuits to stats */ for (circ = _circuit_get_global_list(); circ; circ = circ->next) rep_hist_buffer_stats_add_circ(circ, now); @@ -2353,7 +2487,7 @@ rep_hist_buffer_stats_write(time_t now) smartlist_clear(circuits_for_buffer_stats); /* write to file */ statsdir = get_datadir_fname("stats"); - if (check_private_dir(statsdir, CPD_CREATE) < 0) + if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) goto done; filename = get_datadir_fname2("stats", "buffer-stats"); out = start_writing_to_stdio_file(filename, OPEN_FLAGS_APPEND, @@ -2624,7 +2758,7 @@ rep_hist_conn_stats_write(time_t now) /* Try to write to disk. */ statsdir = get_datadir_fname("stats"); - if (check_private_dir(statsdir, CPD_CREATE) < 0) { + if (check_private_dir(statsdir, CPD_CREATE, get_options()->User) < 0) { log_warn(LD_HIST, "Unable to create stats/ directory!"); goto done; } @@ -2654,5 +2788,12 @@ rep_hist_free_all(void) built_last_stability_doc_at = 0; predicted_ports_free(); bidi_map_free(); + + if (circuits_for_buffer_stats) { + SMARTLIST_FOREACH(circuits_for_buffer_stats, circ_buffer_stats_t *, s, + tor_free(s)); + smartlist_free(circuits_for_buffer_stats); + circuits_for_buffer_stats = NULL; + } } diff --git a/src/or/rephist.h b/src/or/rephist.h index 6b600a2faa..5748748a80 100644 --- a/src/or/rephist.h +++ b/src/or/rephist.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -33,12 +33,14 @@ void rep_hist_update_state(or_state_t *state); int rep_hist_load_state(or_state_t *state, char **err); void rep_history_clean(time_t before); -void rep_hist_note_router_reachable(const char *id, time_t when); +void rep_hist_note_router_reachable(const char *id, const tor_addr_t *at_addr, + uint16_t at_port, time_t when); void rep_hist_note_router_unreachable(const char *id, time_t when); int rep_hist_record_mtbf_data(time_t now, int missing_means_down); int rep_hist_load_mtbf_data(time_t now); time_t rep_hist_downrate_old_runs(time_t now); +long rep_hist_get_uptime(const char *id, time_t when); double rep_hist_get_stability(const char *id, time_t when); double rep_hist_get_weighted_fractional_uptime(const char *id, time_t when); long rep_hist_get_weighted_time_known(const char *id, time_t when); diff --git a/src/or/router.c b/src/or/router.c index f630d25dc3..eaad57bb99 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #define ROUTER_PRIVATE @@ -84,12 +84,16 @@ static authority_cert_t *legacy_key_certificate = NULL; static void set_onion_key(crypto_pk_env_t *k) { + if (onionkey && !crypto_pk_cmp_keys(onionkey, k)) { + /* k is already our onion key; free it and return */ + crypto_free_pk_env(k); + return; + } tor_mutex_acquire(key_lock); crypto_free_pk_env(onionkey); onionkey = k; - onionkey_set_at = time(NULL); tor_mutex_release(key_lock); - mark_my_descriptor_dirty(); + mark_my_descriptor_dirty("set onion key"); } /** Return the current onion key. Requires that the onion key has been @@ -276,7 +280,7 @@ rotate_onion_key(void) now = time(NULL); state->LastRotatedOnionKey = onionkey_set_at = now; tor_mutex_release(key_lock); - mark_my_descriptor_dirty(); + mark_my_descriptor_dirty("rotated onion key"); or_state_mark_dirty(state, get_options()->AvoidDiskWrites ? now+3600 : 0); goto done; error: @@ -493,11 +497,11 @@ init_keys(void) char fingerprint_line[MAX_NICKNAME_LEN+FINGERPRINT_LEN+3]; const char *mydesc; crypto_pk_env_t *prkey; - char digest[20]; - char v3_digest[20]; + char digest[DIGEST_LEN]; + char v3_digest[DIGEST_LEN]; char *cp; - or_options_t *options = get_options(); - authority_type_t type; + const or_options_t *options = get_options(); + dirinfo_type_t type; time_t now = time(NULL); trusted_dir_server_t *ds; int v3_digest_set = 0; @@ -506,7 +510,8 @@ init_keys(void) if (!key_lock) key_lock = tor_mutex_new(); - /* There are a couple of paths that put us here before */ + /* There are a couple of paths that put us here before we've asked + * openssl to initialize itself. */ if (crypto_global_init(get_options()->HardwareAccel, get_options()->AccelName, get_options()->AccelDir)) { @@ -535,12 +540,12 @@ init_keys(void) return 0; } /* Make sure DataDirectory exists, and is private. */ - if (check_private_dir(options->DataDirectory, CPD_CREATE)) { + if (check_private_dir(options->DataDirectory, CPD_CREATE, options->User)) { return -1; } /* Check the key directory. */ keydir = get_datadir_fname("keys"); - if (check_private_dir(keydir, CPD_CREATE)) { + if (check_private_dir(keydir, CPD_CREATE, options->User)) { tor_free(keydir); return -1; } @@ -631,7 +636,7 @@ init_keys(void) /* 4. Build our router descriptor. */ /* Must be called after keys are initialized. */ mydesc = router_get_my_descriptor(); - if (authdir_mode(options)) { + if (authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL)) { const char *m = NULL; routerinfo_t *ri; /* We need to add our own fingerprint so it gets recognized. */ @@ -697,17 +702,18 @@ init_keys(void) } /* 6b. [authdirserver only] add own key to approved directories. */ crypto_pk_get_digest(get_server_identity_key(), digest); - type = ((options->V1AuthoritativeDir ? V1_AUTHORITY : NO_AUTHORITY) | - (options->V2AuthoritativeDir ? V2_AUTHORITY : NO_AUTHORITY) | - (options->V3AuthoritativeDir ? V3_AUTHORITY : NO_AUTHORITY) | - (options->BridgeAuthoritativeDir ? BRIDGE_AUTHORITY : NO_AUTHORITY) | - (options->HSAuthoritativeDir ? HIDSERV_AUTHORITY : NO_AUTHORITY)); + type = ((options->V1AuthoritativeDir ? V1_DIRINFO : NO_DIRINFO) | + (options->V2AuthoritativeDir ? V2_DIRINFO : NO_DIRINFO) | + (options->V3AuthoritativeDir ? + (V3_DIRINFO|MICRODESC_DIRINFO|EXTRAINFO_DIRINFO) : NO_DIRINFO) | + (options->BridgeAuthoritativeDir ? BRIDGE_DIRINFO : NO_DIRINFO) | + (options->HSAuthoritativeDir ? HIDSERV_DIRINFO : NO_DIRINFO)); ds = router_get_trusteddirserver_by_digest(digest); if (!ds) { ds = add_trusted_dir_server(options->Nickname, NULL, - (uint16_t)options->DirPort, - (uint16_t)options->ORPort, + router_get_advertised_dir_port(options, 0), + router_get_advertised_or_port(options), digest, v3_digest, type); @@ -723,8 +729,8 @@ init_keys(void) type, ds->type); ds->type = type; } - if (v3_digest_set && (ds->type & V3_AUTHORITY) && - memcmp(v3_digest, ds->v3_identity_digest, DIGEST_LEN)) { + if (v3_digest_set && (ds->type & V3_DIRINFO) && + tor_memneq(v3_digest, ds->v3_identity_digest, DIGEST_LEN)) { log_warn(LD_DIR, "V3 identity key does not match identity declared in " "DirServer line. Adjusting."); memcpy(ds->v3_identity_digest, v3_digest, DIGEST_LEN); @@ -762,7 +768,7 @@ router_reset_reachability(void) int check_whether_orport_reachable(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); return options->AssumeReachable || can_reach_or_port; } @@ -771,7 +777,7 @@ check_whether_orport_reachable(void) int check_whether_dirport_reachable(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); return !options->DirPort || options->AssumeReachable || we_are_hibernating() || @@ -786,7 +792,7 @@ check_whether_dirport_reachable(void) * a DirPort. */ static int -decide_to_advertise_dirport(or_options_t *options, uint16_t dir_port) +decide_to_advertise_dirport(const or_options_t *options, uint16_t dir_port) { static int advertising=1; /* start out assuming we will advertise */ int new_choice=1; @@ -804,6 +810,8 @@ decide_to_advertise_dirport(or_options_t *options, uint16_t dir_port) return 0; if (!check_whether_dirport_reachable()) return 0; + if (!router_get_advertised_dir_port(options, dir_port)) + return 0; /* Section two: reasons to publish or not publish that the user * might find surprising. These are generally config options that @@ -852,9 +860,29 @@ consider_testing_reachability(int test_or, int test_dir) const routerinfo_t *me = router_get_my_routerinfo(); int orport_reachable = check_whether_orport_reachable(); tor_addr_t addr; + const or_options_t *options = get_options(); if (!me) return; + if (routerset_contains_router(options->ExcludeNodes, me, -1) && + options->StrictNodes) { + /* If we've excluded ourself, and StrictNodes is set, we can't test + * ourself. */ + if (test_or || test_dir) { +#define SELF_EXCLUDED_WARN_INTERVAL 3600 + static ratelim_t warning_limit=RATELIM_INIT(SELF_EXCLUDED_WARN_INTERVAL); + char *msg; + if ((msg = rate_limit_log(&warning_limit, approx_time()))) { + log_warn(LD_CIRC, "Can't peform self-tests for this relay: we have " + "listed ourself in ExcludeNodes, and StrictNodes is set. " + "We cannot learn whether we are usable, and will not " + "be able to advertise ourself.%s", msg); + tor_free(msg); + } + } + return; + } + if (test_or && (!orport_reachable || !circuit_enough_testing_circs())) { extend_info_t *ei; log_info(LD_CIRC, "Testing %s of my ORPort: %s:%d.", @@ -886,19 +914,14 @@ consider_testing_reachability(int test_or, int test_dir) void router_orport_found_reachable(void) { - if (!can_reach_or_port) { - const routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); + if (!can_reach_or_port && me) { log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from " "the outside. Excellent.%s", - get_options()->_PublishServerDescriptor != NO_AUTHORITY ? + get_options()->_PublishServerDescriptor != NO_DIRINFO ? " Publishing server descriptor." : ""); can_reach_or_port = 1; - mark_my_descriptor_dirty(); - if (!me) { /* should never happen */ - log_warn(LD_BUG, "ORPort found reachable, but I have no routerinfo " - "yet. Failing to inform controller of success."); - return; - } + mark_my_descriptor_dirty("ORPort found reachable"); control_event_server_status(LOG_NOTICE, "REACHABILITY_SUCCEEDED ORADDRESS=%s:%d", me->address, me->or_port); @@ -909,18 +932,13 @@ router_orport_found_reachable(void) void router_dirport_found_reachable(void) { - if (!can_reach_dir_port) { - const routerinfo_t *me = router_get_my_routerinfo(); + const routerinfo_t *me = router_get_my_routerinfo(); + if (!can_reach_dir_port && me) { log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable " "from the outside. Excellent."); can_reach_dir_port = 1; - if (!me || decide_to_advertise_dirport(get_options(), me->dir_port)) - mark_my_descriptor_dirty(); - if (!me) { /* should never happen */ - log_warn(LD_BUG, "DirPort found reachable, but I have no routerinfo " - "yet. Failing to inform controller of success."); - return; - } + if (decide_to_advertise_dirport(get_options(), me->dir_port)) + mark_my_descriptor_dirty("DirPort found reachable"); control_event_server_status(LOG_NOTICE, "REACHABILITY_SUCCEEDED DIRADDRESS=%s:%d", me->address, me->dir_port); @@ -960,7 +978,7 @@ router_perform_bandwidth_test(int num_circs, time_t now) * directory server. */ int -authdir_mode(or_options_t *options) +authdir_mode(const or_options_t *options) { return options->AuthoritativeDir != 0; } @@ -968,7 +986,7 @@ authdir_mode(or_options_t *options) * directory server. */ int -authdir_mode_v1(or_options_t *options) +authdir_mode_v1(const or_options_t *options) { return authdir_mode(options) && options->V1AuthoritativeDir != 0; } @@ -976,7 +994,7 @@ authdir_mode_v1(or_options_t *options) * directory server. */ int -authdir_mode_v2(or_options_t *options) +authdir_mode_v2(const or_options_t *options) { return authdir_mode(options) && options->V2AuthoritativeDir != 0; } @@ -984,13 +1002,13 @@ authdir_mode_v2(or_options_t *options) * directory server. */ int -authdir_mode_v3(or_options_t *options) +authdir_mode_v3(const or_options_t *options) { return authdir_mode(options) && options->V3AuthoritativeDir != 0; } /** Return true iff we are a v1, v2, or v3 directory authority. */ int -authdir_mode_any_main(or_options_t *options) +authdir_mode_any_main(const or_options_t *options) { return options->V1AuthoritativeDir || options->V2AuthoritativeDir || @@ -999,7 +1017,7 @@ authdir_mode_any_main(or_options_t *options) /** Return true if we believe ourselves to be any kind of * authoritative directory beyond just a hidserv authority. */ int -authdir_mode_any_nonhidserv(or_options_t *options) +authdir_mode_any_nonhidserv(const or_options_t *options) { return options->BridgeAuthoritativeDir || authdir_mode_any_main(options); @@ -1008,7 +1026,7 @@ authdir_mode_any_nonhidserv(or_options_t *options) * authoritative about receiving and serving descriptors of type * <b>purpose</b> its dirport. Use -1 for "any purpose". */ int -authdir_mode_handles_descs(or_options_t *options, int purpose) +authdir_mode_handles_descs(const or_options_t *options, int purpose) { if (purpose < 0) return authdir_mode_any_nonhidserv(options); @@ -1023,7 +1041,7 @@ authdir_mode_handles_descs(or_options_t *options, int purpose) * publishes its own network statuses. */ int -authdir_mode_publishes_statuses(or_options_t *options) +authdir_mode_publishes_statuses(const or_options_t *options) { if (authdir_mode_bridge(options)) return 0; @@ -1033,7 +1051,7 @@ authdir_mode_publishes_statuses(or_options_t *options) * tests reachability of the descriptors it learns about. */ int -authdir_mode_tests_reachability(or_options_t *options) +authdir_mode_tests_reachability(const or_options_t *options) { return authdir_mode_handles_descs(options, -1); } @@ -1041,7 +1059,7 @@ authdir_mode_tests_reachability(or_options_t *options) * directory server. */ int -authdir_mode_bridge(or_options_t *options) +authdir_mode_bridge(const or_options_t *options) { return authdir_mode(options) && options->BridgeAuthoritativeDir != 0; } @@ -1049,7 +1067,7 @@ authdir_mode_bridge(or_options_t *options) /** Return true iff we are trying to be a server. */ int -server_mode(or_options_t *options) +server_mode(const or_options_t *options) { if (options->ClientOnly) return 0; return (options->ORPort != 0 || options->ORListenAddress); @@ -1058,7 +1076,7 @@ server_mode(or_options_t *options) /** Return true iff we are trying to be a non-bridge server. */ int -public_server_mode(or_options_t *options) +public_server_mode(const or_options_t *options) { if (!server_mode(options)) return 0; return (!options->BridgeRelay); @@ -1068,12 +1086,12 @@ public_server_mode(or_options_t *options) * in the consensus mean that we don't want to allow exits from circuits * we got from addresses not known to be servers. */ int -should_refuse_unknown_exits(or_options_t *options) +should_refuse_unknown_exits(const or_options_t *options) { - if (options->RefuseUnknownExits_ != -1) { - return options->RefuseUnknownExits_; + if (options->RefuseUnknownExits != -1) { + return options->RefuseUnknownExits; } else { - return networkstatus_get_param(NULL, "refuseunknownexits", 1); + return networkstatus_get_param(NULL, "refuseunknownexits", 1, 0, 1); } } @@ -1100,12 +1118,12 @@ set_server_advertised(int s) /** Return true iff we are trying to be a socks proxy. */ int -proxy_mode(or_options_t *options) +proxy_mode(const or_options_t *options) { - return (options->SocksPort != 0 || options->SocksListenAddress || - options->TransPort != 0 || options->TransListenAddress || - options->NATDPort != 0 || options->NATDListenAddress || - options->DNSPort != 0 || options->DNSListenAddress); + return (options->SocksPort != 0 || + options->TransPort != 0 || + options->NATDPort != 0 || + options->DNSPort != 0); } /** Decide if we're a publishable server. We are a publishable server if: @@ -1121,16 +1139,18 @@ proxy_mode(or_options_t *options) static int decide_if_publishable_server(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (options->ClientOnly) return 0; - if (options->_PublishServerDescriptor == NO_AUTHORITY) + if (options->_PublishServerDescriptor == NO_DIRINFO) return 0; if (!server_mode(options)) return 0; if (authdir_mode(options)) return 1; + if (!router_get_advertised_or_port(options)) + return 0; return check_whether_orport_reachable(); } @@ -1160,6 +1180,40 @@ consider_publishable_server(int force) } } +/** Return the port that we should advertise as our ORPort; this is either + * the one configured in the ORPort option, or the one we actually bound to + * if ORPort is "auto". */ +uint16_t +router_get_advertised_or_port(const or_options_t *options) +{ + if (options->ORPort == CFG_AUTO_PORT) { + connection_t *c = connection_get_by_type(CONN_TYPE_OR_LISTENER); + if (c) + return c->port; + return 0; + } + return options->ORPort; +} + +/** Return the port that we should advertise as our DirPort; + * this is one of three possibilities: + * The one that is passed as <b>dirport</b> if the DirPort option is 0, or + * the one configured in the DirPort option, + * or the one we actually bound to if DirPort is "auto". */ +uint16_t +router_get_advertised_dir_port(const or_options_t *options, uint16_t dirport) +{ + if (!options->DirPort) + return dirport; + if (options->DirPort == CFG_AUTO_PORT) { + connection_t *c = connection_get_by_type(CONN_TYPE_DIR_LISTENER); + if (c) + return c->port; + return 0; + } + return options->DirPort; +} + /* * OR descriptor generation. */ @@ -1185,7 +1239,7 @@ router_upload_dir_desc_to_dirservers(int force) extrainfo_t *ei; char *msg; size_t desc_len, extra_len = 0, total_len; - authority_type_t auth = get_options()->_PublishServerDescriptor; + dirinfo_type_t auth = get_options()->_PublishServerDescriptor; ri = router_get_my_routerinfo(); if (!ri) { @@ -1193,10 +1247,14 @@ router_upload_dir_desc_to_dirservers(int force) return; } ei = router_get_my_extrainfo(); - if (auth == NO_AUTHORITY) + if (auth == NO_DIRINFO) return; if (!force && !desc_needs_upload) return; + + log_info(LD_OR, "Uploading relay descriptor to directory authorities%s", + force ? " (forced)" : ""); + desc_needs_upload = 0; desc_len = ri->cache_info.signed_descriptor_len; @@ -1210,7 +1268,7 @@ router_upload_dir_desc_to_dirservers(int force) msg[desc_len+extra_len] = 0; directory_post_to_dirservers(DIR_PURPOSE_UPLOAD_DIR, - (auth & BRIDGE_AUTHORITY) ? + (auth & BRIDGE_DIRINFO) ? ROUTER_PURPOSE_BRIDGE : ROUTER_PURPOSE_GENERAL, auth, msg, desc_len, extra_len); @@ -1256,7 +1314,7 @@ int router_digest_is_me(const char *digest) { return (server_identitykey && - !memcmp(server_identitykey_digest, digest, DIGEST_LEN)); + tor_memeq(server_identitykey_digest, digest, DIGEST_LEN)); } /** Return true iff I'm a server and <b>digest</b> is equal to @@ -1268,7 +1326,7 @@ router_extrainfo_digest_is_me(const char *digest) if (!ei) return 0; - return !memcmp(digest, + return tor_memeq(digest, ei->cache_info.signed_descriptor_digest, DIGEST_LEN); } @@ -1344,7 +1402,7 @@ static int router_guess_address_from_dir_headers(uint32_t *guess); * dirserver headers. Place the answer in *<b>addr</b> and return * 0 on success, else return -1 if we have no guess. */ int -router_pick_published_address(or_options_t *options, uint32_t *addr) +router_pick_published_address(const or_options_t *options, uint32_t *addr) { if (resolve_my_address(LOG_INFO, options, addr, NULL) < 0) { log_info(LD_CONFIG, "Could not determine our address locally. " @@ -1371,12 +1429,13 @@ router_rebuild_descriptor(int force) uint32_t addr; char platform[256]; int hibernating = we_are_hibernating(); - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (desc_clean_since && !force) return 0; - if (router_pick_published_address(options, &addr) < 0) { + if (router_pick_published_address(options, &addr) < 0 || + router_get_advertised_or_port(options) == 0) { /* Stop trying to rebuild our descriptor every second. We'll * learn that it's time to try again when ip_address_changed() * marks it dirty. */ @@ -1384,13 +1443,15 @@ router_rebuild_descriptor(int force) return -1; } + log_info(LD_OR, "Rebuilding relay descriptor%s", force ? " (forced)" : ""); + ri = tor_malloc_zero(sizeof(routerinfo_t)); ri->cache_info.routerlist_index = -1; ri->address = tor_dup_ip(addr); ri->nickname = tor_strdup(options->Nickname); ri->addr = addr; - ri->or_port = options->ORPort; - ri->dir_port = options->DirPort; + ri->or_port = router_get_advertised_or_port(options); + ri->dir_port = router_get_advertised_dir_port(options, 0); ri->cache_info.published_on = time(NULL); ri->onion_pkey = crypto_pk_dup_key(get_onion_key()); /* must invoke from * main thread */ @@ -1411,9 +1472,14 @@ router_rebuild_descriptor(int force) ri->bandwidthcapacity = hibernating ? 0 : rep_hist_bandwidth_assess(); - policies_parse_exit_policy(options->ExitPolicy, &ri->exit_policy, - options->ExitPolicyRejectPrivate, - ri->address, !options->BridgeRelay); + if (dns_seems_to_be_broken() || has_dns_init_failed()) { + /* DNS is screwed up; don't claim to be an exit. */ + policies_exit_policy_append_reject_star(&ri->exit_policy); + } else { + policies_parse_exit_policy(options->ExitPolicy, &ri->exit_policy, + options->ExitPolicyRejectPrivate, + ri->address, !options->BridgeRelay); + } ri->policy_is_reject_star = policy_is_reject_star(ri->exit_policy); @@ -1551,14 +1617,15 @@ void mark_my_descriptor_dirty_if_older_than(time_t when) { if (desc_clean_since < when) - mark_my_descriptor_dirty(); + mark_my_descriptor_dirty("time for new descriptor"); } /** Call when the current descriptor is out of date. */ void -mark_my_descriptor_dirty(void) +mark_my_descriptor_dirty(const char *reason) { desc_clean_since = 0; + log_info(LD_OR, "Decided to publish new relay descriptor: %s", reason); } /** How frequently will we republish our descriptor because of large (factor @@ -1583,7 +1650,7 @@ check_descriptor_bandwidth_changed(time_t now) if (last_changed+MAX_BANDWIDTH_CHANGE_FREQ < now) { log_info(LD_GENERAL, "Measured bandwidth has changed; rebuilding descriptor."); - mark_my_descriptor_dirty(); + mark_my_descriptor_dirty("bandwidth has changed"); last_changed = now; } } @@ -1624,7 +1691,7 @@ void check_descriptor_ipaddress_changed(time_t now) { uint32_t prev, cur; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); (void) now; if (!desc_routerinfo) @@ -1656,7 +1723,7 @@ router_new_address_suggestion(const char *suggestion, { uint32_t addr, cur = 0; struct in_addr in; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); /* first, learn what the IP address actually is */ if (!tor_inet_aton(suggestion, &in)) { @@ -1755,7 +1822,7 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, int result=0; addr_policy_t *tmpe; char *family_line; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); /* Make sure the identity key matches the one in the routerinfo. */ if (crypto_pk_cmp_keys(ident_key, router->identity_pkey)) { @@ -1865,9 +1932,7 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, } /* Write the exit policy to the end of 's'. */ - if (dns_seems_to_be_broken() || has_dns_init_failed() || - !router->exit_policy || !smartlist_len(router->exit_policy)) { - /* DNS is screwed up; don't claim to be an exit. */ + if (!router->exit_policy || !smartlist_len(router->exit_policy)) { strlcat(s+written, "reject *:*\n", maxlen-written); written += strlen("reject *:*\n"); tmpe = NULL; @@ -1999,7 +2064,7 @@ int extrainfo_dump_to_string(char **s_out, extrainfo_t *extrainfo, crypto_pk_env_t *ident_key) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); char identity[HEX_DIGEST_LEN+1]; char published[ISO_TIME_LEN+1]; char digest[DIGEST_LEN]; @@ -2184,6 +2249,186 @@ is_legal_hexdigest(const char *s) strspn(s,HEX_CHARACTERS)==HEX_DIGEST_LEN); } +/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to + * hold a human-readable description of a node with identity digest + * <b>id_digest</b>, named-status <b>is_named</b>, nickname <b>nickname</b>, + * and address <b>addr</b> or <b>addr32h</b>. + * + * The <b>nickname</b> and <b>addr</b> fields are optional and may be set to + * NULL. The <b>addr32h</b> field is optional and may be set to 0. + * + * Return a pointer to the front of <b>buf</b>. + */ +const char * +format_node_description(char *buf, + const char *id_digest, + int is_named, + const char *nickname, + const tor_addr_t *addr, + uint32_t addr32h) +{ + char *cp; + + if (!buf) + return "<NULL BUFFER>"; + + buf[0] = '$'; + base16_encode(buf+1, HEX_DIGEST_LEN+1, id_digest, DIGEST_LEN); + cp = buf+1+HEX_DIGEST_LEN; + if (nickname) { + buf[1+HEX_DIGEST_LEN] = is_named ? '=' : '~'; + strlcpy(buf+1+HEX_DIGEST_LEN+1, nickname, MAX_NICKNAME_LEN+1); + cp += strlen(cp); + } + if (addr32h || addr) { + memcpy(cp, " at ", 4); + cp += 4; + if (addr) { + tor_addr_to_str(cp, addr, TOR_ADDR_BUF_LEN, 0); + } else { + struct in_addr in; + in.s_addr = htonl(addr32h); + tor_inet_ntoa(&in, cp, INET_NTOA_BUF_LEN); + } + } + return buf; +} + +/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to + * hold a human-readable description of <b>ri</b>. + * + * + * Return a pointer to the front of <b>buf</b>. + */ +const char * +router_get_description(char *buf, const routerinfo_t *ri) +{ + if (!ri) + return "<null>"; + return format_node_description(buf, + ri->cache_info.identity_digest, + router_is_named(ri), + ri->nickname, + NULL, + ri->addr); +} + +/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to + * hold a human-readable description of <b>node</b>. + * + * Return a pointer to the front of <b>buf</b>. + */ +const char * +node_get_description(char *buf, const node_t *node) +{ + const char *nickname = NULL; + uint32_t addr32h = 0; + int is_named = 0; + + if (!node) + return "<null>"; + + if (node->rs) { + nickname = node->rs->nickname; + is_named = node->rs->is_named; + addr32h = node->rs->addr; + } else if (node->ri) { + nickname = node->ri->nickname; + addr32h = node->ri->addr; + } + + return format_node_description(buf, + node->identity, + is_named, + nickname, + NULL, + addr32h); +} + +/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to + * hold a human-readable description of <b>rs</b>. + * + * Return a pointer to the front of <b>buf</b>. + */ +const char * +routerstatus_get_description(char *buf, const routerstatus_t *rs) +{ + if (!rs) + return "<null>"; + return format_node_description(buf, + rs->identity_digest, + rs->is_named, + rs->nickname, + NULL, + rs->addr); +} + +/** Use <b>buf</b> (which must be at least NODE_DESC_BUF_LEN bytes long) to + * hold a human-readable description of <b>ei</b>. + * + * Return a pointer to the front of <b>buf</b>. + */ +const char * +extend_info_get_description(char *buf, const extend_info_t *ei) +{ + if (!ei) + return "<null>"; + return format_node_description(buf, + ei->identity_digest, + 0, + ei->nickname, + &ei->addr, + 0); +} + +/** Return a human-readable description of the routerinfo_t <b>ri</b>. + * + * This function is not thread-safe. Each call to this function invalidates + * previous values returned by this function. + */ +const char * +router_describe(const routerinfo_t *ri) +{ + static char buf[NODE_DESC_BUF_LEN]; + return router_get_description(buf, ri); +} + +/** Return a human-readable description of the node_t <b>node</b>. + * + * This function is not thread-safe. Each call to this function invalidates + * previous values returned by this function. + */ +const char * +node_describe(const node_t *node) +{ + static char buf[NODE_DESC_BUF_LEN]; + return node_get_description(buf, node); +} + +/** Return a human-readable description of the routerstatus_t <b>rs</b>. + * + * This function is not thread-safe. Each call to this function invalidates + * previous values returned by this function. + */ +const char * +routerstatus_describe(const routerstatus_t *rs) +{ + static char buf[NODE_DESC_BUF_LEN]; + return routerstatus_get_description(buf, rs); +} + +/** Return a human-readable description of the extend_info_t <b>ri</b>. + * + * This function is not thread-safe. Each call to this function invalidates + * previous values returned by this function. + */ +const char * +extend_info_describe(const extend_info_t *ei) +{ + static char buf[NODE_DESC_BUF_LEN]; + return extend_info_get_description(buf, ei); +} + /** Set <b>buf</b> (which must have MAX_VERBOSE_NICKNAME_LEN+1 bytes) to the * verbose representation of the identity of <b>router</b>. The format is: * A dollar sign. @@ -2196,7 +2441,7 @@ router_get_verbose_nickname(char *buf, const routerinfo_t *router) { const char *good_digest = networkstatus_get_router_digest_by_nickname( router->nickname); - int is_named = good_digest && !memcmp(good_digest, + int is_named = good_digest && tor_memeq(good_digest, router->cache_info.identity_digest, DIGEST_LEN); buf[0] = '$'; diff --git a/src/or/router.h b/src/or/router.h index f6a88d7637..f6d3c12333 100644 --- a/src/or/router.h +++ b/src/or/router.h @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -39,27 +39,31 @@ void router_orport_found_reachable(void); void router_dirport_found_reachable(void); void router_perform_bandwidth_test(int num_circs, time_t now); -int authdir_mode(or_options_t *options); -int authdir_mode_v1(or_options_t *options); -int authdir_mode_v2(or_options_t *options); -int authdir_mode_v3(or_options_t *options); -int authdir_mode_any_main(or_options_t *options); -int authdir_mode_any_nonhidserv(or_options_t *options); -int authdir_mode_handles_descs(or_options_t *options, int purpose); -int authdir_mode_publishes_statuses(or_options_t *options); -int authdir_mode_tests_reachability(or_options_t *options); -int authdir_mode_bridge(or_options_t *options); +int authdir_mode(const or_options_t *options); +int authdir_mode_v1(const or_options_t *options); +int authdir_mode_v2(const or_options_t *options); +int authdir_mode_v3(const or_options_t *options); +int authdir_mode_any_main(const or_options_t *options); +int authdir_mode_any_nonhidserv(const or_options_t *options); +int authdir_mode_handles_descs(const or_options_t *options, int purpose); +int authdir_mode_publishes_statuses(const or_options_t *options); +int authdir_mode_tests_reachability(const or_options_t *options); +int authdir_mode_bridge(const or_options_t *options); -int server_mode(or_options_t *options); -int public_server_mode(or_options_t *options); +uint16_t router_get_advertised_or_port(const or_options_t *options); +uint16_t router_get_advertised_dir_port(const or_options_t *options, + uint16_t dirport); + +int server_mode(const or_options_t *options); +int public_server_mode(const or_options_t *options); int advertised_server_mode(void); -int proxy_mode(or_options_t *options); +int proxy_mode(const or_options_t *options); void consider_publishable_server(int force); -int should_refuse_unknown_exits(or_options_t *options); +int should_refuse_unknown_exits(const or_options_t *options); void router_upload_dir_desc_to_dirservers(int force); void mark_my_descriptor_dirty_if_older_than(time_t when); -void mark_my_descriptor_dirty(void); +void mark_my_descriptor_dirty(const char *reason); void check_descriptor_bandwidth_changed(time_t now); void check_descriptor_ipaddress_changed(time_t now); void router_new_address_suggestion(const char *suggestion, @@ -73,7 +77,7 @@ int router_digest_is_me(const char *digest); int router_extrainfo_digest_is_me(const char *digest); int router_is_me(const routerinfo_t *router); int router_fingerprint_is_me(const char *fp); -int router_pick_published_address(or_options_t *options, uint32_t *addr); +int router_pick_published_address(const or_options_t *options, uint32_t *addr); int router_rebuild_descriptor(int force); int router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, crypto_pk_env_t *ident_key); @@ -82,6 +86,30 @@ int extrainfo_dump_to_string(char **s, extrainfo_t *extrainfo, int is_legal_nickname(const char *s); int is_legal_nickname_or_hexdigest(const char *s); int is_legal_hexdigest(const char *s); + +/** + * Longest allowed output of format_node_description, plus 1 character for + * NUL. This allows space for: + * "$FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF~xxxxxxxxxxxxxxxxxxx at" + * " [ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255]" + * plus a terminating NUL. + */ +#define NODE_DESC_BUF_LEN (MAX_VERBOSE_NICKNAME_LEN+4+TOR_ADDR_BUF_LEN) +const char *format_node_description(char *buf, + const char *id_digest, + int is_named, + const char *nickname, + const tor_addr_t *addr, + uint32_t addr32h); +const char *router_get_description(char *buf, const routerinfo_t *ri); +const char *node_get_description(char *buf, const node_t *node); +const char *routerstatus_get_description(char *buf, const routerstatus_t *rs); +const char *extend_info_get_description(char *buf, const extend_info_t *ei); +const char *router_describe(const routerinfo_t *ri); +const char *node_describe(const node_t *node); +const char *routerstatus_describe(const routerstatus_t *ri); +const char *extend_info_describe(const extend_info_t *ei); + void router_get_verbose_nickname(char *buf, const routerinfo_t *router); void routerstatus_get_verbose_nickname(char *buf, const routerstatus_t *router); diff --git a/src/or/routerlist.c b/src/or/routerlist.c index e58ec6a6f5..c0a233ceed 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -40,9 +40,9 @@ /* static function prototypes */ static const routerstatus_t *router_pick_directory_server_impl( - authority_type_t auth, int flags); + dirinfo_type_t auth, int flags); static const routerstatus_t *router_pick_trusteddirserver_impl( - authority_type_t auth, int flags, int *n_busy_out); + dirinfo_type_t auth, int flags, int *n_busy_out); static void mark_all_trusteddirservers_up(void); static int router_nickname_matches(const routerinfo_t *router, const char *nickname); @@ -56,6 +56,8 @@ static const char *signed_descriptor_get_body_impl( int with_annotations); static void list_pending_downloads(digestmap_t *result, int purpose, const char *prefix); +static void launch_dummy_descriptor_download_as_needed(time_t now, + const or_options_t *options); DECLARE_TYPED_DIGESTMAP_FNS(sdmap_, digest_sd_map_t, signed_descriptor_t) DECLARE_TYPED_DIGESTMAP_FNS(rimap_, digest_ri_map_t, routerinfo_t) @@ -97,7 +99,7 @@ static smartlist_t *warned_nicknames = NULL; /** The last time we tried to download any routerdesc, or 0 for "never". We * use this to rate-limit download attempts when the number of routerdescs to * download is low. */ -static time_t last_routerdesc_download_attempted = 0; +static time_t last_descriptor_download_attempted = 0; /** When we last computed the weights to use for bandwidths on directory * requests, what were the total weighted bandwidth, and our share of that @@ -109,7 +111,7 @@ static uint64_t sl_last_total_weighted_bw = 0, /** Return the number of directory authorities whose type matches some bit set * in <b>type</b> */ int -get_n_authorities(authority_type_t type) +get_n_authorities(dirinfo_type_t type) { int n = 0; if (!trusted_dir_servers) @@ -120,7 +122,7 @@ get_n_authorities(authority_type_t type) return n; } -#define get_n_v2_authorities() get_n_authorities(V2_AUTHORITY) +#define get_n_v2_authorities() get_n_authorities(V2_DIRINFO) /** Helper: Return the cert_list_t for an authority whose authority ID is * <b>id_digest</b>, allocating a new list if necessary. */ @@ -168,7 +170,7 @@ already_have_cert(authority_cert_t *cert) SMARTLIST_FOREACH(cl->certs, authority_cert_t *, c, { - if (!memcmp(c->cache_info.signed_descriptor_digest, + if (tor_memeq(c->cache_info.signed_descriptor_digest, cert->cache_info.signed_descriptor_digest, DIGEST_LEN)) return 1; @@ -332,7 +334,7 @@ trusted_dirs_remove_old_certs(void) time_t cert_published; if (newest == cert) continue; - expired = time_definitely_after(now, cert->expires, CERT_EXPIRY_SKEW); + expired = now > cert->expires; cert_published = cert->cache_info.published_on; /* Store expired certs for 48 hours after a newer arrives; */ @@ -382,16 +384,16 @@ authority_cert_get_by_sk_digest(const char *sk_digest) return NULL; if ((c = get_my_v3_authority_cert()) && - !memcmp(c->signing_key_digest, sk_digest, DIGEST_LEN)) + tor_memeq(c->signing_key_digest, sk_digest, DIGEST_LEN)) return c; if ((c = get_my_v3_legacy_cert()) && - !memcmp(c->signing_key_digest, sk_digest, DIGEST_LEN)) + tor_memeq(c->signing_key_digest, sk_digest, DIGEST_LEN)) return c; DIGESTMAP_FOREACH(trusted_dir_certs, key, cert_list_t *, cl) { SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, { - if (!memcmp(cert->signing_key_digest, sk_digest, DIGEST_LEN)) + if (tor_memeq(cert->signing_key_digest, sk_digest, DIGEST_LEN)) return cert; }); } DIGESTMAP_FOREACH_END; @@ -410,7 +412,7 @@ authority_cert_get_by_digests(const char *id_digest, !(cl = digestmap_get(trusted_dir_certs, id_digest))) return NULL; SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, - if (!memcmp(cert->signing_key_digest, sk_digest, DIGEST_LEN)) + if (tor_memeq(cert->signing_key_digest, sk_digest, DIGEST_LEN)) return cert; ); return NULL; @@ -518,13 +520,13 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now) } SMARTLIST_FOREACH_BEGIN(trusted_dir_servers, trusted_dir_server_t *, ds) { int found = 0; - if (!(ds->type & V3_AUTHORITY)) + if (!(ds->type & V3_DIRINFO)) continue; if (smartlist_digest_isin(missing_digests, ds->v3_identity_digest)) continue; cl = get_cert_list(ds->v3_identity_digest); SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, { - if (! time_definitely_after(now, cert->expires, CERT_EXPIRY_SKEW)) { + if (now < cert->expires) { /* It's not expired, and we weren't looking for something to * verify a consensus with. Call it done. */ download_status_reset(&cl->dl_status); @@ -535,8 +537,8 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now) if (!found && download_status_is_ready(&cl->dl_status, now,MAX_CERT_DL_FAILURES) && !digestmap_get(pending, ds->v3_identity_digest)) { - log_notice(LD_DIR, "No current certificate known for authority %s; " - "launching request.", ds->nickname); + log_info(LD_DIR, "No current certificate known for authority %s; " + "launching request.", ds->nickname); smartlist_add(missing_digests, ds->v3_identity_digest); } } SMARTLIST_FOREACH_END(ds); @@ -931,7 +933,7 @@ router_get_trusted_dir_servers(void) * servers that have returned 503 recently. */ const routerstatus_t * -router_pick_directory_server(authority_type_t type, int flags) +router_pick_directory_server(dirinfo_type_t type, int flags) { const routerstatus_t *choice; if (get_options()->PreferTunneledDirConns) @@ -976,7 +978,7 @@ router_get_my_share_of_directory_requests(double *v2_share_out, /* XXXX This is a bit of a kludge */ if (rs->is_v2_dir) { sl_last_total_weighted_bw = 0; - router_pick_directory_server(V2_AUTHORITY, pds_flags); + router_pick_directory_server(V2_DIRINFO, pds_flags); if (sl_last_total_weighted_bw != 0) { *v2_share_out = U64_TO_DBL(sl_last_weighted_bw_of_me) / U64_TO_DBL(sl_last_total_weighted_bw); @@ -985,7 +987,7 @@ router_get_my_share_of_directory_requests(double *v2_share_out, if (rs->version_supports_v3_dir) { sl_last_total_weighted_bw = 0; - router_pick_directory_server(V3_AUTHORITY, pds_flags); + router_pick_directory_server(V3_DIRINFO, pds_flags); if (sl_last_total_weighted_bw != 0) { *v3_share_out = U64_TO_DBL(sl_last_weighted_bw_of_me) / U64_TO_DBL(sl_last_total_weighted_bw); @@ -1006,7 +1008,7 @@ router_get_trusteddirserver_by_digest(const char *digest) SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ds, { - if (!memcmp(ds->digest, digest, DIGEST_LEN)) + if (tor_memeq(ds->digest, digest, DIGEST_LEN)) return ds; }); @@ -1025,8 +1027,8 @@ trusteddirserver_get_by_v3_auth_digest(const char *digest) SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ds, { - if (!memcmp(ds->v3_identity_digest, digest, DIGEST_LEN) && - (ds->type & V3_AUTHORITY)) + if (tor_memeq(ds->v3_identity_digest, digest, DIGEST_LEN) && + (ds->type & V3_DIRINFO)) return ds; }); @@ -1037,7 +1039,7 @@ trusteddirserver_get_by_v3_auth_digest(const char *digest) * router_pick_directory_server. */ const routerstatus_t * -router_pick_trusteddirserver(authority_type_t type, int flags) +router_pick_trusteddirserver(dirinfo_type_t type, int flags) { const routerstatus_t *choice; int busy = 0; @@ -1073,8 +1075,9 @@ router_pick_trusteddirserver(authority_type_t type, int flags) * that we can use with BEGINDIR. */ static const routerstatus_t * -router_pick_directory_server_impl(authority_type_t type, int flags) +router_pick_directory_server_impl(dirinfo_type_t type, int flags) { + const or_options_t *options = get_options(); const node_t *result; smartlist_t *direct, *tunnel; smartlist_t *trusted_direct, *trusted_tunnel; @@ -1084,10 +1087,13 @@ router_pick_directory_server_impl(authority_type_t type, int flags) int requireother = ! (flags & PDS_ALLOW_SELF); int fascistfirewall = ! (flags & PDS_IGNORE_FASCISTFIREWALL); int prefer_tunnel = (flags & _PDS_PREFER_TUNNELED_DIR_CONNS); + int try_excluding = 1, n_excluded = 0; if (!consensus) return NULL; + retry_without_exclude: + direct = smartlist_create(); tunnel = smartlist_create(); trusted_direct = smartlist_create(); @@ -1101,6 +1107,7 @@ router_pick_directory_server_impl(authority_type_t type, int flags) int is_overloaded; tor_addr_t addr; const routerstatus_t *status = node->rs; + const country_t country = node->country; if (!status) continue; @@ -1110,18 +1117,27 @@ router_pick_directory_server_impl(authority_type_t type, int flags) continue; if (requireother && router_digest_is_me(node->identity)) continue; - if (type & V3_AUTHORITY) { + if (type & V3_DIRINFO) { if (!(status->version_supports_v3_dir || router_digest_is_trusted_dir_type(node->identity, - V3_AUTHORITY))) + V3_DIRINFO))) continue; } is_trusted = router_digest_is_trusted_dir(node->identity); - if ((type & V2_AUTHORITY) && !(node->rs->is_v2_dir || is_trusted)) + if ((type & V2_DIRINFO) && !(node->rs->is_v2_dir || is_trusted)) continue; - if ((type & EXTRAINFO_CACHE) && + if ((type & EXTRAINFO_DIRINFO) && !router_supports_extrainfo(node->identity, 0)) continue; + if ((type & MICRODESC_DIRINFO) && !is_trusted && + !node->rs->version_supports_microdesc_cache) + continue; + if (try_excluding && + routerset_contains_routerstatus(options->ExcludeNodes, status, + country)) { + ++n_excluded; + continue; + } /* XXXX IP6 proposal 118 */ tor_addr_from_ipv4h(&addr, node->rs->addr); @@ -1165,6 +1181,15 @@ router_pick_directory_server_impl(authority_type_t type, int flags) smartlist_free(trusted_tunnel); smartlist_free(overloaded_direct); smartlist_free(overloaded_tunnel); + + if (result == NULL && try_excluding && !options->StrictNodes && n_excluded) { + /* If we got no result, and we are excluding nodes, and StrictNodes is + * not set, try again without excluding nodes. */ + try_excluding = 0; + n_excluded = 0; + goto retry_without_exclude; + } + return result ? result->rs : NULL; } @@ -1172,9 +1197,10 @@ router_pick_directory_server_impl(authority_type_t type, int flags) * are as for router_pick_directory_server_impl(). */ static const routerstatus_t * -router_pick_trusteddirserver_impl(authority_type_t type, int flags, +router_pick_trusteddirserver_impl(dirinfo_type_t type, int flags, int *n_busy_out) { + const or_options_t *options = get_options(); smartlist_t *direct, *tunnel; smartlist_t *overloaded_direct, *overloaded_tunnel; const routerinfo_t *me = router_get_my_routerinfo(); @@ -1186,10 +1212,13 @@ router_pick_trusteddirserver_impl(authority_type_t type, int flags, const int no_serverdesc_fetching =(flags & PDS_NO_EXISTING_SERVERDESC_FETCH); const int no_microdesc_fetching =(flags & PDS_NO_EXISTING_MICRODESC_FETCH); int n_busy = 0; + int try_excluding = 1, n_excluded = 0; if (!trusted_dir_servers) return NULL; + retry_without_exclude: + direct = smartlist_create(); tunnel = smartlist_create(); overloaded_direct = smartlist_create(); @@ -1203,11 +1232,17 @@ router_pick_trusteddirserver_impl(authority_type_t type, int flags, if (!d->is_running) continue; if ((type & d->type) == 0) continue; - if ((type & EXTRAINFO_CACHE) && + if ((type & EXTRAINFO_DIRINFO) && !router_supports_extrainfo(d->digest, 1)) continue; if (requireother && me && router_digest_is_me(d->digest)) continue; + if (try_excluding && + routerset_contains_routerstatus(options->ExcludeNodes, + &d->fake_status, -1)) { + ++n_excluded; + continue; + } /* XXXX IP6 proposal 118 */ tor_addr_from_ipv4h(&addr, d->addr); @@ -1261,6 +1296,15 @@ router_pick_trusteddirserver_impl(authority_type_t type, int flags, smartlist_free(tunnel); smartlist_free(overloaded_direct); smartlist_free(overloaded_tunnel); + + if (result == NULL && try_excluding && !options->StrictNodes && n_excluded) { + /* If we got no result, and we are excluding nodes, and StrictNodes is + * not set, try again without excluding nodes. */ + try_excluding = 0; + n_excluded = 0; + goto retry_without_exclude; + } + return result; } @@ -1313,22 +1357,34 @@ addrs_in_same_network_family(const tor_addr_t *a1, return 0 == tor_addr_compare_masked(a1, a2, 16, CMP_SEMANTIC); } -/** Add all the family of <b>router</b> to the smartlist <b>sl</b>. - * This is used to make sure we don't pick siblings in a single path, - * or pick more than one relay from a family for our entry guard list. +/** + * Add all the family of <b>node</b>, including <b>node</b> itself, to + * the smartlist <b>sl</b>. + * + * This is used to make sure we don't pick siblings in a single path, or + * pick more than one relay from a family for our entry guard list. + * Note that a node may be added to <b>sl</b> more than once if it is + * part of <b>node</b>'s family for more than one reason. */ void -nodelist_add_node_family(smartlist_t *sl, const node_t *node) +nodelist_add_node_and_family(smartlist_t *sl, const node_t *node) { /* XXXX MOVE */ const smartlist_t *all_nodes = nodelist_get_list(); const smartlist_t *declared_family; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); tor_assert(node); declared_family = node_get_declared_family(node); + /* Let's make sure that we have the node itself, if it's a real node. */ + { + const node_t *real_node = node_get_by_id(node->identity); + if (real_node) + smartlist_add(sl, (node_t*)real_node); + } + /* First, add any nodes with similar network addresses. */ if (options->EnforceDistinctSubnets) { tor_addr_t node_addr; @@ -1367,19 +1423,20 @@ nodelist_add_node_family(smartlist_t *sl, const node_t *node) if (options->NodeFamilySets) { SMARTLIST_FOREACH(options->NodeFamilySets, const routerset_t *, rs, { if (routerset_contains_node(rs, node)) { - routerset_get_all_nodes(sl, rs, 0); + routerset_get_all_nodes(sl, rs, NULL, 0); } }); } } -/** Given a <b>router</b>, add every node_t in its family to <b>sl</b>. +/** Given a <b>router</b>, add every node_t in its family (including the + * node itself</b>) to <b>sl</b>. * * Note the type mismatch: This function takes a routerinfo, but adds nodes * to the smartlist! */ static void -routerlist_add_nodes_in_family(smartlist_t *sl, const routerinfo_t *router) +routerlist_add_node_and_family(smartlist_t *sl, const routerinfo_t *router) { /* XXXX MOVE ? */ node_t fake_node; @@ -1390,7 +1447,7 @@ routerlist_add_nodes_in_family(smartlist_t *sl, const routerinfo_t *router) memcpy(fake_node.identity, router->cache_info.identity_digest, DIGEST_LEN); node = &fake_node; } - nodelist_add_node_family(sl, node); + nodelist_add_node_and_family(sl, node); } /** Return true iff <b>node</b> is named by some nickname in <b>lst</b>. */ @@ -1412,7 +1469,7 @@ int nodes_in_same_family(const node_t *node1, const node_t *node2) { /* XXXX MOVE */ - or_options_t *options = get_options(); + const or_options_t *options = get_options(); /* Are they in the same family because of their addresses? */ if (options->EnforceDistinctSubnets) { @@ -1512,6 +1569,8 @@ routerlist_find_my_routerinfo(void) /** Find a router that's up, that has this IP address, and * that allows exit to this address:port, or return NULL if there * isn't a good one. + * Don't exit enclave to excluded relays -- it wouldn't actually + * hurt anything, but this way there are fewer confused users. */ const node_t * router_find_exact_exit_enclave(const char *address, uint16_t port) @@ -1519,6 +1578,7 @@ router_find_exact_exit_enclave(const char *address, uint16_t port) uint32_t addr; struct in_addr in; tor_addr_t a; + const or_options_t *options = get_options(); if (!tor_inet_aton(address, &in)) return NULL; /* it's not an IP already */ @@ -1530,7 +1590,8 @@ router_find_exact_exit_enclave(const char *address, uint16_t port) if (node_get_addr_ipv4h(node) == addr && node->is_running && compare_tor_addr_to_node_policy(&a, port, node) == - ADDR_POLICY_ACCEPTED) + ADDR_POLICY_ACCEPTED && + !routerset_contains_node(options->_ExcludeExitNodesUnion, node)) return node; }); return NULL; @@ -1656,8 +1717,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl, return NULL; } - weight_scale = networkstatus_get_param(NULL, "bwweightscale", - BW_WEIGHT_SCALE); + weight_scale = circuit_build_times_get_bw_scale(NULL); if (rule == WEIGHT_FOR_GUARD) { Wg = networkstatus_get_bw_weight(NULL, "Wgg", -1); @@ -1727,7 +1787,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl, SMARTLIST_FOREACH_BEGIN(sl, const node_t *, node) { int is_exit = 0, is_guard = 0, is_dir = 0, this_bw = 0, is_me = 0; double weight = 1; - is_exit = node->is_exit; + is_exit = node->is_exit && ! node->is_bad_exit; is_guard = node->is_possible_guard; is_dir = node_is_dir(node); if (node->rs) { @@ -1767,7 +1827,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl, sl_last_weighted_bw_of_me = weight*this_bw; } SMARTLIST_FOREACH_END(node); - /* XXXX022 this is a kludge to expose these values. */ + /* XXXX023 this is a kludge to expose these values. */ sl_last_total_weighted_bw = weighted_bw; log_debug(LD_CIRC, "Choosing node for rule %s based on weights " @@ -1886,7 +1946,7 @@ smartlist_choose_node_by_bandwidth(smartlist_t *sl, if (node->rs->has_bandwidth) { this_bw = kb_to_bytes(node->rs->bandwidth); } else { /* guess */ - /* XXX022 once consensuses always list bandwidths, we can take + /* XXX023 once consensuses always list bandwidths, we can take * this guessing business out. -RD */ is_known = 0; flags = node->rs->is_fast ? 1 : 0; @@ -2005,7 +2065,7 @@ smartlist_choose_node_by_bandwidth(smartlist_t *sl, } } - /* XXXX022 this is a kludge to expose these values. */ + /* XXXX023 this is a kludge to expose these values. */ sl_last_total_weighted_bw = total_bw; log_debug(LD_CIRC, "Total weighted bw = "U64_FORMAT @@ -2124,12 +2184,8 @@ router_choose_random_node(smartlist_t *excludedsmartlist, }); } - if ((r = routerlist_find_my_routerinfo())) { - const node_t *me = node_get_by_id(r->cache_info.identity_digest); - if (me) - smartlist_add(excludednodes, (void *)me); - routerlist_add_nodes_in_family(excludednodes, r); - } + if ((r = routerlist_find_my_routerinfo())) + routerlist_add_node_and_family(excludednodes, r); router_add_running_nodes_to_smartlist(sl, allow_invalid, need_uptime, need_capacity, @@ -2227,25 +2283,27 @@ hex_digest_nickname_matches(const char *hexdigest, const char *identity_digest, return 0; if (nn_char == '=' || nn_char == '~') { + if (!nickname) + return 0; if (strcasecmp(nn_buf, nickname)) return 0; if (nn_char == '=' && !is_named) return 0; } - return !memcmp(digest, identity_digest, DIGEST_LEN); + return tor_memeq(digest, identity_digest, DIGEST_LEN); } /* Return true iff <b>router</b> is listed as named in the current * consensus. */ -static int +int router_is_named(const routerinfo_t *router) { const char *digest = networkstatus_get_router_digest_by_nickname(router->nickname); return (digest && - !memcmp(digest, router->cache_info.identity_digest, DIGEST_LEN)); + tor_memeq(digest, router->cache_info.identity_digest, DIGEST_LEN)); } /** Return true iff the digest of <b>router</b>'s identity key, @@ -2335,8 +2393,8 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) if (n_matches <= 1 || router->is_running) best_match = router; } else if (maybedigest && - !memcmp(digest, router->cache_info.identity_digest, DIGEST_LEN) - ) { + tor_memeq(digest, router->cache_info.identity_digest, + DIGEST_LEN)) { if (router_hex_digest_matches(router, nickname)) return router; /* If we reach this point, we have a ID=name syntax that matches the @@ -2401,30 +2459,18 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) #endif } -/** Try to find a routerinfo for <b>digest</b>. If we don't have one, - * return 1. If we do, ask tor_version_as_new_as() for the answer. - */ -int -router_digest_version_as_new_as(const char *digest, const char *cutoff) -{ - const routerinfo_t *router = router_get_by_id_digest(digest); - if (!router) - return 1; - return tor_version_as_new_as(router->platform, cutoff); -} - /** Return true iff <b>digest</b> is the digest of the identity key of a * trusted directory matching at least one bit of <b>type</b>. If <b>type</b> * is zero, any authority is okay. */ int -router_digest_is_trusted_dir_type(const char *digest, authority_type_t type) +router_digest_is_trusted_dir_type(const char *digest, dirinfo_type_t type) { if (!trusted_dir_servers) return 0; if (authdir_mode(get_options()) && router_digest_is_me(digest)) return 1; SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ent, - if (!memcmp(digest, ent->digest, DIGEST_LEN)) { + if (tor_memeq(digest, ent->digest, DIGEST_LEN)) { return (!type) || ((type & ent->type) != 0); }); return 0; @@ -2573,7 +2619,7 @@ signed_descriptor_get_body_impl(const signed_descriptor_t *desc, tor_assert(r); if (!with_annotations) { - if (memcmp("router ", r, 7) && memcmp("extra-info ", r, 11)) { + if (fast_memcmp("router ", r, 7) && fast_memcmp("extra-info ", r, 11)) { char *cp = tor_strndup(r, 64); log_err(LD_DIR, "descriptor at %p begins with unexpected string %s. " "Is another process running in our data directory? Exiting.", @@ -3051,7 +3097,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old, routerlist_insert(rl, ri_new); return; } - if (memcmp(ri_old->cache_info.identity_digest, + if (tor_memneq(ri_old->cache_info.identity_digest, ri_new->cache_info.identity_digest, DIGEST_LEN)) { /* digests don't match; digestmap_set won't replace */ rimap_remove(rl->identity_map, ri_old->cache_info.identity_digest); @@ -3068,7 +3114,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old, &ri_new->cache_info); } - same_descriptors = ! memcmp(ri_old->cache_info.signed_descriptor_digest, + same_descriptors = tor_memeq(ri_old->cache_info.signed_descriptor_digest, ri_new->cache_info.signed_descriptor_digest, DIGEST_LEN); @@ -3090,7 +3136,7 @@ routerlist_replace(routerlist_t *rl, routerinfo_t *ri_old, sdmap_remove(rl->desc_digest_map, ri_old->cache_info.signed_descriptor_digest); - if (memcmp(ri_old->cache_info.extra_info_digest, + if (tor_memneq(ri_old->cache_info.extra_info_digest, ri_new->cache_info.extra_info_digest, DIGEST_LEN)) { ei_tmp = eimap_remove(rl->extra_info_map, ri_old->cache_info.extra_info_digest); @@ -3189,16 +3235,14 @@ router_set_status(const char *digest, int up) tor_assert(digest); SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, d, - if (!memcmp(d->digest, digest, DIGEST_LEN)) + if (tor_memeq(d->digest, digest, DIGEST_LEN)) d->is_running = up); node = node_get_mutable_by_id(digest); if (node) { #if 0 - char buf[MAX_VERBOSE_NICKNAME_LEN+1]; - node_get_verbose_nickname(node,buf); log_debug(LD_DIR,"Marking router %s as %s.", - buf, up ? "up" : "down"); + node_describe(node), up ? "up" : "down"); #endif if (!up && node_is_me(node) && !we_are_hibernating()) log_warn(LD_NET, "We just marked ourself as down. Are your external " @@ -3234,10 +3278,12 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, int from_cache, int from_fetch) { const char *id_digest; - int authdir = authdir_mode_handles_descs(get_options(), router->purpose); + const or_options_t *options = get_options(); + int authdir = authdir_mode_handles_descs(options, router->purpose); int authdir_believes_valid = 0; routerinfo_t *old_router; - networkstatus_t *consensus = networkstatus_get_latest_consensus(); + networkstatus_t *consensus = + networkstatus_get_latest_consensus_by_flavor(FLAV_NS); const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list(); int in_consensus = 0; @@ -3266,11 +3312,12 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, router->purpose == ROUTER_PURPOSE_BRIDGE && !was_bridge) { log_info(LD_DIR, "Replacing non-bridge descriptor with bridge " - "descriptor for router '%s'", router->nickname); + "descriptor for router %s", + router_describe(router)); } else { log_info(LD_DIR, - "Dropping descriptor that we already have for router '%s'", - router->nickname); + "Dropping descriptor that we already have for router %s", + router_describe(router)); *msg = "Router descriptor was not new."; routerinfo_free(router); return ROUTER_WAS_NOT_NEW; @@ -3294,8 +3341,8 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, /* We asked for it, so some networkstatus must have listed it when we * did. Save it if we're a cache in case somebody else asks for it. */ log_info(LD_DIR, - "Received a no-longer-recognized descriptor for router '%s'", - router->nickname); + "Received a no-longer-recognized descriptor for router %s", + router_describe(router)); *msg = "Router descriptor is not referenced by any network-status."; /* Only journal this desc if we'll be serving it. */ @@ -3312,7 +3359,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, { routerstatus_t *rs = networkstatus_v2_find_mutable_entry(ns, id_digest); - if (rs && !memcmp(rs->descriptor_digest, + if (rs && tor_memeq(rs->descriptor_digest, router->cache_info.signed_descriptor_digest, DIGEST_LEN)) rs->need_to_mirror = 0; @@ -3320,7 +3367,7 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, if (consensus) { routerstatus_t *rs = networkstatus_vote_find_mutable_entry( consensus, id_digest); - if (rs && !memcmp(rs->descriptor_digest, + if (rs && tor_memeq(rs->descriptor_digest, router->cache_info.signed_descriptor_digest, DIGEST_LEN)) { in_consensus = 1; @@ -3340,13 +3387,28 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, return ROUTER_NOT_IN_CONSENSUS; } + /* If we're reading a bridge descriptor from our cache, and we don't + * recognize it as one of our currently configured bridges, drop the + * descriptor. Otherwise we could end up using it as one of our entry + * guards even if it isn't in our Bridge config lines. */ + if (router->purpose == ROUTER_PURPOSE_BRIDGE && from_cache && + !authdir_mode_bridge(options) && + !routerinfo_is_a_configured_bridge(router)) { + log_info(LD_DIR, "Dropping bridge descriptor for %s because we have " + "no bridge configured at that address.", + safe_str_client(router_describe(router))); + *msg = "Router descriptor was not a configured bridge."; + routerinfo_free(router); + return ROUTER_WAS_NOT_WANTED; + } + /* If we have a router with the same identity key, choose the newer one. */ if (old_router) { if (!in_consensus && (router->cache_info.published_on <= old_router->cache_info.published_on)) { /* Same key, but old. This one is not listed in the consensus. */ - log_debug(LD_DIR, "Not-new descriptor for router '%s'", - router->nickname); + log_debug(LD_DIR, "Not-new descriptor for router %s", + router_describe(router)); /* Only journal this desc if we'll be serving it. */ if (!from_cache && should_cache_old_descriptors()) signed_desc_append_to_journal(&router->cache_info, @@ -3356,9 +3418,8 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg, return ROUTER_WAS_NOT_NEW; } else { /* Same key, and either new, or listed in the consensus. */ - log_debug(LD_DIR, "Replacing entry for router '%s/%s' [%s]", - router->nickname, old_router->nickname, - hex_str(id_digest,DIGEST_LEN)); + log_debug(LD_DIR, "Replacing entry for router %s", + router_describe(router)); if (routers_have_same_or_addr(router, old_router)) { /* these carry over when the address and orport are unchanged. */ router->last_reachable = old_router->last_reachable; @@ -3406,7 +3467,7 @@ router_add_extrainfo_to_routerlist(extrainfo_t *ei, const char **msg, int inserted; (void)from_fetch; if (msg) *msg = NULL; - /*XXXX022 Do something with msg */ + /*XXXX023 Do something with msg */ inserted = extrainfo_insert(router_get_routerlist(), ei); @@ -3428,7 +3489,7 @@ _compare_old_routers_by_identity(const void **_a, const void **_b) { int i; const signed_descriptor_t *r1 = *_a, *r2 = *_b; - if ((i = memcmp(r1->identity_digest, r2->identity_digest, DIGEST_LEN))) + if ((i = fast_memcmp(r1->identity_digest, r2->identity_digest, DIGEST_LEN))) return i; return (int)(r1->published_on - r2->published_on); } @@ -3476,7 +3537,7 @@ routerlist_remove_old_cached_routers_with_id(time_t now, ident = ((signed_descriptor_t*)smartlist_get(lst, lo))->identity_digest; for (i = lo+1; i <= hi; ++i) { signed_descriptor_t *r = smartlist_get(lst, i); - tor_assert(!memcmp(ident, r->identity_digest, DIGEST_LEN)); + tor_assert(tor_memeq(ident, r->identity_digest, DIGEST_LEN)); } #endif /* Check whether we need to do anything at all. */ @@ -3634,8 +3695,8 @@ routerlist_remove_old_routers(void) /* Too old: remove it. (If we're a cache, just move it into * old_routers.) */ log_info(LD_DIR, - "Forgetting obsolete (too old) routerinfo for router '%s'", - router->nickname); + "Forgetting obsolete (too old) routerinfo for router %s", + router_describe(router)); routerlist_remove(routerlist, router, 1, now); i--; } @@ -3688,7 +3749,7 @@ routerlist_remove_old_routers(void) cur_id = r->identity_digest; hi = i; } - if (memcmp(cur_id, r->identity_digest, DIGEST_LEN)) { + if (tor_memneq(cur_id, r->identity_digest, DIGEST_LEN)) { routerlist_remove_old_cached_routers_with_id(now, cutoff, i+1, hi, retain); cur_id = r->identity_digest; @@ -3926,7 +3987,7 @@ signed_desc_digest_is_recognized(signed_descriptor_t *desc) if (consensus) { rs = networkstatus_vote_find_entry(consensus, desc->identity_digest); - if (rs && !memcmp(rs->descriptor_digest, + if (rs && tor_memeq(rs->descriptor_digest, desc->signed_descriptor_digest, DIGEST_LEN)) return 1; } @@ -3935,7 +3996,7 @@ signed_desc_digest_is_recognized(signed_descriptor_t *desc) { if (!(rs = networkstatus_v2_find_entry(ns, desc->identity_digest))) continue; - if (!memcmp(rs->descriptor_digest, + if (tor_memeq(rs->descriptor_digest, desc->signed_descriptor_digest, DIGEST_LEN)) return 1; }); @@ -3943,6 +4004,16 @@ signed_desc_digest_is_recognized(signed_descriptor_t *desc) return 0; } +/** Update downloads for router descriptors and/or microdescriptors as + * appropriate. */ +void +update_all_descriptor_downloads(time_t now) +{ + update_router_descriptor_downloads(now); + update_microdesc_downloads(now); + launch_dummy_descriptor_download_as_needed(now, get_options()); +} + /** Clear all our timeouts for fetching v2 and v3 directory stuff, and then * give it all a try again. */ void @@ -3951,8 +4022,7 @@ routerlist_retry_directory_downloads(time_t now) router_reset_status_download_failures(); router_reset_descriptor_download_failures(); update_networkstatus_downloads(now); - update_router_descriptor_downloads(now); - update_microdesc_downloads(now); + update_all_descriptor_downloads(now); } /** Return 1 if all running sufficiently-stable routers we can use will reject @@ -3992,7 +4062,7 @@ trusted_dir_server_t * add_trusted_dir_server(const char *nickname, const char *address, uint16_t dir_port, uint16_t or_port, const char *digest, const char *v3_auth_digest, - authority_type_t type) + dirinfo_type_t type) { trusted_dir_server_t *ent; uint32_t a; @@ -4027,7 +4097,7 @@ add_trusted_dir_server(const char *nickname, const char *address, ent->is_running = 1; ent->type = type; memcpy(ent->digest, digest, DIGEST_LEN); - if (v3_auth_digest && (type & V3_AUTHORITY)) + if (v3_auth_digest && (type & V3_DIRINFO)) memcpy(ent->v3_identity_digest, v3_auth_digest, DIGEST_LEN); dlen = 64 + strlen(hostname) + (nickname?strlen(nickname):0); @@ -4106,7 +4176,7 @@ int any_trusted_dir_is_v1_authority(void) { if (trusted_dir_servers) - return get_n_authorities(V1_AUTHORITY) > 0; + return get_n_authorities(V1_DIRINFO) > 0; return 0; } @@ -4236,7 +4306,8 @@ initiate_descriptor_downloads(const routerstatus_t *source, * running, or otherwise not a descriptor that we would make any * use of even if we had it. Else return 1. */ static INLINE int -client_would_use_router(routerstatus_t *rs, time_t now, or_options_t *options) +client_would_use_router(const routerstatus_t *rs, time_t now, + const or_options_t *options) { if (!rs->is_flagged_running && !options->FetchUselessDescriptors) { /* If we had this router descriptor, we wouldn't even bother using it. @@ -4289,7 +4360,7 @@ launch_descriptor_downloads(int purpose, const routerstatus_t *source, time_t now) { int should_delay = 0, n_downloadable; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); const char *descname; tor_assert(purpose == DIR_PURPOSE_FETCH_SERVERDESC || @@ -4306,15 +4377,15 @@ launch_descriptor_downloads(int purpose, descname); should_delay = 0; } else { - should_delay = (last_routerdesc_download_attempted + + should_delay = (last_descriptor_download_attempted + MAX_CLIENT_INTERVAL_WITHOUT_REQUEST) > now; if (!should_delay && n_downloadable) { - if (last_routerdesc_download_attempted) { + if (last_descriptor_download_attempted) { log_info(LD_DIR, "There are not many downloadable %ss, but we've " "been waiting long enough (%d seconds). Downloading.", descname, - (int)(now-last_routerdesc_download_attempted)); + (int)(now-last_descriptor_download_attempted)); } else { log_info(LD_DIR, "There are not many downloadable %ss, but we haven't " @@ -4377,7 +4448,7 @@ launch_descriptor_downloads(int purpose, downloadable, i, i+n_per_request, pds_flags); } - last_routerdesc_download_attempted = now; + last_descriptor_download_attempted = now; } } @@ -4393,7 +4464,7 @@ update_router_descriptor_cache_downloads_v2(time_t now) digestmap_t *map; /* Which descs are in progress, or assigned? */ int i, j, n; int n_download; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); const smartlist_t *networkstatus_v2_list = networkstatus_get_v2_list(); if (! directory_fetches_dir_info_early(options)) { @@ -4535,7 +4606,7 @@ void update_consensus_router_descriptor_downloads(time_t now, int is_vote, networkstatus_t *consensus) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); digestmap_t *map = NULL; smartlist_t *no_longer_old = smartlist_create(); smartlist_t *downloadable = smartlist_create(); @@ -4571,7 +4642,7 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote, const routerinfo_t *ri; ++n_have; if (!(ri = router_get_by_id_digest(rs->identity_digest)) || - memcmp(ri->cache_info.signed_descriptor_digest, + tor_memneq(ri->cache_info.signed_descriptor_digest, sd->signed_descriptor_digest, DIGEST_LEN)) { /* We have a descriptor with this digest, but either there is no * entry in routerlist with the same ID (!ri), or there is one, @@ -4609,7 +4680,8 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote, if (oldrouter) format_iso_time(time_bufold, oldrouter->cache_info.published_on); log_info(LD_DIR, "Learned about %s (%s vs %s) from %s's vote (%s)", - rs->nickname, time_bufnew, + routerstatus_describe(rs), + time_bufnew, oldrouter ? time_bufold : "none", source->nickname, oldrouter ? "known" : "unknown"); } @@ -4657,34 +4729,24 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote, /** How often should we launch a server/authority request to be sure of getting * a guess for our IP? */ -/*XXXX021 this info should come from netinfo cells or something, or we should +/*XXXX023 this info should come from netinfo cells or something, or we should * do this only when we aren't seeing incoming data. see bug 652. */ #define DUMMY_DOWNLOAD_INTERVAL (20*60) -/** Launch downloads for router status as needed. */ -void -update_router_descriptor_downloads(time_t now) +/** As needed, launch a dummy router descriptor fetch to see if our + * address has changed. */ +static void +launch_dummy_descriptor_download_as_needed(time_t now, + const or_options_t *options) { - or_options_t *options = get_options(); static time_t last_dummy_download = 0; - if (should_delay_dir_fetches(options)) - return; - if (directory_fetches_dir_info_early(options)) { - update_router_descriptor_cache_downloads_v2(now); - } - - update_consensus_router_descriptor_downloads(now, 0, - networkstatus_get_reasonably_live_consensus(now, FLAV_NS)); - - /* XXXX021 we could be smarter here; see notes on bug 652. */ - /* XXXX NM Microdescs: if we're not fetching microdescriptors, we need - * to make something else invoke this. */ + /* XXXX023 we could be smarter here; see notes on bug 652. */ /* If we're a server that doesn't have a configured address, we rely on * directory fetches to learn when our address changes. So if we haven't * tried to get any routerdescs in a long time, try a dummy fetch now. */ if (!options->Address && server_mode(options) && - last_routerdesc_download_attempted + DUMMY_DOWNLOAD_INTERVAL < now && + last_descriptor_download_attempted + DUMMY_DOWNLOAD_INTERVAL < now && last_dummy_download + DUMMY_DOWNLOAD_INTERVAL < now) { last_dummy_download = now; directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC, @@ -4693,11 +4755,28 @@ update_router_descriptor_downloads(time_t now) } } +/** Launch downloads for router status as needed. */ +void +update_router_descriptor_downloads(time_t now) +{ + const or_options_t *options = get_options(); + if (should_delay_dir_fetches(options)) + return; + if (!we_fetch_router_descriptors(options)) + return; + if (directory_fetches_dir_info_early(options)) { + update_router_descriptor_cache_downloads_v2(now); + } + + update_consensus_router_descriptor_downloads(now, 0, + networkstatus_get_reasonably_live_consensus(now, FLAV_NS)); +} + /** Launch extrainfo downloads as needed. */ void update_extrainfo_downloads(time_t now) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); routerlist_t *rl; smartlist_t *wanted; digestmap_t *pending; @@ -4819,23 +4898,31 @@ get_dir_info_status_string(void) static void count_usable_descriptors(int *num_present, int *num_usable, const networkstatus_t *consensus, - or_options_t *options, time_t now, + const or_options_t *options, time_t now, routerset_t *in_set) { + const int md = (consensus->flavor == FLAV_MICRODESC); *num_present = 0, *num_usable=0; - SMARTLIST_FOREACH(consensus->routerstatus_list, routerstatus_t *, rs, - { + SMARTLIST_FOREACH_BEGIN(consensus->routerstatus_list, routerstatus_t *, rs) + { if (in_set && ! routerset_contains_routerstatus(in_set, rs, -1)) continue; if (client_would_use_router(rs, now, options)) { + const char * const digest = rs->descriptor_digest; + int present; ++*num_usable; /* the consensus says we want it. */ - if (router_get_by_descriptor_digest(rs->descriptor_digest)) { + if (md) + present = NULL != microdesc_cache_lookup_by_digest256(NULL, digest); + else + present = NULL != router_get_by_descriptor_digest(digest); + if (present) { /* we have the descriptor listed in the consensus. */ ++*num_present; } } - }); + } + SMARTLIST_FOREACH_END(rs); log_debug(LD_DIR, "%d usable, %d present.", *num_usable, *num_present); } @@ -4849,7 +4936,7 @@ count_loading_descriptors_progress(void) int num_present = 0, num_usable=0; time_t now = time(NULL); const networkstatus_t *consensus = - networkstatus_get_reasonably_live_consensus(now, FLAV_NS); + networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor()); double fraction; if (!consensus) @@ -4877,16 +4964,16 @@ update_router_have_minimum_dir_info(void) int num_present = 0, num_usable=0; time_t now = time(NULL); int res; - or_options_t *options = get_options(); + const or_options_t *options = get_options(); const networkstatus_t *consensus = - networkstatus_get_reasonably_live_consensus(now, FLAV_NS); + networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor()); if (!consensus) { if (!networkstatus_get_latest_consensus()) - strlcpy(dir_info_status, "We have no network-status consensus.", + strlcpy(dir_info_status, "We have no usable consensus.", sizeof(dir_info_status)); else - strlcpy(dir_info_status, "We have no recent network-status consensus.", + strlcpy(dir_info_status, "We have no recent usable consensus.", sizeof(dir_info_status)); res = 0; goto done; @@ -4965,7 +5052,7 @@ void router_reset_descriptor_download_failures(void) { networkstatus_reset_download_failures(); - last_routerdesc_download_attempted = 0; + last_descriptor_download_attempted = 0; if (!routerlist) return; SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, ri, @@ -5086,22 +5173,24 @@ routerinfo_incompatible_with_extrainfo(const routerinfo_t *ri, return 1; } - digest_matches = !memcmp(ei->cache_info.signed_descriptor_digest, + digest_matches = tor_memeq(ei->cache_info.signed_descriptor_digest, sd->extra_info_digest, DIGEST_LEN); /* The identity must match exactly to have been generated at the same time * by the same router. */ - if (memcmp(ri->cache_info.identity_digest, ei->cache_info.identity_digest, - DIGEST_LEN)) { + if (tor_memneq(ri->cache_info.identity_digest, + ei->cache_info.identity_digest, + DIGEST_LEN)) { if (msg) *msg = "Extrainfo nickname or identity did not match routerinfo"; goto err; /* different servers */ } if (ei->pending_sig) { char signed_digest[128]; - if (crypto_pk_public_checksig(ri->identity_pkey, signed_digest, + if (crypto_pk_public_checksig(ri->identity_pkey, + signed_digest, sizeof(signed_digest), ei->pending_sig, ei->pending_sig_len) != DIGEST_LEN || - memcmp(signed_digest, ei->cache_info.signed_descriptor_digest, + tor_memneq(signed_digest, ei->cache_info.signed_descriptor_digest, DIGEST_LEN)) { ei->bad_sig = 1; tor_free(ei->pending_sig); @@ -5197,25 +5286,25 @@ routerlist_assert_ok(const routerlist_t *rl) }); RIMAP_FOREACH(rl->identity_map, d, r) { - tor_assert(!memcmp(r->cache_info.identity_digest, d, DIGEST_LEN)); + tor_assert(tor_memeq(r->cache_info.identity_digest, d, DIGEST_LEN)); } DIGESTMAP_FOREACH_END; SDMAP_FOREACH(rl->desc_digest_map, d, sd) { - tor_assert(!memcmp(sd->signed_descriptor_digest, d, DIGEST_LEN)); + tor_assert(tor_memeq(sd->signed_descriptor_digest, d, DIGEST_LEN)); } DIGESTMAP_FOREACH_END; SDMAP_FOREACH(rl->desc_by_eid_map, d, sd) { tor_assert(!tor_digest_is_zero(d)); tor_assert(sd); - tor_assert(!memcmp(sd->extra_info_digest, d, DIGEST_LEN)); + tor_assert(tor_memeq(sd->extra_info_digest, d, DIGEST_LEN)); } DIGESTMAP_FOREACH_END; EIMAP_FOREACH(rl->extra_info_map, d, ei) { signed_descriptor_t *sd; - tor_assert(!memcmp(ei->cache_info.signed_descriptor_digest, + tor_assert(tor_memeq(ei->cache_info.signed_descriptor_digest, d, DIGEST_LEN)); sd = sdmap_get(rl->desc_by_eid_map, ei->cache_info.signed_descriptor_digest); // tor_assert(sd); // XXXX see above if (sd) { - tor_assert(!memcmp(ei->cache_info.signed_descriptor_digest, + tor_assert(tor_memeq(ei->cache_info.signed_descriptor_digest, sd->extra_info_digest, DIGEST_LEN)); } } DIGESTMAP_FOREACH_END; @@ -5261,7 +5350,7 @@ static int _compare_routerinfo_by_id_digest(const void **a, const void **b) { routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b; - return memcmp(first->cache_info.identity_digest, + return fast_memcmp(first->cache_info.identity_digest, second->cache_info.identity_digest, DIGEST_LEN); } @@ -5422,7 +5511,7 @@ routerset_parse(routerset_t *target, const char *s, const char *description) void refresh_all_country_info(void) { - or_options_t *options = get_options(); + const or_options_t *options = get_options(); if (options->EntryNodes) routerset_refresh_countries(options->EntryNodes); @@ -5469,7 +5558,7 @@ routerset_needs_geoip(const routerset_t *set) } /** Return true iff there are no entries in <b>set</b>. */ -static int +int routerset_is_empty(const routerset_t *set) { return !set || smartlist_len(set->list) == 0; @@ -5488,7 +5577,8 @@ routerset_contains(const routerset_t *set, const tor_addr_t *addr, const char *nickname, const char *id_digest, country_t country) { - if (!set || !set->list) return 0; + if (!set || !set->list) + return 0; if (nickname && strmap_get_lc(set->names, nickname)) return 4; if (id_digest && digestmap_get(set->digests, id_digest)) @@ -5565,10 +5655,11 @@ routerset_contains_node(const routerset_t *set, const node_t *node) } /** Add every known node_t that is a member of <b>routerset</b> to - * <b>out</b>. If <b>running_only</b>, only add the running ones. */ + * <b>out</b>, but never add any that are part of <b>excludeset</b>. + * If <b>running_only</b>, only add the running ones. */ void routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset, - int running_only) + const routerset_t *excludeset, int running_only) { /* XXXX MOVE */ tor_assert(out); if (!routerset || !routerset->list) @@ -5576,12 +5667,13 @@ routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset, if (routerset_is_list(routerset)) { /* No routers are specified by type; all are given by name or digest. - * we can do a lookup in O(len(list)). */ + * we can do a lookup in O(len(routerset)). */ SMARTLIST_FOREACH(routerset->list, const char *, name, { const node_t *node = node_get_by_nickname(name, 1); if (node) { if (!running_only || node->is_running) - smartlist_add(out, (void*)node); + if (!routerset_contains_node(excludeset, node)) + smartlist_add(out, (void*)node); } }); } else { @@ -5591,12 +5683,14 @@ routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset, SMARTLIST_FOREACH(nodes, const node_t *, node, { if (running_only && !node->is_running) continue; - if (routerset_contains_node(routerset, node)) + if (routerset_contains_node(routerset, node) && + !routerset_contains_node(excludeset, node)) smartlist_add(out, (void*)node); }); } } +#if 0 /** Add to <b>target</b> every node_t from <b>source</b> except: * * 1) Don't add it if <b>include</b> is non-empty and the relay isn't in @@ -5627,6 +5721,7 @@ routersets_get_node_disjunction(smartlist_t *target, } }); } +#endif /** Remove every node_t from <b>lst</b> that is in <b>routerset</b>. */ void @@ -5658,10 +5753,15 @@ routerset_to_string(const routerset_t *set) int routerset_equal(const routerset_t *old, const routerset_t *new) { - if (old == NULL && new == NULL) + if (routerset_is_empty(old) && routerset_is_empty(new)) { + /* Two empty sets are equal */ return 1; - else if (old == NULL || new == NULL) + } else if (routerset_is_empty(old) || routerset_is_empty(new)) { + /* An empty set is equal to nothing else. */ return 0; + } + tor_assert(old != NULL); + tor_assert(new != NULL); if (smartlist_len(old->list) != smartlist_len(new->list)) return 0; @@ -5728,7 +5828,6 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs, { int start, found, n_added = 0, i; networkstatus_t *c = networkstatus_get_latest_consensus(); - int use_begindir = get_options()->TunnelDirConns; if (!c || !smartlist_len(c->routerstatus_list)) { log_warn(LD_REND, "We don't have a consensus, so we can't perform v2 " "rendezvous operations."); @@ -5741,14 +5840,9 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs, do { routerstatus_t *r = smartlist_get(c->routerstatus_list, i); if (r->is_hs_dir) { - if (r->dir_port || use_begindir) - smartlist_add(responsible_dirs, r); - else - log_info(LD_REND, "Not adding router '%s' to list of responsible " - "hidden service directories, because we have no way of " - "reaching it.", r->nickname); + smartlist_add(responsible_dirs, r); if (++n_added == REND_NUMBER_OF_CONSECUTIVE_REPLICAS) - break; + return 0; } if (++i == smartlist_len(c->routerstatus_list)) i = 0; @@ -5765,8 +5859,6 @@ int hid_serv_acting_as_directory(void) { const routerinfo_t *me = router_get_my_routerinfo(); - networkstatus_t *c; - const routerstatus_t *rs; if (!me) return 0; if (!get_options()->HidServDirectoryV2) { @@ -5774,22 +5866,6 @@ hid_serv_acting_as_directory(void) "because we have not been configured as such."); return 0; } - if (!(c = networkstatus_get_latest_consensus())) { - log_info(LD_REND, "There's no consensus, so I can't tell if I'm a hidden " - "service directory"); - return 0; - } - rs = networkstatus_vote_find_entry(c, me->cache_info.identity_digest); - if (!rs) { - log_info(LD_REND, "We're not listed in the consensus, so we're not " - "being a hidden service directory."); - return 0; - } - if (!rs->is_hs_dir) { - log_info(LD_REND, "We're not listed as a hidden service directory in " - "the consensus, so we won't be one."); - return 0; - } return 1; } diff --git a/src/or/routerlist.h b/src/or/routerlist.h index b69ef70f6e..11290468d8 100644 --- a/src/or/routerlist.h +++ b/src/or/routerlist.h @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -11,7 +11,7 @@ #ifndef _TOR_ROUTERLIST_H #define _TOR_ROUTERLIST_H -int get_n_authorities(authority_type_t type); +int get_n_authorities(dirinfo_type_t type); int trusted_dirs_reload_certs(void); int trusted_dirs_load_certs_from_string(const char *contents, int from_store, int flush); @@ -27,16 +27,15 @@ int router_reload_router_list(void); int authority_cert_dl_looks_uncertain(const char *id_digest); smartlist_t *router_get_trusted_dir_servers(void); -const routerstatus_t *router_pick_directory_server(authority_type_t type, +const routerstatus_t *router_pick_directory_server(dirinfo_type_t type, int flags); trusted_dir_server_t *router_get_trusteddirserver_by_digest(const char *d); trusted_dir_server_t *trusteddirserver_get_by_v3_auth_digest(const char *d); -const routerstatus_t *router_pick_trusteddirserver(authority_type_t type, +const routerstatus_t *router_pick_trusteddirserver(dirinfo_type_t type, int flags); int router_get_my_share_of_directory_requests(double *v2_share_out, double *v3_share_out); void router_reset_status_download_failures(void); -void routerlist_add_family(smartlist_t *sl, const routerinfo_t *router); int routers_have_same_or_addr(const routerinfo_t *r1, const routerinfo_t *r2); int router_nickname_is_in_list(const routerinfo_t *router, const char *list); const routerinfo_t *routerlist_find_my_routerinfo(void); @@ -56,11 +55,11 @@ const node_t *router_choose_random_node(smartlist_t *excludedsmartlist, const routerinfo_t *router_get_by_nickname(const char *nickname, int warn_if_unnamed); -int router_digest_version_as_new_as(const char *digest, const char *cutoff); +int router_is_named(const routerinfo_t *router); int router_digest_is_trusted_dir_type(const char *digest, - authority_type_t type); + dirinfo_type_t type); #define router_digest_is_trusted_dir(d) \ - router_digest_is_trusted_dir_type((d), NO_AUTHORITY) + router_digest_is_trusted_dir_type((d), NO_DIRINFO) int router_addr_is_trusted_dir(uint32_t addr); int hexdigest_to_digest(const char *hexdigest, char *digest); @@ -138,13 +137,14 @@ trusted_dir_server_t *add_trusted_dir_server(const char *nickname, const char *address, uint16_t dir_port, uint16_t or_port, const char *digest, const char *v3_auth_digest, - authority_type_t type); + dirinfo_type_t type); void authority_cert_free(authority_cert_t *cert); void clear_trusted_dir_servers(void); int any_trusted_dir_is_v1_authority(void); void update_consensus_router_descriptor_downloads(time_t now, int is_vote, networkstatus_t *consensus); void update_router_descriptor_downloads(time_t now); +void update_all_descriptor_downloads(time_t now); void update_extrainfo_downloads(time_t now); int router_have_minimum_dir_info(void); void router_dir_info_changed(void); @@ -169,6 +169,7 @@ int routerset_parse(routerset_t *target, const char *s, void routerset_union(routerset_t *target, const routerset_t *source); int routerset_is_list(const routerset_t *set); int routerset_needs_geoip(const routerset_t *set); +int routerset_is_empty(const routerset_t *set); int routerset_contains_router(const routerset_t *set, const routerinfo_t *ri, country_t country); int routerset_contains_routerstatus(const routerset_t *set, @@ -176,15 +177,20 @@ int routerset_contains_routerstatus(const routerset_t *set, country_t country); int routerset_contains_extendinfo(const routerset_t *set, const extend_info_t *ei); + int routerset_contains_node(const routerset_t *set, const node_t *node); void routerset_get_all_nodes(smartlist_t *out, const routerset_t *routerset, + const routerset_t *excludeset, int running_only); +#if 0 void routersets_get_node_disjunction(smartlist_t *target, const smartlist_t *source, const routerset_t *include, const routerset_t *exclude, int running_only); +#endif void routerset_subtract_nodes(smartlist_t *out, - const routerset_t *routerset); + const routerset_t *routerset); + char *routerset_to_string(const routerset_t *routerset); int routerset_equal(const routerset_t *old, const routerset_t *new); void routerset_free(routerset_t *routerset); diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 39f4bc03af..d1b2cd0fb7 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -1,7 +1,7 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -11,6 +11,7 @@ #include "or.h" #include "config.h" +#include "circuitbuild.h" #include "dirserv.h" #include "dirvote.h" #include "policies.h" @@ -700,11 +701,13 @@ router_append_dirobj_signature(char *buf, size_t buf_len, const char *digest, size_t digest_len, crypto_pk_env_t *private_key) { char *signature; - size_t i; + size_t i, keysize; int siglen; - signature = tor_malloc(crypto_pk_keysize(private_key)); - siglen = crypto_pk_private_sign(private_key, signature, digest, digest_len); + keysize = crypto_pk_keysize(private_key); + signature = tor_malloc(keysize); + siglen = crypto_pk_private_sign(private_key, signature, keysize, + digest, digest_len); if (siglen < 0) { log_warn(LD_BUG,"Couldn't sign digest."); goto err; @@ -1057,6 +1060,7 @@ check_signature_token(const char *digest, const char *doctype) { char *signed_digest; + size_t keysize; const int check_authority = (flags & CST_CHECK_AUTHORITY); const int check_objtype = ! (flags & CST_NO_CHECK_OBJTYPE); @@ -1078,9 +1082,10 @@ check_signature_token(const char *digest, } } - signed_digest = tor_malloc(tok->object_size); - if (crypto_pk_public_checksig(pkey, signed_digest, tok->object_body, - tok->object_size) + keysize = crypto_pk_keysize(pkey); + signed_digest = tor_malloc(keysize); + if (crypto_pk_public_checksig(pkey, signed_digest, keysize, + tok->object_body, tok->object_size) < digest_len) { log_warn(LD_DIR, "Error reading %s: invalid signature.", doctype); tor_free(signed_digest); @@ -1088,7 +1093,7 @@ check_signature_token(const char *digest, } // log_debug(LD_DIR,"Signed %s hash starts %s", doctype, // hex_str(signed_digest,4)); - if (memcmp(digest, signed_digest, digest_len)) { + if (tor_memneq(digest, signed_digest, digest_len)) { log_warn(LD_DIR, "Error reading %s: signature does not match.", doctype); tor_free(signed_digest); return -1; @@ -1203,7 +1208,8 @@ router_parse_list_from_string(const char **s, const char *eos, prepend_annotations); if (router) { log_debug(LD_DIR, "Read router '%s', purpose '%s'", - router->nickname, router_purpose_to_string(router->purpose)); + router_describe(router), + router_purpose_to_string(router->purpose)); signed_desc = &router->cache_info; elt = router; } @@ -1454,6 +1460,11 @@ router_parse_entry_from_string(const char *s, const char *end, goto err; tok = find_by_keyword(tokens, K_ONION_KEY); + if (!crypto_pk_public_exponent_ok(tok->key)) { + log_warn(LD_DIR, + "Relay's onion key had invalid exponent."); + goto err; + } router->onion_pkey = tok->key; tok->key = NULL; /* Prevent free */ @@ -1475,7 +1486,7 @@ router_parse_entry_from_string(const char *s, const char *end, escaped(tok->args[0])); goto err; } - if (memcmp(d,router->cache_info.identity_digest, DIGEST_LEN)!=0) { + if (tor_memneq(d,router->cache_info.identity_digest, DIGEST_LEN)) { log_warn(LD_DIR, "Fingerprint '%s' does not match identity digest.", tok->args[0]); goto err; @@ -1490,6 +1501,12 @@ router_parse_entry_from_string(const char *s, const char *end, router->contact_info = tor_strdup(tok->args[0]); } + if (find_opt_by_keyword(tokens, K_REJECT6) || + find_opt_by_keyword(tokens, K_ACCEPT6)) { + log_warn(LD_DIR, "Rejecting router with reject6/accept6 line: they crash " + "older Tors."); + goto err; + } exit_policy_tokens = find_all_exitpolicy(tokens); if (!smartlist_len(exit_policy_tokens)) { log_warn(LD_DIR, "No exit policy tokens in descriptor."); @@ -1517,10 +1534,10 @@ router_parse_entry_from_string(const char *s, const char *end, } } - if ((tok = find_opt_by_keyword(tokens, K_CACHES_EXTRA_INFO))) + if (find_opt_by_keyword(tokens, K_CACHES_EXTRA_INFO)) router->caches_extra_info = 1; - if ((tok = find_opt_by_keyword(tokens, K_ALLOW_SINGLE_HOP_EXITS))) + if (find_opt_by_keyword(tokens, K_ALLOW_SINGLE_HOP_EXITS)) router->allow_single_hop_exits = 1; if ((tok = find_opt_by_keyword(tokens, K_EXTRA_INFO_DIGEST))) { @@ -1533,7 +1550,7 @@ router_parse_entry_from_string(const char *s, const char *end, } } - if ((tok = find_opt_by_keyword(tokens, K_HIDDEN_SERVICE_DIR))) { + if (find_opt_by_keyword(tokens, K_HIDDEN_SERVICE_DIR)) { router->wants_to_be_hs_dir = 1; } @@ -1703,6 +1720,10 @@ extrainfo_parse_entry_from_string(const char *s, const char *end, authority_cert_t * authority_cert_parse_from_string(const char *s, const char **end_of_string) { + /** Reject any certificate at least this big; it is probably an overflow, an + * attack, a bug, or some other nonsense. */ +#define MAX_CERT_SIZE (128*1024) + authority_cert_t *cert = NULL, *old_cert; smartlist_t *tokens = NULL; char digest[DIGEST_LEN]; @@ -1730,6 +1751,12 @@ authority_cert_parse_from_string(const char *s, const char **end_of_string) ++eos; len = eos - s; + if (len > MAX_CERT_SIZE) { + log_warn(LD_DIR, "Certificate is far too big (at %lu bytes long); " + "rejecting", (unsigned long)len); + return NULL; + } + tokens = smartlist_create(); area = memarea_new(); if (tokenize_string(area,s, eos, tokens, dir_key_certificate_table, 0) < 0) { @@ -1774,7 +1801,7 @@ authority_cert_parse_from_string(const char *s, const char **end_of_string) cert->cache_info.identity_digest)) goto err; - if (memcmp(cert->cache_info.identity_digest, fp_declared, DIGEST_LEN)) { + if (tor_memneq(cert->cache_info.identity_digest, fp_declared, DIGEST_LEN)) { log_warn(LD_DIR, "Digest of certificate key didn't match declared " "fingerprint"); goto err; @@ -1785,7 +1812,7 @@ authority_cert_parse_from_string(const char *s, const char **end_of_string) struct in_addr in; char *address = NULL; tor_assert(tok->n_args); - /* XXX021 use tor_addr_port_parse() below instead. -RD */ + /* XXX023 use tor_addr_port_parse() below instead. -RD */ if (parse_addr_port(LOG_WARN, tok->args[0], &address, NULL, &cert->dir_port)<0 || tor_inet_aton(address, &in) == 0) { @@ -1822,7 +1849,7 @@ authority_cert_parse_from_string(const char *s, const char **end_of_string) * buy us much. */ if (old_cert->cache_info.signed_descriptor_len == len && old_cert->cache_info.signed_descriptor_body && - !memcmp(s, old_cert->cache_info.signed_descriptor_body, len)) { + tor_memeq(s, old_cert->cache_info.signed_descriptor_body, len)) { log_debug(LD_DIR, "We already checked the signature on this " "certificate; no need to do so again."); found = 1; @@ -2064,6 +2091,7 @@ routerstatus_parse_entry_from_string(memarea_t *area, rs->version_supports_begindir = 1; rs->version_supports_extrainfo_upload = 1; rs->version_supports_conditional_consensus = 1; + rs->version_supports_microdesc_cache = 1; } else { rs->version_supports_begindir = tor_version_as_new_as(tok->args[0], "0.2.0.1-alpha"); @@ -2073,6 +2101,14 @@ routerstatus_parse_entry_from_string(memarea_t *area, tor_version_as_new_as(tok->args[0], "0.2.0.8-alpha"); rs->version_supports_conditional_consensus = tor_version_as_new_as(tok->args[0], "0.2.1.1-alpha"); + /* XXXX023 NM microdescs: 0.2.3.1-alpha isn't widely used yet, but + * not all 0.2.3.0-alpha "versions" actually support microdesc cacheing + * right. There's a compromise here. Since this is 5 May, let's + * err on the side of having some possible caches to use. Once more + * caches are running 0.2.3.1-alpha, we can bump this version number. + */ + rs->version_supports_microdesc_cache = + tor_version_as_new_as(tok->args[0], "0.2.3.0-alpha"); } if (vote_rs) { vote_rs->version = tor_strdup(tok->args[0]); @@ -2173,7 +2209,7 @@ int compare_routerstatus_entries(const void **_a, const void **_b) { const routerstatus_t *a = *_a, *b = *_b; - return memcmp(a->identity_digest, b->identity_digest, DIGEST_LEN); + return fast_memcmp(a->identity_digest, b->identity_digest, DIGEST_LEN); } /** Helper: used in call to _smartlist_uniq to clear out duplicate entries. */ @@ -2266,7 +2302,7 @@ networkstatus_v2_parse_from_string(const char *s) log_warn(LD_DIR, "Couldn't compute signing key digest"); goto err; } - if (memcmp(tmp_digest, ns->identity_digest, DIGEST_LEN)) { + if (tor_memneq(tmp_digest, ns->identity_digest, DIGEST_LEN)) { log_warn(LD_DIR, "network-status fingerprint did not match dir-signing-key"); goto err; @@ -2369,7 +2405,7 @@ networkstatus_verify_bw_weights(networkstatus_t *ns) const char *casename = NULL; int valid = 1; - weight_scale = networkstatus_get_param(ns, "bwweightscale", BW_WEIGHT_SCALE); + weight_scale = circuit_build_times_get_bw_scale(ns); Wgg = networkstatus_get_bw_weight(ns, "Wgg", -1); Wgm = networkstatus_get_bw_weight(ns, "Wgm", -1); Wgd = networkstatus_get_bw_weight(ns, "Wgd", -1); @@ -2467,7 +2503,7 @@ networkstatus_verify_bw_weights(networkstatus_t *ns) } } else { log_warn(LD_BUG, "Missing consensus bandwidth for router %s", - rs->nickname); + routerstatus_describe(rs)); } } SMARTLIST_FOREACH_END(rs); @@ -2801,7 +2837,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, ns->flavor = flav = flavor; } if (flav != FLAV_NS && ns_type != NS_TYPE_CONSENSUS) { - log_warn(LD_DIR, "Flavor found on non-consenus networkstatus."); + log_warn(LD_DIR, "Flavor found on non-consensus networkstatus."); goto err; } @@ -2970,7 +3006,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, goto err; } if (ns->type != NS_TYPE_CONSENSUS && - memcmp(ns->cert->cache_info.identity_digest, + tor_memneq(ns->cert->cache_info.identity_digest, voter->identity_digest, DIGEST_LEN)) { log_warn(LD_DIR,"Mismatch between identities in certificate and vote"); goto err; @@ -3076,7 +3112,8 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, rs1 = smartlist_get(ns->routerstatus_list, i-1); rs2 = smartlist_get(ns->routerstatus_list, i); } - if (memcmp(rs1->identity_digest, rs2->identity_digest, DIGEST_LEN) >= 0) { + if (fast_memcmp(rs1->identity_digest, rs2->identity_digest, DIGEST_LEN) + >= 0) { log_warn(LD_DIR, "Vote networkstatus entries not sorted by identity " "digest"); goto err; @@ -3195,7 +3232,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, } if (ns->type != NS_TYPE_CONSENSUS) { - if (memcmp(declared_identity, ns->cert->cache_info.identity_digest, + if (tor_memneq(declared_identity, ns->cert->cache_info.identity_digest, DIGEST_LEN)) { log_warn(LD_DIR, "Digest mismatch between declared and actual on " "network-status vote."); @@ -3223,7 +3260,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, } sig->good_signature = 1; } else { - if (tok->object_size >= INT_MAX) { + if (tok->object_size >= INT_MAX || tok->object_size >= SIZE_T_CEILING) { tor_free(sig); goto err; } @@ -3475,10 +3512,10 @@ networkstatus_parse_detached_signatures(const char *s, const char *eos) siglist = detached_get_signatures(sigs, flavor); is_duplicate = 0; - SMARTLIST_FOREACH(siglist, document_signature_t *, s, { - if (s->alg == alg && - !memcmp(id_digest, s->identity_digest, DIGEST_LEN) && - !memcmp(sk_digest, s->signing_key_digest, DIGEST_LEN)) { + SMARTLIST_FOREACH(siglist, document_signature_t *, dsig, { + if (dsig->alg == alg && + tor_memeq(id_digest, dsig->identity_digest, DIGEST_LEN) && + tor_memeq(sk_digest, dsig->signing_key_digest, DIGEST_LEN)) { is_duplicate = 1; } }); @@ -3492,7 +3529,7 @@ networkstatus_parse_detached_signatures(const char *s, const char *eos) sig->alg = alg; memcpy(sig->identity_digest, id_digest, DIGEST_LEN); memcpy(sig->signing_key_digest, sk_digest, DIGEST_LEN); - if (tok->object_size >= INT_MAX) { + if (tok->object_size >= INT_MAX || tok->object_size >= SIZE_T_CEILING) { tor_free(sig); goto err; } @@ -3737,9 +3774,9 @@ token_check_object(memarea_t *area, const char *kwd, break; case NEED_KEY_1024: /* There must be a 1024-bit public key. */ case NEED_SKEY_1024: /* There must be a 1024-bit private key. */ - if (tok->key && crypto_pk_keysize(tok->key) != PK_BYTES) { + if (tok->key && crypto_pk_num_bits(tok->key) != PK_BYTES*8) { tor_snprintf(ebuf, sizeof(ebuf), "Wrong size on key for %s: %d bits", - kwd, (int)crypto_pk_keysize(tok->key)); + kwd, crypto_pk_num_bits(tok->key)); RET_ERR(ebuf); } /* fall through */ @@ -3810,6 +3847,13 @@ static directory_token_t * get_next_token(memarea_t *area, const char **s, const char *eos, token_rule_t *table) { + /** Reject any object at least this big; it is probably an overflow, an + * attack, a bug, or some other nonsense. */ +#define MAX_UNPARSED_OBJECT_SIZE (128*1024) + /** Reject any line at least this big; it is probably an overflow, an + * attack, a bug, or some other nonsense. */ +#define MAX_LINE_LENGTH (128*1024) + const char *next, *eol, *obstart; size_t obname_len; int i; @@ -3828,6 +3872,10 @@ get_next_token(memarea_t *area, eol = memchr(*s, '\n', eos-*s); if (!eol) eol = eos; + if (eol - *s > MAX_LINE_LENGTH) { + RET_ERR("Line far too long"); + } + next = find_whitespace_eos(*s, eol); if (!strcmp_len(*s, "opt", next-*s)) { @@ -3894,7 +3942,8 @@ get_next_token(memarea_t *area, obstart = *s; /* Set obstart to start of object spec */ if (*s+16 >= eol || memchr(*s+11,'\0',eol-*s-16) || /* no short lines, */ - strcmp_len(eol-5, "-----", 5)) { /* nuls or invalid endings */ + strcmp_len(eol-5, "-----", 5) || /* nuls or invalid endings */ + (eol-*s) > MAX_UNPARSED_OBJECT_SIZE) { /* name too long */ RET_ERR("Malformed object: bad begin line"); } tok->object_type = STRNDUP(*s+11, eol-*s-16); @@ -3919,13 +3968,16 @@ get_next_token(memarea_t *area, ebuf[sizeof(ebuf)-1] = '\0'; RET_ERR(ebuf); } + if (next - *s > MAX_UNPARSED_OBJECT_SIZE) + RET_ERR("Couldn't parse object: missing footer or object much too big."); + if (!strcmp(tok->object_type, "RSA PUBLIC KEY")) { /* If it's a public key */ tok->key = crypto_new_pk_env(); if (crypto_pk_read_public_key_from_string(tok->key, obstart, eol-obstart)) RET_ERR("Couldn't parse public key."); } else if (!strcmp(tok->object_type, "RSA PRIVATE KEY")) { /* private key */ tok->key = crypto_new_pk_env(); - if (crypto_pk_read_private_key_from_string(tok->key, obstart)) + if (crypto_pk_read_private_key_from_string(tok->key, obstart, eol-obstart)) RET_ERR("Couldn't parse private key."); } else { /* If it's something else, try to base64-decode it */ int r; @@ -4294,6 +4346,11 @@ microdescs_parse_from_string(const char *s, const char *eos, } tok = find_by_keyword(tokens, K_ONION_KEY); + if (!crypto_pk_public_exponent_ok(tok->key)) { + log_warn(LD_DIR, + "Relay's onion key had invalid exponent."); + goto next; + } md->onion_pkey = tok->key; tok->key = NULL; @@ -4321,6 +4378,7 @@ microdescs_parse_from_string(const char *s, const char *eos, md = NULL; next: microdesc_free(md); + md = NULL; memarea_clear(area); smartlist_clear(tokens); @@ -4500,7 +4558,7 @@ tor_version_compare(tor_version_t *a, tor_version_t *b) else if ((i = a->git_tag_len - b->git_tag_len)) return i; else if (a->git_tag_len) - return memcmp(a->git_tag, b->git_tag, a->git_tag_len); + return fast_memcmp(a->git_tag, b->git_tag, a->git_tag_len); else return 0; } @@ -4602,10 +4660,12 @@ rend_parse_v2_service_descriptor(rend_service_descriptor_t **parsed_out, else eos = eos + 1; /* Check length. */ - if (strlen(desc) > REND_DESC_MAX_SIZE) { - log_warn(LD_REND, "Descriptor length is %i which exceeds " - "maximum rendezvous descriptor size of %i kilobytes.", - (int)strlen(desc), REND_DESC_MAX_SIZE); + if (eos-desc > REND_DESC_MAX_SIZE) { + /* XXX023 If we are parsing this descriptor as a server, this + * should be a protocol warning. */ + log_warn(LD_REND, "Descriptor length is %d which exceeds " + "maximum rendezvous descriptor size of %d bytes.", + (int)(eos-desc), REND_DESC_MAX_SIZE); goto err; } /* Tokenize descriptor. */ @@ -4717,7 +4777,7 @@ rend_parse_v2_service_descriptor(rend_service_descriptor_t **parsed_out, crypto_pk_get_digest(result->pk, public_key_hash); rend_get_descriptor_id_bytes(test_desc_id, public_key_hash, secret_id_part); - if (memcmp(desc_id_out, test_desc_id, DIGEST_LEN)) { + if (tor_memneq(desc_id_out, test_desc_id, DIGEST_LEN)) { log_warn(LD_REND, "Parsed descriptor ID does not match " "computed descriptor ID."); goto err; @@ -4782,7 +4842,7 @@ rend_decrypt_introduction_points(char **ipos_decrypted, crypto_free_digest_env(digest); for (pos = 2; pos < 2 + client_entries_len; pos += REND_BASIC_AUTH_CLIENT_ENTRY_LEN) { - if (!memcmp(ipos_encrypted + pos, client_id, + if (tor_memeq(ipos_encrypted + pos, client_id, REND_BASIC_AUTH_CLIENT_ID_LEN)) { /* Attempt to decrypt introduction points. */ cipher = crypto_create_init_cipher(descriptor_cookie, 0); @@ -4806,7 +4866,7 @@ rend_decrypt_introduction_points(char **ipos_decrypted, tor_free(dec); return -1; } - if (memcmpstart(dec, declen, "introduction-point ")) { + if (fast_memcmpstart(dec, declen, "introduction-point ")) { log_warn(LD_REND, "Decrypted introduction points don't " "look like we could parse them."); tor_free(dec); @@ -4875,7 +4935,7 @@ rend_parse_introduction_points(rend_service_descriptor_t *parsed, parsed->intro_nodes = smartlist_create(); area = memarea_new(); - while (!memcmpstart(current_ipo, end_of_intro_points-current_ipo, + while (!fast_memcmpstart(current_ipo, end_of_intro_points-current_ipo, "introduction-point ")) { /* Determine end of string. */ const char *eos = tor_memstr(current_ipo, end_of_intro_points-current_ipo, @@ -4942,10 +5002,22 @@ rend_parse_introduction_points(rend_service_descriptor_t *parsed, } /* Parse onion key. */ tok = find_by_keyword(tokens, R_IPO_ONION_KEY); + if (!crypto_pk_public_exponent_ok(tok->key)) { + log_warn(LD_REND, + "Introduction point's onion key had invalid exponent."); + rend_intro_point_free(intro); + goto err; + } info->onion_key = tok->key; tok->key = NULL; /* Prevent free */ /* Parse service key. */ tok = find_by_keyword(tokens, R_IPO_SERVICE_KEY); + if (!crypto_pk_public_exponent_ok(tok->key)) { + log_warn(LD_REND, + "Introduction point key had invalid exponent."); + rend_intro_point_free(intro); + goto err; + } intro->intro_key = tok->key; tok->key = NULL; /* Prevent free */ /* Add extend info to list of introduction points. */ diff --git a/src/or/routerparse.h b/src/or/routerparse.h index f41743bcfb..8b8cde25f6 100644 --- a/src/or/routerparse.h +++ b/src/or/routerparse.h @@ -1,11 +1,11 @@ /* Copyright (c) 2001 Matej Pfajfar. * Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** - * \file routerpase.h + * \file routerparse.h * \brief Header file for routerparse.c. **/ @@ -82,7 +82,5 @@ int rend_parse_introduction_points(rend_service_descriptor_t *parsed, size_t intro_points_encoded_size); int rend_parse_client_keys(strmap_t *parsed_clients, const char *str); -void tor_gettimeofday_cache_clear(void); - #endif diff --git a/src/or/status.c b/src/or/status.c new file mode 100644 index 0000000000..acb8ba4144 --- /dev/null +++ b/src/or/status.c @@ -0,0 +1,115 @@ +/* Copyright (c) 2010-2011, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file status.c + * \brief Keep status information and log the heartbeat messages. + **/ + +#include "or.h" +#include "config.h" +#include "status.h" +#include "nodelist.h" +#include "router.h" +#include "circuitlist.h" +#include "main.h" + +/** Return the total number of circuits. */ +static int +count_circuits(void) +{ + circuit_t *circ; + int nr=0; + + for (circ = _circuit_get_global_list(); circ; circ = circ->next) + nr++; + + return nr; +} + +/** Take seconds <b>secs</b> and return a newly allocated human-readable + * uptime string */ +static char * +secs_to_uptime(long secs) +{ + long int days = secs / 86400; + int hours = (int)((secs - (days * 86400)) / 3600); + int minutes = (int)((secs - (days * 86400) - (hours * 3600)) / 60); + char *uptime_string = NULL; + + switch (days) { + case 0: + tor_asprintf(&uptime_string, "%d:%02d hours", hours, minutes); + break; + case 1: + tor_asprintf(&uptime_string, "%ld day %d:%02d hours", + days, hours, minutes); + break; + default: + tor_asprintf(&uptime_string, "%ld days %d:%02d hours", + days, hours, minutes); + break; + } + + return uptime_string; +} + +/** Take <b>bytes</b> and returns a newly allocated human-readable usage + * string. */ +static char * +bytes_to_usage(uint64_t bytes) +{ + char *bw_string = NULL; + + if (bytes < (1<<20)) { /* Less than a megabyte. */ + tor_asprintf(&bw_string, U64_FORMAT" kB", U64_PRINTF_ARG(bytes>>10)); + } else if (bytes < (1<<30)) { /* Megabytes. Let's add some precision. */ + double bw = U64_TO_DBL(bytes); + tor_asprintf(&bw_string, "%.2f MB", bw/(1<<20)); + } else { /* Gigabytes. */ + double bw = U64_TO_DBL(bytes); + tor_asprintf(&bw_string, "%.2f GB", bw/(1<<30)); + } + + return bw_string; +} + +/** Log a "heartbeat" message describing Tor's status and history so that the + * user can know that there is indeed a running Tor. Return 0 on success and + * -1 on failure. */ +int +log_heartbeat(time_t now) +{ + char *bw_sent = NULL; + char *bw_rcvd = NULL; + char *uptime = NULL; + const routerinfo_t *me; + + const or_options_t *options = get_options(); + (void)now; + + if (public_server_mode(options)) { + /* Let's check if we are in the current cached consensus. */ + if (!(me = router_get_my_routerinfo())) + return -1; /* Something stinks, we won't even attempt this. */ + else + if (!node_get_by_id(me->cache_info.identity_digest)) + log_fn(LOG_NOTICE, LD_HEARTBEAT, "Heartbeat: It seems like we are not " + "in the cached consensus."); + } + + uptime = secs_to_uptime(get_uptime()); + bw_rcvd = bytes_to_usage(get_bytes_read()); + bw_sent = bytes_to_usage(get_bytes_written()); + + log_fn(LOG_NOTICE, LD_HEARTBEAT, "Heartbeat: Tor's uptime is %s, with %d " + "circuits open. I've pushed %s and received %s.", + uptime, count_circuits(),bw_sent,bw_rcvd); + + tor_free(uptime); + tor_free(bw_sent); + tor_free(bw_rcvd); + + return 0; +} + diff --git a/src/or/status.h b/src/or/status.h new file mode 100644 index 0000000000..ac726a1d2d --- /dev/null +++ b/src/or/status.h @@ -0,0 +1,10 @@ +/* Copyright (c) 2010, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#ifndef _TOR_STATUS_H +#define _TOR_STATUS_H + +int log_heartbeat(time_t now); + +#endif + diff --git a/src/or/tor_main.c b/src/or/tor_main.c index 117369c565..1ce14ab768 100644 --- a/src/or/tor_main.c +++ b/src/or/tor_main.c @@ -1,6 +1,6 @@ /* Copyright 2001-2004 Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** String describing which Tor subversion repository version the source was diff --git a/src/test/Makefile.am b/src/test/Makefile.am index 174c1af6ef..852715079d 100644 --- a/src/test/Makefile.am +++ b/src/test/Makefile.am @@ -8,7 +8,7 @@ AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \ -I"$(top_srcdir)/src/or" # -L flags need to go in LDFLAGS. -l flags need to go in LDADD. -# This seems to matter nowhere but on windows, but I assure you that it +# This seems to matter nowhere but on Windows, but I assure you that it # matters a lot there, and is quite hard to debug if you forget to do it. test_SOURCES = \ @@ -22,18 +22,12 @@ test_SOURCES = \ test_util.c \ tinytest.c -if USE_BUFFEREVENTS -levent_openssl_lib = -levent_openssl -else -levent_openssl_lib = -endif - test_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \ @TOR_LDFLAGS_libevent@ test_LDADD = ../or/libtor.a ../common/libor.a ../common/libor-crypto.a \ ../common/libor-event.a \ @TOR_ZLIB_LIBS@ -lm @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \ - @TOR_LIB_WS32@ @TOR_LIB_GDI@ $(levent_openssl_lib) + @TOR_LIB_WS32@ @TOR_LIB_GDI@ noinst_HEADERS = \ tinytest.h \ diff --git a/src/test/test.c b/src/test/test.c index 01fb30cd0c..74ada0ea81 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /* Ordinarily defined in tor_main.c; this bit is just here to provide one @@ -84,10 +84,16 @@ setup_directory(void) if (is_setup) return; #ifdef MS_WINDOWS - // XXXX - tor_snprintf(temp_dir, sizeof(temp_dir), - "c:\\windows\\temp\\tor_test_%d", (int)getpid()); - r = mkdir(temp_dir); + { + char buf[MAX_PATH]; + const char *tmp = buf; + /* If this fails, we're probably screwed anyway */ + if (!GetTempPath(sizeof(buf),buf)) + tmp = "c:\\windows\\temp"; + tor_snprintf(temp_dir, sizeof(temp_dir), + "%s\\tor_test_%d", tmp, (int)getpid()); + r = mkdir(temp_dir); + } #else tor_snprintf(temp_dir, sizeof(temp_dir), "/tmp/tor_test_%d", (int) getpid()); r = mkdir(temp_dir, 0700); @@ -1434,8 +1440,8 @@ test_geoip(void) test_streq("??", NAMEFOR(2000)); #undef NAMEFOR - get_options()->BridgeRelay = 1; - get_options()->BridgeRecordUsageByCountry = 1; + get_options_mutable()->BridgeRelay = 1; + get_options_mutable()->BridgeRecordUsageByCountry = 1; /* Put 9 observations in AB... */ for (i=32; i < 40; ++i) geoip_note_client_seen(GEOIP_CLIENT_CONNECT, i, now-7200); @@ -1696,7 +1702,10 @@ main(int c, const char **v) } options->command = CMD_RUN_UNITTESTS; - crypto_global_init(0, NULL, NULL); + if (crypto_global_init(0, NULL, NULL)) { + printf("Can't initialize crypto subsystem; exiting.\n"); + return 1; + } rep_hist_init(); network_init(); setup_directory(); diff --git a/src/test/test.h b/src/test/test.h index 550c57a812..a053a7ac43 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2003, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #ifndef _TOR_TEST_H @@ -45,7 +45,8 @@ _print = tor_malloc(printlen); \ base16_encode(_print, printlen, _value, \ (len)); }, \ - { tor_free(_print); } \ + { tor_free(_print); }, \ + TT_EXIT_TEST_FUNCTION \ ); #define test_memeq(expr1, expr2, len) test_mem_op((expr1), ==, (expr2), len) diff --git a/src/test/test_addr.c b/src/test/test_addr.c index bafc0a968e..ec0c508978 100644 --- a/src/test/test_addr.c +++ b/src/test/test_addr.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "orconfig.h" @@ -74,7 +74,9 @@ test_addr_basic(void) cp += 2; \ if (i != 15) *cp++ = ':'; \ } \ - }, { tor_free(_print); } \ + }, \ + { tor_free(_print); }, \ + TT_EXIT_TEST_FUNCTION \ ); \ STMT_END @@ -436,13 +438,16 @@ test_addr_ip6_helpers(void) /* test tor_addr_parse_mask_ports */ test_addr_mask_ports_parse("[::f]/17:47-95", AF_INET6, 0, 0, 0, 0x0000000f, 17, 47, 95); + test_streq(p1, "::f"); //test_addr_parse("[::fefe:4.1.1.7/120]:999-1000"); //test_addr_parse_check("::fefe:401:107", 120, 999, 1000); test_addr_mask_ports_parse("[::ffff:4.1.1.7]/120:443", AF_INET6, 0, 0, 0x0000ffff, 0x04010107, 120, 443, 443); + test_streq(p1, "::ffff:4.1.1.7"); test_addr_mask_ports_parse("[abcd:2::44a:0]:2-65000", AF_INET6, 0xabcd0002, 0, 0, 0x044a0000, 128, 2, 65000); + test_streq(p1, "abcd:2::44a:0"); r=tor_addr_parse_mask_ports("[fefef::]/112", &t1, NULL, NULL, NULL); test_assert(r == -1); r=tor_addr_parse_mask_ports("efef::/112", &t1, NULL, NULL, NULL); @@ -477,9 +482,9 @@ test_addr_ip6_helpers(void) i = get_interface_address6(LOG_DEBUG, AF_INET6, &t2); #if 0 tor_inet_ntop(AF_INET, &t1.sa.sin_addr, buf, sizeof(buf)); - printf("\nv4 address: %s (family=%i)", buf, IN_FAMILY(&t1)); + printf("\nv4 address: %s (family=%d)", buf, IN_FAMILY(&t1)); tor_inet_ntop(AF_INET6, &t2.sa6.sin6_addr, buf, sizeof(buf)); - printf("\nv6 address: %s (family=%i)", buf, IN_FAMILY(&t2)); + printf("\nv6 address: %s (family=%d)", buf, IN_FAMILY(&t2)); #endif done: diff --git a/src/test/test_containers.c b/src/test/test_containers.c index 1fc248cb46..af9fb1c5c9 100644 --- a/src/test/test_containers.c +++ b/src/test/test_containers.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "orconfig.h" diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c index b475914b1b..dca0d3a28f 100644 --- a/src/test/test_crypto.c +++ b/src/test/test_crypto.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "orconfig.h" @@ -12,8 +12,8 @@ static void test_crypto_dh(void) { - crypto_dh_env_t *dh1 = crypto_dh_new(); - crypto_dh_env_t *dh2 = crypto_dh_new(); + crypto_dh_env_t *dh1 = crypto_dh_new(DH_TYPE_CIRCUIT); + crypto_dh_env_t *dh2 = crypto_dh_new(DH_TYPE_CIRCUIT); char p1[DH_BYTES]; char p2[DH_BYTES]; char s1[DH_BYTES]; @@ -69,7 +69,7 @@ test_crypto_rng(void) uint64_t big; char *host; j = crypto_rand_int(100); - if (i < 0 || i >= 100) + if (j < 0 || j >= 100) allok = 0; big = crypto_rand_uint64(U64_LITERAL(1)<<40); if (big >= (U64_LITERAL(1)<<40)) @@ -240,11 +240,13 @@ test_crypto_sha(void) /* Test SHA-1 with a test vector from the specification. */ i = crypto_digest(data, "abc", 3); test_memeq_hex(data, "A9993E364706816ABA3E25717850C26C9CD0D89D"); + tt_int_op(i, ==, 0); /* Test SHA-256 with a test vector from the specification. */ i = crypto_digest256(data, "abc", 3, DIGEST_SHA256); test_memeq_hex(data, "BA7816BF8F01CFEA414140DE5DAE2223B00361A3" "96177A9CB410FF61F20015AD"); + tt_int_op(i, ==, 0); /* Test HMAC-SHA-1 with test cases from RFC2202. */ @@ -341,27 +343,31 @@ test_crypto_pk(void) test_eq(0, crypto_pk_cmp_keys(pk1, pk2)); test_eq(128, crypto_pk_keysize(pk1)); + test_eq(1024, crypto_pk_num_bits(pk1)); test_eq(128, crypto_pk_keysize(pk2)); + test_eq(1024, crypto_pk_num_bits(pk2)); - test_eq(128, crypto_pk_public_encrypt(pk2, data1, "Hello whirled.", 15, + test_eq(128, crypto_pk_public_encrypt(pk2, data1, sizeof(data1), + "Hello whirled.", 15, PK_PKCS1_OAEP_PADDING)); - test_eq(128, crypto_pk_public_encrypt(pk1, data2, "Hello whirled.", 15, + test_eq(128, crypto_pk_public_encrypt(pk1, data2, sizeof(data1), + "Hello whirled.", 15, PK_PKCS1_OAEP_PADDING)); /* oaep padding should make encryption not match */ test_memneq(data1, data2, 128); - test_eq(15, crypto_pk_private_decrypt(pk1, data3, data1, 128, + test_eq(15, crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data1, 128, PK_PKCS1_OAEP_PADDING,1)); test_streq(data3, "Hello whirled."); memset(data3, 0, 1024); - test_eq(15, crypto_pk_private_decrypt(pk1, data3, data2, 128, + test_eq(15, crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data2, 128, PK_PKCS1_OAEP_PADDING,1)); test_streq(data3, "Hello whirled."); /* Can't decrypt with public key. */ - test_eq(-1, crypto_pk_private_decrypt(pk2, data3, data2, 128, + test_eq(-1, crypto_pk_private_decrypt(pk2, data3, sizeof(data3), data2, 128, PK_PKCS1_OAEP_PADDING,1)); /* Try again with bad padding */ memcpy(data2+1, "XYZZY", 5); /* This has fails ~ once-in-2^40 */ - test_eq(-1, crypto_pk_private_decrypt(pk1, data3, data2, 128, + test_eq(-1, crypto_pk_private_decrypt(pk1, data3, sizeof(data3), data2, 128, PK_PKCS1_OAEP_PADDING,1)); /* File operations: save and load private key */ @@ -376,19 +382,23 @@ test_crypto_pk(void) get_fname("xyzzy")) < 0); test_assert(! crypto_pk_read_private_key_from_filename(pk2, get_fname("pkey1"))); - test_eq(15, crypto_pk_private_decrypt(pk2, data3, data1, 128, + test_eq(15, crypto_pk_private_decrypt(pk2, data3, sizeof(data3), data1, 128, PK_PKCS1_OAEP_PADDING,1)); /* Now try signing. */ strlcpy(data1, "Ossifrage", 1024); - test_eq(128, crypto_pk_private_sign(pk1, data2, data1, 10)); - test_eq(10, crypto_pk_public_checksig(pk1, data3, data2, 128)); + test_eq(128, crypto_pk_private_sign(pk1, data2, sizeof(data2), data1, 10)); + test_eq(10, + crypto_pk_public_checksig(pk1, data3, sizeof(data3), data2, 128)); test_streq(data3, "Ossifrage"); /* Try signing digests. */ - test_eq(128, crypto_pk_private_sign_digest(pk1, data2, data1, 10)); - test_eq(20, crypto_pk_public_checksig(pk1, data3, data2, 128)); + test_eq(128, crypto_pk_private_sign_digest(pk1, data2, sizeof(data2), + data1, 10)); + test_eq(20, + crypto_pk_public_checksig(pk1, data3, sizeof(data3), data2, 128)); test_eq(0, crypto_pk_public_checksig_digest(pk1, data1, 10, data2, 128)); test_eq(-1, crypto_pk_public_checksig_digest(pk1, data1, 11, data2, 128)); + /*XXXX test failed signing*/ /* Try encoding */ @@ -409,9 +419,11 @@ test_crypto_pk(void) continue; p = (i==0)?PK_NO_PADDING: (i==1)?PK_PKCS1_PADDING:PK_PKCS1_OAEP_PADDING; - len = crypto_pk_public_hybrid_encrypt(pk1,data2,data1,j,p,0); + len = crypto_pk_public_hybrid_encrypt(pk1,data2,sizeof(data2), + data1,j,p,0); test_assert(len>=0); - len = crypto_pk_private_hybrid_decrypt(pk1,data3,data2,len,p,1); + len = crypto_pk_private_hybrid_decrypt(pk1,data3,sizeof(data3), + data2,len,p,1); test_eq(len,j); test_memeq(data1,data3,j); } @@ -618,7 +630,7 @@ test_crypto_aes_iv(void) crypto_free_cipher_env(cipher); cipher = NULL; test_eq(encrypted_size, 16 + 4095); - tor_assert(encrypted_size > 0); /* This is obviously true, since 4111 is + tt_assert(encrypted_size > 0); /* This is obviously true, since 4111 is * greater than 0, but its truth is not * obvious to all analysis tools. */ cipher = crypto_create_init_cipher(key1, 0); @@ -627,7 +639,7 @@ test_crypto_aes_iv(void) crypto_free_cipher_env(cipher); cipher = NULL; test_eq(decrypted_size, 4095); - tor_assert(decrypted_size > 0); + tt_assert(decrypted_size > 0); test_memeq(plain, decrypted1, 4095); /* Encrypt a second time (with a new random initialization vector). */ cipher = crypto_create_init_cipher(key1, 1); @@ -636,14 +648,14 @@ test_crypto_aes_iv(void) crypto_free_cipher_env(cipher); cipher = NULL; test_eq(encrypted_size, 16 + 4095); - tor_assert(encrypted_size > 0); + tt_assert(encrypted_size > 0); cipher = crypto_create_init_cipher(key1, 0); decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted2, 4095, encrypted2, encrypted_size); crypto_free_cipher_env(cipher); cipher = NULL; test_eq(decrypted_size, 4095); - tor_assert(decrypted_size > 0); + tt_assert(decrypted_size > 0); test_memeq(plain, decrypted2, 4095); test_memneq(encrypted1, encrypted2, encrypted_size); /* Decrypt with the wrong key. */ @@ -668,14 +680,14 @@ test_crypto_aes_iv(void) crypto_free_cipher_env(cipher); cipher = NULL; test_eq(encrypted_size, 16 + 1); - tor_assert(encrypted_size > 0); + tt_assert(encrypted_size > 0); cipher = crypto_create_init_cipher(key1, 0); decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted1, 1, encrypted1, encrypted_size); crypto_free_cipher_env(cipher); cipher = NULL; test_eq(decrypted_size, 1); - tor_assert(decrypted_size > 0); + tt_assert(decrypted_size > 0); test_memeq(plain_1, decrypted1, 1); /* Special length case: 15. */ cipher = crypto_create_init_cipher(key1, 1); @@ -684,14 +696,14 @@ test_crypto_aes_iv(void) crypto_free_cipher_env(cipher); cipher = NULL; test_eq(encrypted_size, 16 + 15); - tor_assert(encrypted_size > 0); + tt_assert(encrypted_size > 0); cipher = crypto_create_init_cipher(key1, 0); decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted1, 15, encrypted1, encrypted_size); crypto_free_cipher_env(cipher); cipher = NULL; test_eq(decrypted_size, 15); - tor_assert(decrypted_size > 0); + tt_assert(decrypted_size > 0); test_memeq(plain_15, decrypted1, 15); /* Special length case: 16. */ cipher = crypto_create_init_cipher(key1, 1); @@ -700,14 +712,14 @@ test_crypto_aes_iv(void) crypto_free_cipher_env(cipher); cipher = NULL; test_eq(encrypted_size, 16 + 16); - tor_assert(encrypted_size > 0); + tt_assert(encrypted_size > 0); cipher = crypto_create_init_cipher(key1, 0); decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted1, 16, encrypted1, encrypted_size); crypto_free_cipher_env(cipher); cipher = NULL; test_eq(decrypted_size, 16); - tor_assert(decrypted_size > 0); + tt_assert(decrypted_size > 0); test_memeq(plain_16, decrypted1, 16); /* Special length case: 17. */ cipher = crypto_create_init_cipher(key1, 1); @@ -716,12 +728,12 @@ test_crypto_aes_iv(void) crypto_free_cipher_env(cipher); cipher = NULL; test_eq(encrypted_size, 16 + 17); - tor_assert(encrypted_size > 0); + tt_assert(encrypted_size > 0); cipher = crypto_create_init_cipher(key1, 0); decrypted_size = crypto_cipher_decrypt_with_iv(cipher, decrypted1, 17, encrypted1, encrypted_size); test_eq(decrypted_size, 17); - tor_assert(decrypted_size > 0); + tt_assert(decrypted_size > 0); test_memeq(plain_17, decrypted1, 17); done: diff --git a/src/test/test_data.c b/src/test/test_data.c index f926ee17dd..fc85857615 100644 --- a/src/test/test_data.c +++ b/src/test/test_data.c @@ -1,6 +1,6 @@ /* Copyright 2001-2004 Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** First of 3 example authority certificates for unit testing. */ diff --git a/src/test/test_dir.c b/src/test/test_dir.c index ce13f34ce4..04ca29a9fb 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "orconfig.h" @@ -298,7 +298,7 @@ test_dir_versions(void) #define tt_versionstatus_op(vs1, op, vs2) \ tt_assert_test_type(vs1,vs2,#vs1" "#op" "#vs2,version_status_t, \ - (_val1 op _val2),"%d") + (_val1 op _val2),"%d",TT_EXIT_TEST_FUNCTION) #define test_v_i_o(val, ver, lst) \ tt_versionstatus_op(val, ==, tor_version_is_obsolete(ver, lst)) @@ -609,8 +609,11 @@ test_dir_param_voting(void) "abcd=20 c=60 cw=500 x-yz=-9 zzzzz=101", NULL, 0, 0); smartlist_split_string(vote4.net_params, "ab=900 abcd=200 c=1 cw=51 x-yz=100", NULL, 0, 0); - test_eq(100, networkstatus_get_param(&vote4, "x-yz", 50)); - test_eq(222, networkstatus_get_param(&vote4, "foobar", 222)); + test_eq(100, networkstatus_get_param(&vote4, "x-yz", 50, 0, 300)); + test_eq(222, networkstatus_get_param(&vote4, "foobar", 222, 0, 300)); + test_eq(80, networkstatus_get_param(&vote4, "ab", 12, 0, 80)); + test_eq(-8, networkstatus_get_param(&vote4, "ab", -12, -100, -8)); + test_eq(0, networkstatus_get_param(&vote4, "foobar", 0, -100, 8)); smartlist_add(votes, &vote1); smartlist_add(votes, &vote2); @@ -745,11 +748,11 @@ test_dir_v3_networkstatus(void) sign_skey_leg1 = pk_generate(4); test_assert(!crypto_pk_read_private_key_from_string(sign_skey_1, - AUTHORITY_SIGNKEY_1)); + AUTHORITY_SIGNKEY_1, -1)); test_assert(!crypto_pk_read_private_key_from_string(sign_skey_2, - AUTHORITY_SIGNKEY_2)); + AUTHORITY_SIGNKEY_2, -1)); test_assert(!crypto_pk_read_private_key_from_string(sign_skey_3, - AUTHORITY_SIGNKEY_3)); + AUTHORITY_SIGNKEY_3, -1)); test_assert(!crypto_pk_cmp_keys(sign_skey_1, cert1->signing_key)); test_assert(!crypto_pk_cmp_keys(sign_skey_2, cert2->signing_key)); @@ -1166,10 +1169,10 @@ test_dir_v3_networkstatus(void) /* Extract a detached signature from con3. */ detached_text1 = get_detached_sigs(con3, con_md3); - tor_assert(detached_text1); + tt_assert(detached_text1); /* Try to parse it. */ dsig1 = networkstatus_parse_detached_signatures(detached_text1, NULL); - tor_assert(dsig1); + tt_assert(dsig1); /* Are parsed values as expected? */ test_eq(dsig1->valid_after, con3->valid_after); diff --git a/src/test/test_microdesc.c b/src/test/test_microdesc.c index 57e894e2e9..b807265c84 100644 --- a/src/test/test_microdesc.c +++ b/src/test/test_microdesc.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2010, The Tor Project, Inc. */ +/* Copyright (c) 2010-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "orconfig.h" @@ -56,7 +56,7 @@ test_md_cache(void *data) char *fn = NULL, *s = NULL; (void)data; - options = get_options(); + options = get_options_mutable(); tt_assert(options); time1 = time(NULL); @@ -160,7 +160,7 @@ test_md_cache(void *data) tt_str_op(smartlist_get(md3->family, 0), ==, "nodeX"); /* Now rebuild the cache! */ - tt_int_op(microdesc_cache_rebuild(mc), ==, 0); + tt_int_op(microdesc_cache_rebuild(mc, 1), ==, 0); tt_int_op(md1->saved_location, ==, SAVED_IN_CACHE); tt_int_op(md2->saved_location, ==, SAVED_IN_CACHE); @@ -208,7 +208,7 @@ test_md_cache(void *data) md3 = NULL; /* it's history now! */ /* rebuild again, make sure it stays gone. */ - microdesc_cache_rebuild(mc); + microdesc_cache_rebuild(mc, 1); tt_ptr_op(md1, ==, microdesc_cache_lookup_by_digest256(mc, d1)); tt_ptr_op(md2, ==, microdesc_cache_lookup_by_digest256(mc, d2)); tt_ptr_op(NULL, ==, microdesc_cache_lookup_by_digest256(mc, d3)); diff --git a/src/test/test_util.c b/src/test/test_util.c index c4428f5ea9..c4769e6407 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -1,6 +1,6 @@ /* Copyright (c) 2001-2004, Roger Dingledine. * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. - * Copyright (c) 2007-2010, The Tor Project, Inc. */ + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "orconfig.h" @@ -376,7 +376,7 @@ test_util_strmisc(void) /* Test memmem and memstr */ { const char *haystack = "abcde"; - tor_assert(!tor_memmem(haystack, 5, "ef", 2)); + tt_assert(!tor_memmem(haystack, 5, "ef", 2)); test_eq_ptr(tor_memmem(haystack, 5, "cd", 2), haystack + 2); test_eq_ptr(tor_memmem(haystack, 5, "cde", 3), haystack + 2); haystack = "ababcad"; @@ -640,26 +640,26 @@ test_util_gzip(void) tor_strdup("String with low redundancy that won't be compressed much."); test_assert(!tor_gzip_compress(&buf2, &len1, buf1, strlen(buf1)+1, ZLIB_METHOD)); - tor_assert(len1>16); + tt_assert(len1>16); /* when we allow an incomplete string, we should succeed.*/ - tor_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1-16, + tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf2, len1-16, ZLIB_METHOD, 0, LOG_INFO)); buf3[len2]='\0'; - tor_assert(len2 > 5); - tor_assert(!strcmpstart(buf1, buf3)); + tt_assert(len2 > 5); + tt_assert(!strcmpstart(buf1, buf3)); /* when we demand a complete string, this must fail. */ tor_free(buf3); - tor_assert(tor_gzip_uncompress(&buf3, &len2, buf2, len1-16, + tt_assert(tor_gzip_uncompress(&buf3, &len2, buf2, len1-16, ZLIB_METHOD, 1, LOG_INFO)); - tor_assert(!buf3); + tt_assert(!buf3); /* Now, try streaming compression. */ tor_free(buf1); tor_free(buf2); tor_free(buf3); state = tor_zlib_new(1, ZLIB_METHOD); - tor_assert(state); + tt_assert(state); cp1 = buf1 = tor_malloc(1024); len1 = 1024; ccp2 = "ABCDEFGHIJABCDEFGHIJ"; @@ -676,7 +676,7 @@ test_util_gzip(void) test_eq(len2, 0); test_assert(cp1 > cp2); /* Make sure we really added something. */ - tor_assert(!tor_gzip_uncompress(&buf3, &len2, buf1, 1024-len1, + tt_assert(!tor_gzip_uncompress(&buf3, &len2, buf1, 1024-len1, ZLIB_METHOD, 1, LOG_WARN)); test_streq(buf3, "ABCDEFGHIJABCDEFGHIJ"); /*Make sure it compressed right.*/ @@ -1208,11 +1208,41 @@ test_util_listdir(void *ptr) } } +static void +test_util_parent_dir(void *ptr) +{ + char *cp; + (void)ptr; + +#define T(input,expect_ok,output) \ + do { \ + int ok; \ + cp = tor_strdup(input); \ + ok = get_parent_directory(cp); \ + tt_int_op(ok, ==, expect_ok); \ + if (ok==0) \ + tt_str_op(cp, ==, output); \ + tor_free(cp); \ + } while (0); + + T("/home/wombat/knish", 0, "/home/wombat"); + T("/home/wombat/knish/", 0, "/home/wombat"); + T("./home/wombat/knish/", 0, "./home/wombat"); + T("./wombat", 0, "."); + T("", -1, ""); + T("/", -1, ""); + T("////", -1, ""); + + done: + tor_free(cp); +} + #ifdef MS_WINDOWS static void test_util_load_win_lib(void *ptr) { HANDLE h = load_windows_system_library("advapi32.dll"); + (void) ptr; tt_assert(h); done: @@ -1366,7 +1396,8 @@ run_util_spawn_background(const char *argv[], const char *expected_out, pid = retval; /* Check stdout */ - pos = read(stdout_pipe, stdout_buf, sizeof(stdout_buf) - 1); + pos = read_all(stdout_pipe, stdout_buf, sizeof(stdout_buf) - 1, 0); + tt_assert(pos >= 0); stdout_buf[pos] = '\0'; tt_int_op(pos, ==, strlen(expected_out)); tt_str_op(stdout_buf, ==, expected_out); @@ -1380,7 +1411,8 @@ run_util_spawn_background(const char *argv[], const char *expected_out, tt_assert(!WIFSTOPPED(stat_loc)); /* Check stderr */ - pos = read(stderr_pipe, stderr_buf, sizeof(stderr_buf) - 1); + pos = read_all(stderr_pipe, stderr_buf, sizeof(stderr_buf) - 1, 0); + tt_assert(pos >= 0); stderr_buf[pos] = '\0'; tt_int_op(pos, ==, strlen(expected_err)); tt_str_op(stderr_buf, ==, expected_err); @@ -1417,6 +1449,59 @@ test_util_spawn_background_fail(void *ptr) } #endif +static void +test_util_di_ops(void) +{ +#define LT -1 +#define GT 1 +#define EQ 0 + const struct { + const char *a; int want_sign; const char *b; + } examples[] = { + { "Foo", EQ, "Foo" }, + { "foo", GT, "bar", }, + { "foobar", EQ ,"foobar" }, + { "foobar", LT, "foobaw" }, + { "foobar", GT, "f00bar" }, + { "foobar", GT, "boobar" }, + { "", EQ, "" }, + { NULL, 0, NULL }, + }; + + int i; + + for (i = 0; examples[i].a; ++i) { + size_t len = strlen(examples[i].a); + int eq1, eq2, neq1, neq2, cmp1, cmp2; + test_eq(len, strlen(examples[i].b)); + /* We do all of the operations, with operands in both orders. */ + eq1 = tor_memeq(examples[i].a, examples[i].b, len); + eq2 = tor_memeq(examples[i].b, examples[i].a, len); + neq1 = tor_memneq(examples[i].a, examples[i].b, len); + neq2 = tor_memneq(examples[i].b, examples[i].a, len); + cmp1 = tor_memcmp(examples[i].a, examples[i].b, len); + cmp2 = tor_memcmp(examples[i].b, examples[i].a, len); + + /* Check for correctness of cmp1 */ + if (cmp1 < 0 && examples[i].want_sign != LT) + test_fail(); + else if (cmp1 > 0 && examples[i].want_sign != GT) + test_fail(); + else if (cmp1 == 0 && examples[i].want_sign != EQ) + test_fail(); + + /* Check for consistency of everything else with cmp1 */ + test_eq(eq1, eq2); + test_eq(neq1, neq2); + test_eq(cmp1, -cmp2); + test_eq(eq1, cmp1 == 0); + test_eq(neq1, !eq1); + } + + done: + ; +} + #define UTIL_LEGACY(name) \ { #name, legacy_test_helper, 0, &legacy_setup, test_util_ ## name } @@ -1437,9 +1522,11 @@ struct testcase_t util_tests[] = { UTIL_LEGACY(threads), UTIL_LEGACY(sscanf), UTIL_LEGACY(strtok), + UTIL_LEGACY(di_ops), UTIL_TEST(find_str_at_start_of_line, 0), UTIL_TEST(asprintf, 0), UTIL_TEST(listdir, 0), + UTIL_TEST(parent_dir, 0), #ifdef MS_WINDOWS UTIL_TEST(load_win_lib, 0), #endif diff --git a/src/test/tinytest.c b/src/test/tinytest.c index 11ffc2fe56..8caa4f5453 100644 --- a/src/test/tinytest.c +++ b/src/test/tinytest.c @@ -28,7 +28,11 @@ #include <string.h> #include <assert.h> -#ifdef WIN32 +#ifdef TINYTEST_LOCAL +#include "tinytest_local.h" +#endif + +#ifdef _WIN32 #include <windows.h> #else #include <sys/types.h> @@ -40,9 +44,6 @@ #define __attribute__(x) #endif -#ifdef TINYTEST_LOCAL -#include "tinytest_local.h" -#endif #include "tinytest.h" #include "tinytest_macros.h" @@ -64,7 +65,7 @@ const char *cur_test_prefix = NULL; /**< prefix of the current test group */ /** Name of the current test, if we haven't logged is yet. Used for --quiet */ const char *cur_test_name = NULL; -#ifdef WIN32 +#ifdef _WIN32 /** Pointer to argv[0] for win32. */ static const char *commandname = NULL; #endif @@ -103,7 +104,7 @@ static enum outcome _testcase_run_forked(const struct testgroup_t *group, const struct testcase_t *testcase) { -#ifdef WIN32 +#ifdef _WIN32 /* Fork? On Win32? How primitive! We'll do what the smart kids do: we'll invoke our own exe (whose name we recall from the command line) with a command line that tells it to run just the test we @@ -174,6 +175,7 @@ _testcase_run_forked(const struct testgroup_t *group, exit(1); } exit(0); + return FAIL; /* unreachable */ } else { /* parent */ int status, r; @@ -239,6 +241,7 @@ testcase_run_one(const struct testgroup_t *group, if (opt_forked) { exit(outcome==OK ? 0 : (outcome==SKIP?MAGIC_EXITCODE : 1)); + return 1; /* unreachable */ } else { return (int)outcome; } @@ -287,7 +290,7 @@ tinytest_main(int c, const char **v, struct testgroup_t *groups) { int i, j, n=0; -#ifdef WIN32 +#ifdef _WIN32 commandname = v[0]; #endif for (i=1; i<c; ++i) { diff --git a/src/test/tinytest_demo.c b/src/test/tinytest_demo.c index bd33cc37fa..98cb773d1a 100644 --- a/src/test/tinytest_demo.c +++ b/src/test/tinytest_demo.c @@ -1,4 +1,4 @@ -/* tinytest_demo.c -- Copyright 2009 Nick Mathewson +/* tinytest_demo.c -- Copyright 2009-2010 Nick Mathewson * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -39,7 +39,7 @@ /* ============================================================ */ /* First, let's see if strcmp is working. (All your test cases should be - * functions declared to take a single void * as) an argument. */ + * functions declared to take a single void * as an argument.) */ void test_strcmp(void *data) { @@ -53,7 +53,7 @@ test_strcmp(void *data) } /* Pretty often, calling tt_abort_msg to indicate failure is more - heavy-weight than you want. Instead, just say: */ + heavy-weight than you want. Instead, just say: */ tt_assert(strcmp("testcase", "testcase") == 0); /* Occasionally, you don't want to stop the current testcase just @@ -91,7 +91,7 @@ test_strcmp(void *data) /* First you declare a type to hold the environment info, and functions to set it up and tear it down. */ struct data_buffer { - /* We're just going to have couple of character buffer. Using + /* We're just going to have couple of character buffer. Using setup/teardown functions is probably overkill for this case. You could also do file descriptors, complicated handles, temporary @@ -164,7 +164,7 @@ test_memcpy(void *ptr) /* ============================================================ */ -/* Now we need to make sure that our tests get invoked. First, you take +/* Now we need to make sure that our tests get invoked. First, you take a bunch of related tests and put them into an array of struct testcase_t. */ @@ -189,15 +189,15 @@ struct testgroup_t groups[] = { /* Every group has a 'prefix', and an array of tests. That's it. */ { "demo/", demo_tests }, - END_OF_GROUPS + END_OF_GROUPS }; int main(int c, const char **v) { - /* Finally, just call tinytest_main(). It lets you specify verbose - or quiet output with --verbose and --quiet. You can list + /* Finally, just call tinytest_main(). It lets you specify verbose + or quiet output with --verbose and --quiet. You can list specific tests: tinytest-demo demo/memcpy diff --git a/src/test/tinytest_macros.h b/src/test/tinytest_macros.h index a7fa64a824..032393ccf7 100644 --- a/src/test/tinytest_macros.h +++ b/src/test/tinytest_macros.h @@ -90,10 +90,10 @@ TT_STMT_BEGIN \ if (!(b)) { \ _tinytest_set_test_failed(); \ - TT_GRIPE((msg)); \ + TT_GRIPE(("%s",msg)); \ fail; \ } else { \ - TT_BLATHER((msg)); \ + TT_BLATHER(("%s",msg)); \ } \ TT_STMT_END @@ -111,7 +111,7 @@ #define tt_assert(b) tt_assert_msg((b), "assert("#b")") #define tt_assert_test_fmt_type(a,b,str_test,type,test,printf_type,printf_fmt, \ - setup_block,cleanup_block) \ + setup_block,cleanup_block,die_on_fail) \ TT_STMT_BEGIN \ type _val1 = (type)(a); \ type _val2 = (type)(b); \ @@ -135,33 +135,50 @@ cleanup_block; \ if (!_tt_status) { \ _tinytest_set_test_failed(); \ - TT_EXIT_TEST_FUNCTION; \ + die_on_fail ; \ } \ } \ TT_STMT_END -#define tt_assert_test_type(a,b,str_test,type,test,fmt) \ +#define tt_assert_test_type(a,b,str_test,type,test,fmt,die_on_fail) \ tt_assert_test_fmt_type(a,b,str_test,type,test,type,fmt, \ - {_print=_value;},{}) + {_print=_value;},{},die_on_fail) /* Helper: assert that a op b, when cast to type. Format the values with * printf format fmt on failure. */ #define tt_assert_op_type(a,op,b,type,fmt) \ - tt_assert_test_type(a,b,#a" "#op" "#b,type,(_val1 op _val2),fmt) + tt_assert_test_type(a,b,#a" "#op" "#b,type,(_val1 op _val2),fmt, \ + TT_EXIT_TEST_FUNCTION) #define tt_int_op(a,op,b) \ - tt_assert_test_type(a,b,#a" "#op" "#b,long,(_val1 op _val2),"%ld") + tt_assert_test_type(a,b,#a" "#op" "#b,long,(_val1 op _val2), \ + "%ld",TT_EXIT_TEST_FUNCTION) #define tt_uint_op(a,op,b) \ tt_assert_test_type(a,b,#a" "#op" "#b,unsigned long, \ - (_val1 op _val2),"%lu") + (_val1 op _val2),"%lu",TT_EXIT_TEST_FUNCTION) #define tt_ptr_op(a,op,b) \ tt_assert_test_type(a,b,#a" "#op" "#b,void*, \ - (_val1 op _val2),"%p") + (_val1 op _val2),"%p",TT_EXIT_TEST_FUNCTION) #define tt_str_op(a,op,b) \ tt_assert_test_type(a,b,#a" "#op" "#b,const char *, \ - (strcmp(_val1,_val2) op 0),"<%s>") + (strcmp(_val1,_val2) op 0),"<%s>",TT_EXIT_TEST_FUNCTION) + +#define tt_want_int_op(a,op,b) \ + tt_assert_test_type(a,b,#a" "#op" "#b,long,(_val1 op _val2),"%ld",(void)0) + +#define tt_want_uint_op(a,op,b) \ + tt_assert_test_type(a,b,#a" "#op" "#b,unsigned long, \ + (_val1 op _val2),"%lu",(void)0) + +#define tt_want_ptr_op(a,op,b) \ + tt_assert_test_type(a,b,#a" "#op" "#b,void*, \ + (_val1 op _val2),"%p",(void)0) + +#define tt_want_str_op(a,op,b) \ + tt_assert_test_type(a,b,#a" "#op" "#b,const char *, \ + (strcmp(_val1,_val2) op 0),"<%s>",(void)0) #endif diff --git a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c index 51b456a8c7..f9d5d0d586 100644 --- a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c +++ b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.c @@ -1,5 +1,5 @@ /* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch. - * Copyright (c) 2010, The Tor Project, Inc. */ + * Copyright (c) 2010-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** @@ -55,7 +55,7 @@ tor_natpmp_init(tor_fw_options_t *tor_fw_options, void *backend_state) if (tor_fw_options->verbose) fprintf(stdout, "V: natpmp init...\n"); - r = initnatpmp(&(state->natpmp)); + r = initnatpmp(&(state->natpmp), 0, 0); if (r == 0) { state->init = 1; fprintf(stdout, "tor-fw-helper: natpmp initialized...\n"); diff --git a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h index 5a6540b68f..0190379a23 100644 --- a/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h +++ b/src/tools/tor-fw-helper/tor-fw-helper-natpmp.h @@ -1,5 +1,5 @@ /* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch. - * Copyright (c) 2010, The Tor Project, Inc. */ + * Copyright (c) 2010-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/tools/tor-fw-helper/tor-fw-helper-upnp.c b/src/tools/tor-fw-helper/tor-fw-helper-upnp.c index b3b80d6987..18ca56394f 100644 --- a/src/tools/tor-fw-helper/tor-fw-helper-upnp.c +++ b/src/tools/tor-fw-helper/tor-fw-helper-upnp.c @@ -1,5 +1,5 @@ /* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch. - * Copyright (c) 2010, The Tor Project, Inc. */ + * Copyright (c) 2010-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/tools/tor-fw-helper/tor-fw-helper-upnp.h b/src/tools/tor-fw-helper/tor-fw-helper-upnp.h index fdbd2dd185..021a8e0aac 100644 --- a/src/tools/tor-fw-helper/tor-fw-helper-upnp.h +++ b/src/tools/tor-fw-helper/tor-fw-helper-upnp.h @@ -1,5 +1,5 @@ /* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch. - * Copyright (c) 2010, The Tor Project, Inc. */ + * Copyright (c) 2010-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/tools/tor-fw-helper/tor-fw-helper.c b/src/tools/tor-fw-helper/tor-fw-helper.c index 378672a20a..20d60d7ba6 100644 --- a/src/tools/tor-fw-helper/tor-fw-helper.c +++ b/src/tools/tor-fw-helper/tor-fw-helper.c @@ -1,5 +1,5 @@ /* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch. - * Copyright (c) 2010, The Tor Project, Inc. */ + * Copyright (c) 2010-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/tools/tor-fw-helper/tor-fw-helper.h b/src/tools/tor-fw-helper/tor-fw-helper.h index b83d4b7d8f..39d852d212 100644 --- a/src/tools/tor-fw-helper/tor-fw-helper.h +++ b/src/tools/tor-fw-helper/tor-fw-helper.h @@ -1,5 +1,5 @@ /* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch. - * Copyright (c) 2010, The Tor Project, Inc. */ + * Copyright (c) 2010-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** diff --git a/src/tools/tor-gencert.c b/src/tools/tor-gencert.c index bc99c24bd7..a04eddafc7 100644 --- a/src/tools/tor-gencert.c +++ b/src/tools/tor-gencert.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2010 The Tor Project, Inc. */ +/* Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "orconfig.h" diff --git a/src/tools/tor-resolve.c b/src/tools/tor-resolve.c index f5b0becaff..8c4d3f6483 100644 --- a/src/tools/tor-resolve.c +++ b/src/tools/tor-resolve.c @@ -1,5 +1,5 @@ /* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson - * Copyright (c) 2007-2010, The Tor Project, Inc. + * Copyright (c) 2007-2011, The Tor Project, Inc. */ /* See LICENSE for licensing information */ @@ -319,7 +319,7 @@ main(int argc, char **argv) { uint32_t sockshost; uint16_t socksport = 0, port_option = 0; - int isSocks4 = 0, isVerbose = 0, isReverse = 0, force = 0; + int isSocks4 = 0, isVerbose = 0, isReverse = 0; char **arg; int n_args; struct in_addr a; @@ -349,8 +349,6 @@ main(int argc, char **argv) isSocks4 = 0; else if (!strcmp("-x", arg[0])) isReverse = 1; - else if (!strcmp("-F", arg[0])) - force = 1; else if (!strcmp("-p", arg[0])) { int p; if (n_args < 2) { diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h index dc84d78496..5483b6d064 100644 --- a/src/win32/orconfig.h +++ b/src/win32/orconfig.h @@ -233,4 +233,4 @@ #define USING_TWOS_COMPLEMENT /* Version number of package */ -#define VERSION "0.2.3.0-alpha-dev" +#define VERSION "0.2.3.1-alpha-dev" |