From: Niels Möller Date: Wed, 19 Feb 2025 20:08:57 +0000 (+0100) Subject: Implement slh-dsa-shake-128f. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fslh-dsa-shake-128f-nettle;p=thirdparty%2Fnettle.git Implement slh-dsa-shake-128f. --- diff --git a/Makefile.in b/Makefile.in index 00e255fe..8e9613e7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -168,7 +168,7 @@ nettle_SOURCES = aes-decrypt-internal.c aes-decrypt.c aes-decrypt-table.c \ xts.c xts-aes128.c xts-aes256.c \ drbg-ctr-aes256.c \ slh-fors.c slh-merkle.c slh-shake.c slh-wots.c slh-xmss.c \ - slh-dsa.c slh-dsa-shake-128s.c + slh-dsa.c slh-dsa-shake-128s.c slh-dsa-shake-128f.c hogweed_SOURCES = sexp.c sexp-format.c \ sexp-transport.c sexp-transport-format.c \ diff --git a/examples/hogweed-benchmark.c b/examples/hogweed-benchmark.c index b8c93eec..05e78378 100644 --- a/examples/hogweed-benchmark.c +++ b/examples/hogweed-benchmark.c @@ -859,11 +859,17 @@ struct slh_dsa_ctx { uint8_t pub[SLH_DSA_SHAKE_128_KEY_SIZE]; uint8_t key[SLH_DSA_SHAKE_128_KEY_SIZE]; uint8_t msg[10]; - uint8_t sig[SLH_DSA_SHAKE_128S_SIGNATURE_SIZE]; + uint8_t *sig; + void (*sign)(const uint8_t *pub, const uint8_t *priv, + size_t length, const uint8_t *msg, + uint8_t *signature); + int (*verify)(const uint8_t *pub, + size_t length, const uint8_t *msg, + const uint8_t *signature); }; static void * -bench_slh_dsa_init (unsigned size) +bench_slh_dsa_init_s (unsigned size) { struct slh_dsa_ctx *ctx; assert (size == 128); @@ -873,7 +879,28 @@ bench_slh_dsa_init (unsigned size) memset (ctx->pub, 2, SLH_DSA_SHAKE_128_SEED_SIZE); slh_dsa_shake_128s_root (ctx->pub, ctx->key, ctx->pub + SLH_DSA_SHAKE_128_SEED_SIZE); memset (ctx->msg, 3, sizeof (ctx->msg)); + ctx->sig = xalloc (SLH_DSA_SHAKE_128S_SIGNATURE_SIZE); slh_dsa_shake_128s_sign (ctx->pub, ctx->key, sizeof(ctx->msg), ctx->msg, ctx->sig); + ctx->sign = slh_dsa_shake_128s_sign; + ctx->verify = slh_dsa_shake_128s_verify; + return ctx; +} + +static void * +bench_slh_dsa_init_f (unsigned size) +{ + struct slh_dsa_ctx *ctx; + assert (size == 128); + + ctx = xalloc (sizeof(*ctx)); + memset (ctx->key, 1, SLH_DSA_SHAKE_128_KEY_SIZE); + memset (ctx->pub, 2, SLH_DSA_SHAKE_128_SEED_SIZE); + slh_dsa_shake_128f_root (ctx->pub, ctx->key, ctx->pub + SLH_DSA_SHAKE_128_SEED_SIZE); + memset (ctx->msg, 3, sizeof (ctx->msg)); + ctx->sig = xalloc (SLH_DSA_SHAKE_128F_SIGNATURE_SIZE); + slh_dsa_shake_128f_sign (ctx->pub, ctx->key, sizeof(ctx->msg), ctx->msg, ctx->sig); + ctx->sign = slh_dsa_shake_128f_sign; + ctx->verify = slh_dsa_shake_128f_verify; return ctx; } @@ -881,22 +908,23 @@ static void bench_slh_dsa_sign (void *p) { struct slh_dsa_ctx *ctx = p; - uint8_t sig[SLH_DSA_SHAKE_128S_SIGNATURE_SIZE]; - slh_dsa_shake_128s_sign (ctx->pub, ctx->key, sizeof(ctx->msg), ctx->msg, sig); + ctx->sign (ctx->pub, ctx->key, sizeof(ctx->msg), ctx->msg, ctx->sig); } static void bench_slh_dsa_verify (void *p) { struct slh_dsa_ctx *ctx = p; - if (!slh_dsa_shake_128s_verify (ctx->pub, sizeof (ctx->msg), ctx->msg, ctx->sig)) + if (!ctx->verify (ctx->pub, sizeof (ctx->msg), ctx->msg, ctx->sig)) die ("Internal error, slh_dsa_shake_128s_verify failed.\n"); } static void bench_slh_dsa_clear (void *p) { - free (p); + struct slh_dsa_ctx *ctx = p; + free (ctx->sig); + free (ctx); } struct alg alg_list[] = { @@ -930,7 +958,8 @@ struct alg alg_list[] = { { "curve", 448, bench_curve_init, bench_curve_mul_g, bench_curve_mul, bench_curve_clear }, { "gostdsa", 256, bench_gostdsa_init, bench_gostdsa_sign, bench_gostdsa_verify, bench_gostdsa_clear }, { "gostdsa", 512, bench_gostdsa_init, bench_gostdsa_sign, bench_gostdsa_verify, bench_gostdsa_clear }, - { "slh-dsa-shake", 128, bench_slh_dsa_init, bench_slh_dsa_sign, bench_slh_dsa_verify, bench_slh_dsa_clear }, + { "slh-dsa-shake-s", 128, bench_slh_dsa_init_s, bench_slh_dsa_sign, bench_slh_dsa_verify, bench_slh_dsa_clear }, + { "slh-dsa-shake-f", 128, bench_slh_dsa_init_f, bench_slh_dsa_sign, bench_slh_dsa_verify, bench_slh_dsa_clear }, }; #define numberof(x) (sizeof (x) / sizeof ((x)[0])) diff --git a/slh-dsa-internal.h b/slh-dsa-internal.h index 2a23e6bf..2c6c785d 100644 --- a/slh-dsa-internal.h +++ b/slh-dsa-internal.h @@ -55,6 +55,7 @@ #define _slh_dsa_verify _nettle_slh_dsa_verify #define _slh_dsa_shake_128s_params _nettle_slh_dsa_shake_128s_params +#define _slh_dsa_shake_128f_params _nettle_slh_dsa_shake_128f_params /* Size of a single hash, including the seed and prf parameters */ #define _SLH_DSA_128_SIZE 16 diff --git a/slh-dsa-shake-128f.c b/slh-dsa-shake-128f.c new file mode 100644 index 00000000..617ae478 --- /dev/null +++ b/slh-dsa-shake-128f.c @@ -0,0 +1,140 @@ +/* slh-dsa-shake-128f.c + + SLH-DSA (FIPS 205) signatures. + + Copyright (C) 2025 Niels Möller + + This file is part of GNU Nettle. + + GNU Nettle is free software: you can redistribute it and/or + modify it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your + option) any later version. + + or both in parallel, as here. + + GNU Nettle is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see http://www.gnu.org/licenses/. +*/ + +#if HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include "bswap-internal.h" +#include "memops.h" +#include "sha3.h" +#include "slh-dsa.h" +#include "slh-dsa-internal.h" + +#define SLH_DSA_M 34 + +#define SLH_DSA_D 22 +#define XMSS_H 3 + +/* Use k Merkle trees, each of size 2^a. Signs messages of size + k * a = 198 bits or 25 octets (with 2 left-over bits). */ +#define FORS_A 6 +#define FORS_K 33 +#define FORS_MSG_SIZE 25 + +const struct slh_dsa_params +_slh_dsa_shake_128f_params = + { + { SLH_DSA_D, XMSS_H, XMSS_SIGNATURE_SIZE(XMSS_H) }, + { FORS_A, FORS_K, FORS_MSG_SIZE, FORS_SIGNATURE_SIZE(FORS_A, FORS_K) }, + }; + +void +slh_dsa_shake_128f_root (const uint8_t *public_seed, const uint8_t *private_seed, + uint8_t *root) +{ + uint8_t scratch[(XMSS_H + 1)*_SLH_DSA_128_SIZE]; + _xmss_gen (public_seed, private_seed, &_slh_dsa_shake_128f_params.xmss, scratch, root); +} + +void +slh_dsa_shake_128f_generate_keypair (uint8_t *pub, uint8_t *priv, + void *random_ctx, nettle_random_func *random) +{ + random (random_ctx, SLH_DSA_SHAKE_128_SEED_SIZE, pub); + random (random_ctx, 2*SLH_DSA_SHAKE_128_SEED_SIZE, priv); + slh_dsa_shake_128f_root (pub, priv, pub + SLH_DSA_SHAKE_128_SEED_SIZE); +} + +static void +parse_digest (const uint8_t *digest, uint64_t *tree_idx, unsigned *leaf_idx) +{ + uint64_t x; + unsigned i; + + /* Split digest as + +----+------+-----+ + | md | tree | leaf| + +----+------+-----+ + 25 8 1 + + The first 25 octets are the digest signed with fors (and not + processed by this function), the next 8 octets represent 63 bits + selecting the tree, the last octet represent 3 bits selecting + the key in that tree. + + Left over high bits are discarded. + */ + x = digest[0] & 0x7f; /* Discard high-most bit of 64 */ + for (i = 1; i < 8; i++) + x = (x << 8) + digest[i]; + *tree_idx = x; + /* Discard 5 high-most bits */ + *leaf_idx = digest[8] & 7; +} + +/* Only the "pure" and deterministic variant. */ +void +slh_dsa_shake_128f_sign (const uint8_t *pub, const uint8_t *priv, + size_t length, const uint8_t *msg, + uint8_t *signature) +{ + uint8_t digest[SLH_DSA_M]; + uint64_t tree_idx; + unsigned leaf_idx; + + _slh_dsa_randomizer (pub, priv + _SLH_DSA_128_SIZE, length, msg, signature); + _slh_dsa_digest (signature, pub, length, msg, SLH_DSA_M, digest); + parse_digest (digest + FORS_MSG_SIZE, &tree_idx, &leaf_idx); + + _slh_dsa_sign (&_slh_dsa_shake_128f_params, pub, priv, digest, tree_idx, leaf_idx, + signature + _SLH_DSA_128_SIZE); +} + +int +slh_dsa_shake_128f_verify (const uint8_t *pub, + size_t length, const uint8_t *msg, + const uint8_t *signature) +{ + uint8_t digest[SLH_DSA_M]; + uint64_t tree_idx; + unsigned leaf_idx; + + _slh_dsa_digest (signature, pub, length, msg, SLH_DSA_M,digest); + parse_digest (digest + FORS_MSG_SIZE, &tree_idx, &leaf_idx); + return _slh_dsa_verify (&_slh_dsa_shake_128f_params, pub, digest, tree_idx, leaf_idx, + signature + _SLH_DSA_128_SIZE); +} diff --git a/slh-dsa.h b/slh-dsa.h index 8b4a29d6..e61bb06d 100644 --- a/slh-dsa.h +++ b/slh-dsa.h @@ -42,9 +42,13 @@ extern "C" { /* Name mangling */ #define slh_dsa_shake_128s_root nettle_slh_dsa_shake_128s_root +#define slh_dsa_shake_128f_root nettle_slh_dsa_shake_128f_root #define slh_dsa_shake_128s_generate_keypair nettle_slh_dsa_shake_128s_generate_keypair +#define slh_dsa_shake_128f_generate_keypair nettle_slh_dsa_shake_128f_generate_keypair #define slh_dsa_shake_128s_sign nettle_slh_dsa_shake_128s_sign +#define slh_dsa_shake_128f_sign nettle_slh_dsa_shake_128f_sign #define slh_dsa_shake_128s_verify nettle_slh_dsa_shake_128s_verify +#define slh_dsa_shake_128f_verify nettle_slh_dsa_shake_128f_verify /* Key layout: private: @@ -58,26 +62,41 @@ extern "C" { #define SLH_DSA_SHAKE_128_SEED_SIZE 16 #define SLH_DSA_SHAKE_128_KEY_SIZE 32 #define SLH_DSA_SHAKE_128S_SIGNATURE_SIZE 7856 +#define SLH_DSA_SHAKE_128F_SIGNATURE_SIZE 17088 /* Computes public key root, from the two seeds. */ void slh_dsa_shake_128s_root (const uint8_t *public_seed, const uint8_t *private_seed, uint8_t *root); +void +slh_dsa_shake_128f_root (const uint8_t *public_seed, const uint8_t *private_seed, + uint8_t *root); void slh_dsa_shake_128s_generate_keypair (uint8_t *pub, uint8_t *key, void *random_ctx, nettle_random_func *random); +void +slh_dsa_shake_128f_generate_keypair (uint8_t *pub, uint8_t *key, + void *random_ctx, nettle_random_func *random); /* Only the "pure" and deterministic variant. */ void slh_dsa_shake_128s_sign (const uint8_t *pub, const uint8_t *priv, size_t length, const uint8_t *msg, uint8_t *signature); +void +slh_dsa_shake_128f_sign (const uint8_t *pub, const uint8_t *priv, + size_t length, const uint8_t *msg, + uint8_t *signature); int slh_dsa_shake_128s_verify (const uint8_t *pub, size_t length, const uint8_t *msg, const uint8_t *signature); +int +slh_dsa_shake_128f_verify (const uint8_t *pub, + size_t length, const uint8_t *msg, + const uint8_t *signature); #ifdef __cplusplus } diff --git a/testsuite/slh-dsa-test.c b/testsuite/slh-dsa-test.c index cdecc29b..c124e78c 100644 --- a/testsuite/slh-dsa-test.c +++ b/testsuite/slh-dsa-test.c @@ -284,6 +284,34 @@ test_slh_dsa_shake_128s(const struct tstring *pub, const struct tstring *priv, ASSERT (!slh_dsa_shake_128s_verify (pub->data, msg->length, msg->data, sig)); } +static void +test_slh_dsa_shake_128f(const struct tstring *pub, const struct tstring *priv, + const struct tstring *msg, const struct tstring *exp_sig) +{ + uint8_t sig[SLH_DSA_SHAKE_128F_SIGNATURE_SIZE]; + ASSERT (pub->length == SLH_DSA_SHAKE_128_KEY_SIZE); + ASSERT (priv->length == SLH_DSA_SHAKE_128_KEY_SIZE); + ASSERT (exp_sig->length == SLH_DSA_SHAKE_128F_SIGNATURE_SIZE); + + slh_dsa_shake_128f_sign (pub->data, priv->data, msg->length, msg->data, sig); + if (! MEMEQ(sizeof(sig), sig, exp_sig->data)) + { + size_t i; + for (i = 0; i < sizeof(sig); i++) + if (sig[i] != exp_sig->data[i]) + break; + + fprintf (stderr, "failed slh_dsa_shake_128f_sign, first diff at %zd\n", i); + abort (); + } + ASSERT (slh_dsa_shake_128f_verify (pub->data, msg->length, msg->data, sig)); + + if (msg->length > 0) + ASSERT (!slh_dsa_shake_128f_verify (pub->data, msg->length-1, msg->data, sig)); + sig[SLH_DSA_SHAKE_128F_SIGNATURE_SIZE-1] ^= 1; + ASSERT (!slh_dsa_shake_128f_verify (pub->data, msg->length, msg->data, sig)); +} + void test_main(void) { @@ -486,7 +514,7 @@ test_main(void) return; /* Test vector from - https://github.com/smuellerDD/leancrypto/raw/refs/heads/master/slh-dsa/tests/sphincs_tester_vectors_shake_128s.h */ + https://github.com/smuellerDD/leancrypto/blob/master/slh-dsa/tests/sphincs_tester_vectors_shake_128s.h */ test_slh_dsa_shake_128s(SHEX("B505D7CFAD1B4974 99323C8686325E47" "AC524902FC81F503 2BC27B17D9261EBD"), SHEX("7C9935A0B07694AA 0C6D10E4DB6B1ADD" @@ -740,4 +768,547 @@ test_main(void) "a27a8aff707361b7 632b4250ca3b32e0 69def84ada576a1b cea10c1398a66361" "cb4f96de45be2454 db7ee6975e47ae95 222dba6a40683225 4e1f05a4d3db0a7e" "17061b18213d6bbd c66bd61b29d1ea53")); + /* Test vector from + https://github.com/smuellerDD/leancrypto/blob/master/slh-dsa/tests/sphincs_tester_vectors_shake_128f.h */ + test_slh_dsa_shake_128f(SHEX("B505D7CFAD1B4974 99323C8686325E47" + "AFBC007BA1E2B4A1 38F03AA9A6195AC8"), + SHEX("7C9935A0B07694AA 0C6D10E4DB6B1ADD" + "2FD81A25CCB14803 2DCD739936737F2D"), + SHEX("D81C4D8D734FCBFB EADE3D3F8A039FAA" + "2A2C9957E835AD55 B22E75BF57BB556A" + "C8"), + SHEX("373c73945bffbe75 0f03acb9e5c6bfc4 6d797df8895e06ed e918aa6c036d4318" + "37a89af35fa93b1d 174d1a2a580ebf09 bce3ce5fc3d9b7e7 ea978266a5ed558d" + "b88812db900001f0 54ca435f84e66c7d 266c9f7573081488 638b3187d11cce09" + "ad1643b08dadc8a5 94093e9942b788d2 ec9877c43783e47c a6f82f63764b7559" + "ae96d4fb8afac807 b29f61fef83efc5c 986b100de9f380e6 8e927530f6df7e99" + "f0dd7f805c32ecb3 01e396328a4bb913 af856bfcbb7e685f 5e8237e9a2c3c8a9" + "550afa9171705ef9 7239f1e5ed9ca259 db5a807f5a662212 aeb7c6c255a4b4a4" + "daa30596bdf3a47b fec5ed2a1fc3b936 5e35f2f0c98cc290 4d9df60d117adc9a" + "3debdfaf9e2cf950 c8fcf81822bf0516 fa4e1d219b9350d7 01e1be5fc400eb9b" + "fc9618ad97b2e705 f13d25defbae8722 729df3fc9a85c252 b584a94215381e4d" + "04e35b5a476ee340 63496da221a67428 9b30957cc90912e0 9f116f931c58a0de" + "df0260e09a5be963 8f20573f7ecc8b1d 040f443f6079450d dd198f3a92ceb92b" + "7b389bfedeff041b ced0f72647add382 c8fa6dc3f4993129 c601393da193617b" + "35f32ded870c4ed6 3cd01ae1755d2787 86d3fda4958a010f 2a6e0dc2c8e90f33" + "678d0c0a957ffcea e196c221cb3d33a4 0bb6f3d4a3f23f10 33d8dbb2fc5658dd" + "88621b970aa50e05 68e01f844172ab78 a3a6d2ddda40a39c 53560ccabcaa0a83" + "0c1a72de0599750f da0a823a354c81e3 a883fcae221b89c5 a1d0f1ec79ec5b8e" + "8530fae3170267e7 6ff2500cbe04196a 8aa20e5061d68478 e2d4a0469782e8d9" + "a8555435e4edd8c8 f4b82432b7ff638d 9831d636f9e337e0 fbb8ac745aab7f38" + "5a56ee06891e3adf 98c6a470c0b65659 58a700bc6df02f3c d6c629c08210621d" + "a76e8d13129c5649 3abd6ca9133a6aa8 a07baaef3b468bc3 f6994ef9cb18dd95" + "787c92811495f1ab ae6eb713ad64a1cd b0cb0b6e6026c382 720c3233f58d17c8" + "e0959035dd82bcb6 cd9e812cd95ed268 33c50335ffc2d762 f6a486b6154158f2" + "58b58991a847c622 9688f45ecc9031a2 d6a06a3c898bcc54 8a4cdab2064e3083" + "a888024812555029 223106aad833e285 70d47aafb04f59cd 39d9cae3aeb6d8e0" + "79d1f3166dabf784 1fa27df0df53516f ee1529ea1dbd71e9 0aab3d8ad4fe8287" + "0f4c5b8e35b9cbc2 4e87791ec2c7bee3 2b3251ab68ab674a 77a78d1acea108b5" + "562231dfb6c50a1a 00d8fddccb5e83b5 61b3b5f598fd192e 3c2a130d631192f2" + "b931fdb086a41882 911166fd15ca8396 d95277fcfd22bef3 0a2452f31e17ee21" + "b0a27e6f63e288b5 b086166c5373a948 640abec8db6b6316 3a802dd30c2e84e8" + "c7d6f67eeaef4709 82fdbf75909b1139 b7544d72384ae29f 9ba5b15842ce7d9e" + "bacd1331b4b22897 5c615464357b0f90 9799c319e2b0f2fb 087587a600bb6dd0" + "185a45cfbcc5e05f 99d830941d5f9c68 91cd491f0efa32ba b6a475c9fdb25e0e" + "a5ff01ff795eafc6 cbb408f3d802c887 34030194c110d28d 0886abb0d29629b1" + "213e9fdc537c8143 632e2057be16fe0c b6e0c16ced62636b 5fb29fc0464c56e0" + "39845faaa1ef9149 629f5784a406aee1 965abb96cc92b1c5 d1b44ba6067e82b3" + "faee9a72425dba82 394c960819c866ad 5035375b7f020568 49596f1460954d58" + "b4af0362b606c328 149da26213550af7 ee9ce6b70dc62972 528b59a419a8ca33" + "162da0dddc90f33a 9f9e8606ff1a6350 5f9eb6aacf043894 ea07f3db1811fcef" + "2c4be5593104051b 3b483c070bbf1495 e9aa6103c0271e8d 906643cd5e11ea27" + "9f0f1deb96a62106 376c0492d4aa5fa6 1545f75545035691 a4c033fbfc42ba4b" + "3a8c67b0bbc4dfe0 1ee49aa8715f5d05 34d730d00cb4dd3b c7d23f1e32f01ae5" + "5c9e6f7d5a5fe1d6 e6dd8466ac989af5 2b76e35890c82c07 7a083f05cfc8810c" + "70dbd1a5b75edf70 6833edcaa9971b76 8e9b29ecaa1a5e09 ea61ee9ed84cdb13" + "5472564f31d69dfb 32d8f1f8702cb027 bf66175a7fa9ba78 1759f210d99c30bf" + "ec511abf3ecc6598 42122b55db6d3989 6c4359d7576e83ae ba097ce8c302b8ff" + "0638900638d842cf 370e3d6bf29e8157 32cbfb6d3b444ac0 74948d634481f96d" + "a8cac548d577e8e5 ad59ed5c93d86d25 0569b3827b354bfb ce07e83a0911e417" + "aed9c2fb94e0a9ab 23b826a5b690daf2 57ae14e0af3820c4 87e36322d7a5e310" + "46545e97953ef883 f2304f34c555fe4f 224a24698f9f56c3 0ce95597f8c68268" + "808de01884101001 95bc46e5ec2641ac a0315f2f72d43ffd 6e4f3803422dd2d4" + "8b3592da29de7d98 3539024309acaf6b fcecbc80aeed5ecc 4d8339e9a13be272" + "b6301cf593fe86ac d6ba94d87d596b24 4a7b875189486c39 08f344c83f24d701" + "2a1918890a3dde78 abbabbec63b97ce7 70311dc46b6b8503 a4bae496101b88cc" + "e76cb8d9df99cf45 f89b42716bb07491 34f1643f82485805 dc9c836a79de2682" + "4ea02046863a570d 22fef883fe218360 c3a7a597a7bea3b9 5b0ab45dfd9eee87" + "8f5c8b17c22b7996 02051193c7a270f9 729ec9ae13d51131 834e3126a6bfd6b2" + "11f2434a0bf2baaf 8d63e3fc47b07ca9 5e7f307b13ac7724 41f7a7277e6ea66e" + "41e46f543ac8f682 f80900cbbcb5a91f 47c08f88a027fbad 25c186eb8bbd8fd0" + "d939694e8c81e5fc fe475adf5868bba3 ada914a96cee5479 d2a5dd6d14fadabc" + "20a6b2763b790c03 9578bce010d306f5 89d1684b3f71fb16 e061624ecf094f7d" + "04378ca5a32fba8e 117bb733c21c3d4c b7efffdf29a144d2 e6156c09f58b8eed" + "de63733e110b0b36 a77c8393d9db84b7 100abb674c0c50f7 3569fdd3fcd0eba6" + "1924a93e867fc170 acb866be73ad14b3 42bd698ba5d1213f 2b4917491abf2ef6" + "a86d36ea9a87cc14 70de776e2f818332 dcd47f4440f7c818 2f14256df3dc707b" + "10b88c9e3d1c1513 d8d9c508072bd5da be232cf19f8c4719 261b2cfb5b3e7680" + "211a130afc6e1f8c d61ffa17857136ae 3c91bc273003e37b bbdc2b270842a73d" + "67f3e560d0a4277c df77c49997ebc8e5 e37c614ebbd3b97c cada3c3bcf87a38b" + "e9eacf31c7c820cc 7289d7f54427a8c0 e42c951988339a5f 90579642a1ecc091" + "d8c191526ae1140d d655851a7f01c4a9 78f41d6ade9a78cf 1363a964815ed086" + "48c0a5c8d86273b3 7e2935fd27761cfc feb5316fd4902849 acaa9a14bcb05363" + "1d97a7b73928300c c06abb288f555659 d283f0f30bd037a9 bcce81b31db323a7" + "90392ede4b07b5e8 93a65d8a02b2968a dc9ccfc7b7941dab 6310e997afc7adfb" + "c3486a5ff3c5dcbb 61d304950de7b30a 31fbb38e2ecc8560 07d9e3d4e1b234d8" + "18cccbbdb3af2015 b779ed69e0ecd8d0 d514c9f0265f250c d5f0c04015e20af7" + "161e35c4f094908b 4e340518ba793908 e713f002136b39c4 14a1bcb0b4d08643" + "4c9df712d2a4dabf 66a3ad279fb15055 57a4b6633f459290 3d2d110c93f85e18" + "b736964bb8292524 49c27419617469fd 91654af55c948948 880cbdfd5c841ba6" + "d517460bb07d27c2 3b799c4286c66564 289ff4ba52873912 6ad751f5b5e1ee4d" + "43871ec0d98d7a22 c468c7d1e4363b80 aec981364c34781b 709f61eceaa27e10" + "d46cfde958411a04 41b614c0170c90d9 382d391d91d78e3e 57d23de844b1f0e3" + "0a18f51e463c25c2 2478b61f56fc079f 38a63411b8850230 f6144cf7731cf295" + "9b2c142438abb34a d8f7d28e10259125 df9d71022c751729 8ea83bd068c59e33" + "16fdb53f402e8d1a 569ac5f073545e4b 972490fb27ba0697 1b273ab1e4a9ac5f" + "6cb9453eae431005 a5bdf34891f872f3 c3ea3927fd67f8a4 3f6dece355e67b26" + "c22913b657703cb5 0e0bddc604cc9bc1 7c1bf2a09481467d f712d0404cf44a16" + "00f77a68fad39460 6b52d5d8f07fa64d a0991fb7a0f7a7e3 d7cde7083f69a641" + "7018a10e9319b0db d1fbce53fc2269ca 504b6d2a6a6a8baf 4e85e4e56df2c52a" + "aed8dc36936dca55 359ce40d4f155747 cf311fe8a4e2e013 0b87899b3e48bab2" + "f56d67c774dde599 5f159c582110cbf6 8644d0cc51068e69 699a0381cc917dd6" + "433ef98575ad4662 bc38294685668e2f 74362572b268d31a 39087dc4d487da2e" + "65716029ae25274f 6088546882b86b51 2a7e958fd1c6f92a 9fdc44c6200c2c10" + "95b88ae0e0dc4d0d 08b417bf3aefc7d0 c7c5cab3066bfec9 07f17b08a81e8afa" + "ee34fcfdc5e301d4 4c4eda3e05af5d12 10f15b8de81f244c c468ab8506fb2980" + "37500091a52886e0 776928451270e3c9 83ed6f61b7c4f861 f689a72f52607860" + "92154f99ccbb5b82 65c7be15dab096e9 7693fe35b2f797e9 2936ec9a9e26fa86" + "abf49a2747301244 fb884e679dd970ba 34e3bc035186fb3b 619a60bf6a19bf6c" + "4c4c4e2b01c6fa70 c0dab8466c8f41bd 449fb372c52eaf71 b1445e315845cfbd" + "696cec5eb9bd4628 2b6ccf2cb43a3b25 1d2ad6249d76f1c9 a0963fda7c520635" + "1e57227263658b96 5592aad8ff4c66ec 59288af76e381b1b 9412250862ec3f24" + "718acc97c16c44a0 83924e5c9100dcd6 8c780d29c4e0ba42 1c265d0f8715f9da" + "3d7ce7645bbd2e47 51d1fe85d76fd522 d621624769fdada1 928f61fa9e5714ea" + "1ea5f8d50f6b753c f232045be399ca8c 04069596ba33cf26 92e64b124c74aa3a" + "4eab8170d1476d2a 8be18f6dc4352135 da13d3f02b97f7fb 5b90e89c359590ea" + "64253db7647a02ca fcfebe03c20a87b6 992e48361f6e514e 640e99449496000b" + "084e637d4fc5b948 590febecee89b455 9386f4c17b5f01ad 913e6dfcecce2cc1" + "943c231342136c06 39c7686bc6a1d22a 1cc655514800c1c1 80c30f59b5ae14ed" + "c614510ce7bb5aa7 9bb35e01889bf8af 804627e7980f3b4a 5bf84af4cdda0444" + "a2f82b07c67e9c0c d09ef2cfe8a831a9 9b94b9487a1658f8 cc1d237b2cb71256" + "8caa2f8916cc39d7 6ed5e4b2cdeae42a 50c674890384b47d 98fd11049677c984" + "8d544e7a03b54c8d a7a46a86ad77eb12 fb932a37dae72036 4d5d688b2eff4ffe" + "6467c0fda2003f31 d93fccd02a2db8bf 36c14d2bfe9c9626 19b198f9420aa606" + "cfa8bbe63ef333b4 9c89c283ce1ad568 59c5cd0758885f22 23e122e1939503b9" + "02bf8ff9625c4430 f9cf55e377258e86 2a7ec3903d84b3a8 cd51588435fc38b7" + "1667337792eea9d0 01e2f1f2562f3ef5 375c47f0d079780f 7dbe99b4e7939437" + "17564da171027fd8 6b1c9dac0819ae29 9eb53ef03e32a802 64cbedc10fdc2a40" + "e7a8ce56ee788b2b cdb676fad13d4b41 f227b47b41d198dc be8a662fcc64a718" + "20c8be1036138732 ce9454fd774b9041 0714bc940702f4e2 4faee4f2ffba35b2" + "9f8922dabd5e6d46 55758792f60bfe8c 50adb4765f5f3311 911ec61c3ebd1663" + "ce79e4262b487a7a 14ef3b21a854a022 177236416765c229 34a3e8234fba3b98" + "b36694a2efdb1a00 f56b82f92ddfd310 c2ee5bd148a4fc89 e760ae08cdecca0b" + "8b526fe62f5ec793 918b8125a7aa4718 22ce67c0fa1940df 95e004d7446e207b" + "75770d19675f4c61 30d87017b0e42570 8ff332430f196d10 c985a28ff17eb5fd" + "563cfc2281caa946 8018903630e912a4 4423beb2378655ac a7fded077af2a0f1" + "851d552bc6596f36 6dc49501bc082372 698fdc4cd6330a37 e2b4a29a4c191848" + "27248b2ca56a1ea9 9a619c886db41f19 928d134cdaa392b5 12aa149ca05fad3c" + "f8973185312c529f 9f585201ce8aeef0 6a3b76c548e1ff65 2d8e6de6bf4a4f31" + "acfb12aa6b8648cc b9e47a2bde555893 ba96d8a59251ebee 38ddb859808675f4" + "8993b354b44872b9 e39cf6e243bfa670 1e9266291cdc1741 f99844ebec232841" + "0363105a345e1b19 d04c0952b7d2344b f425dad14631e14f 6a595efdc8da63ec" + "66fe90643e85e411 8587534cd6fe9c2d cfc119e8f0c4013f e6a262fc5ce4418b" + "d872aff38511b0e5 b4cb452293161fe8 d9adfd9cab8da4bf d3f23027c75b0358" + "dacc903d3b4153a1 fd880f439ac1e02d 82ef3c4b06070c35 df253afc2b267a92" + "eea2d5111261e3c3 4529d2bcc5f5cc89 2d6596a4ee5b7208 cfb98c9405b94744" + "cc7c077a7e22ddc5 281fb0d9b69a0467 4b4f0d6c1a70ccac 0c8a89eb1d04b19c" + "074961006b132716 fd55f0b5c9b2303c c663a1235dac9773 073e5e20f9368cd2" + "1ad21baeeafa2b27 c35e95499252b339 d82f3142db10e1e6 7add6e0d7ce0372c" + "f439fd78904a7e7a c95a0a5c1496edf3 1e3ba67ff8600980 717d999e0ee9e7be" + "60a535a21ddd20ac d2eafcd448d82971 e61cffd82217e9f7 281b58a1b8e42ce0" + "60d4dee8ca438e46 26fa3f9298e438ae 8157dec5e5979c89 7911db73e85390b3" + "af4e5053b316890a 95fb92172c1d02eb 4dba03a26dfd23a6 d557e79e2fab9cf8" + "06fff00ac1a517bc 8f8760a93d6421f1 96608fa7107641b7 63ee06d3d097bc1f" + "5b86bbe6221fe0df 56efc71dbd7e5918 492ea597322d8b20 e104e821d8a82601" + "f2ac6577617411d1 64c8d76be898323a 89523a738276f4da 246b673fa2729568" + "ff6fc03328aa2a6e 66aea6fb70afa4f9 62f3c805fd3c66e9 e52afb0d9d7bd476" + "38ef68f2b12d6922 a1398cba69383dc9 a32906a0acd4727f bc91fa5456d14319" + "57a7f9060359d9f8 87611ee0a6a1eae6 c644240abfea9e02 774317f934d080c4" + "fcb98905ff5f9330 bbdde48a32877031 f36bfc66e7caac9a dd5c3d210ebd1382" + "97d59bddb605aae0 5310fd7ed728300c 8e3c8427800019c0 cdcf604c4a5f07c6" + "b01c39543ae68155 8082762a005b3680 81a248703f872c2a dd773a701418f645" + "4250663407c0dbec f336048721a72bb1 3a5076923b16437b 18a69065d1b38565" + "b95b181abf13be0d 7239fd3c39f083ed 186e3bbdd5441e1e 11fb70ce58a2a792" + "a66c2af6fad18a58 a9c56729901f9cec 45c3203932d5dacd 66e96d623e4701dc" + "1edb43f2267b5cb4 a438e3e47622ea7d a841c9ba6bc54b5e 83e7871ec89a828b" + "4d65d0f26a0e9b7d cf880f28ddc1d159 454559e1385565ca 3ab6633cb04ebe92" + "c484ce9278800449 7d74bebcfea361d2 f3286565b6e33591 79eef768c859379b" + "e5cc3903dfc9ed77 3f9973fae7cb311b b907726e02acca9e 51cd4f4de0caf25e" + "14c881899475354e 8678ac94f73aa3e1 1a27bd9367e531a7 dc0369ecc1b3e094" + "eaae23f342942ae0 9e39c0bbf088e260 e923d6489f6fb8f8 36fbdbd9db7d3adf" + "8a74407516a61cc4 998a6c14e54c556a 8995d630480e9cd4 d616626364444fd7" + "c6f059ca7312a61d 50716562239c9339 e224e2fe6999ffda 833cc486260685e8" + "4090cf59b8ca018c a0e3c4bf2d500716 40240d9ffd128619 ab62ae5cdb8bd9f4" + "728c877fedf63e12 d08d4759aa3a2d44 38aac1613fb2d5bb 0083f151073c5083" + "6b9e8ef95ce0182f ff4205c44b4678ba 5bee877246f3d6b5 85cf0c160f961b28" + "ee583488fd42d12d a487a88dcdd62ab2 a3cf84f5503df200 5db4a512ebeef9ae" + "2610f93d818d1b8e 61142cc89fd11a25 be8f364e39002486 47550d9835d8bfdc" + "f1476993cb1ac130 e35bd3dc9688840f b4f178c0180e3e5d 68dee6147dfe387d" + "3bce676bbb0043c9 40c5de76a270e9c2 32f373bdb54c78be 4b8b8c5e7843e4f6" + "9fbf5a6ed0133528 1e368720c9b59d1a 1940b25fce29b802 c5d6c5f24865c545" + "ae21ee34b3b6a530 0d4fa2dbc6b6aa89 aefd501e525e44c6 c6a6563369768bb7" + "7aba7b9d091ca135 636c5e12372e2527 fb4cddec2252d926 4d0b3be0bd218b10" + "b33a65a03f373946 1fd674bc2e0cfb68 e3ed70cbf3655344 0868f94fa81ec1a3" + "ca4c63a24d57e90a a4c475003f4ec1db e566132f352a65ea 464a019a565bdb20" + "5862028134dc9f0d cd4386ccc7858c3e 7d41bb8187a9d541 394f0b1b43a52765" + "d09a35f536458d69 b1a74284a5aeec9c 2bb6eb6a1e605f2e f04d8526eb5ddbfd" + "a0e2e4cbd36636c5 f7bf8b47ebb63776 bdeb6b3879ed5bba 56e02f074577032c" + "192efb8d2aaa1504 e52877923a064b20 86fb946b92d52efd 1ba0768d0df6205c" + "2996c0a539772f15 45648f0fef6d3367 bf6a9a0d1f1f8656 d37801f13909cb00" + "de7dcde257b8e40f 7c4b0b0088d78212 b9cbb3c05af420d7 0e10f900e79af787" + "62f3d917ac034e28 e7e477bc8c189d74 191de97d23f3ed2e 200c2ddf168666c2" + "9a61296d3d9ed6e6 fd40fa11da4135e5 b14f521a1b478975 7ff3bda98486a102" + "e81656a5a714a7d0 13f145e10d2b25e2 385c6a4c8b883114 79fb1c5219a5d325" + "b78e59ee1db88068 7a0fc2b7067c53ce 2b0b0e6d77b3b064 376e4c1b32ccbd7b" + "cc148b5bc0e7bd00 728c858842187d7f e1be370e305b2f43 af3176615b9f684a" + "c107bf87e20b080c 14d08e75306767fd 650244af3bb06fae ef9192429b947984" + "d138904cb96284c6 5c8c71720b2e8afd 708933434ba9fb4f 2d561497b9f275fe" + "68c1cbe982794ed5 aca3fc35c7aebf2b 1a1c953e6a093f13 9794faad63bd7e18" + "caf6066db0403e01 43410edbc4acfbfd 059adabcf07f6187 18cb6f20b240335f" + "77bff262ee4f0486 292f5b00a1f50d27 e44e4ba44d456db2 6280c4142f20d9e9" + "27b5e192d0f2d07a 5d43949e5c5684ac b4b2518739e77172 b13391d67ef5d181" + "b6477381886c2644 f5326b42d570f531 0e0cfebc61bb059f 862764a25650af8c" + "adfce093d19d5457 20213e934a0d7628 dcab66c4e1d73dff ec4c6eff3848f5e7" + "20e7111ef8b2acfd 3d9b1e50c07ed4ac 8081c3fc383b71f6 78113d5759085126" + "77c985a2ba519611 ec2af89121aafa1f fbb57f47f9eb6b31 7e9f4b42896d4e82" + "8302cc197cbefe3f 1ea041311010bb89 d7646db41d76d33b 03dce6289b6f0978" + "a99f2537a9379396 6cf9cf2449557215 5357d3a54de59b6b 8df39fd9c27d7df2" + "c941422959a4eeb8 0b4e38f95a90607e 0a1045a5f68f76e8 eba838d8ab00cc95" + "702787fc74fb637c 6719cbea33c37602 e22a6bec533f8ebd 4615cee5b60fc281" + "441581e635b1ee76 d424007cf7d8058d 1464d356beb625bb 4753c05e30192e0a" + "13253c1a59536325 6a77d653cfa8834d 1e54a0e3e605dd3c bc83e197db186d68" + "d7c7b07bf060a581 4c3f17ac2d409e50 698428c3a02d1317 a340d4bb51272460" + "54a6ebd8a6abd2bd b8e055e988ea476b 434a20e42fb9ff13 5b7112433eca7c87" + "bf66cf844f204c70 be681fb623b8a86a f2ab7ebbc489dfef a75b7adab59e378c" + "7d86523462617b4e 3f4a66dec5bb55c4 c4b32675176d8594 a0d7ec1f6e3d4d93" + "83013b6db6a4dd2a c470c1d213686f13 da74e074b926b402 e1bbebfe60be58c6" + "6a3c1e589dc8551c f66248c70908f358 4cb96780f746f3b2 3ebe92de02dff2b0" + "f17a7554a7aca4b4 392a33ac86ebdb86 1565c8597dc3c0f2 2b09f5a3ea316564" + "822ebebd520d418e 17a538a056d88593 15b47fbd2f5f9f06 3e64305f27d9014b" + "b7e04431e6beeec9 6aefc68dca3528a7 fab15e7394d1d45a e6f5000f94039020" + "4e336c0ce77d95d4 7a4fb5894b2edf4e 97e55b9af2458fd4 b4eda67f09d80ef0" + "c88db87416cbd51d 2d912d0a8e820a13 8306394061e588c4 e681015a6865d434" + "eca7494824c48b7c 047af2ef5f808336 60e5ebb9b210a2d7 d91da16c03f642b2" + "e881d1c048a43098 b8013bde949a784a 348abdb26e9cc049 c6ab85895ecb033d" + "4aa3219d58b4ce5b ddf0ccee32e35a4e cd7eedf82dce36d2 316064b9014dc404" + "eeeaf6342b63f0fa c299df1d914afe6b f03ccb7e67d0cade 35e4bd207f33adb3" + "d302f23eae2e32a8 a6e0c68fc7d90423 43444d130d424777 d3b265c35602e6c2" + "681aea5f48643eec af827c6054c56353 4a6afae872d86541 8816137b5b6563ed" + "cf7754a3f1b7600f b7c328dd9c7b93e1 efebae36ae36a157 8244f7b0d1d66fa5" + "04835b28935d5a9f 7af834cdac4e0661 b2e276d79a7941ef e5dbc26d64293c22" + "e6972fbe4a8ac01d 30a70bfb21e19e62 9ce2682fc74c7bb2 b99f22c779f7022b" + "be7aca0b6eb9ee3e 019ab2ab023ade73 112815bcf129f4ce 650b2050bc523fa0" + "254f8a1cffbc121c 4cddfa33a01065f5 5df1eb43f66e6278 c4926dd5bcdadefd" + "a8c99932175f76ba ece263ea4434c177 6f635ee548193759 2b1177e67b902fbf" + "a3974ad2349a729b f2650f850e422f57 191554ed4244c8fb 5e73a4c2c92f7218" + "be17d7e689b875a6 05ea6bb493485bd2 1920e6cd02e4dbaf 8973c13cbc6197e5" + "adb915137cec79c1 14be4feda0c434b7 29acaf9b5eaa97b0 b9f6917cc3e707eb" + "43a7e3ecf7adb52d ce3fc73d3dd2d860 862348e0313ec4ca 7cff64c9b6d3de14" + "6b83ac35fabaa2c4 353327e56db1218b b1cf4dca9c73fe88 9302470aca92ecae" + "f7f2456dc2f5380a 7a1346af17970ac2 a42d7487f1a90811 1480d7ac5b8f4404" + "eac4a8bb3a0fa899 c7251c8bc58128de e488b1f850d41c1e 533ade2f210e3f6e" + "de45d49ff6134287 7e72fc4d45c5603e ffe3f4acc8b4ce78 45f0878b108baf94" + "94e9bd18e7c799af c8c94b1b1bbcb1fe 07973446b0084161 bc0f81036f8c3755" + "bef04785d9d87b89 075d92f9d20562e4 7cb8bf658e9c70f8 adea0d29f2042afa" + "ec6da2206f9786a3 8e68b220df028afd 5939687763e470c0 610d8ce1abb3c92e" + "ad114a80bf1a4a10 08f9235262d3da86 055ff6e4c98376c7 212aa582191cc1c0" + "7b443b98fcce9318 acb6ec6475543663 2d14ea5a4a9c8c2b 812933c5a893e733" + "71d2c70b86885a4f 1e4cb29e708186b7 f2389758b59dda1c 5cd89e43d0de02ef" + "f558b03984287abb 29f5fd2f22837d3f 3ab0d23e52462491 e0a0127bd4daac77" + "7f601e562ba7df4a 443fcb000c2f85e7 6c46347ac1882f7a 86e9777d1515b8a7" + "32bf000bc84e004b e4e882b3692a20d8 66d2e15390472e9f d7ee9740300eafbf" + "0b828561e1f93907 a5119d6af0cdc982 eea9fdf1e940a0f7 4e556e613f3c15d5" + "aaa4d39a70cfaa2d dbb03b2240bfbf94 49d8a427078a584e aa1b909b97064531" + "b01797e48f2fcf4f fdc1b65aa9f49888 20ce2e6ed671e3ca c854ebe0da73a8a8" + "6e586eecc327a0bf 139c248afee28282 c440613a521a37eb 8ecdc229621e9240" + "eb8eaeac8b4aae97 4be6f11d70fc7509 0f3ee4564c113b20 14bd4ed820d436e1" + "666ef9d6b0569644 b0f01604357dfff5 8a686905636badc0 4b6f16545041aed7" + "3e7e166fe553b2c6 beb6325598ef2cff 23d903d90e8554e1 61a73bbc85d5f1ad" + "95f3df0fa227b78f a526b3d21ed6b374 4df956a9cd45f006 276a280c3540e4ce" + "b58bfa59acc42f64 81f68ebe0e390fdb 6f35c4e6fb5f6548 f6dc7f03558534fa" + "4079344d1c26eb37 7810924dc26e0797 3b9ea5277a99e58b 8594c52b6199d3a2" + "f3109d1e120df14f 916357e642d47f5c 2f7d8546ec485b34 ad87e1796de4b451" + "cdedd4408ba91350 0b91c7e697192dc4 8569e443a3fe945a 7396e36fe7b2cd23" + "466b462315ff7e73 d1c8be52c9e79e39 c7423aea069d3ee1 19320575f213fdad" + "0cfb1307c6f7b32f 5e9949363073f4c1 47ae298535a0944a 97dbf43d8f4ed7ee" + "f02a7377931b71c8 6421728b7dfc2d5e cd2e6cd3932219c2 42ee4b7a27693703" + "0340b47f4ff1ea62 5e19df8695388f69 ba96c8e7d4097183 39fd65e6ff7b5167" + "69617a36f4b6f9e4 c56402119e53d006 03b67e4b023689af 37e61aa4569c4051" + "7b877e15bbcdeb2c 09d60895f9299bdd 53d1f1a2b7338f22 ffb3fdb8869d6629" + "bd030e4b32764f90 62e110ff9b6e682b 04f765e13982d752 22933af5e07d0615" + "7e9b5a0727cb25d1 9b6c48e9a20e6b33 d8dc217769b9154e 0ddf7cdef6efc998" + "f9765e62ee5df89d ceeb3865a8a857fc 73b5bda193c0ed37 33d3db379582ab25" + "79898a99d0ba8c8d 4b718fd52a70ea62 f3dc6b3bd39c1b27 a7fa660de83e64f2" + "f94bcd4ce60c555f 63b0698f83782e36 a29ef86a2ef2b811 e2e1b5526ea90de0" + "b0d0320ecf209579 1da1a318562e324a 430084468d583d9d ba21ebbc79a80d36" + "e93bcf2cd8b9018a a2f3aacb529dce30 3033598bd4921730 6dcfe285dbae0f26" + "b68f27e761c3da58 056e1f590f406ab3 09cac9e06aa74e5b 127724c0ce198ecd" + "4b0a2ed54dd6bd45 4b57072539330a0a ec211293b957ca8e c0e08ad3cab30773" + "8d72fc130a351681 04f65e1d483103d4 92bf6dbe34347284 d0790e425b657790" + "70bcf301139a0f6a 9f38b138544db5af 5a5175143ed2871b cda4c261f472b877" + "c5a108da9cc87cb6 b8f84d2f3143a86b 8afd2a0b8afca2f7 39a214a2bb625882" + "1e2c605acac65227 0aba7fbe7a756342 c4b329783c8536fe 417baf3e360a4fc2" + "aef068b11c43be9e 9f14899c58a6633a 7b20dc48691d26e6 2fe45e25aea6a5f7" + "814132c9e8792f81 a79a4ac13a0b759c 820013dd775abaa3 b3e6992e9e52bcf2" + "ee4ee6ef65aadcc6 1700896438e47217 4a9eea12b61a720f 5768e56fe2cc2e12" + "965de68024bc235f 90a34bf3867f28c9 888d9ef36d27de3c 9714f2663349f8c8" + "5c521971bca1a98d a63b6378dcd7360c 4d7acca1fe174ece 5b08428768cd4a5a" + "651d9e70fa4cb5be 5e5f3dc619df1e7d cdddf484c43742d9 1a4bcdd09d902ede" + "28066bb1d18cafb6 1a3812a9cb3deb24 4cd9beb6df09dfdc 0b7973e1789dfe5d" + "fd9bfb3c81025dbd cb0f8b002390b1c4 423c4f784f28ca8b 63b90500d47821bc" + "ac5f5176b7c8afdc f5fef9ccfd573f2e 059a4fe3c91678b9 80d675a7150874d3" + "af65ef2ea6a6d65f 2684cbf62a9e20ec a8edb6325762fdec fd4d87e67681cbeb" + "edba2395aca7abb9 aa350ca32ba415ca a8de9415043c08e7 041860a200076916" + "4e8a9a765796e983 984b764fc84b0ca2 bfcabeee0ce1828c 5deb573e8902bc67" + "ee6dab04efcfcf13 7eb35d020a71a947 de5e2ffa64b7e9dd bbca88348f7342a3" + "aa092132f9034e4a 2f8eb2c139be93eb d0812a2ce6617cb7 5e04964c05fb6bac" + "756ce961f9790e5c 669975c8b038e8d6 35f464f07bfb9bc5 8e2688fbe0057d21" + "5b95de585ec9b4ff 1f1f42c5c5bff19f fc8ebbfc9ff27488 dc7e9135579689a6" + "1350219598b8521d e566262ead6822c6 03bb498e06f490b4 a25115f46d8f9c04" + "2c2fd42dc2854ace 7cc3cb3489c226fd 6d9c88c7baf8b17b 22ce5d68d4e12892" + "6898475ebf8ebb53 b43a5c6f32a7f074 416423027ba27ae1 c99bc3b5e3f9f5d9" + "f9e0bd83cdecf949 bc97d04d73f5fb3d b778a82d21402f65 f03623ee7496c783" + "c77297057c135a3e 39dd8b425952f15f c4208c7d4128608f 4182c8202c717853" + "cdeb6f4f77c4cfdb d05d622918ac33dc 5d15600338d34d6c 71be25b40145d171" + "7f576142daa51f31 503a7c4eab101edb 11c220ca400c8ac9 9ef6207c632a9a2a" + "ba5dae4b41540a2a 95899bfa4caf20b4 01361429cdedb990 7afd2135491e4b7e" + "a47b64b2419eec34 e22391667842d56f 15e26d273a08f4cc f48126cc1748c92b" + "47d0fa42ef5d0eb0 038dec4bdf81bf39 e168b577db0f6ce9 4553938de6a1e7af" + "381821a4c369429d 70fb0f4dedef4e55 099471dcb0fbe7df 443508913a5aefc6" + "3869206335a7b188 56145d5ad6225bd0 60916f21b766773e f92c55be896b50f8" + "aaf282b43ded8440 e6784aa62314fcf4 20a9a8e473cd1f5e a7a29ca9e3861724" + "26e3927b7db0ae40 9049a4c21a5c7725 90f15e794f231e5b 8d7514363052b3f5" + "45f055fab47a4de5 812c826f543a533e 1b29e35ef8ba9851 3f9f9e04b1b0fe6e" + "49c46af6c41fae85 02ab8beeb775c92d 85ce1f32bcb46032 541b6a99ce75bb95" + "b1e6715f2f767884 7c0870506e7b1ed9 5f54271683de11eb 0566375ed98f3792" + "b2d0694ce2a8d1b2 16f6e6eca2f288dd 63651de7d28da1ca de1b2ce691c14708" + "0c6c16c99b5ea5a6 b2bc88cd25ba438d c9e33b6456f8bb6e 7dc53411e6ae3d3f" + "f4bc4b2294086b08 da2e94427f1fa36a f98c69654b423869 4e0633f9cdf3df81" + "6f5ef5dca5d895c2 756dcbf498ca02bf 5328dcbdefa7bc04 6631cb6fff68c7f5" + "b113b2ca90c0cfd1 7ed18187f79aad0f d920a1a0f593981c 13360733f9a7b63d" + "d6dce0831fb7a59b 9a621e829b72b513 7a986fc40bb31219 718880d4e8f3dcca" + "72347a22eeeff333 fb32b6b4ab65262e 11ffe64dd87bc138 6352bbf05ea058fb" + "797b39db60eac203 2911a26779410a8a 267bb1f674ec8a4c f419fc00c6fc10ba" + "4eb818e463eff790 0d9242fb76400468 46ff3de6d090ec09 55ee43386783cffb" + "60241e906addf8ae cfed1070040be90e ab174a7844931ad6 546ddb50d45bd998" + "00e9170fe860c6f3 22ddf623147dec86 1dfef62642a99971 d2066567a16ef36a" + "843edd16275767ed d971f79307b50fd0 9381daf0c2996f69 92f0f33104c4e320" + "5e33df46b0548660 5770264f41a7169d ad04398ff18abb32 e273c2588b12bda2" + "a7ff5a5b95c6099b d7474f43a92de26e f0a03fc51959a52c e653592f5c904782" + "1e488c33bebf28a3 56479a5b2683da63 acb3c940be37ce34 b705972f2ec7de94" + "463064209898fdfb 547e82adca0147b4 d4fac25a975b68c4 711f41e31e981281" + "af1c933e13a4185a 8223ef7ea46284c9 c5edbd15c92f58dc f6b9d12137f40cd0" + "21af47bb5ecf49e4 11c55750f59e4d18 daba15971b39538c 113fad64c2763203" + "2e6c40a8640ce610 7f72cad30e8eb1c8 ebe0f799f80c073b 8d901518d3677bc2" + "3b03debfedbc96cc 246973dd15d49f24 ccf8e5aecf480fa3 3521513b1e58bf3c" + "a43dfe7908729cf3 5d728b90b45879d6 db9a0c6f9186af19 00f7205f33a90956" + "bfca4f386b88f702 991914b639dcc25c 8868da385ce06687 a52141f8ae7f76dc" + "87f9f75d49b55548 4a796ea4ca33152c 865650e60e073034 1f2f8a3181256e4b" + "68e3943c2c563047 d9f33583fba05fd6 45c68d4c7b80dd0c 33c57f416ff9f43e" + "3ea7ce20f38374c3 fa40d805c9b9399f 51664c76fcd502e8 0410d53f1991f8d6" + "c4d98bd7d01cf288 81a4c55d12781cd8 d918ecc341f1c011 43a2b1a48d101f1f" + "2c307b6cdf80c645 62f3128ba30bf025 95bb934c080cfb83 c3d9dc1ccb8ee12a" + "150efadeb21a558c cd0c94f606463405 3c84de6bc30aa171 e91437d76b9f73f3" + "ea2744df997c35ad 50f68876de350b3e 18029409573b6726 0032529820a69fb0" + "85c2199398b72fec 18d0598be1f1190d 7c8311ebbbd770db 7202b2a76acf8f4c" + "409a253dbd1a3662 8f90dc62d737ad82 cbe22d208638a681 ca9a7f17e95a2d1e" + "145196c319d10c53 de7dfb7eca357840 7c0d907c1e6a8fe8 82e195b9f86fa8b6" + "c21633033dad6b62 ef0ec45b96ced9e1 a73f7f31d7e03553 9b5247d24c65ba1c" + "af506a8b1e0df1d2 57816e3249731940 935a88a7f00173b5 058ad62cf8c9be81" + "883e63e2bcd28409 26424c77e47d4420 398811d787c52adb 01db8319e935b80c" + "2ce3d3d9c21270aa e73b331fda5b5527 3719dc58a0acd85d 72f36c4cbc2c141e" + "a4d8b17a14824d8b 602a5719f4908fda 04442229adad582e 9eef2690e7a74518" + "5753787a865a2d57 5cc22b4d5b8bca71 6e1318bec3087b54 89f0e1600e58c5e5" + "8e908d70db59612a fd600d5168b572fa 137dfbb5358f6aab 025dbc6b7c0bd37a" + "a094d8343ccc060e eafcdc010cdb2768 7a16cc5cc5b96944 5492f9bdbf4fd18d" + "5caceff19439bd5e e65d4fe0505fe05b eb9dee41c558c53f 99b5386b870afaf6" + "4670a189843dbda0 0d9f5b823012a46f 6258cfdd903bdd6f 941e6c797c4097f9" + "c62b96d875c2f1d9 c29ba54de5058768 831a1430747c5e54 c0f41bc3cb46620f" + "2f21b1bd957f3c29 36e53e8a621c8ac5 40a6f5f4177eddd7 ab84545ff14f9c59" + "7be67c8c5953693f ba43635e8bab6f0a 3282568edd00b746 6b341557322263e3" + "e200832b7d454337 98d64b4c898cd5b2 75e0ec9f349e6bdc 31c8ab282ea4c92e" + "63cbb7daba8657f1 81d2c6ab7b822028 e974a64a8d3b751c a58dac1eca26378e" + "3a871e26ac7797ef 4521ecb5d2095552 faad5b8b41b696c3 aec3b98796e375d6" + "9866c77a5f8f9246 1b03d5d85cd87c42 8e21ef6f6ae9a0e4 41d55511136fcc98" + "82713e1beb6adb83 f6dc5e161fc244c2 e85824e182f74667 86c4f52b81ed5eee" + "6dfbf3efc42a2284 0e52e4ffced6cdcf a1d6713bb671b106 cdb49389725006c0" + "467ee54e51311393 111c8cf5cfab05d6 a437bbb4ba76f98c 80416bcc82359a60" + "1d2ce4c5070fb6cd 1dc46ed342f3f9e8 c6025e7e4a395e6a 76d060028fef9f19" + "50a88be11945281b 7275f95525f79572 d3077753bb302552 591ea9d6c636688c" + "b3ff90038c7b97b0 110007c08e4eff3e 98d7bfb617094c96 42cdd08964e1c8c2" + "9065f8d0b386f1eb ae5d73a5bba76baf 2404d2a836d6eb0a a404154a5dd3042e" + "3fa6b845e991a9e7 98e81dd520482b5c 01c4c997b734bc98 09b456d29a7e1a4d" + "7c4cf16391346bd4 7c20462840aa5781 0b495ddc301c9a56 f9a9ef3558ec4a40" + "33f96efaa68caeac 0b6c66c676dec0b7 8738ec87d57fdfe3 d8c6dc5a282e303e" + "976af0c3ee948256 2e1d9c1112b169a2 5ec6b1c410805da0 d2ade413deb66bef" + "1ce1a44ab8254594 2f1f6d5ad30d2541 6a467c3c7a61613c dd0039ef2433a6bd" + "a882c4e5a9d9d173 d7b19fdbf385864e c2da55f539127968 26a6b2a1e7ca5a0d" + "3254ffa47c419b30 15f8c1ee773bd25c fe44fb7cffaac50f a691633d4cdfd322" + "b9fe79583627eba2 9b83c1fbc2fffd97 fcad6f19f1d963f4 d8c9b593f76c90a0" + "c15e2b04e3a13c49 2cca8348ca7187ae e4702f164af524f4 65b0caa881cdd5e9" + "43ffbec7a5f3df0e 2236e646ba799e63 9237b14c5c412f0f 1afa9d041efa510a" + "082a884f485ad938 08ee926d1ce8eb38 2552ff58b76c1ac2 a4b60545802d5e98" + "ef7e36cc0396a928 7a461dd52e99fe8a 25ae3e2d388bc310 0606d0e8bcba7122" + "f741866430e3ea51 4bf00ff2fb16e9ce d5ab58cee24b8c71 5be8e2c987f06b37" + "fb4fc89e2f9bb90e d7d1a196847b78d4 1ecfe9523f62634b 34f1706e57246008" + "6eb7c99d5b2d17df a9dbf4c333e3decf 53dbe80c8bbcbf2b f66275777508856a" + "5a6b527bde8a05a0 f40b524f86ea5efa 284e54b9c35c9fa6 3e2b730eefba13c3" + "d6acc68609c01b89 c13c538916934150 24271f84bc193f0f 9c8337bc099b53f7" + "00edb48b92acc9b5 eff1eefd87f022ad 7d57de80b8441d13 2393af7f80d3eeec" + "79f90e3ff4b6451e cf3a3b15265873a9 f98eb8ffd30a4ffd 0e6317ceca46ca16" + "23a7ec8729bcb804 4981d1fa251ea2a1 e4647e10a65c7d1b 7facd035f1b7802f" + "5e2229d691655ad6 ce37d918af1f7759 4787594f100a60ce 6a0ec0f214bc596f" + "4f09d29368eb6ef4 efdb98248565a8a7 90b575ef86aa6898 8c33cd98367ee770" + "07423010b3a026c4 4e1956f0d953e3d6 de4ff60e1b0f56b9 460e2be1bfa305e7" + "c4f3f4c292f0b021 36fadc5102c5ff6e 03107c897e21cb42 0a27b5d8b6ea23bd" + "f79c306ec254f274 2699f0165533ca99 54169a9bc9622952 94103dbd1d1a3d8c" + "c52a193ab2d25dad c2ca1bafb21c8402 9f5fe9376eb23810 d935fad2c66791a4" + "13ea77e3412f0b05 057478d9043183e5 d4a903b70fea59c0 a774563fb379e162" + "dd1fd1ff7d49b24e bd724258986faf61 6db3bc0ee988398f aec61d3984fe745f" + "d076cabd2e765280 8886f749d486b047 8c02c47c21ef1fb1 89909d41112e4e13" + "21581886fcc64918 7ffa781ddaae5674 36f4a0de92c83f8b 2c48d7634d4af8af" + "0834bd4fae5bc957 2b06d74780609f6e 4df7477262a7596c 85a0598c4f4a4f61" + "24e9377bcbe08fdb 90a46a8974395459 58c06c21661bf2e3 c3796f9900b03e72" + "221aa304cac54f7e 8372eeddeb03a98a 416104ff41d9493a 292e91a0fc699f59" + "401f485aa1dd08d4 00c52cfc3317bd95 3d2e4bb5382682d0 60d38fe0655b766f" + "9b3f387270e06205 34b79cc2203b46cf 7d26305b665d4e00 4e8fb87e0f2039f2" + "ed95d8ba96be209c 8e990786030c7c16 c314161356fef810 49723fecb8524a5a" + "19ea4a568e0ccad5 04afb30efce7cb37 a0e132e80318f75a 34ef386f70611ae4" + "9302c83781d7b632 e24be3b3ddce08fb 3a3aa310e8891244 76d76f62ae0a57b5" + "d02fe060da05ec63 85a89dee4eb9438d cd7d857aa714348b 1a1152ab79bdcd0b" + "1c1445a51eb302e9 3f3b8ae8f868362e 6bcb85605dcf5990 cbdd1fb35d980643" + "49f66b8dfa284466 6264a9ee90346a0d 6c123b6d1b0162b8 7dcc46dfe66fafd2" + "ede2393b3840a0e5 67bf5d45d38b3907 716ec14143a3f113 dd796780a2feaeab" + "7fee5061bb54b790 eb538a8697fca062 5131f91789ef015d e88091d418837260" + "f0c68b767603296f 3d0806de6fecf3d7 127fd6b31507c65e fb42e5b91d45ed0c" + "0a3830a235d9c53c 89a741a1afabb041 57f356cbd5dbdcdd 22c287d414a76a44" + "88803642c1d3df55 af35361a586ebb0e afc5ab8b48af41e9 d14d6fcd5a2d33b8" + "a4c3258df8b823e6 428600d54a49d4d8 63c0d55d02ab77ac 80da940afc174586" + "7768f29c08d03449 6c40bfa15df8cdcf 045b01777cc626a4 1c1273ff87dbc3a3" + "d0980ef772158e21 6c5142fc2c425327 3789ee114bc1dd0e 87b6ff7d114332c0" + "cc041bcca402c3ca 84fecae50c061692 dbc42de706ad6a5b d3dca9c86821917a" + "b1f2fd6501c1777b db76a66e8cd5cf3b e43839428147a161 50b5a3c60537f43b" + "9f6bb486232e92d7 60bfef25744d13e6 5a52d9625f97006b d1bdf41c0ee1835f" + "33762c6cd97bcc92 e7cc64d3c1c75e32 4519cf0fb9da46db 32099af6979d0ba3" + "8067ca9d0bf011b9 4ae7cf68c19377b0 2ea034b753cb5984 0b27ccabcc2c8056" + "570393be9df5981d 26ab652ff4459229 b02fa35a8e41da66 b7d036a093b08d50" + "14bb73c28376a369 47156908cb019ea5 3abedc86bc72886c 42e7f2cf632a375e" + "2f76983d2bbc5f64 697af115f35a8bdf bd1669dc32ace0ee f603202dcd6cb0c6" + "3a92a981edf60196 bc9ee7995323aa4b dc5e2eeb1ae7caf6 a2af066ab8bf2587" + "b1cf45a3fcfc05fc 9918ccf74c57e0ab f0e19b37acf644e4 cbf1f8a941619fe4" + "0598d356b1d6b9b6 f9638f716fe8a033 ce73a0b1280272ba ede41ff30c8eb15a" + "5e8309f6599a8506 21049ee745f12b26 2e04d1ccae97e6dd 60f4ccdb6da01313" + "ed16c65ff69ba197 d072b35ea31c4695 b0dd0c957334faa9 dd9b92b3a48b7f3e" + "90053ca6e70c59db 4763b8318c7e27a5 9c73eb0b0e98b53e fe7a27379fd4e887" + "4e3661f806fe110f 87f503c7ce705c12 f9c7e0b0b75d4166 06271f9cb85737f9" + "5cc5a739972aa7bf 44bd5f79eb9ddf91 99e869a4adac9456 709b7ffd04123159" + "59a78bf52204c393 c029ddb13ac8effb e808e1b002447334 e3e464a06465d979" + "6d0758a1b2496f85 42dba228f57442e5 17b9deeaffa7eb7e 689abf16c5ee284d" + "1e34dce084ccb593 50ca420ca2dbdb3e d8c384e756760bc9 05f8a61644963ee0" + "c722820cba30d336 84629f5a9856e82e 3c648b4293422f51 f9708f22c6edf4f7" + "d2d2887eec32e871 652f0b6d6dc0b567 6052cd09d80ef7ef f86b0ea1802beb05" + "89bc9f3350031424 23138712ea46d9e5 d44cba2b65543732 bb7a3930bb4ee7d7" + "c23ecc118055b559 9df03ea3281a5f98 36eda2912cc0aae3 166c70d4953205de" + "e4dd89457171c3ea dfcb4ed63c5e92d6 ce38bf00c9f33ae1 16b185e51e3eb665" + "4b55e4a17f584183 2f0f8ef7511f2b08 b2b1aec967544b29 64a20ec3748076b4" + "e8f772119dd47de2 59a14cc6ba578511 4070920c3eca3aaa 35dd4f23db00e733" + "496aed0d09aa11c6 165b8ed0c1639ef9 15ccba3241777c6d 30edbb8decb34311" + "a8ec847fd5475373 1347d45a10a80e69 32edb35e9a2c95b5 9541394cf28b5ad0" + "53e6db854049ed48 cefd5ad1494dfd85 663f88215a5123e4 8bcfebbac76cc0ce" + "a01208c1e907dfd7 b051ae0bc0804a1e 3a42b2b8948ddfa4 1caaac64a3da1c69" + "270a485524846848 fe291531d314197a 8381482e6909844a 69c69740815c9c64" + "6687e4139371ee1c b9a635997a070152 89ff74788e43936a eba2a05340f61625" + "82061f8867ded0d9 1851f7d526a0915c a59ded312ace9bd5 930fe1bf952f127d" + "edccb9b676ed1580 6dd428148989421a 4ffef2306eb0c7d5 ddafb8dbd6ba8cab" + "7f1d73685716cf8f d6d8bf4bbb23b99d 0f2514f56a7f29bd c8568d2eceb314cf" + "5246a0d410704ddd 369fc55053496e28 8f54b922cc0d5253 ffd8f54ccf7d1d79" + "927a9805007ee238 0a9679aa35203d61 d50e7327cbd5d09d 00af0531e4194a4a" + "80608987b185bb5c 0addb2743824dc23 3734c865d95374ab b68d8e2fd7bc6482" + "25ed1dbcc5701088 a24a2505f2e878ff 6a53694b84b331be 213f82204f3698b0" + "a89d2d763e501d8c a2207517e2cd9dcb 02daf804852a1cc2 2091fae7476ddd6f" + "ce95b96b5d21a545 36e4e852262b7247 4b0660ca9c35aa1e 5bc2855600d11448" + "02f8ddb2c9855ba7 749be2f8a90295f0 68f7594f12237958 092a8166eb851a4c" + "73dcd4ad98c65310 53a785323f850edc ac5bd2c6d57c9fa4 e04ea2d62e948ac9" + "ddd93cbddecaa187 e13435420cce4c97 31fbd964dbd620a1 28aaa00ad54e2907" + "751edf3e6608aafa 5fb38743231f88c0 fb9275fd680eab24 fcfde7570d0d0cf7" + "c11bf19eb4be4e77 ba91a7e234b0972c 9657b3632d989404 0d210752d807eb25" + "d5fa4b5f134e58bb ccd164124d564cd4 948c7c5804a6cdc4 e2f529f53ab6c54e" + "ebe94713cdcdb729 f60196e28e896d0f 92bd2a26aac1c47e 2b1796e4bddbe36c" + "96f2d3ac642031c9 a78e362fdb51bd7b 8ac0673dd3cd7f7f 6a636443bbe59821" + "5a000535b8277b95 e8ee0e3eef722da9 c5534024be37f50e 38346bb40801f6e2" + "f1fd8ec4dfc88484 9bcb61076d50f543 28a95e152ef2229b cb2d72beb3c778f2" + "a5af8add8036480f 7434c7ca766e4cca 7253c87cac6c38c8 230907135ef9adba" + "815f069cf369ebee 81e89fae54b94128 cade70570873a2ce 8687d306eab3506d" + "7cba9629604cf2ae 693efc0a6318b22e a5cbd33ddcb7a98c 7fe2beeeb93adfc8" + "eb974e22bc9b3988 27939e007820f848 4ac2d2438120757d 9984bb24ae349e39" + "2db4536d06441da0 f319df609cc1179b 80c8d82c13bd740d 9205812bc447a668" + "b45a6538bfa1b618 01ad2bcb8cecd031 08478ff44b1b3ba3 2a02f3ce2e4bcaba" + "2e73d43e60a1ab51 21da0ce5bea16fbf 9e4775883fbaeb40 fd0382e5f54c7195" + "6ae8e7d0a48c3bff b92e5b7de9d4e33f f0cb858529b56fcf aa750077d214e5e7" + "417bcd9e4d3e2ce4 8b5ba8ddd8e04b0b c894124e591db44a 7eb8d3b17aa80421" + "358cc7ab17782960 cb1de8ef4947232d 151d6f15a45effd6 c1aa8934d235ebff" + "43ac35f42fff5d88 ebe053ee39bedd04 54334ad1850290f7 ce840196833c2297" + "7be9b3aba318d52e fed5618cebdd4ffb 7a5b2f634f7b3711 c516166e636efde4" + "1541fc58a42317b1 8da16e9780ddbb7a e08f01d3f7dfd2a1 23d99f8fdd08f93e" + "e76cb43d76110c8f 12d898eb4296b502 872fdd8aaf83622c 29bc9cf5ea979044" + "392e4c0dc81b4d04 5f86c58988143b92 a1ee68152861d162 c118c8124a1d81fb" + "e7ec8ec0ab2a1c2d 6e636b9b6d284ef3 0bd4d0f2bf75cc0e 2aa27ead27276ad6" + "bd5da58d210179c8 991820c307b3ee28 0832aa236dafd0a1 118983581b213cf7" + "2d63bb92510708e3 ac18c947d083cf38 d44a45ad90360858 51d31ac8b7f9ebf2" + "b8b2d6df6ca0871d 8a1a5a4747a0eef5 772f79fb11e3d0bf 4080529c14d133cb" + "1ad8535d63f3a1a9 c466c52f27d287ec 4c32cf3eb5ba19a5 34836810de3c3061" + "ed6c546f7bcbf2a6 6bf8df8f1d8e81b4 44cca8144bfdf61d 52ff3b2652583d96" + "0592cc63c873426b d21edab31bb9f84d 04bc774f4272e446 2fce018c73fcc356" + "bb329a7fb23fb3b5 185014f14df81e6a 670b98778e8f9505 107c6bd3f87e477a" + "bff01a5bcc2c34a2 03155fb2243ce21b 77378ec1b801f8ad 20570f1f7c3421b7" + "4380fed97b2bb74e 8432479a9a33925f 9ec5c92e841a7357 b32690624e9433cb" + "fb705b04f965dc3d 7c230521e7a8a2a4 69eae7ac990d062a 7f4993de3ccd15c6" + "00c8930b96480077 e1028ebff5ab2eb5 08e419e652d5bc22 f1bb85fa3bdeb249" + "460e42a918086a20 cfe6f3ee22d9be98 2d86ef588d92a03c 5dfac374b34234dd" + "bcabc7cb18ea1a6a c9307949d5475535 5018e844757ebfaa 0f1b3c70a8462424" + "c48b1e94e3b692a3 31171d8ba4e7bfab affe4f9078cd0723 b095fd2f0616110f" + "8646045489e7100b 45366b676fdf5f31 2bd11999c4a7dd71 e64c2755dd06a48c" + "dc4f2301ca5a7730 0cb14c2014bc2041 e7434a93d5b2c418 57236a97aa822a79" + "978266302a2d9463 126332b2d0f5445c c23648700adde567 2b4f2f55d72a09c8" + "fd97b66f8d6a2b68 6f5e288c009da8e9 dd9a3c7612a777e2 c4113258950bc17c" + "ed754bf8cb77a9f2 d1fd33d241fa4278 09cef422b5dc1e53 60eab473decdd7dd" + "e262fbe34f0c61a3 5668a89972e15903 24bc21d052e49897 6e562d456ede24f4" + "66f5d1a0cc050b20 26faf20c32efd009 b05665b0698b3e48 2df144aa1aafa114" + "dc0995929b1d15df 594e2c088ecb88cf 50234622efe69ddd 78448efe147cf189" + "f8181fee349a17df a8686d130d5e6fb0 fc14e7a1107aaf9a c82329858e17bd3c" + "de6c217951c7849c 370ffb3e2de92aa2 98ea2326464166b6 d2f4acde7e190622" + "d8ab91cd3c1a57c5 f8106f95e6a02980 b7bff80cccbc953c 982c5c76cec0e92a" + "50e4d9dbd6f4c9e5 5af22555a87e1108 da9493e1733d68d1 24a0806887685850" + "21f45c0c1c861657 625d8334d5a6527a bab1691401a09f4a 5984ae0b26bf76df" + "9bd983981907ea87 da86150ca0044e00 cd8b78a31cf4f775 e9b698156a2ea874" + "a855b5e78d8bbc22 df80025fcffce42e d1226d15ad6542f9 154b1abb9a719020" + "2129fe4e75c97f3c 015f037a11a50146 9d7d6ffd1308012d 822eee54eda9b1a2" + "39363ce4d4ac3160 78dabbcec96e2cde ce4e7dcd36973336 f84eb4cefd2d9c36" + "d2a7ee922d424602 44b18661c6645db6 ea5ad18a693ff704 07e47e63bdc6fab2" + "b6b9bcf17e66eab4 5815f7cc49df86c6 95ba6194fff7a21a e666049d481d7f09" + "616cffa95483e792 28ccd6dd5eab65f6 937c4f4882bd6dcb 8f23d59db737bb75" + "c69521cbd8c823ba aa967c24c9c075fb fa6c5f23d109a88f 0e4bfb3f4a168a00" + "39c7b4dd2366a7e7 24aea80088e7f426 8ec05f44db8c6ab1 2dcb0579f564e78b" + "9631b75ca5b7d5e3 d07ce04dc1137188 98473c5025374cd9 6e1005e52aa10d25" + "0fb67e0db5286a09 b27c4daddeb00044 0751a1f2edf5b22f b6e9268ed0e662d6" + "b8bc853dfc3b31c5 58638a6be19f9b03 34ca8d825c44c326 43220aeb512d49b6" + "8db91a7f0b65e2be 8e6da818679e4d46 121754eaf3ff5fa8 7d28510536dda9d4" + "755ddbd324337a8f 58bcc4b7c40f033c eca67487207b230f a5d8f2b5904e805f" + "c462db7709d92c3f b82cc42f8bd99511 ddcfb69992118172 28fa16e6191b6596" + "b8f210152bebdb3c cfee9cce3f78b9b1 11a6132d7e8e6ce2 0052cf3546b614f4" + "e6a713bac09b0351 83ae11d86460c51a 5d8f408a2b291f3c 036e85b6033c4ec3" + "42d1460279d19cfc efb645c743ff3b9f d631618da013abe2 4ed77b38ad4791e9" + "206cc3f31c6fdfb9 f2ed2228aee0a05f e00a43e1d1048ef7 ff2f2a93f533df70" + "4b993b15673fbd93 f747429822f809bb cd3e0df4d3fa10b8 f40feb4648fcf6d0" + "f695fd9a2d857888 7bdd2ff2a3a5da2a 607f6b201d5615d3 0d8ebc1fbcb058ef" + "a88e562543e861a9 c10b4abd7d42374a ac946abcce92ef4b 75b095879f418b3d" + "e8a12c61ec6a3bf8 cf9e8c4d3a3aa63c 36866f38b5b42b42 dbffd5ad6b4a566b" + "bac3044cd140bfbb 9eb6cf6229c192cb d62d6f078b6221a6 278df3c018a41d0b" + "2e1317f71f8ae001 c18d802db638e873 6ce225bf6f0ae169 3c7d8b27c1350a88" + "80ac7f1c09b319ab c7a0217802fa8824 f8b9d38aec542570 c2451f742f8f51aa" + "98afcf08455d6765 5ce1ceed690a71a4 7f3bb14ea9b4c998 c0f76c3c637b8cf8" + "72196aaca7d2e9ea 1c9f81394af9e3cd 0509149383f64d30 31bc50240211ac62" + "9c722ccc2e7c4b6f 6f0b94d84b4a0eb3 9984172a7381e50b 38b89945bceff0a3" + "604d875a6ba2e836 defb9b2ac716c646 e28497b4e216fd59 f5830aca13349684" + "8eb3703ff06f2c1e d4830a86eaf73770 873ae9d2849ba615 eb46d7b0ee036f2d")); }