From cfe43c6ff8361f3d05722fdb4450481ccd35f1a4 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 9 Feb 2016 17:58:45 -0300 Subject: [PATCH] test --- crypto777/libsecp256k1.c | 51 + crypto777/secp256k1/NativeSecp256k1.java | 60 + crypto777/secp256k1/basic-config.h | 32 + crypto777/secp256k1/bench.h | 56 + crypto777/secp256k1/bench_ecdh.c | 51 + crypto777/secp256k1/bench_internal.c | 331 +++ crypto777/secp256k1/bench_rangeproof.c | 65 + crypto777/secp256k1/bench_recover.c | 55 + crypto777/secp256k1/bench_schnorr_verify.c | 69 + crypto777/secp256k1/bench_sign.c | 52 + crypto777/secp256k1/bench_verify.c | 63 + crypto777/secp256k1/ecdsa.h | 20 + crypto777/secp256k1/ecdsa_impl.h | 264 ++ crypto777/secp256k1/eckey.h | 26 + crypto777/secp256k1/eckey_impl.h | 202 ++ crypto777/secp256k1/ecmult.h | 31 + crypto777/secp256k1/ecmult_const.h | 15 + crypto777/secp256k1/ecmult_const_impl.h | 258 ++ crypto777/secp256k1/ecmult_gen.h | 43 + crypto777/secp256k1/ecmult_gen_impl.h | 205 ++ crypto777/secp256k1/ecmult_impl.h | 389 +++ crypto777/secp256k1/field.h | 119 + crypto777/secp256k1/field_10x26.h | 47 + crypto777/secp256k1/field_10x26_impl.h | 1138 ++++++++ crypto777/secp256k1/field_5x52.h | 47 + crypto777/secp256k1/field_5x52_asm_impl.h | 502 ++++ crypto777/secp256k1/field_5x52_impl.h | 456 +++ crypto777/secp256k1/field_5x52_int128_impl.h | 277 ++ crypto777/secp256k1/field_impl.h | 271 ++ crypto777/secp256k1/gen_context.c | 74 + crypto777/secp256k1/group.h | 141 + crypto777/secp256k1/group_impl.h | 634 ++++ crypto777/secp256k1/hash.h | 41 + crypto777/secp256k1/hash_impl.h | 283 ++ crypto777/secp256k1/libsecp256k1-config.h | 152 + .../modules/ecdh/Makefile.am.include | 9 + crypto777/secp256k1/modules/ecdh/main_impl.h | 53 + crypto777/secp256k1/modules/ecdh/tests_impl.h | 75 + .../modules/rangeproof/Makefile.am.include | 15 + .../secp256k1/modules/rangeproof/borromean.h | 24 + .../modules/rangeproof/borromean_impl.h | 201 ++ .../secp256k1/modules/rangeproof/main_impl.h | 176 ++ .../secp256k1/modules/rangeproof/pedersen.h | 34 + .../modules/rangeproof/pedersen_impl.h | 139 + .../secp256k1/modules/rangeproof/rangeproof.h | 31 + .../modules/rangeproof/rangeproof_impl.h | 735 +++++ .../secp256k1/modules/rangeproof/tests_impl.h | 279 ++ .../modules/schnorr/Makefile.am.include | 11 + .../secp256k1/modules/schnorr/main_impl.h | 163 ++ crypto777/secp256k1/modules/schnorr/schnorr.h | 20 + .../secp256k1/modules/schnorr/schnorr_impl.h | 207 ++ .../secp256k1/modules/schnorr/tests_impl.h | 173 ++ crypto777/secp256k1/num.h | 68 + crypto777/secp256k1/num_gmp.h | 20 + crypto777/secp256k1/num_gmp_impl.h | 260 ++ crypto777/secp256k1/num_impl.h | 24 + .../secp256k1/org_bitcoin_NativeSecp256k1.c | 23 + .../secp256k1/org_bitcoin_NativeSecp256k1.h | 21 + crypto777/secp256k1/scalar.h | 105 + crypto777/secp256k1/scalar_4x64.h | 19 + crypto777/secp256k1/scalar_4x64_impl.h | 947 ++++++ crypto777/secp256k1/scalar_8x32.h | 19 + crypto777/secp256k1/scalar_8x32_impl.h | 721 +++++ crypto777/secp256k1/scalar_impl.h | 337 +++ crypto777/secp256k1/secp256k1.c | 594 ++++ crypto777/secp256k1/secp256k1.h | 453 +++ crypto777/secp256k1/secp256k1_ecdh.h | 30 + crypto777/secp256k1/secp256k1_rangeproof.h | 186 ++ crypto777/secp256k1/secp256k1_schnorr.h | 173 ++ crypto777/secp256k1/testrand.h | 31 + crypto777/secp256k1/testrand_impl.h | 77 + crypto777/secp256k1/tests.c | 2588 +++++++++++++++++ crypto777/secp256k1/util.h | 133 + crypto777/tools/common.mk | 9 +- iguana/favicon.ico | Bin 0 -> 2550 bytes iguana/help/mime.json | 1020 +++++++ iguana/iguana_rpc.c | 43 +- iguana/main.c | 7 +- iguana/pnacl/Release/iguana.nmf | 12 - iguana/pnacl/Release/iguana.pexe | Bin 2762664 -> 0 bytes iguana/swaps/iguana_BTCswap.c | 6 +- iguana/tools/common.mk | 9 +- iguana/tools/getos.pyc | Bin 0 -> 8275 bytes 83 files changed, 16764 insertions(+), 36 deletions(-) create mode 100755 crypto777/libsecp256k1.c create mode 100644 crypto777/secp256k1/NativeSecp256k1.java create mode 100644 crypto777/secp256k1/basic-config.h create mode 100644 crypto777/secp256k1/bench.h create mode 100644 crypto777/secp256k1/bench_ecdh.c create mode 100644 crypto777/secp256k1/bench_internal.c create mode 100644 crypto777/secp256k1/bench_rangeproof.c create mode 100644 crypto777/secp256k1/bench_recover.c create mode 100644 crypto777/secp256k1/bench_schnorr_verify.c create mode 100644 crypto777/secp256k1/bench_sign.c create mode 100644 crypto777/secp256k1/bench_verify.c create mode 100644 crypto777/secp256k1/ecdsa.h create mode 100644 crypto777/secp256k1/ecdsa_impl.h create mode 100644 crypto777/secp256k1/eckey.h create mode 100644 crypto777/secp256k1/eckey_impl.h create mode 100644 crypto777/secp256k1/ecmult.h create mode 100644 crypto777/secp256k1/ecmult_const.h create mode 100644 crypto777/secp256k1/ecmult_const_impl.h create mode 100644 crypto777/secp256k1/ecmult_gen.h create mode 100644 crypto777/secp256k1/ecmult_gen_impl.h create mode 100644 crypto777/secp256k1/ecmult_impl.h create mode 100644 crypto777/secp256k1/field.h create mode 100644 crypto777/secp256k1/field_10x26.h create mode 100644 crypto777/secp256k1/field_10x26_impl.h create mode 100644 crypto777/secp256k1/field_5x52.h create mode 100644 crypto777/secp256k1/field_5x52_asm_impl.h create mode 100644 crypto777/secp256k1/field_5x52_impl.h create mode 100644 crypto777/secp256k1/field_5x52_int128_impl.h create mode 100644 crypto777/secp256k1/field_impl.h create mode 100644 crypto777/secp256k1/gen_context.c create mode 100644 crypto777/secp256k1/group.h create mode 100644 crypto777/secp256k1/group_impl.h create mode 100644 crypto777/secp256k1/hash.h create mode 100644 crypto777/secp256k1/hash_impl.h create mode 100644 crypto777/secp256k1/libsecp256k1-config.h create mode 100644 crypto777/secp256k1/modules/ecdh/Makefile.am.include create mode 100644 crypto777/secp256k1/modules/ecdh/main_impl.h create mode 100644 crypto777/secp256k1/modules/ecdh/tests_impl.h create mode 100644 crypto777/secp256k1/modules/rangeproof/Makefile.am.include create mode 100644 crypto777/secp256k1/modules/rangeproof/borromean.h create mode 100644 crypto777/secp256k1/modules/rangeproof/borromean_impl.h create mode 100644 crypto777/secp256k1/modules/rangeproof/main_impl.h create mode 100644 crypto777/secp256k1/modules/rangeproof/pedersen.h create mode 100644 crypto777/secp256k1/modules/rangeproof/pedersen_impl.h create mode 100644 crypto777/secp256k1/modules/rangeproof/rangeproof.h create mode 100644 crypto777/secp256k1/modules/rangeproof/rangeproof_impl.h create mode 100644 crypto777/secp256k1/modules/rangeproof/tests_impl.h create mode 100644 crypto777/secp256k1/modules/schnorr/Makefile.am.include create mode 100644 crypto777/secp256k1/modules/schnorr/main_impl.h create mode 100644 crypto777/secp256k1/modules/schnorr/schnorr.h create mode 100644 crypto777/secp256k1/modules/schnorr/schnorr_impl.h create mode 100644 crypto777/secp256k1/modules/schnorr/tests_impl.h create mode 100644 crypto777/secp256k1/num.h create mode 100644 crypto777/secp256k1/num_gmp.h create mode 100644 crypto777/secp256k1/num_gmp_impl.h create mode 100644 crypto777/secp256k1/num_impl.h create mode 100644 crypto777/secp256k1/org_bitcoin_NativeSecp256k1.c create mode 100644 crypto777/secp256k1/org_bitcoin_NativeSecp256k1.h create mode 100644 crypto777/secp256k1/scalar.h create mode 100644 crypto777/secp256k1/scalar_4x64.h create mode 100644 crypto777/secp256k1/scalar_4x64_impl.h create mode 100644 crypto777/secp256k1/scalar_8x32.h create mode 100644 crypto777/secp256k1/scalar_8x32_impl.h create mode 100644 crypto777/secp256k1/scalar_impl.h create mode 100644 crypto777/secp256k1/secp256k1.c create mode 100644 crypto777/secp256k1/secp256k1.h create mode 100644 crypto777/secp256k1/secp256k1_ecdh.h create mode 100644 crypto777/secp256k1/secp256k1_rangeproof.h create mode 100644 crypto777/secp256k1/secp256k1_schnorr.h create mode 100644 crypto777/secp256k1/testrand.h create mode 100644 crypto777/secp256k1/testrand_impl.h create mode 100644 crypto777/secp256k1/tests.c create mode 100644 crypto777/secp256k1/util.h create mode 100755 iguana/favicon.ico create mode 100644 iguana/help/mime.json delete mode 100644 iguana/pnacl/Release/iguana.nmf delete mode 100644 iguana/pnacl/Release/iguana.pexe create mode 100644 iguana/tools/getos.pyc diff --git a/crypto777/libsecp256k1.c b/crypto777/libsecp256k1.c new file mode 100755 index 000000000..13f07b623 --- /dev/null +++ b/crypto777/libsecp256k1.c @@ -0,0 +1,51 @@ +#define USE_BASIC_CONFIG 1 +#define USE_NUM_GMP 1 +#define USE_FIELD_10X26 1 + +#define USE_NUM_NONE 1 +#define USE_FIELD_INV_BUILTIN 1 +#define USE_SCALAR_INV_BUILTIN 1 +#include "secp256k1/libsecp256k1-config.h" + +#include "secp256k1/secp256k1.h" + +#include "secp256k1/util.h" +#include "secp256k1/scalar.h" +#include "secp256k1/scalar_4x64.h" +#include "secp256k1/scalar_8x32.h" +#include "secp256k1/scalar_impl.h" +#include "secp256k1/scalar_4x64_impl.h" +#include "secp256k1/scalar_8x32_impl.h" +#include "secp256k1/group.h" +#include "secp256k1/group_impl.h" +#include "secp256k1/num_gmp.h" +#include "secp256k1/num_gmp_impl.h" +#include "secp256k1/ecdsa.h" +#include "secp256k1/ecdsa_impl.h" +#include "secp256k1/eckey.h" +#include "secp256k1/eckey_impl.h" +#include "secp256k1/ecmult.h" +#include "secp256k1/ecmult_impl.h" +#include "secp256k1/ecmult_const.h" +#include "secp256k1/ecmult_const_impl.h" +#include "secp256k1/ecmult_gen.h" +#include "secp256k1/ecmult_gen_impl.h" +#include "secp256k1/num.h" +#include "secp256k1/num_impl.h" +#include "secp256k1/field_10x26.h" +#include "secp256k1/field_10x26_impl.h" +#include "secp256k1/field_5x52.h" +#include "secp256k1/field_5x52_impl.h" +#include "secp256k1/field_5x52_int128_impl.h" +#include "secp256k1/field_5x52_asm_impl.h" +#include "secp256k1/java/org_bitcoin_NativeSecp256k1.h" +#include "secp256k1/testrand.h" +#include "secp256k1/testrand_impl.h" +#include "secp256k1/hash.h" +#include "secp256k1/hash_impl.h" +#include "secp256k1/field.h" +#include "secp256k1/field_impl.h" +#include "secp256k1/bench.h" + +#include "secp256k1/secp256k1.c" + diff --git a/crypto777/secp256k1/NativeSecp256k1.java b/crypto777/secp256k1/NativeSecp256k1.java new file mode 100644 index 000000000..90a498eaa --- /dev/null +++ b/crypto777/secp256k1/NativeSecp256k1.java @@ -0,0 +1,60 @@ +package org.bitcoin; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +import com.google.common.base.Preconditions; + + +/** + * This class holds native methods to handle ECDSA verification. + * You can find an example library that can be used for this at + * https://github.com/sipa/secp256k1 + */ +public class NativeSecp256k1 { + public static final boolean enabled; + static { + boolean isEnabled = true; + try { + System.loadLibrary("javasecp256k1"); + } catch (UnsatisfiedLinkError e) { + isEnabled = false; + } + enabled = isEnabled; + } + + private static ThreadLocal nativeECDSABuffer = new ThreadLocal(); + /** + * Verifies the given secp256k1 signature in native code. + * Calling when enabled == false is undefined (probably library not loaded) + * + * @param data The data which was signed, must be exactly 32 bytes + * @param signature The signature + * @param pub The public key which did the signing + */ + public static boolean verify(byte[] data, byte[] signature, byte[] pub) { + Preconditions.checkArgument(data.length == 32 && signature.length <= 520 && pub.length <= 520); + + ByteBuffer byteBuff = nativeECDSABuffer.get(); + if (byteBuff == null) { + byteBuff = ByteBuffer.allocateDirect(32 + 8 + 520 + 520); + byteBuff.order(ByteOrder.nativeOrder()); + nativeECDSABuffer.set(byteBuff); + } + byteBuff.rewind(); + byteBuff.put(data); + byteBuff.putInt(signature.length); + byteBuff.putInt(pub.length); + byteBuff.put(signature); + byteBuff.put(pub); + return secp256k1_ecdsa_verify(byteBuff) == 1; + } + + /** + * @param byteBuff signature format is byte[32] data, + * native-endian int signatureLength, native-endian int pubkeyLength, + * byte[signatureLength] signature, byte[pubkeyLength] pub + * @returns 1 for valid signature, anything else for invalid + */ + private static native int secp256k1_ecdsa_verify(ByteBuffer byteBuff); +} diff --git a/crypto777/secp256k1/basic-config.h b/crypto777/secp256k1/basic-config.h new file mode 100644 index 000000000..c4c16eb7c --- /dev/null +++ b/crypto777/secp256k1/basic-config.h @@ -0,0 +1,32 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_BASIC_CONFIG_ +#define _SECP256K1_BASIC_CONFIG_ + +#ifdef USE_BASIC_CONFIG + +#undef USE_ASM_X86_64 +#undef USE_ENDOMORPHISM +#undef USE_FIELD_10X26 +#undef USE_FIELD_5X52 +#undef USE_FIELD_INV_BUILTIN +#undef USE_FIELD_INV_NUM +#undef USE_NUM_GMP +#undef USE_NUM_NONE +#undef USE_SCALAR_4X64 +#undef USE_SCALAR_8X32 +#undef USE_SCALAR_INV_BUILTIN +#undef USE_SCALAR_INV_NUM + +#define USE_NUM_NONE 1 +#define USE_FIELD_INV_BUILTIN 1 +#define USE_SCALAR_INV_BUILTIN 1 +#define USE_FIELD_10X26 1 +#define USE_SCALAR_8X32 1 + +#endif // USE_BASIC_CONFIG +#endif // _SECP256K1_BASIC_CONFIG_ diff --git a/crypto777/secp256k1/bench.h b/crypto777/secp256k1/bench.h new file mode 100644 index 000000000..db5f68cee --- /dev/null +++ b/crypto777/secp256k1/bench.h @@ -0,0 +1,56 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_BENCH_H_ +#define _SECP256K1_BENCH_H_ + +#include +#include +#include "sys/time.h" + +static double gettimedouble(void) { + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_usec * 0.000001 + tv.tv_sec; +} + +void print_number(double x) { + double y = x; + int c = 0; + if (y < 0.0) y = -y; + while (y < 100.0) { + y *= 10.0; + c++; + } + printf("%.*f", c, x); +} + +void run_benchmark(char *name, void (*benchmark)(void*), void (*setup)(void*), void (*teardown)(void*), void* data, int count, int iter) { + int i; + double min = HUGE_VAL; + double sum = 0.0; + double max = 0.0; + for (i = 0; i < count; i++) { + double begin, total; + if (setup) setup(data); + begin = gettimedouble(); + benchmark(data); + total = gettimedouble() - begin; + if (teardown) teardown(data); + if (total < min) min = total; + if (total > max) max = total; + sum += total; + } + printf("%s: min ", name); + print_number(min * 1000000.0 / iter); + printf("us / avg "); + print_number((sum / count) * 1000000.0 / iter); + printf("us / max "); + print_number(max * 1000000.0 / iter); + printf("us\n"); +} + +#endif diff --git a/crypto777/secp256k1/bench_ecdh.c b/crypto777/secp256k1/bench_ecdh.c new file mode 100644 index 000000000..e28035a26 --- /dev/null +++ b/crypto777/secp256k1/bench_ecdh.c @@ -0,0 +1,51 @@ +/********************************************************************** + * Copyright (c) 2015 Pieter Wuille, Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include + +#include "include/secp256k1.h" +#include "include/secp256k1_ecdh.h" +#include "util.h" +#include "bench.h" + +typedef struct { + secp256k1_context_t *ctx; + secp256k1_pubkey_t point; + unsigned char scalar[32]; +} bench_ecdh_t; + +static void bench_ecdh_setup(void* arg) { + int i; + bench_ecdh_t *data = (bench_ecdh_t*)arg; + const unsigned char point[] = { + 0x03, + 0x54, 0x94, 0xc1, 0x5d, 0x32, 0x09, 0x97, 0x06, + 0xc2, 0x39, 0x5f, 0x94, 0x34, 0x87, 0x45, 0xfd, + 0x75, 0x7c, 0xe3, 0x0e, 0x4e, 0x8c, 0x90, 0xfb, + 0xa2, 0xba, 0xd1, 0x84, 0xf8, 0x83, 0xc6, 0x9f + }; + + data->ctx = secp256k1_context_create(0); + for (i = 0; i < 32; i++) data->scalar[i] = i + 1; + CHECK(secp256k1_ec_pubkey_parse(data->ctx, &data->point, point, sizeof(point)) == 1); +} + +static void bench_ecdh(void* arg) { + int i; + unsigned char res[32]; + bench_ecdh_t *data = (bench_ecdh_t*)arg; + + for (i = 0; i < 20000; i++) { + CHECK(secp256k1_ecdh(data->ctx, res, &data->point, data->scalar) == 1); + } +} + +int main(void) { + bench_ecdh_t data; + + run_benchmark("ecdh", bench_ecdh, bench_ecdh_setup, NULL, &data, 10, 20000); + return 0; +} diff --git a/crypto777/secp256k1/bench_internal.c b/crypto777/secp256k1/bench_internal.c new file mode 100644 index 000000000..1a06e9441 --- /dev/null +++ b/crypto777/secp256k1/bench_internal.c @@ -0,0 +1,331 @@ +/********************************************************************** + * Copyright (c) 2014-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ +#include + +#include "include/secp256k1.h" + +#include "util.h" +#include "hash_impl.h" +#include "num_impl.h" +#include "field_impl.h" +#include "group_impl.h" +#include "scalar_impl.h" +#include "ecmult_const_impl.h" +#include "ecmult_impl.h" +#include "bench.h" + +typedef struct { + secp256k1_scalar_t scalar_x, scalar_y; + secp256k1_fe_t fe_x, fe_y; + secp256k1_ge_t ge_x, ge_y; + secp256k1_gej_t gej_x, gej_y; + unsigned char data[64]; + int wnaf[256]; +} bench_inv_t; + +void bench_setup(void* arg) { + bench_inv_t *data = (bench_inv_t*)arg; + + static const unsigned char init_x[32] = { + 0x02, 0x03, 0x05, 0x07, 0x0b, 0x0d, 0x11, 0x13, + 0x17, 0x1d, 0x1f, 0x25, 0x29, 0x2b, 0x2f, 0x35, + 0x3b, 0x3d, 0x43, 0x47, 0x49, 0x4f, 0x53, 0x59, + 0x61, 0x65, 0x67, 0x6b, 0x6d, 0x71, 0x7f, 0x83 + }; + + static const unsigned char init_y[32] = { + 0x82, 0x83, 0x85, 0x87, 0x8b, 0x8d, 0x81, 0x83, + 0x97, 0xad, 0xaf, 0xb5, 0xb9, 0xbb, 0xbf, 0xc5, + 0xdb, 0xdd, 0xe3, 0xe7, 0xe9, 0xef, 0xf3, 0xf9, + 0x11, 0x15, 0x17, 0x1b, 0x1d, 0xb1, 0xbf, 0xd3 + }; + + secp256k1_scalar_set_b32(&data->scalar_x, init_x, NULL); + secp256k1_scalar_set_b32(&data->scalar_y, init_y, NULL); + secp256k1_fe_set_b32(&data->fe_x, init_x); + secp256k1_fe_set_b32(&data->fe_y, init_y); + CHECK(secp256k1_ge_set_xo_var(&data->ge_x, &data->fe_x, 0)); + CHECK(secp256k1_ge_set_xo_var(&data->ge_y, &data->fe_y, 1)); + secp256k1_gej_set_ge(&data->gej_x, &data->ge_x); + secp256k1_gej_set_ge(&data->gej_y, &data->ge_y); + memcpy(data->data, init_x, 32); + memcpy(data->data + 32, init_y, 32); +} + +void bench_scalar_add(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 2000000; i++) { + secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y); + } +} + +void bench_scalar_negate(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 2000000; i++) { + secp256k1_scalar_negate(&data->scalar_x, &data->scalar_x); + } +} + +void bench_scalar_sqr(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 200000; i++) { + secp256k1_scalar_sqr(&data->scalar_x, &data->scalar_x); + } +} + +void bench_scalar_mul(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 200000; i++) { + secp256k1_scalar_mul(&data->scalar_x, &data->scalar_x, &data->scalar_y); + } +} + +#ifdef USE_ENDOMORPHISM +void bench_scalar_split(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 20000; i++) { + secp256k1_scalar_t l, r; + secp256k1_scalar_split_lambda(&l, &r, &data->scalar_x); + secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y); + } +} +#endif + +void bench_scalar_inverse(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 2000; i++) { + secp256k1_scalar_inverse(&data->scalar_x, &data->scalar_x); + secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y); + } +} + +void bench_scalar_inverse_var(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 2000; i++) { + secp256k1_scalar_inverse_var(&data->scalar_x, &data->scalar_x); + secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y); + } +} + +void bench_field_normalize(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 2000000; i++) { + secp256k1_fe_normalize(&data->fe_x); + } +} + +void bench_field_normalize_weak(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 2000000; i++) { + secp256k1_fe_normalize_weak(&data->fe_x); + } +} + +void bench_field_mul(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 200000; i++) { + secp256k1_fe_mul(&data->fe_x, &data->fe_x, &data->fe_y); + } +} + +void bench_field_sqr(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 200000; i++) { + secp256k1_fe_sqr(&data->fe_x, &data->fe_x); + } +} + +void bench_field_inverse(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 20000; i++) { + secp256k1_fe_inv(&data->fe_x, &data->fe_x); + secp256k1_fe_add(&data->fe_x, &data->fe_y); + } +} + +void bench_field_inverse_var(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 20000; i++) { + secp256k1_fe_inv_var(&data->fe_x, &data->fe_x); + secp256k1_fe_add(&data->fe_x, &data->fe_y); + } +} + +void bench_field_sqrt_var(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 20000; i++) { + secp256k1_fe_sqrt_var(&data->fe_x, &data->fe_x); + secp256k1_fe_add(&data->fe_x, &data->fe_y); + } +} + +void bench_group_double_var(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 200000; i++) { + secp256k1_gej_double_var(&data->gej_x, &data->gej_x, NULL); + } +} + +void bench_group_add_var(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 200000; i++) { + secp256k1_gej_add_var(&data->gej_x, &data->gej_x, &data->gej_y, NULL); + } +} + +void bench_group_add_affine(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 200000; i++) { + secp256k1_gej_add_ge(&data->gej_x, &data->gej_x, &data->ge_y); + } +} + +void bench_group_add_affine_var(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 200000; i++) { + secp256k1_gej_add_ge_var(&data->gej_x, &data->gej_x, &data->ge_y, NULL); + } +} + +void bench_ecmult_wnaf(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 20000; i++) { + secp256k1_ecmult_wnaf(data->wnaf, 256, &data->scalar_x, WINDOW_A); + secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y); + } +} + +void bench_wnaf_const(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + + for (i = 0; i < 20000; i++) { + secp256k1_wnaf_const(data->wnaf, data->scalar_x, WINDOW_A); + secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y); + } +} + + +void bench_sha256(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + secp256k1_sha256_t sha; + + for (i = 0; i < 20000; i++) { + secp256k1_sha256_initialize(&sha); + secp256k1_sha256_write(&sha, data->data, 32); + secp256k1_sha256_finalize(&sha, data->data); + } +} + +void bench_hmac_sha256(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + secp256k1_hmac_sha256_t hmac; + + for (i = 0; i < 20000; i++) { + secp256k1_hmac_sha256_initialize(&hmac, data->data, 32); + secp256k1_hmac_sha256_write(&hmac, data->data, 32); + secp256k1_hmac_sha256_finalize(&hmac, data->data); + } +} + +void bench_rfc6979_hmac_sha256(void* arg) { + int i; + bench_inv_t *data = (bench_inv_t*)arg; + secp256k1_rfc6979_hmac_sha256_t rng; + + for (i = 0; i < 20000; i++) { + secp256k1_rfc6979_hmac_sha256_initialize(&rng, data->data, 64); + secp256k1_rfc6979_hmac_sha256_generate(&rng, data->data, 32); + } +} + + +int have_flag(int argc, char** argv, char *flag) { + char** argm = argv + argc; + argv++; + if (argv == argm) { + return 1; + } + while (argv != NULL && argv != argm) { + if (strcmp(*argv, flag) == 0) return 1; + argv++; + } + return 0; +} + +int main(int argc, char **argv) { + bench_inv_t data; + if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "add")) run_benchmark("scalar_add", bench_scalar_add, bench_setup, NULL, &data, 10, 2000000); + if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "negate")) run_benchmark("scalar_negate", bench_scalar_negate, bench_setup, NULL, &data, 10, 2000000); + if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "sqr")) run_benchmark("scalar_sqr", bench_scalar_sqr, bench_setup, NULL, &data, 10, 200000); + if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "mul")) run_benchmark("scalar_mul", bench_scalar_mul, bench_setup, NULL, &data, 10, 200000); +#ifdef USE_ENDOMORPHISM + if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "split")) run_benchmark("scalar_split", bench_scalar_split, bench_setup, NULL, &data, 10, 20000); +#endif + if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "inverse")) run_benchmark("scalar_inverse", bench_scalar_inverse, bench_setup, NULL, &data, 10, 2000); + if (have_flag(argc, argv, "scalar") || have_flag(argc, argv, "inverse")) run_benchmark("scalar_inverse_var", bench_scalar_inverse_var, bench_setup, NULL, &data, 10, 2000); + + if (have_flag(argc, argv, "field") || have_flag(argc, argv, "normalize")) run_benchmark("field_normalize", bench_field_normalize, bench_setup, NULL, &data, 10, 2000000); + if (have_flag(argc, argv, "field") || have_flag(argc, argv, "normalize")) run_benchmark("field_normalize_weak", bench_field_normalize_weak, bench_setup, NULL, &data, 10, 2000000); + if (have_flag(argc, argv, "field") || have_flag(argc, argv, "sqr")) run_benchmark("field_sqr", bench_field_sqr, bench_setup, NULL, &data, 10, 200000); + if (have_flag(argc, argv, "field") || have_flag(argc, argv, "mul")) run_benchmark("field_mul", bench_field_mul, bench_setup, NULL, &data, 10, 200000); + if (have_flag(argc, argv, "field") || have_flag(argc, argv, "inverse")) run_benchmark("field_inverse", bench_field_inverse, bench_setup, NULL, &data, 10, 20000); + if (have_flag(argc, argv, "field") || have_flag(argc, argv, "inverse")) run_benchmark("field_inverse_var", bench_field_inverse_var, bench_setup, NULL, &data, 10, 20000); + if (have_flag(argc, argv, "field") || have_flag(argc, argv, "sqrt")) run_benchmark("field_sqrt_var", bench_field_sqrt_var, bench_setup, NULL, &data, 10, 20000); + + if (have_flag(argc, argv, "group") || have_flag(argc, argv, "double")) run_benchmark("group_double_var", bench_group_double_var, bench_setup, NULL, &data, 10, 200000); + if (have_flag(argc, argv, "group") || have_flag(argc, argv, "add")) run_benchmark("group_add_var", bench_group_add_var, bench_setup, NULL, &data, 10, 200000); + if (have_flag(argc, argv, "group") || have_flag(argc, argv, "add")) run_benchmark("group_add_affine", bench_group_add_affine, bench_setup, NULL, &data, 10, 200000); + if (have_flag(argc, argv, "group") || have_flag(argc, argv, "add")) run_benchmark("group_add_affine_var", bench_group_add_affine_var, bench_setup, NULL, &data, 10, 200000); + + if (have_flag(argc, argv, "ecmult") || have_flag(argc, argv, "wnaf")) run_benchmark("wnaf_const", bench_wnaf_const, bench_setup, NULL, &data, 10, 20000); + if (have_flag(argc, argv, "ecmult") || have_flag(argc, argv, "wnaf")) run_benchmark("ecmult_wnaf", bench_ecmult_wnaf, bench_setup, NULL, &data, 10, 20000); + + if (have_flag(argc, argv, "hash") || have_flag(argc, argv, "sha256")) run_benchmark("hash_sha256", bench_sha256, bench_setup, NULL, &data, 10, 20000); + if (have_flag(argc, argv, "hash") || have_flag(argc, argv, "hmac")) run_benchmark("hash_hmac_sha256", bench_hmac_sha256, bench_setup, NULL, &data, 10, 20000); + if (have_flag(argc, argv, "hash") || have_flag(argc, argv, "rng6979")) run_benchmark("hash_rfc6979_hmac_sha256", bench_rfc6979_hmac_sha256, bench_setup, NULL, &data, 10, 20000); + return 0; +} diff --git a/crypto777/secp256k1/bench_rangeproof.c b/crypto777/secp256k1/bench_rangeproof.c new file mode 100644 index 000000000..c4e49c3e4 --- /dev/null +++ b/crypto777/secp256k1/bench_rangeproof.c @@ -0,0 +1,65 @@ +/********************************************************************** + * Copyright (c) 2014, 2015 Pieter Wuille, Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include + +#include "include/secp256k1_rangeproof.h" +#include "util.h" +#include "bench.h" + +typedef struct { + secp256k1_context_t* ctx; + unsigned char commit[33]; + unsigned char proof[5134]; + unsigned char blind[32]; + int len; + int min_bits; + uint64_t v; +} bench_rangeproof_t; + +static void bench_rangeproof_setup(void* arg) { + int i; + uint64_t minv; + uint64_t maxv; + bench_rangeproof_t *data = (bench_rangeproof_t*)arg; + + data->v = 0; + for (i = 0; i < 32; i++) data->blind[i] = i + 1; + CHECK(secp256k1_pedersen_commit(data->ctx, data->commit, data->blind, data->v)); + data->len = 5134; + CHECK(secp256k1_rangeproof_sign(data->ctx, data->proof, &data->len, 0, data->commit, data->blind, data->commit, 0, data->min_bits, data->v)); + CHECK(secp256k1_rangeproof_verify(data->ctx, &minv, &maxv, data->commit, data->proof, data->len)); +} + +static void bench_rangeproof(void* arg) { + int i; + bench_rangeproof_t *data = (bench_rangeproof_t*)arg; + + for (i = 0; i < 1000; i++) { + int j; + uint64_t minv; + uint64_t maxv; + j = secp256k1_rangeproof_verify(data->ctx, &minv, &maxv, data->commit, data->proof, data->len); + for (j = 0; j < 4; j++) { + data->proof[j + 2 + 32 *((data->min_bits + 1) >> 1) - 4] = (i >> 8)&255; + } + } +} + +int main(void) { + bench_rangeproof_t data; + + data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); + secp256k1_pedersen_context_initialize(data.ctx); + secp256k1_rangeproof_context_initialize(data.ctx); + + data.min_bits = 32; + + run_benchmark("rangeproof_verify_bit", bench_rangeproof, bench_rangeproof_setup, NULL, &data, 10, 1000 * data.min_bits); + + secp256k1_context_destroy(data.ctx); + return 0; +} diff --git a/crypto777/secp256k1/bench_recover.c b/crypto777/secp256k1/bench_recover.c new file mode 100644 index 000000000..1b198ec34 --- /dev/null +++ b/crypto777/secp256k1/bench_recover.c @@ -0,0 +1,55 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include "include/secp256k1.h" +#include "util.h" +#include "bench.h" + +typedef struct { + secp256k1_context_t *ctx; + unsigned char msg[32]; + unsigned char sig[64]; +} bench_recover_t; + +void bench_recover(void* arg) { + int i; + bench_recover_t *data = (bench_recover_t*)arg; + secp256k1_pubkey_t pubkey; + unsigned char pubkeyc[33]; + + for (i = 0; i < 20000; i++) { + int j; + int pubkeylen = 33; + secp256k1_ecdsa_signature_t sig; + CHECK(secp256k1_ecdsa_signature_parse_compact(data->ctx, &sig, data->sig, i % 2)); + CHECK(secp256k1_ecdsa_recover(data->ctx, data->msg, &sig, &pubkey)); + CHECK(secp256k1_ec_pubkey_serialize(data->ctx, pubkeyc, &pubkeylen, &pubkey, 1)); + for (j = 0; j < 32; j++) { + data->sig[j + 32] = data->msg[j]; /* Move former message to S. */ + data->msg[j] = data->sig[j]; /* Move former R to message. */ + data->sig[j] = pubkeyc[j + 1]; /* Move recovered pubkey X coordinate to R (which must be a valid X coordinate). */ + } + } +} + +void bench_recover_setup(void* arg) { + int i; + bench_recover_t *data = (bench_recover_t*)arg; + + for (i = 0; i < 32; i++) data->msg[i] = 1 + i; + for (i = 0; i < 64; i++) data->sig[i] = 65 + i; +} + +int main(void) { + bench_recover_t data; + + data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY); + + run_benchmark("ecdsa_recover", bench_recover, bench_recover_setup, NULL, &data, 10, 20000); + + secp256k1_context_destroy(data.ctx); + return 0; +} diff --git a/crypto777/secp256k1/bench_schnorr_verify.c b/crypto777/secp256k1/bench_schnorr_verify.c new file mode 100644 index 000000000..274b6e02d --- /dev/null +++ b/crypto777/secp256k1/bench_schnorr_verify.c @@ -0,0 +1,69 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include +#include + +#include "include/secp256k1.h" +#include "include/secp256k1_schnorr.h" +#include "util.h" +#include "bench.h" + +typedef struct { + unsigned char key[32]; + unsigned char sig[64]; + unsigned char pubkey[33]; + int pubkeylen; +} benchmark_schnorr_sig_t; + +typedef struct { + secp256k1_context_t *ctx; + unsigned char msg[32]; + benchmark_schnorr_sig_t sigs[64]; + int numsigs; +} benchmark_schnorr_verify_t; + +static void benchmark_schnorr_init(void* arg) { + int i, k; + benchmark_schnorr_verify_t* data = (benchmark_schnorr_verify_t*)arg; + + for (i = 0; i < 32; i++) data->msg[i] = 1 + i; + for (k = 0; k < data->numsigs; k++) { + secp256k1_pubkey_t pubkey; + for (i = 0; i < 32; i++) data->sigs[k].key[i] = 33 + i + k; + secp256k1_schnorr_sign(data->ctx, data->msg, data->sigs[k].sig, data->sigs[k].key, NULL, NULL); + data->sigs[k].pubkeylen = 33; + CHECK(secp256k1_ec_pubkey_create(data->ctx, &pubkey, data->sigs[k].key)); + CHECK(secp256k1_ec_pubkey_serialize(data->ctx, data->sigs[k].pubkey, &data->sigs[k].pubkeylen, &pubkey, 1)); + } +} + +static void benchmark_schnorr_verify(void* arg) { + int i; + benchmark_schnorr_verify_t* data = (benchmark_schnorr_verify_t*)arg; + + for (i = 0; i < 20000 / data->numsigs; i++) { + secp256k1_pubkey_t pubkey; + data->sigs[0].sig[(i >> 8) % 64] ^= (i & 0xFF); + CHECK(secp256k1_ec_pubkey_parse(data->ctx, &pubkey, data->sigs[0].pubkey, data->sigs[0].pubkeylen)); + CHECK(secp256k1_schnorr_verify(data->ctx, data->msg, data->sigs[0].sig, &pubkey) == ((i & 0xFF) == 0)); + data->sigs[0].sig[(i >> 8) % 64] ^= (i & 0xFF); + } +} + + + +int main(void) { + benchmark_schnorr_verify_t data; + + data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); + + data.numsigs = 1; + run_benchmark("schnorr_verify", benchmark_schnorr_verify, benchmark_schnorr_init, NULL, &data, 10, 20000); + + secp256k1_context_destroy(data.ctx); + return 0; +} diff --git a/crypto777/secp256k1/bench_sign.c b/crypto777/secp256k1/bench_sign.c new file mode 100644 index 000000000..e625da07a --- /dev/null +++ b/crypto777/secp256k1/bench_sign.c @@ -0,0 +1,52 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include "include/secp256k1.h" +#include "util.h" +#include "bench.h" + +typedef struct { + secp256k1_context_t* ctx; + unsigned char msg[32]; + unsigned char key[32]; +} bench_sign_t; + +static void bench_sign_setup(void* arg) { + int i; + bench_sign_t *data = (bench_sign_t*)arg; + + for (i = 0; i < 32; i++) data->msg[i] = i + 1; + for (i = 0; i < 32; i++) data->key[i] = i + 65; +} + +static void bench_sign(void* arg) { + int i; + bench_sign_t *data = (bench_sign_t*)arg; + + unsigned char sig[64]; + for (i = 0; i < 20000; i++) { + int j; + int recid = 0; + secp256k1_ecdsa_signature_t signature; + CHECK(secp256k1_ecdsa_sign(data->ctx, data->msg, &signature, data->key, NULL, NULL)); + CHECK(secp256k1_ecdsa_signature_serialize_compact(data->ctx, sig, &recid, &signature)); + for (j = 0; j < 32; j++) { + data->msg[j] = sig[j]; /* Move former R to message. */ + data->key[j] = sig[j + 32]; /* Move former S to key. */ + } + } +} + +int main(void) { + bench_sign_t data; + + data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN); + + run_benchmark("ecdsa_sign", bench_sign, bench_sign_setup, NULL, &data, 10, 20000); + + secp256k1_context_destroy(data.ctx); + return 0; +} diff --git a/crypto777/secp256k1/bench_verify.c b/crypto777/secp256k1/bench_verify.c new file mode 100644 index 000000000..b8c5bdf58 --- /dev/null +++ b/crypto777/secp256k1/bench_verify.c @@ -0,0 +1,63 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include +#include + +#include "include/secp256k1.h" +#include "util.h" +#include "bench.h" + +typedef struct { + secp256k1_context_t *ctx; + unsigned char msg[32]; + unsigned char key[32]; + unsigned char sig[72]; + int siglen; + unsigned char pubkey[33]; + int pubkeylen; +} benchmark_verify_t; + +static void benchmark_verify(void* arg) { + int i; + benchmark_verify_t* data = (benchmark_verify_t*)arg; + + for (i = 0; i < 20000; i++) { + secp256k1_pubkey_t pubkey; + secp256k1_ecdsa_signature_t sig; + data->sig[data->siglen - 1] ^= (i & 0xFF); + data->sig[data->siglen - 2] ^= ((i >> 8) & 0xFF); + data->sig[data->siglen - 3] ^= ((i >> 16) & 0xFF); + CHECK(secp256k1_ec_pubkey_parse(data->ctx, &pubkey, data->pubkey, data->pubkeylen) == 1); + CHECK(secp256k1_ecdsa_signature_parse_der(data->ctx, &sig, data->sig, data->siglen) == 1); + CHECK(secp256k1_ecdsa_verify(data->ctx, data->msg, &sig, &pubkey) == (i == 0)); + data->sig[data->siglen - 1] ^= (i & 0xFF); + data->sig[data->siglen - 2] ^= ((i >> 8) & 0xFF); + data->sig[data->siglen - 3] ^= ((i >> 16) & 0xFF); + } +} + +int main(void) { + int i; + secp256k1_pubkey_t pubkey; + secp256k1_ecdsa_signature_t sig; + benchmark_verify_t data; + + data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); + + for (i = 0; i < 32; i++) data.msg[i] = 1 + i; + for (i = 0; i < 32; i++) data.key[i] = 33 + i; + data.siglen = 72; + CHECK(secp256k1_ecdsa_sign(data.ctx, data.msg, &sig, data.key, NULL, NULL)); + CHECK(secp256k1_ecdsa_signature_serialize_der(data.ctx, data.sig, &data.siglen, &sig)); + CHECK(secp256k1_ec_pubkey_create(data.ctx, &pubkey, data.key)); + CHECK(secp256k1_ec_pubkey_serialize(data.ctx, data.pubkey, &data.pubkeylen, &pubkey, 1) == 1); + + run_benchmark("ecdsa_verify", benchmark_verify, NULL, NULL, &data, 10, 20000); + + secp256k1_context_destroy(data.ctx); + return 0; +} diff --git a/crypto777/secp256k1/ecdsa.h b/crypto777/secp256k1/ecdsa.h new file mode 100644 index 000000000..c361728e5 --- /dev/null +++ b/crypto777/secp256k1/ecdsa.h @@ -0,0 +1,20 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECDSA_ +#define _SECP256K1_ECDSA_ + +#include "scalar.h" +#include "group.h" +#include "ecmult.h" + +static int secp256k1_ecdsa_sig_parse(secp256k1_scalar_t *r, secp256k1_scalar_t *s, const unsigned char *sig, int size); +static int secp256k1_ecdsa_sig_serialize(unsigned char *sig, int *size, const secp256k1_scalar_t *r, const secp256k1_scalar_t *s); +static int secp256k1_ecdsa_sig_verify(const secp256k1_ecmult_context_t *ctx, const secp256k1_scalar_t* r, const secp256k1_scalar_t* s, const secp256k1_ge_t *pubkey, const secp256k1_scalar_t *message); +static int secp256k1_ecdsa_sig_sign(const secp256k1_ecmult_gen_context_t *ctx, secp256k1_scalar_t* r, secp256k1_scalar_t* s, const secp256k1_scalar_t *seckey, const secp256k1_scalar_t *message, const secp256k1_scalar_t *nonce, int *recid); +static int secp256k1_ecdsa_sig_recover(const secp256k1_ecmult_context_t *ctx, const secp256k1_scalar_t* r, const secp256k1_scalar_t* s, secp256k1_ge_t *pubkey, const secp256k1_scalar_t *message, int recid); + +#endif diff --git a/crypto777/secp256k1/ecdsa_impl.h b/crypto777/secp256k1/ecdsa_impl.h new file mode 100644 index 000000000..c0c44fa18 --- /dev/null +++ b/crypto777/secp256k1/ecdsa_impl.h @@ -0,0 +1,264 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + + +#ifndef _SECP256K1_ECDSA_IMPL_H_ +#define _SECP256K1_ECDSA_IMPL_H_ + +#include "scalar.h" +#include "field.h" +#include "group.h" +#include "ecmult.h" +#include "ecmult_gen.h" +#include "ecdsa.h" + +/** Group order for secp256k1 defined as 'n' in "Standards for Efficient Cryptography" (SEC2) 2.7.1 + * sage: for t in xrange(1023, -1, -1): + * .. p = 2**256 - 2**32 - t + * .. if p.is_prime(): + * .. print '%x'%p + * .. break + * 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f' + * sage: a = 0 + * sage: b = 7 + * sage: F = FiniteField (p) + * sage: '%x' % (EllipticCurve ([F (a), F (b)]).order()) + * 'fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141' + */ +static const secp256k1_fe_t secp256k1_ecdsa_const_order_as_fe = SECP256K1_FE_CONST( + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, + 0xBAAEDCE6UL, 0xAF48A03BUL, 0xBFD25E8CUL, 0xD0364141UL +); + +/** Difference between field and order, values 'p' and 'n' values defined in + * "Standards for Efficient Cryptography" (SEC2) 2.7.1. + * sage: p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F + * sage: a = 0 + * sage: b = 7 + * sage: F = FiniteField (p) + * sage: '%x' % (p - EllipticCurve ([F (a), F (b)]).order()) + * '14551231950b75fc4402da1722fc9baee' + */ +static const secp256k1_fe_t secp256k1_ecdsa_const_p_minus_order = SECP256K1_FE_CONST( + 0, 0, 0, 1, 0x45512319UL, 0x50B75FC4UL, 0x402DA172UL, 0x2FC9BAEEUL +); + +static int secp256k1_ecdsa_sig_parse(secp256k1_scalar_t *rr, secp256k1_scalar_t *rs, const unsigned char *sig, int size) { + unsigned char ra[32] = {0}, sa[32] = {0}; + const unsigned char *rp; + const unsigned char *sp; + int lenr; + int lens; + int overflow; + if (sig[0] != 0x30) { + return 0; + } + lenr = sig[3]; + if (5+lenr >= size) { + return 0; + } + lens = sig[lenr+5]; + if (sig[1] != lenr+lens+4) { + return 0; + } + if (lenr+lens+6 > size) { + return 0; + } + if (sig[2] != 0x02) { + return 0; + } + if (lenr == 0) { + return 0; + } + if (sig[lenr+4] != 0x02) { + return 0; + } + if (lens == 0) { + return 0; + } + sp = sig + 6 + lenr; + while (lens > 0 && sp[0] == 0) { + lens--; + sp++; + } + if (lens > 32) { + return 0; + } + rp = sig + 4; + while (lenr > 0 && rp[0] == 0) { + lenr--; + rp++; + } + if (lenr > 32) { + return 0; + } + memcpy(ra + 32 - lenr, rp, lenr); + memcpy(sa + 32 - lens, sp, lens); + overflow = 0; + secp256k1_scalar_set_b32(rr, ra, &overflow); + if (overflow) { + return 0; + } + secp256k1_scalar_set_b32(rs, sa, &overflow); + if (overflow) { + return 0; + } + return 1; +} + +static int secp256k1_ecdsa_sig_serialize(unsigned char *sig, int *size, const secp256k1_scalar_t* ar, const secp256k1_scalar_t* as) { + unsigned char r[33] = {0}, s[33] = {0}; + unsigned char *rp = r, *sp = s; + int lenR = 33, lenS = 33; + secp256k1_scalar_get_b32(&r[1], ar); + secp256k1_scalar_get_b32(&s[1], as); + while (lenR > 1 && rp[0] == 0 && rp[1] < 0x80) { lenR--; rp++; } + while (lenS > 1 && sp[0] == 0 && sp[1] < 0x80) { lenS--; sp++; } + if (*size < 6+lenS+lenR) { + *size = 6 + lenS + lenR; + return 0; + } + *size = 6 + lenS + lenR; + sig[0] = 0x30; + sig[1] = 4 + lenS + lenR; + sig[2] = 0x02; + sig[3] = lenR; + memcpy(sig+4, rp, lenR); + sig[4+lenR] = 0x02; + sig[5+lenR] = lenS; + memcpy(sig+lenR+6, sp, lenS); + return 1; +} + +static int secp256k1_ecdsa_sig_verify(const secp256k1_ecmult_context_t *ctx, const secp256k1_scalar_t *sigr, const secp256k1_scalar_t *sigs, const secp256k1_ge_t *pubkey, const secp256k1_scalar_t *message) { + unsigned char c[32]; + secp256k1_scalar_t sn, u1, u2; + secp256k1_fe_t xr; + secp256k1_gej_t pubkeyj; + secp256k1_gej_t pr; + + if (secp256k1_scalar_is_zero(sigr) || secp256k1_scalar_is_zero(sigs)) { + return 0; + } + + secp256k1_scalar_inverse_var(&sn, sigs); + secp256k1_scalar_mul(&u1, &sn, message); + secp256k1_scalar_mul(&u2, &sn, sigr); + secp256k1_gej_set_ge(&pubkeyj, pubkey); + secp256k1_ecmult(ctx, &pr, &pubkeyj, &u2, &u1); + if (secp256k1_gej_is_infinity(&pr)) { + return 0; + } + secp256k1_scalar_get_b32(c, sigr); + secp256k1_fe_set_b32(&xr, c); + + /** We now have the recomputed R point in pr, and its claimed x coordinate (modulo n) + * in xr. Naively, we would extract the x coordinate from pr (requiring a inversion modulo p), + * compute the remainder modulo n, and compare it to xr. However: + * + * xr == X(pr) mod n + * <=> exists h. (xr + h * n < p && xr + h * n == X(pr)) + * [Since 2 * n > p, h can only be 0 or 1] + * <=> (xr == X(pr)) || (xr + n < p && xr + n == X(pr)) + * [In Jacobian coordinates, X(pr) is pr.x / pr.z^2 mod p] + * <=> (xr == pr.x / pr.z^2 mod p) || (xr + n < p && xr + n == pr.x / pr.z^2 mod p) + * [Multiplying both sides of the equations by pr.z^2 mod p] + * <=> (xr * pr.z^2 mod p == pr.x) || (xr + n < p && (xr + n) * pr.z^2 mod p == pr.x) + * + * Thus, we can avoid the inversion, but we have to check both cases separately. + * secp256k1_gej_eq_x implements the (xr * pr.z^2 mod p == pr.x) test. + */ + if (secp256k1_gej_eq_x_var(&xr, &pr)) { + /* xr.x == xr * xr.z^2 mod p, so the signature is valid. */ + return 1; + } + if (secp256k1_fe_cmp_var(&xr, &secp256k1_ecdsa_const_p_minus_order) >= 0) { + /* xr + p >= n, so we can skip testing the second case. */ + return 0; + } + secp256k1_fe_add(&xr, &secp256k1_ecdsa_const_order_as_fe); + if (secp256k1_gej_eq_x_var(&xr, &pr)) { + /* (xr + n) * pr.z^2 mod p == pr.x, so the signature is valid. */ + return 1; + } + return 0; +} + +static int secp256k1_ecdsa_sig_recover(const secp256k1_ecmult_context_t *ctx, const secp256k1_scalar_t *sigr, const secp256k1_scalar_t* sigs, secp256k1_ge_t *pubkey, const secp256k1_scalar_t *message, int recid) { + unsigned char brx[32]; + secp256k1_fe_t fx; + secp256k1_ge_t x; + secp256k1_gej_t xj; + secp256k1_scalar_t rn, u1, u2; + secp256k1_gej_t qj; + + if (secp256k1_scalar_is_zero(sigr) || secp256k1_scalar_is_zero(sigs)) { + return 0; + } + + secp256k1_scalar_get_b32(brx, sigr); + VERIFY_CHECK(secp256k1_fe_set_b32(&fx, brx)); /* brx comes from a scalar, so is less than the order; certainly less than p */ + if (recid & 2) { + if (secp256k1_fe_cmp_var(&fx, &secp256k1_ecdsa_const_p_minus_order) >= 0) { + return 0; + } + secp256k1_fe_add(&fx, &secp256k1_ecdsa_const_order_as_fe); + } + if (!secp256k1_ge_set_xo_var(&x, &fx, recid & 1)) { + return 0; + } + secp256k1_gej_set_ge(&xj, &x); + secp256k1_scalar_inverse_var(&rn, sigr); + secp256k1_scalar_mul(&u1, &rn, message); + secp256k1_scalar_negate(&u1, &u1); + secp256k1_scalar_mul(&u2, &rn, sigs); + secp256k1_ecmult(ctx, &qj, &xj, &u2, &u1); + secp256k1_ge_set_gej_var(pubkey, &qj); + return !secp256k1_gej_is_infinity(&qj); +} + +static int secp256k1_ecdsa_sig_sign(const secp256k1_ecmult_gen_context_t *ctx, secp256k1_scalar_t *sigr, secp256k1_scalar_t *sigs, const secp256k1_scalar_t *seckey, const secp256k1_scalar_t *message, const secp256k1_scalar_t *nonce, int *recid) { + unsigned char b[32]; + secp256k1_gej_t rp; + secp256k1_ge_t r; + secp256k1_scalar_t n; + int overflow = 0; + + secp256k1_ecmult_gen(ctx, &rp, nonce); + secp256k1_ge_set_gej(&r, &rp); + secp256k1_fe_normalize(&r.x); + secp256k1_fe_normalize(&r.y); + secp256k1_fe_get_b32(b, &r.x); + secp256k1_scalar_set_b32(sigr, b, &overflow); + if (secp256k1_scalar_is_zero(sigr)) { + /* P.x = order is on the curve, so technically sig->r could end up zero, which would be an invalid signature. */ + secp256k1_gej_clear(&rp); + secp256k1_ge_clear(&r); + return 0; + } + if (recid) { + *recid = (overflow ? 2 : 0) | (secp256k1_fe_is_odd(&r.y) ? 1 : 0); + } + secp256k1_scalar_mul(&n, sigr, seckey); + secp256k1_scalar_add(&n, &n, message); + secp256k1_scalar_inverse(sigs, nonce); + secp256k1_scalar_mul(sigs, sigs, &n); + secp256k1_scalar_clear(&n); + secp256k1_gej_clear(&rp); + secp256k1_ge_clear(&r); + if (secp256k1_scalar_is_zero(sigs)) { + return 0; + } + if (secp256k1_scalar_is_high(sigs)) { + secp256k1_scalar_negate(sigs, sigs); + if (recid) { + *recid ^= 1; + } + } + return 1; +} + +#endif diff --git a/crypto777/secp256k1/eckey.h b/crypto777/secp256k1/eckey.h new file mode 100644 index 000000000..53b818485 --- /dev/null +++ b/crypto777/secp256k1/eckey.h @@ -0,0 +1,26 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECKEY_ +#define _SECP256K1_ECKEY_ + +#include "group.h" +#include "scalar.h" +#include "ecmult.h" +#include "ecmult_gen.h" + +static int secp256k1_eckey_pubkey_parse(secp256k1_ge_t *elem, const unsigned char *pub, int size); +static int secp256k1_eckey_pubkey_serialize(secp256k1_ge_t *elem, unsigned char *pub, int *size, int compressed); + +static int secp256k1_eckey_privkey_parse(secp256k1_scalar_t *key, const unsigned char *privkey, int privkeylen); +static int secp256k1_eckey_privkey_serialize(const secp256k1_ecmult_gen_context_t *ctx, unsigned char *privkey, int *privkeylen, const secp256k1_scalar_t *key, int compressed); + +static int secp256k1_eckey_privkey_tweak_add(secp256k1_scalar_t *key, const secp256k1_scalar_t *tweak); +static int secp256k1_eckey_pubkey_tweak_add(const secp256k1_ecmult_context_t *ctx, secp256k1_ge_t *key, const secp256k1_scalar_t *tweak); +static int secp256k1_eckey_privkey_tweak_mul(secp256k1_scalar_t *key, const secp256k1_scalar_t *tweak); +static int secp256k1_eckey_pubkey_tweak_mul(const secp256k1_ecmult_context_t *ctx, secp256k1_ge_t *key, const secp256k1_scalar_t *tweak); + +#endif diff --git a/crypto777/secp256k1/eckey_impl.h b/crypto777/secp256k1/eckey_impl.h new file mode 100644 index 000000000..a332bd34e --- /dev/null +++ b/crypto777/secp256k1/eckey_impl.h @@ -0,0 +1,202 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECKEY_IMPL_H_ +#define _SECP256K1_ECKEY_IMPL_H_ + +#include "eckey.h" + +#include "scalar.h" +#include "field.h" +#include "group.h" +#include "ecmult_gen.h" + +static int secp256k1_eckey_pubkey_parse(secp256k1_ge_t *elem, const unsigned char *pub, int size) { + if (size == 33 && (pub[0] == 0x02 || pub[0] == 0x03)) { + secp256k1_fe_t x; + return secp256k1_fe_set_b32(&x, pub+1) && secp256k1_ge_set_xo_var(elem, &x, pub[0] == 0x03); + } else if (size == 65 && (pub[0] == 0x04 || pub[0] == 0x06 || pub[0] == 0x07)) { + secp256k1_fe_t x, y; + if (!secp256k1_fe_set_b32(&x, pub+1) || !secp256k1_fe_set_b32(&y, pub+33)) { + return 0; + } + secp256k1_ge_set_xy(elem, &x, &y); + if ((pub[0] == 0x06 || pub[0] == 0x07) && secp256k1_fe_is_odd(&y) != (pub[0] == 0x07)) { + return 0; + } + return secp256k1_ge_is_valid_var(elem); + } else { + return 0; + } +} + +static int secp256k1_eckey_pubkey_serialize(secp256k1_ge_t *elem, unsigned char *pub, int *size, int compressed) { + if (secp256k1_ge_is_infinity(elem)) { + return 0; + } + secp256k1_fe_normalize_var(&elem->x); + secp256k1_fe_normalize_var(&elem->y); + secp256k1_fe_get_b32(&pub[1], &elem->x); + if (compressed) { + *size = 33; + pub[0] = 0x02 | (secp256k1_fe_is_odd(&elem->y) ? 0x01 : 0x00); + } else { + *size = 65; + pub[0] = 0x04; + secp256k1_fe_get_b32(&pub[33], &elem->y); + } + return 1; +} + +static int secp256k1_eckey_privkey_parse(secp256k1_scalar_t *key, const unsigned char *privkey, int privkeylen) { + unsigned char c[32] = {0}; + const unsigned char *end = privkey + privkeylen; + int lenb = 0; + int len = 0; + int overflow = 0; + /* sequence header */ + if (end < privkey+1 || *privkey != 0x30) { + return 0; + } + privkey++; + /* sequence length constructor */ + if (end < privkey+1 || !(*privkey & 0x80)) { + return 0; + } + lenb = *privkey & ~0x80; privkey++; + if (lenb < 1 || lenb > 2) { + return 0; + } + if (end < privkey+lenb) { + return 0; + } + /* sequence length */ + len = privkey[lenb-1] | (lenb > 1 ? privkey[lenb-2] << 8 : 0); + privkey += lenb; + if (end < privkey+len) { + return 0; + } + /* sequence element 0: version number (=1) */ + if (end < privkey+3 || privkey[0] != 0x02 || privkey[1] != 0x01 || privkey[2] != 0x01) { + return 0; + } + privkey += 3; + /* sequence element 1: octet string, up to 32 bytes */ + if (end < privkey+2 || privkey[0] != 0x04 || privkey[1] > 0x20 || end < privkey+2+privkey[1]) { + return 0; + } + memcpy(c + 32 - privkey[1], privkey + 2, privkey[1]); + secp256k1_scalar_set_b32(key, c, &overflow); + memset(c, 0, 32); + return !overflow; +} + +static int secp256k1_eckey_privkey_serialize(const secp256k1_ecmult_gen_context_t *ctx, unsigned char *privkey, int *privkeylen, const secp256k1_scalar_t *key, int compressed) { + secp256k1_gej_t rp; + secp256k1_ge_t r; + int pubkeylen = 0; + secp256k1_ecmult_gen(ctx, &rp, key); + secp256k1_ge_set_gej(&r, &rp); + if (compressed) { + static const unsigned char begin[] = { + 0x30,0x81,0xD3,0x02,0x01,0x01,0x04,0x20 + }; + static const unsigned char middle[] = { + 0xA0,0x81,0x85,0x30,0x81,0x82,0x02,0x01,0x01,0x30,0x2C,0x06,0x07,0x2A,0x86,0x48, + 0xCE,0x3D,0x01,0x01,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F,0x30,0x06,0x04,0x01,0x00,0x04,0x01,0x07,0x04, + 0x21,0x02,0x79,0xBE,0x66,0x7E,0xF9,0xDC,0xBB,0xAC,0x55,0xA0,0x62,0x95,0xCE,0x87, + 0x0B,0x07,0x02,0x9B,0xFC,0xDB,0x2D,0xCE,0x28,0xD9,0x59,0xF2,0x81,0x5B,0x16,0xF8, + 0x17,0x98,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFE,0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B,0xBF,0xD2,0x5E, + 0x8C,0xD0,0x36,0x41,0x41,0x02,0x01,0x01,0xA1,0x24,0x03,0x22,0x00 + }; + unsigned char *ptr = privkey; + memcpy(ptr, begin, sizeof(begin)); ptr += sizeof(begin); + secp256k1_scalar_get_b32(ptr, key); ptr += 32; + memcpy(ptr, middle, sizeof(middle)); ptr += sizeof(middle); + if (!secp256k1_eckey_pubkey_serialize(&r, ptr, &pubkeylen, 1)) { + return 0; + } + ptr += pubkeylen; + *privkeylen = ptr - privkey; + } else { + static const unsigned char begin[] = { + 0x30,0x82,0x01,0x13,0x02,0x01,0x01,0x04,0x20 + }; + static const unsigned char middle[] = { + 0xA0,0x81,0xA5,0x30,0x81,0xA2,0x02,0x01,0x01,0x30,0x2C,0x06,0x07,0x2A,0x86,0x48, + 0xCE,0x3D,0x01,0x01,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F,0x30,0x06,0x04,0x01,0x00,0x04,0x01,0x07,0x04, + 0x41,0x04,0x79,0xBE,0x66,0x7E,0xF9,0xDC,0xBB,0xAC,0x55,0xA0,0x62,0x95,0xCE,0x87, + 0x0B,0x07,0x02,0x9B,0xFC,0xDB,0x2D,0xCE,0x28,0xD9,0x59,0xF2,0x81,0x5B,0x16,0xF8, + 0x17,0x98,0x48,0x3A,0xDA,0x77,0x26,0xA3,0xC4,0x65,0x5D,0xA4,0xFB,0xFC,0x0E,0x11, + 0x08,0xA8,0xFD,0x17,0xB4,0x48,0xA6,0x85,0x54,0x19,0x9C,0x47,0xD0,0x8F,0xFB,0x10, + 0xD4,0xB8,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFE,0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B,0xBF,0xD2,0x5E, + 0x8C,0xD0,0x36,0x41,0x41,0x02,0x01,0x01,0xA1,0x44,0x03,0x42,0x00 + }; + unsigned char *ptr = privkey; + memcpy(ptr, begin, sizeof(begin)); ptr += sizeof(begin); + secp256k1_scalar_get_b32(ptr, key); ptr += 32; + memcpy(ptr, middle, sizeof(middle)); ptr += sizeof(middle); + if (!secp256k1_eckey_pubkey_serialize(&r, ptr, &pubkeylen, 0)) { + return 0; + } + ptr += pubkeylen; + *privkeylen = ptr - privkey; + } + return 1; +} + +static int secp256k1_eckey_privkey_tweak_add(secp256k1_scalar_t *key, const secp256k1_scalar_t *tweak) { + secp256k1_scalar_add(key, key, tweak); + if (secp256k1_scalar_is_zero(key)) { + return 0; + } + return 1; +} + +static int secp256k1_eckey_pubkey_tweak_add(const secp256k1_ecmult_context_t *ctx, secp256k1_ge_t *key, const secp256k1_scalar_t *tweak) { + secp256k1_gej_t pt; + secp256k1_scalar_t one; + secp256k1_gej_set_ge(&pt, key); + secp256k1_scalar_set_int(&one, 1); + secp256k1_ecmult(ctx, &pt, &pt, &one, tweak); + + if (secp256k1_gej_is_infinity(&pt)) { + return 0; + } + secp256k1_ge_set_gej(key, &pt); + return 1; +} + +static int secp256k1_eckey_privkey_tweak_mul(secp256k1_scalar_t *key, const secp256k1_scalar_t *tweak) { + if (secp256k1_scalar_is_zero(tweak)) { + return 0; + } + + secp256k1_scalar_mul(key, key, tweak); + return 1; +} + +static int secp256k1_eckey_pubkey_tweak_mul(const secp256k1_ecmult_context_t *ctx, secp256k1_ge_t *key, const secp256k1_scalar_t *tweak) { + secp256k1_scalar_t zero; + secp256k1_gej_t pt; + if (secp256k1_scalar_is_zero(tweak)) { + return 0; + } + + secp256k1_scalar_set_int(&zero, 0); + secp256k1_gej_set_ge(&pt, key); + secp256k1_ecmult(ctx, &pt, &pt, tweak, &zero); + secp256k1_ge_set_gej(key, &pt); + return 1; +} + +#endif diff --git a/crypto777/secp256k1/ecmult.h b/crypto777/secp256k1/ecmult.h new file mode 100644 index 000000000..f112cd9ec --- /dev/null +++ b/crypto777/secp256k1/ecmult.h @@ -0,0 +1,31 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECMULT_ +#define _SECP256K1_ECMULT_ + +#include "num.h" +#include "group.h" + +typedef struct { + /* For accelerating the computation of a*P + b*G: */ + secp256k1_ge_storage_t (*pre_g)[]; /* odd multiples of the generator */ +#ifdef USE_ENDOMORPHISM + secp256k1_ge_storage_t (*pre_g_128)[]; /* odd multiples of 2^128*generator */ +#endif +} secp256k1_ecmult_context_t; + +static void secp256k1_ecmult_context_init(secp256k1_ecmult_context_t *ctx); +static void secp256k1_ecmult_context_build(secp256k1_ecmult_context_t *ctx, const callback_t *cb); +static void secp256k1_ecmult_context_clone(secp256k1_ecmult_context_t *dst, + const secp256k1_ecmult_context_t *src, const callback_t *cb); +static void secp256k1_ecmult_context_clear(secp256k1_ecmult_context_t *ctx); +static int secp256k1_ecmult_context_is_built(const secp256k1_ecmult_context_t *ctx); + +/** Double multiply: R = na*A + ng*G */ +static void secp256k1_ecmult(const secp256k1_ecmult_context_t *ctx, secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_scalar_t *na, const secp256k1_scalar_t *ng); + +#endif diff --git a/crypto777/secp256k1/ecmult_const.h b/crypto777/secp256k1/ecmult_const.h new file mode 100644 index 000000000..e8ff1feb8 --- /dev/null +++ b/crypto777/secp256k1/ecmult_const.h @@ -0,0 +1,15 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECMULT_CONST_ +#define _SECP256K1_ECMULT_CONST_ + +#include "scalar.h" +#include "group.h" + +static void secp256k1_ecmult_const(secp256k1_gej_t *r, const secp256k1_ge_t *a, const secp256k1_scalar_t *q); + +#endif diff --git a/crypto777/secp256k1/ecmult_const_impl.h b/crypto777/secp256k1/ecmult_const_impl.h new file mode 100644 index 000000000..62406a242 --- /dev/null +++ b/crypto777/secp256k1/ecmult_const_impl.h @@ -0,0 +1,258 @@ +/********************************************************************** + * Copyright (c) 2015 Pieter Wuille, Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECMULT_CONST_IMPL_ +#define _SECP256K1_ECMULT_CONST_IMPL_ + +#include "scalar.h" +#include "group.h" +#include "ecmult_const.h" +#include "ecmult_impl.h" + +#ifdef USE_ENDOMORPHISM + #define WNAF_BITS 128 +#else + #define WNAF_BITS 256 +#endif +#define WNAF_SIZE(w) ((WNAF_BITS + (w) - 1) / (w)) + +/* This is like `ECMULT_TABLE_GET_GE` but is constant time */ +#define ECMULT_CONST_TABLE_GET_GE(r,pre,n,w) do { \ + int m; \ + int abs_n = (n) * (((n) > 0) * 2 - 1); \ + int idx_n = abs_n / 2; \ + secp256k1_fe_t neg_y; \ + VERIFY_CHECK(((n) & 1) == 1); \ + VERIFY_CHECK((n) >= -((1 << ((w)-1)) - 1)); \ + VERIFY_CHECK((n) <= ((1 << ((w)-1)) - 1)); \ + VERIFY_SETUP(secp256k1_fe_clear(&(r)->x)); \ + VERIFY_SETUP(secp256k1_fe_clear(&(r)->y)); \ + for (m = 0; m < ECMULT_TABLE_SIZE(w); m++) { \ + /* This loop is used to avoid secret data in array indices. See + * the comment in ecmult_gen_impl.h for rationale. */ \ + secp256k1_fe_cmov(&(r)->x, &(pre)[m].x, m == idx_n); \ + secp256k1_fe_cmov(&(r)->y, &(pre)[m].y, m == idx_n); \ + } \ + (r)->infinity = 0; \ + secp256k1_fe_negate(&neg_y, &(r)->y, 1); \ + secp256k1_fe_cmov(&(r)->y, &neg_y, (n) != abs_n); \ +} while(0) + + +/** Convert a number to WNAF notation. The number becomes represented by sum(2^{wi} * wnaf[i], i=0..return_val) + * with the following guarantees: + * - each wnaf[i] an odd integer between -(1 << w) and (1 << w) + * - each wnaf[i] is nonzero + * - the number of words set is returned; this is always (WNAF_BITS + w - 1) / w + * + * Adapted from `The Width-w NAF Method Provides Small Memory and Fast Elliptic Scalar + * Multiplications Secure against Side Channel Attacks`, Okeya and Tagaki. M. Joye (Ed.) + * CT-RSA 2003, LNCS 2612, pp. 328-443, 2003. Springer-Verlagy Berlin Heidelberg 2003 + * + * Numbers reference steps of `Algorithm SPA-resistant Width-w NAF with Odd Scalar` on pp. 335 + */ +static int secp256k1_wnaf_const(int *wnaf, secp256k1_scalar_t s, int w) { + int global_sign = 1; + int skew = 0; + int word = 0; + /* 1 2 3 */ + int u_last; + int u; + +#ifdef USE_ENDOMORPHISM + /* If we are using the endomorphism, we cannot handle even numbers by negating + * them, since we are working with 128-bit numbers whose negations would be 256 + * bits, eliminating the performance advantage. Instead we use a technique from + * Section 4.2 of the Okeya/Tagaki paper, which is to add either 1 (for even) + * or 2 (for odd) to the number we are encoding, then compensating after the + * multiplication. */ + /* Negative 128-bit numbers will be negated, since otherwise they are 256-bit */ + int flip = secp256k1_scalar_is_high(&s); + /* We add 1 to even numbers, 2 to odd ones, noting that negation flips parity */ + int bit = flip ^ (s.d[0] & 1); + /* We check for negative one, since adding 2 to it will cause an overflow */ + secp256k1_scalar_t neg_s; + int not_neg_one; + secp256k1_scalar_negate(&neg_s, &s); + not_neg_one = !secp256k1_scalar_is_one(&neg_s); + secp256k1_scalar_cadd_bit(&s, bit, not_neg_one); + /* If we had negative one, flip == 1, s.d[0] == 0, bit == 1, so caller expects + * that we added two to it and flipped it. In fact for -1 these operations are + * identical. We only flipped, but since skewing is required (in the sense that + * the skew must be 1 or 2, never zero) and flipping is not, we need to change + * our flags to claim that we only skewed. */ + global_sign = secp256k1_scalar_cond_negate(&s, flip); + global_sign *= not_neg_one * 2 - 1; + skew = 1 << bit; +#else + /* Otherwise, we just negate to force oddness */ + int is_even = secp256k1_scalar_is_even(&s); + global_sign = secp256k1_scalar_cond_negate(&s, is_even); +#endif + + /* 4 */ + u_last = secp256k1_scalar_shr_int(&s, w); + while (word * w < WNAF_BITS) { + int sign; + int even; + + /* 4.1 4.4 */ + u = secp256k1_scalar_shr_int(&s, w); + /* 4.2 */ + even = ((u & 1) == 0); + sign = 2 * (u_last > 0) - 1; + u += sign * even; + u_last -= sign * even * (1 << w); + + /* 4.3, adapted for global sign change */ + wnaf[word++] = u_last * global_sign; + + u_last = u; + } + wnaf[word] = u * global_sign; + + VERIFY_CHECK(secp256k1_scalar_is_zero(&s)); + VERIFY_CHECK(word == WNAF_SIZE(w)); + return skew; +} + + +static void secp256k1_ecmult_const(secp256k1_gej_t *r, const secp256k1_ge_t *a, const secp256k1_scalar_t *scalar) { + secp256k1_ge_t pre_a[ECMULT_TABLE_SIZE(WINDOW_A)]; + secp256k1_ge_t tmpa; + secp256k1_fe_t Z; + +#ifdef USE_ENDOMORPHISM + secp256k1_ge_t pre_a_lam[ECMULT_TABLE_SIZE(WINDOW_A)]; + int wnaf_1[1 + WNAF_SIZE(WINDOW_A - 1)]; + int wnaf_lam[1 + WNAF_SIZE(WINDOW_A - 1)]; + int skew_1; + int skew_lam; + secp256k1_scalar_t q_1, q_lam; +#else + int wnaf[1 + WNAF_SIZE(WINDOW_A - 1)]; +#endif + + int i; + secp256k1_scalar_t sc = *scalar; + + /* build wnaf representation for q. */ +#ifdef USE_ENDOMORPHISM + /* split q into q_1 and q_lam (where q = q_1 + q_lam*lambda, and q_1 and q_lam are ~128 bit) */ + secp256k1_scalar_split_lambda(&q_1, &q_lam, &sc); + /* no need for zero correction when using endomorphism since even + * numbers have one added to them anyway */ + skew_1 = secp256k1_wnaf_const(wnaf_1, q_1, WINDOW_A - 1); + skew_lam = secp256k1_wnaf_const(wnaf_lam, q_lam, WINDOW_A - 1); +#else + int is_zero = secp256k1_scalar_is_zero(scalar); + /* the wNAF ladder cannot handle zero, so bump this to one .. we will + * correct the result after the fact */ + sc.d[0] += is_zero; + VERIFY_CHECK(!secp256k1_scalar_is_zero(&sc)); + + secp256k1_wnaf_const(wnaf, sc, WINDOW_A - 1); +#endif + + /* Calculate odd multiples of a. + * All multiples are brought to the same Z 'denominator', which is stored + * in Z. Due to secp256k1' isomorphism we can do all operations pretending + * that the Z coordinate was 1, use affine addition formulae, and correct + * the Z coordinate of the result once at the end. + */ + secp256k1_gej_set_ge(r, a); + secp256k1_ecmult_odd_multiples_table_globalz_windowa(pre_a, &Z, r); + for (i = 0; i < ECMULT_TABLE_SIZE(WINDOW_A); i++) { + secp256k1_fe_normalize_weak(&pre_a[i].y); + } +#ifdef USE_ENDOMORPHISM + for (i = 0; i < ECMULT_TABLE_SIZE(WINDOW_A); i++) { + secp256k1_ge_mul_lambda(&pre_a_lam[i], &pre_a[i]); + } +#endif + + /* first loop iteration (separated out so we can directly set r, rather + * than having it start at infinity, get doubled several times, then have + * its new value added to it) */ +#ifdef USE_ENDOMORPHISM + i = wnaf_1[WNAF_SIZE(WINDOW_A - 1)]; + VERIFY_CHECK(i != 0); + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a, i, WINDOW_A); + secp256k1_gej_set_ge(r, &tmpa); + + i = wnaf_lam[WNAF_SIZE(WINDOW_A - 1)]; + VERIFY_CHECK(i != 0); + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a_lam, i, WINDOW_A); + secp256k1_gej_add_ge(r, r, &tmpa); +#else + i = wnaf[WNAF_SIZE(WINDOW_A - 1)]; + VERIFY_CHECK(i != 0); + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a, i, WINDOW_A); + secp256k1_gej_set_ge(r, &tmpa); +#endif + /* remaining loop iterations */ + for (i = WNAF_SIZE(WINDOW_A - 1) - 1; i >= 0; i--) { + int n; + int j; + for (j = 0; j < WINDOW_A - 1; ++j) { + secp256k1_gej_double_nonzero(r, r, NULL); + } +#ifdef USE_ENDOMORPHISM + n = wnaf_1[i]; + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a, n, WINDOW_A); + VERIFY_CHECK(n != 0); + secp256k1_gej_add_ge(r, r, &tmpa); + + n = wnaf_lam[i]; + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a_lam, n, WINDOW_A); + VERIFY_CHECK(n != 0); + secp256k1_gej_add_ge(r, r, &tmpa); +#else + n = wnaf[i]; + VERIFY_CHECK(n != 0); + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a, n, WINDOW_A); + secp256k1_gej_add_ge(r, r, &tmpa); +#endif + } + + secp256k1_fe_mul(&r->z, &r->z, &Z); + +#ifdef USE_ENDOMORPHISM + { + /* Correct for wNAF skew */ + secp256k1_ge_t correction = *a; + secp256k1_ge_storage_t correction_1_stor; + secp256k1_ge_storage_t correction_lam_stor; + secp256k1_ge_storage_t a2_stor; + secp256k1_gej_t tmpj; + secp256k1_gej_set_ge(&tmpj, &correction); + secp256k1_gej_double_var(&tmpj, &tmpj, NULL); + secp256k1_ge_set_gej(&correction, &tmpj); + secp256k1_ge_to_storage(&correction_1_stor, a); + secp256k1_ge_to_storage(&correction_lam_stor, a); + secp256k1_ge_to_storage(&a2_stor, &correction); + + /* For odd numbers this is 2a (so replace it), for even ones a (so no-op) */ + secp256k1_ge_storage_cmov(&correction_1_stor, &a2_stor, skew_1 == 2); + secp256k1_ge_storage_cmov(&correction_lam_stor, &a2_stor, skew_lam == 2); + + /* Apply the correction */ + secp256k1_ge_from_storage(&correction, &correction_1_stor); + secp256k1_ge_neg(&correction, &correction); + secp256k1_gej_add_ge(r, r, &correction); + + secp256k1_ge_from_storage(&correction, &correction_lam_stor); + secp256k1_ge_neg(&correction, &correction); + secp256k1_ge_mul_lambda(&correction, &correction); + secp256k1_gej_add_ge(r, r, &correction); + } +#else + /* correct for zero */ + r->infinity |= is_zero; +#endif +} + +#endif diff --git a/crypto777/secp256k1/ecmult_gen.h b/crypto777/secp256k1/ecmult_gen.h new file mode 100644 index 000000000..a9419e4aa --- /dev/null +++ b/crypto777/secp256k1/ecmult_gen.h @@ -0,0 +1,43 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECMULT_GEN_ +#define _SECP256K1_ECMULT_GEN_ + +#include "scalar.h" +#include "group.h" + +typedef struct { + /* For accelerating the computation of a*G: + * To harden against timing attacks, use the following mechanism: + * * Break up the multiplicand into groups of 4 bits, called n_0, n_1, n_2, ..., n_63. + * * Compute sum(n_i * 16^i * G + U_i, i=0..63), where: + * * U_i = U * 2^i (for i=0..62) + * * U_i = U * (1-2^63) (for i=63) + * where U is a point with no known corresponding scalar. Note that sum(U_i, i=0..63) = 0. + * For each i, and each of the 16 possible values of n_i, (n_i * 16^i * G + U_i) is + * precomputed (call it prec(i, n_i)). The formula now becomes sum(prec(i, n_i), i=0..63). + * None of the resulting prec group elements have a known scalar, and neither do any of + * the intermediate sums while computing a*G. + */ + secp256k1_ge_storage_t (*prec)[64][16]; /* prec[j][i] = 16^j * i * G + U_i */ + secp256k1_scalar_t blind; + secp256k1_gej_t initial; +} secp256k1_ecmult_gen_context_t; + +static void secp256k1_ecmult_gen_context_init(secp256k1_ecmult_gen_context_t* ctx); +static void secp256k1_ecmult_gen_context_build(secp256k1_ecmult_gen_context_t* ctx, const callback_t* cb); +static void secp256k1_ecmult_gen_context_clone(secp256k1_ecmult_gen_context_t *dst, + const secp256k1_ecmult_gen_context_t* src, const callback_t* cb); +static void secp256k1_ecmult_gen_context_clear(secp256k1_ecmult_gen_context_t* ctx); +static int secp256k1_ecmult_gen_context_is_built(const secp256k1_ecmult_gen_context_t* ctx); + +/** Multiply with the generator: R = a*G */ +static void secp256k1_ecmult_gen(const secp256k1_ecmult_gen_context_t* ctx, secp256k1_gej_t *r, const secp256k1_scalar_t *a); + +static void secp256k1_ecmult_gen_blind(secp256k1_ecmult_gen_context_t *ctx, const unsigned char *seed32); + +#endif diff --git a/crypto777/secp256k1/ecmult_gen_impl.h b/crypto777/secp256k1/ecmult_gen_impl.h new file mode 100644 index 000000000..2397abf35 --- /dev/null +++ b/crypto777/secp256k1/ecmult_gen_impl.h @@ -0,0 +1,205 @@ +/********************************************************************** + * Copyright (c) 2013, 2014, 2015 Pieter Wuille, Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECMULT_GEN_IMPL_H_ +#define _SECP256K1_ECMULT_GEN_IMPL_H_ + +#include "scalar.h" +#include "group.h" +#include "ecmult_gen.h" +#include "hash_impl.h" +#ifdef USE_ECMULT_STATIC_PRECOMPUTATION +#include "ecmult_static_context.h" +#endif +static void secp256k1_ecmult_gen_context_init(secp256k1_ecmult_gen_context_t *ctx) { + ctx->prec = NULL; +} + +static void secp256k1_ecmult_gen_context_build(secp256k1_ecmult_gen_context_t *ctx, const callback_t* cb) { +#ifndef USE_ECMULT_STATIC_PRECOMPUTATION + secp256k1_ge_t prec[1024]; + secp256k1_gej_t gj; + secp256k1_gej_t nums_gej; + int i, j; +#endif + + if (ctx->prec != NULL) { + return; + } +#ifndef USE_ECMULT_STATIC_PRECOMPUTATION + ctx->prec = (secp256k1_ge_storage_t (*)[64][16])checked_malloc(cb, sizeof(*ctx->prec)); + + /* get the generator */ + secp256k1_gej_set_ge(&gj, &secp256k1_ge_const_g); + + /* Construct a group element with no known corresponding scalar (nothing up my sleeve). */ + { + static const unsigned char nums_b32[33] = "The scalar for this x is unknown"; + secp256k1_fe_t nums_x; + secp256k1_ge_t nums_ge; + VERIFY_CHECK(secp256k1_fe_set_b32(&nums_x, nums_b32)); + VERIFY_CHECK(secp256k1_ge_set_xo_var(&nums_ge, &nums_x, 0)); + secp256k1_gej_set_ge(&nums_gej, &nums_ge); + /* Add G to make the bits in x uniformly distributed. */ + secp256k1_gej_add_ge_var(&nums_gej, &nums_gej, &secp256k1_ge_const_g, NULL); + } + + /* compute prec. */ + { + secp256k1_gej_t precj[1024]; /* Jacobian versions of prec. */ + secp256k1_gej_t gbase; + secp256k1_gej_t numsbase; + gbase = gj; /* 16^j * G */ + numsbase = nums_gej; /* 2^j * nums. */ + for (j = 0; j < 64; j++) { + /* Set precj[j*16 .. j*16+15] to (numsbase, numsbase + gbase, ..., numsbase + 15*gbase). */ + precj[j*16] = numsbase; + for (i = 1; i < 16; i++) { + secp256k1_gej_add_var(&precj[j*16 + i], &precj[j*16 + i - 1], &gbase, NULL); + } + /* Multiply gbase by 16. */ + for (i = 0; i < 4; i++) { + secp256k1_gej_double_var(&gbase, &gbase, NULL); + } + /* Multiply numbase by 2. */ + secp256k1_gej_double_var(&numsbase, &numsbase, NULL); + if (j == 62) { + /* In the last iteration, numsbase is (1 - 2^j) * nums instead. */ + secp256k1_gej_neg(&numsbase, &numsbase); + secp256k1_gej_add_var(&numsbase, &numsbase, &nums_gej, NULL); + } + } + secp256k1_ge_set_all_gej_var(1024, prec, precj, cb); + } + for (j = 0; j < 64; j++) { + for (i = 0; i < 16; i++) { + secp256k1_ge_to_storage(&(*ctx->prec)[j][i], &prec[j*16 + i]); + } + } +#else + (void)cb; + ctx->prec = (secp256k1_ge_storage_t (*)[64][16])secp256k1_ecmult_static_context; +#endif + secp256k1_ecmult_gen_blind(ctx, NULL); +} + +static int secp256k1_ecmult_gen_context_is_built(const secp256k1_ecmult_gen_context_t* ctx) { + return ctx->prec != NULL; +} + +static void secp256k1_ecmult_gen_context_clone(secp256k1_ecmult_gen_context_t *dst, + const secp256k1_ecmult_gen_context_t *src, const callback_t* cb) { + if (src->prec == NULL) { + dst->prec = NULL; + } else { +#ifndef USE_ECMULT_STATIC_PRECOMPUTATION + dst->prec = (secp256k1_ge_storage_t (*)[64][16])checked_malloc(cb, sizeof(*dst->prec)); + memcpy(dst->prec, src->prec, sizeof(*dst->prec)); +#else + (void)cb; + dst->prec = src->prec; +#endif + dst->initial = src->initial; + dst->blind = src->blind; + } +} + +static void secp256k1_ecmult_gen_context_clear(secp256k1_ecmult_gen_context_t *ctx) { +#ifndef USE_ECMULT_STATIC_PRECOMPUTATION + free(ctx->prec); +#endif + secp256k1_scalar_clear(&ctx->blind); + secp256k1_gej_clear(&ctx->initial); + ctx->prec = NULL; +} + +static void secp256k1_ecmult_gen(const secp256k1_ecmult_gen_context_t *ctx, secp256k1_gej_t *r, const secp256k1_scalar_t *gn) { + secp256k1_ge_t add; + secp256k1_ge_storage_t adds; + secp256k1_scalar_t gnb; + int bits; + int i, j; + memset(&adds, 0, sizeof(adds)); + *r = ctx->initial; + /* Blind scalar/point multiplication by computing (n-b)G + bG instead of nG. */ + secp256k1_scalar_add(&gnb, gn, &ctx->blind); + add.infinity = 0; + for (j = 0; j < 64; j++) { + bits = secp256k1_scalar_get_bits(&gnb, j * 4, 4); + for (i = 0; i < 16; i++) { + /** This uses a conditional move to avoid any secret data in array indexes. + * _Any_ use of secret indexes has been demonstrated to result in timing + * sidechannels, even when the cache-line access patterns are uniform. + * See also: + * "A word of warning", CHES 2013 Rump Session, by Daniel J. Bernstein and Peter Schwabe + * (https://cryptojedi.org/peter/data/chesrump-20130822.pdf) and + * "Cache Attacks and Countermeasures: the Case of AES", RSA 2006, + * by Dag Arne Osvik, Adi Shamir, and Eran Tromer + * (http://www.tau.ac.il/~tromer/papers/cache.pdf) + */ + secp256k1_ge_storage_cmov(&adds, &(*ctx->prec)[j][i], i == bits); + } + secp256k1_ge_from_storage(&add, &adds); + secp256k1_gej_add_ge(r, r, &add); + } + bits = 0; + secp256k1_ge_clear(&add); + secp256k1_scalar_clear(&gnb); +} + +/* Setup blinding values for secp256k1_ecmult_gen. */ +static void secp256k1_ecmult_gen_blind(secp256k1_ecmult_gen_context_t *ctx, const unsigned char *seed32) { + secp256k1_scalar_t b; + secp256k1_gej_t gb; + secp256k1_fe_t s; + unsigned char nonce32[32]; + secp256k1_rfc6979_hmac_sha256_t rng; + int retry; + unsigned char keydata[64] = {0}; + if (!seed32) { + /* When seed is NULL, reset the initial point and blinding value. */ + secp256k1_gej_set_ge(&ctx->initial, &secp256k1_ge_const_g); + secp256k1_gej_neg(&ctx->initial, &ctx->initial); + secp256k1_scalar_set_int(&ctx->blind, 1); + } + /* The prior blinding value (if not reset) is chained forward by including it in the hash. */ + secp256k1_scalar_get_b32(nonce32, &ctx->blind); + /** Using a CSPRNG allows a failure free interface, avoids needing large amounts of random data, + * and guards against weak or adversarial seeds. This is a simpler and safer interface than + * asking the caller for blinding values directly and expecting them to retry on failure. + */ + memcpy(keydata, nonce32, 32); + if (seed32) { + memcpy(keydata + 32, seed32, 32); + } + secp256k1_rfc6979_hmac_sha256_initialize(&rng, keydata, seed32 ? 64 : 32); + memset(keydata, 0, sizeof(keydata)); + /* Retry for out of range results to achieve uniformity. */ + do { + secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32); + retry = !secp256k1_fe_set_b32(&s, nonce32); + retry |= secp256k1_fe_is_zero(&s); + } while (retry); + /* Randomize the projection to defend against multiplier sidechannels. */ + secp256k1_gej_rescale(&ctx->initial, &s); + secp256k1_fe_clear(&s); + do { + secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32); + secp256k1_scalar_set_b32(&b, nonce32, &retry); + /* A blinding value of 0 works, but would undermine the projection hardening. */ + retry |= secp256k1_scalar_is_zero(&b); + } while (retry); + secp256k1_rfc6979_hmac_sha256_finalize(&rng); + memset(nonce32, 0, 32); + secp256k1_ecmult_gen(ctx, &gb, &b); + secp256k1_scalar_negate(&b, &b); + ctx->blind = b; + ctx->initial = gb; + secp256k1_scalar_clear(&b); + secp256k1_gej_clear(&gb); +} + +#endif diff --git a/crypto777/secp256k1/ecmult_impl.h b/crypto777/secp256k1/ecmult_impl.h new file mode 100644 index 000000000..d6da22073 --- /dev/null +++ b/crypto777/secp256k1/ecmult_impl.h @@ -0,0 +1,389 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_ECMULT_IMPL_H_ +#define _SECP256K1_ECMULT_IMPL_H_ + +#include "group.h" +#include "scalar.h" +#include "ecmult.h" + +/* optimal for 128-bit and 256-bit exponents. */ +#define WINDOW_A 5 + +/** larger numbers may result in slightly better performance, at the cost of + exponentially larger precomputed tables. */ +#ifdef USE_ENDOMORPHISM +/** Two tables for window size 15: 1.375 MiB. */ +#define WINDOW_G 15 +#else +/** One table for window size 16: 1.375 MiB. */ +#define WINDOW_G 16 +#endif + +/** The number of entries a table with precomputed multiples needs to have. */ +#define ECMULT_TABLE_SIZE(w) (1 << ((w)-2)) + +/** Fill a table 'prej' with precomputed odd multiples of a. Prej will contain + * the values [1*a,3*a,...,(2*n-1)*a], so it space for n values. zr[0] will + * contain prej[0].z / a.z. The other zr[i] values = prej[i].z / prej[i-1].z. + * Prej's Z values are undefined, except for the last value. + */ +static void secp256k1_ecmult_odd_multiples_table(int n, secp256k1_gej_t *prej, secp256k1_fe_t *zr, const secp256k1_gej_t *a) { + secp256k1_gej_t d; + secp256k1_ge_t a_ge, d_ge; + int i; + + VERIFY_CHECK(!a->infinity); + + secp256k1_gej_double_var(&d, a, NULL); + + /* + * Perform the additions on an isomorphism where 'd' is affine: drop the z coordinate + * of 'd', and scale the 1P starting value's x/y coordinates without changing its z. + */ + d_ge.x = d.x; + d_ge.y = d.y; + d_ge.infinity = 0; + + secp256k1_ge_set_gej_zinv(&a_ge, a, &d.z); + prej[0].x = a_ge.x; + prej[0].y = a_ge.y; + prej[0].z = a->z; + prej[0].infinity = 0; + + zr[0] = d.z; + for (i = 1; i < n; i++) { + secp256k1_gej_add_ge_var(&prej[i], &prej[i-1], &d_ge, &zr[i]); + } + + /* + * Each point in 'prej' has a z coordinate too small by a factor of 'd.z'. Only + * the final point's z coordinate is actually used though, so just update that. + */ + secp256k1_fe_mul(&prej[n-1].z, &prej[n-1].z, &d.z); +} + +/** Fill a table 'pre' with precomputed odd multiples of a. + * + * There are two versions of this function: + * - secp256k1_ecmult_odd_multiples_table_globalz_windowa which brings its + * resulting point set to a single constant Z denominator, stores the X and Y + * coordinates as ge_storage points in pre, and stores the global Z in rz. + * It only operates on tables sized for WINDOW_A wnaf multiples. + * - secp256k1_ecmult_odd_multiples_table_storage_var, which converts its + * resulting point set to actually affine points, and stores those in pre. + * It operates on tables of any size, but uses heap-allocated temporaries. + * + * To compute a*P + b*G, we compute a table for P using the first function, + * and for G using the second (which requires an inverse, but it only needs to + * happen once). + */ +static void secp256k1_ecmult_odd_multiples_table_globalz_windowa(secp256k1_ge_t *pre, secp256k1_fe_t *globalz, const secp256k1_gej_t *a) { + secp256k1_gej_t prej[ECMULT_TABLE_SIZE(WINDOW_A)]; + secp256k1_fe_t zr[ECMULT_TABLE_SIZE(WINDOW_A)]; + + /* Compute the odd multiples in Jacobian form. */ + secp256k1_ecmult_odd_multiples_table(ECMULT_TABLE_SIZE(WINDOW_A), prej, zr, a); + /* Bring them to the same Z denominator. */ + secp256k1_ge_globalz_set_table_gej(ECMULT_TABLE_SIZE(WINDOW_A), pre, globalz, prej, zr); +} + +static void secp256k1_ecmult_odd_multiples_table_storage_var(int n, secp256k1_ge_storage_t *pre, const secp256k1_gej_t *a, const callback_t *cb) { + secp256k1_gej_t *prej = (secp256k1_gej_t*)checked_malloc(cb, sizeof(secp256k1_gej_t) * n); + secp256k1_ge_t *prea = (secp256k1_ge_t*)checked_malloc(cb, sizeof(secp256k1_ge_t) * n); + secp256k1_fe_t *zr = (secp256k1_fe_t*)checked_malloc(cb, sizeof(secp256k1_fe_t) * n); + int i; + + /* Compute the odd multiples in Jacobian form. */ + secp256k1_ecmult_odd_multiples_table(n, prej, zr, a); + /* Convert them in batch to affine coordinates. */ + secp256k1_ge_set_table_gej_var(n, prea, prej, zr); + /* Convert them to compact storage form. */ + for (i = 0; i < n; i++) { + secp256k1_ge_to_storage(&pre[i], &prea[i]); + } + + free(prea); + free(prej); + free(zr); +} + +/** The following two macro retrieves a particular odd multiple from a table + * of precomputed multiples. */ +#define ECMULT_TABLE_GET_GE(r,pre,n,w) do { \ + VERIFY_CHECK(((n) & 1) == 1); \ + VERIFY_CHECK((n) >= -((1 << ((w)-1)) - 1)); \ + VERIFY_CHECK((n) <= ((1 << ((w)-1)) - 1)); \ + if ((n) > 0) { \ + *(r) = (pre)[((n)-1)/2]; \ + } else { \ + secp256k1_ge_neg((r), &(pre)[(-(n)-1)/2]); \ + } \ +} while(0) + +#define ECMULT_TABLE_GET_GE_STORAGE(r,pre,n,w) do { \ + VERIFY_CHECK(((n) & 1) == 1); \ + VERIFY_CHECK((n) >= -((1 << ((w)-1)) - 1)); \ + VERIFY_CHECK((n) <= ((1 << ((w)-1)) - 1)); \ + if ((n) > 0) { \ + secp256k1_ge_from_storage((r), &(pre)[((n)-1)/2]); \ + } else { \ + secp256k1_ge_from_storage((r), &(pre)[(-(n)-1)/2]); \ + secp256k1_ge_neg((r), (r)); \ + } \ +} while(0) + +static void secp256k1_ecmult_context_init(secp256k1_ecmult_context_t *ctx) { + ctx->pre_g = NULL; +#ifdef USE_ENDOMORPHISM + ctx->pre_g_128 = NULL; +#endif +} + +static void secp256k1_ecmult_context_build(secp256k1_ecmult_context_t *ctx, const callback_t *cb) { + secp256k1_gej_t gj; + + if (ctx->pre_g != NULL) { + return; + } + + /* get the generator */ + secp256k1_gej_set_ge(&gj, &secp256k1_ge_const_g); + + ctx->pre_g = (secp256k1_ge_storage_t (*)[])checked_malloc(cb, sizeof((*ctx->pre_g)[0]) * ECMULT_TABLE_SIZE(WINDOW_G)); + + /* precompute the tables with odd multiples */ + secp256k1_ecmult_odd_multiples_table_storage_var(ECMULT_TABLE_SIZE(WINDOW_G), *ctx->pre_g, &gj, cb); + +#ifdef USE_ENDOMORPHISM + { + secp256k1_gej_t g_128j; + int i; + + ctx->pre_g_128 = (secp256k1_ge_storage_t (*)[])checked_malloc(cb, sizeof((*ctx->pre_g_128)[0]) * ECMULT_TABLE_SIZE(WINDOW_G)); + + /* calculate 2^128*generator */ + g_128j = gj; + for (i = 0; i < 128; i++) { + secp256k1_gej_double_var(&g_128j, &g_128j, NULL); + } + secp256k1_ecmult_odd_multiples_table_storage_var(ECMULT_TABLE_SIZE(WINDOW_G), *ctx->pre_g_128, &g_128j, cb); + } +#endif +} + +static void secp256k1_ecmult_context_clone(secp256k1_ecmult_context_t *dst, + const secp256k1_ecmult_context_t *src, const callback_t *cb) { + if (src->pre_g == NULL) { + dst->pre_g = NULL; + } else { + size_t size = sizeof((*dst->pre_g)[0]) * ECMULT_TABLE_SIZE(WINDOW_G); + dst->pre_g = (secp256k1_ge_storage_t (*)[])checked_malloc(cb, size); + memcpy(dst->pre_g, src->pre_g, size); + } +#ifdef USE_ENDOMORPHISM + if (src->pre_g_128 == NULL) { + dst->pre_g_128 = NULL; + } else { + size_t size = sizeof((*dst->pre_g_128)[0]) * ECMULT_TABLE_SIZE(WINDOW_G); + dst->pre_g_128 = (secp256k1_ge_storage_t (*)[])checked_malloc(cb, size); + memcpy(dst->pre_g_128, src->pre_g_128, size); + } +#endif +} + +static int secp256k1_ecmult_context_is_built(const secp256k1_ecmult_context_t *ctx) { + return ctx->pre_g != NULL; +} + +static void secp256k1_ecmult_context_clear(secp256k1_ecmult_context_t *ctx) { + free(ctx->pre_g); +#ifdef USE_ENDOMORPHISM + free(ctx->pre_g_128); +#endif + secp256k1_ecmult_context_init(ctx); +} + +/** Convert a number to WNAF notation. The number becomes represented by sum(2^i * wnaf[i], i=0..bits), + * with the following guarantees: + * - each wnaf[i] is either 0, or an odd integer between -(1<<(w-1) - 1) and (1<<(w-1) - 1) + * - two non-zero entries in wnaf are separated by at least w-1 zeroes. + * - the number of set values in wnaf is returned. This number is at most 256, and at most one more + * than the number of bits in the (absolute value) of the input. + */ +static int secp256k1_ecmult_wnaf(int *wnaf, int len, const secp256k1_scalar_t *a, int w) { + secp256k1_scalar_t s = *a; + int last_set_bit = -1; + int bit = 0; + int sign = 1; + int carry = 0; + + VERIFY_CHECK(wnaf != NULL); + VERIFY_CHECK(0 <= len && len <= 256); + VERIFY_CHECK(a != NULL); + VERIFY_CHECK(2 <= w && w <= 31); + + memset(wnaf, 0, len * sizeof(wnaf[0])); + + if (secp256k1_scalar_get_bits(&s, 255, 1)) { + secp256k1_scalar_negate(&s, &s); + sign = -1; + } + + while (bit < len) { + int now; + int word; + if (secp256k1_scalar_get_bits(&s, bit, 1) == (unsigned int)carry) { + bit++; + continue; + } + + now = w; + if (now > len - bit) { + now = len - bit; + } + + word = secp256k1_scalar_get_bits_var(&s, bit, now) + carry; + + carry = (word >> (w-1)) & 1; + word -= carry << w; + + wnaf[bit] = sign * word; + last_set_bit = bit; + + bit += now; + } +#ifdef VERIFY + CHECK(carry == 0); + while (bit < 256) { + CHECK(secp256k1_scalar_get_bits(&s, bit++, 1) == 0); + } +#endif + return last_set_bit + 1; +} + +static void secp256k1_ecmult(const secp256k1_ecmult_context_t *ctx, secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_scalar_t *na, const secp256k1_scalar_t *ng) { + secp256k1_ge_t pre_a[ECMULT_TABLE_SIZE(WINDOW_A)]; + secp256k1_ge_t tmpa; + secp256k1_fe_t Z; +#ifdef USE_ENDOMORPHISM + secp256k1_ge_t pre_a_lam[ECMULT_TABLE_SIZE(WINDOW_A)]; + secp256k1_scalar_t na_1, na_lam; + /* Splitted G factors. */ + secp256k1_scalar_t ng_1, ng_128; + int wnaf_na_1[130]; + int wnaf_na_lam[130]; + int bits_na_1; + int bits_na_lam; + int wnaf_ng_1[129]; + int bits_ng_1; + int wnaf_ng_128[129]; + int bits_ng_128; +#else + int wnaf_na[256]; + int bits_na; + int wnaf_ng[256]; + int bits_ng; +#endif + int i; + int bits; + +#ifdef USE_ENDOMORPHISM + /* split na into na_1 and na_lam (where na = na_1 + na_lam*lambda, and na_1 and na_lam are ~128 bit) */ + secp256k1_scalar_split_lambda(&na_1, &na_lam, na); + + /* build wnaf representation for na_1 and na_lam. */ + bits_na_1 = secp256k1_ecmult_wnaf(wnaf_na_1, 130, &na_1, WINDOW_A); + bits_na_lam = secp256k1_ecmult_wnaf(wnaf_na_lam, 130, &na_lam, WINDOW_A); + VERIFY_CHECK(bits_na_1 <= 130); + VERIFY_CHECK(bits_na_lam <= 130); + bits = bits_na_1; + if (bits_na_lam > bits) { + bits = bits_na_lam; + } +#else + /* build wnaf representation for na. */ + bits_na = secp256k1_ecmult_wnaf(wnaf_na, 256, na, WINDOW_A); + bits = bits_na; +#endif + + /* Calculate odd multiples of a. + * All multiples are brought to the same Z 'denominator', which is stored + * in Z. Due to secp256k1' isomorphism we can do all operations pretending + * that the Z coordinate was 1, use affine addition formulae, and correct + * the Z coordinate of the result once at the end. + * The exception is the precomputed G table points, which are actually + * affine. Compared to the base used for other points, they have a Z ratio + * of 1/Z, so we can use secp256k1_gej_add_zinv_var, which uses the same + * isomorphism to efficiently add with a known Z inverse. + */ + secp256k1_ecmult_odd_multiples_table_globalz_windowa(pre_a, &Z, a); + +#ifdef USE_ENDOMORPHISM + for (i = 0; i < ECMULT_TABLE_SIZE(WINDOW_A); i++) { + secp256k1_ge_mul_lambda(&pre_a_lam[i], &pre_a[i]); + } + + /* split ng into ng_1 and ng_128 (where gn = gn_1 + gn_128*2^128, and gn_1 and gn_128 are ~128 bit) */ + secp256k1_scalar_split_128(&ng_1, &ng_128, ng); + + /* Build wnaf representation for ng_1 and ng_128 */ + bits_ng_1 = secp256k1_ecmult_wnaf(wnaf_ng_1, 129, &ng_1, WINDOW_G); + bits_ng_128 = secp256k1_ecmult_wnaf(wnaf_ng_128, 129, &ng_128, WINDOW_G); + if (bits_ng_1 > bits) { + bits = bits_ng_1; + } + if (bits_ng_128 > bits) { + bits = bits_ng_128; + } +#else + bits_ng = secp256k1_ecmult_wnaf(wnaf_ng, 256, ng, WINDOW_G); + if (bits_ng > bits) { + bits = bits_ng; + } +#endif + + secp256k1_gej_set_infinity(r); + + for (i = bits - 1; i >= 0; i--) { + int n; + secp256k1_gej_double_var(r, r, NULL); +#ifdef USE_ENDOMORPHISM + if (i < bits_na_1 && (n = wnaf_na_1[i])) { + ECMULT_TABLE_GET_GE(&tmpa, pre_a, n, WINDOW_A); + secp256k1_gej_add_ge_var(r, r, &tmpa, NULL); + } + if (i < bits_na_lam && (n = wnaf_na_lam[i])) { + ECMULT_TABLE_GET_GE(&tmpa, pre_a_lam, n, WINDOW_A); + secp256k1_gej_add_ge_var(r, r, &tmpa, NULL); + } + if (i < bits_ng_1 && (n = wnaf_ng_1[i])) { + ECMULT_TABLE_GET_GE_STORAGE(&tmpa, *ctx->pre_g, n, WINDOW_G); + secp256k1_gej_add_zinv_var(r, r, &tmpa, &Z); + } + if (i < bits_ng_128 && (n = wnaf_ng_128[i])) { + ECMULT_TABLE_GET_GE_STORAGE(&tmpa, *ctx->pre_g_128, n, WINDOW_G); + secp256k1_gej_add_zinv_var(r, r, &tmpa, &Z); + } +#else + if (i < bits_na && (n = wnaf_na[i])) { + ECMULT_TABLE_GET_GE(&tmpa, pre_a, n, WINDOW_A); + secp256k1_gej_add_ge_var(r, r, &tmpa, NULL); + } + if (i < bits_ng && (n = wnaf_ng[i])) { + ECMULT_TABLE_GET_GE_STORAGE(&tmpa, *ctx->pre_g, n, WINDOW_G); + secp256k1_gej_add_zinv_var(r, r, &tmpa, &Z); + } +#endif + } + + if (!r->infinity) { + secp256k1_fe_mul(&r->z, &r->z, &Z); + } +} + +#endif diff --git a/crypto777/secp256k1/field.h b/crypto777/secp256k1/field.h new file mode 100644 index 000000000..41b280892 --- /dev/null +++ b/crypto777/secp256k1/field.h @@ -0,0 +1,119 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_FIELD_ +#define _SECP256K1_FIELD_ + +/** Field element module. + * + * Field elements can be represented in several ways, but code accessing + * it (and implementations) need to take certain properaties into account: + * - Each field element can be normalized or not. + * - Each field element has a magnitude, which represents how far away + * its representation is away from normalization. Normalized elements + * always have a magnitude of 1, but a magnitude of 1 doesn't imply + * normality. + */ + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#if defined(USE_FIELD_10X26) +#include "field_10x26.h" +#elif defined(USE_FIELD_5X52) +#include "field_5x52.h" +#else +#error "Please select field implementation" +#endif + +/** Normalize a field element. */ +static void secp256k1_fe_normalize(secp256k1_fe_t *r); + +/** Weakly normalize a field element: reduce it magnitude to 1, but don't fully normalize. */ +static void secp256k1_fe_normalize_weak(secp256k1_fe_t *r); + +/** Normalize a field element, without constant-time guarantee. */ +static void secp256k1_fe_normalize_var(secp256k1_fe_t *r); + +/** Verify whether a field element represents zero i.e. would normalize to a zero value. The field + * implementation may optionally normalize the input, but this should not be relied upon. */ +static int secp256k1_fe_normalizes_to_zero(secp256k1_fe_t *r); + +/** Verify whether a field element represents zero i.e. would normalize to a zero value. The field + * implementation may optionally normalize the input, but this should not be relied upon. */ +static int secp256k1_fe_normalizes_to_zero_var(secp256k1_fe_t *r); + +/** Set a field element equal to a small integer. Resulting field element is normalized. */ +static void secp256k1_fe_set_int(secp256k1_fe_t *r, int a); + +/** Verify whether a field element is zero. Requires the input to be normalized. */ +static int secp256k1_fe_is_zero(const secp256k1_fe_t *a); + +/** Check the "oddness" of a field element. Requires the input to be normalized. */ +static int secp256k1_fe_is_odd(const secp256k1_fe_t *a); + +/** Compare two field elements. Requires magnitude-1 inputs. */ +static int secp256k1_fe_equal_var(const secp256k1_fe_t *a, const secp256k1_fe_t *b); + +/** Compare two field elements. Requires both inputs to be normalized */ +static int secp256k1_fe_cmp_var(const secp256k1_fe_t *a, const secp256k1_fe_t *b); + +/** Set a field element equal to 32-byte big endian value. If succesful, the resulting field element is normalized. */ +static int secp256k1_fe_set_b32(secp256k1_fe_t *r, const unsigned char *a); + +/** Convert a field element to a 32-byte big endian value. Requires the input to be normalized */ +static void secp256k1_fe_get_b32(unsigned char *r, const secp256k1_fe_t *a); + +/** Set a field element equal to the additive inverse of another. Takes a maximum magnitude of the input + * as an argument. The magnitude of the output is one higher. */ +static void secp256k1_fe_negate(secp256k1_fe_t *r, const secp256k1_fe_t *a, int m); + +/** Multiplies the passed field element with a small integer constant. Multiplies the magnitude by that + * small integer. */ +static void secp256k1_fe_mul_int(secp256k1_fe_t *r, int a); + +/** Adds a field element to another. The result has the sum of the inputs' magnitudes as magnitude. */ +static void secp256k1_fe_add(secp256k1_fe_t *r, const secp256k1_fe_t *a); + +/** Sets a field element to be the product of two others. Requires the inputs' magnitudes to be at most 8. + * The output magnitude is 1 (but not guaranteed to be normalized). */ +static void secp256k1_fe_mul(secp256k1_fe_t *r, const secp256k1_fe_t *a, const secp256k1_fe_t * SECP256K1_RESTRICT b); + +/** Sets a field element to be the square of another. Requires the input's magnitude to be at most 8. + * The output magnitude is 1 (but not guaranteed to be normalized). */ +static void secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a); + +/** Sets a field element to be the (modular) square root (if any exist) of another. Requires the + * input's magnitude to be at most 8. The output magnitude is 1 (but not guaranteed to be + * normalized). Return value indicates whether a square root was found. */ +static int secp256k1_fe_sqrt_var(secp256k1_fe_t *r, const secp256k1_fe_t *a); + +/** Sets a field element to be the (modular) inverse of another. Requires the input's magnitude to be + * at most 8. The output magnitude is 1 (but not guaranteed to be normalized). */ +static void secp256k1_fe_inv(secp256k1_fe_t *r, const secp256k1_fe_t *a); + +/** Potentially faster version of secp256k1_fe_inv, without constant-time guarantee. */ +static void secp256k1_fe_inv_var(secp256k1_fe_t *r, const secp256k1_fe_t *a); + +/** Calculate the (modular) inverses of a batch of field elements. Requires the inputs' magnitudes to be + * at most 8. The output magnitudes are 1 (but not guaranteed to be normalized). The inputs and + * outputs must not overlap in memory. */ +static void secp256k1_fe_inv_all_var(size_t len, secp256k1_fe_t *r, const secp256k1_fe_t *a); + +/** Convert a field element to the storage type. */ +static void secp256k1_fe_to_storage(secp256k1_fe_storage_t *r, const secp256k1_fe_t*); + +/** Convert a field element back from the storage type. */ +static void secp256k1_fe_from_storage(secp256k1_fe_t *r, const secp256k1_fe_storage_t*); + +/** If flag is true, set *r equal to *a; otherwise leave it. Constant-time. */ +static void secp256k1_fe_storage_cmov(secp256k1_fe_storage_t *r, const secp256k1_fe_storage_t *a, int flag); + +/** If flag is true, set *r equal to *a; otherwise leave it. Constant-time. */ +static void secp256k1_fe_cmov(secp256k1_fe_t *r, const secp256k1_fe_t *a, int flag); + +#endif diff --git a/crypto777/secp256k1/field_10x26.h b/crypto777/secp256k1/field_10x26.h new file mode 100644 index 000000000..cc4c74af3 --- /dev/null +++ b/crypto777/secp256k1/field_10x26.h @@ -0,0 +1,47 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_FIELD_REPR_ +#define _SECP256K1_FIELD_REPR_ + +#include + +typedef struct { + /* X = sum(i=0..9, elem[i]*2^26) mod n */ + uint32_t n[10]; +#ifdef VERIFY + int magnitude; + int normalized; +#endif +} secp256k1_fe_t; + +/* Unpacks a constant into a overlapping multi-limbed FE element. */ +#define SECP256K1_FE_CONST_INNER(d7, d6, d5, d4, d3, d2, d1, d0) { \ + (d0) & 0x3FFFFFFUL, \ + (((uint32_t)d0) >> 26) | ((uint32_t)(d1) & 0xFFFFFUL) << 6, \ + (((uint32_t)d1) >> 20) | ((uint32_t)(d2) & 0x3FFFUL) << 12, \ + (((uint32_t)d2) >> 14) | ((uint32_t)(d3) & 0xFFUL) << 18, \ + (((uint32_t)d3) >> 8) | ((uint32_t)(d4) & 0x3UL) << 24, \ + (((uint32_t)d4) >> 2) & 0x3FFFFFFUL, \ + (((uint32_t)d4) >> 28) | ((uint32_t)(d5) & 0x3FFFFFUL) << 4, \ + (((uint32_t)d5) >> 22) | ((uint32_t)(d6) & 0xFFFFUL) << 10, \ + (((uint32_t)d6) >> 16) | ((uint32_t)(d7) & 0x3FFUL) << 16, \ + (((uint32_t)d7) >> 10) \ +} + +#ifdef VERIFY +#define SECP256K1_FE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {SECP256K1_FE_CONST_INNER((d7), (d6), (d5), (d4), (d3), (d2), (d1), (d0)), 1, 1} +#else +#define SECP256K1_FE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {SECP256K1_FE_CONST_INNER((d7), (d6), (d5), (d4), (d3), (d2), (d1), (d0))} +#endif + +typedef struct { + uint32_t n[8]; +} secp256k1_fe_storage_t; + +#define SECP256K1_FE_STORAGE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{ (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }} +#define SECP256K1_FE_STORAGE_CONST_GET(d) d.n[7], d.n[6], d.n[5], d.n[4],d.n[3], d.n[2], d.n[1], d.n[0] +#endif diff --git a/crypto777/secp256k1/field_10x26_impl.h b/crypto777/secp256k1/field_10x26_impl.h new file mode 100644 index 000000000..0fc0b8633 --- /dev/null +++ b/crypto777/secp256k1/field_10x26_impl.h @@ -0,0 +1,1138 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_FIELD_REPR_IMPL_H_ +#define _SECP256K1_FIELD_REPR_IMPL_H_ + +#include +#include +#include "util.h" +#include "num.h" +#include "field.h" + +#ifdef VERIFY +static void secp256k1_fe_verify(const secp256k1_fe_t *a) { + const uint32_t *d = a->n; + int m = a->normalized ? 1 : 2 * a->magnitude, r = 1; + r &= (d[0] <= 0x3FFFFFFUL * m); + r &= (d[1] <= 0x3FFFFFFUL * m); + r &= (d[2] <= 0x3FFFFFFUL * m); + r &= (d[3] <= 0x3FFFFFFUL * m); + r &= (d[4] <= 0x3FFFFFFUL * m); + r &= (d[5] <= 0x3FFFFFFUL * m); + r &= (d[6] <= 0x3FFFFFFUL * m); + r &= (d[7] <= 0x3FFFFFFUL * m); + r &= (d[8] <= 0x3FFFFFFUL * m); + r &= (d[9] <= 0x03FFFFFUL * m); + r &= (a->magnitude >= 0); + r &= (a->magnitude <= 32); + if (a->normalized) { + r &= (a->magnitude <= 1); + if (r && (d[9] == 0x03FFFFFUL)) { + uint32_t mid = d[8] & d[7] & d[6] & d[5] & d[4] & d[3] & d[2]; + if (mid == 0x3FFFFFFUL) { + r &= ((d[1] + 0x40UL + ((d[0] + 0x3D1UL) >> 26)) <= 0x3FFFFFFUL); + } + } + } + VERIFY_CHECK(r == 1); +} +#else +static void secp256k1_fe_verify(const secp256k1_fe_t *a) { + (void)a; +} +#endif + +static void secp256k1_fe_normalize(secp256k1_fe_t *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t m; + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; m = t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; m &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; m &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; m &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; m &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; m &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; m &= t8; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t9 >> 22) | ((t9 == 0x03FFFFFUL) & (m == 0x3FFFFFFUL) + & ((t1 + 0x40UL + ((t0 + 0x3D1UL) >> 26)) > 0x3FFFFFFUL)); + + /* Apply the final reduction (for constant-time behaviour, we do it always) */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; + + /* If t9 didn't carry to bit 22 already, then it should have after any final reduction */ + VERIFY_CHECK(t9 >> 22 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t9 &= 0x03FFFFFUL; + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + r->n[5] = t5; r->n[6] = t6; r->n[7] = t7; r->n[8] = t8; r->n[9] = t9; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_normalize_weak(secp256k1_fe_t *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + r->n[5] = t5; r->n[6] = t6; r->n[7] = t7; r->n[8] = t8; r->n[9] = t9; + +#ifdef VERIFY + r->magnitude = 1; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_normalize_var(secp256k1_fe_t *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t m; + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; m = t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; m &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; m &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; m &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; m &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; m &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; m &= t8; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t9 >> 22) | ((t9 == 0x03FFFFFUL) & (m == 0x3FFFFFFUL) + & ((t1 + 0x40UL + ((t0 + 0x3D1UL) >> 26)) > 0x3FFFFFFUL)); + + if (x) { + t0 += 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; + + /* If t9 didn't carry to bit 22 already, then it should have after any final reduction */ + VERIFY_CHECK(t9 >> 22 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t9 &= 0x03FFFFFUL; + } + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + r->n[5] = t5; r->n[6] = t6; r->n[7] = t7; r->n[8] = t8; r->n[9] = t9; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +static int secp256k1_fe_normalizes_to_zero(secp256k1_fe_t *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* z0 tracks a possible raw value of 0, z1 tracks a possible raw value of P */ + uint32_t z0, z1; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; z0 = t0; z1 = t0 ^ 0x3D0UL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; z0 |= t1; z1 &= t1 ^ 0x40UL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; z0 |= t2; z1 &= t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; z0 |= t3; z1 &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; z0 |= t4; z1 &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; z0 |= t5; z1 &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; z0 |= t6; z1 &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; z0 |= t7; z1 &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; z0 |= t8; z1 &= t8; + z0 |= t9; z1 &= t9 ^ 0x3C00000UL; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + return (z0 == 0) | (z1 == 0x3FFFFFFUL); +} + +static int secp256k1_fe_normalizes_to_zero_var(secp256k1_fe_t *r) { + uint32_t t0, t1, t2, t3, t4, t5, t6, t7, t8, t9; + uint32_t z0, z1; + uint32_t x; + + t0 = r->n[0]; + t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + x = t9 >> 22; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; + + /* z0 tracks a possible raw value of 0, z1 tracks a possible raw value of P */ + z0 = t0 & 0x3FFFFFFUL; + z1 = z0 ^ 0x3D0UL; + + /* Fast return path should catch the majority of cases */ + if ((z0 != 0UL) & (z1 != 0x3FFFFFFUL)) { + return 0; + } + + t1 = r->n[1]; + t2 = r->n[2]; + t3 = r->n[3]; + t4 = r->n[4]; + t5 = r->n[5]; + t6 = r->n[6]; + t7 = r->n[7]; + t8 = r->n[8]; + + t9 &= 0x03FFFFFUL; + t1 += (x << 6); + + t1 += (t0 >> 26); t0 = z0; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; z0 |= t1; z1 &= t1 ^ 0x40UL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; z0 |= t2; z1 &= t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; z0 |= t3; z1 &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; z0 |= t4; z1 &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; z0 |= t5; z1 &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; z0 |= t6; z1 &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; z0 |= t7; z1 &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; z0 |= t8; z1 &= t8; + z0 |= t9; z1 &= t9 ^ 0x3C00000UL; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + return (z0 == 0) | (z1 == 0x3FFFFFFUL); +} + +SECP256K1_INLINE static void secp256k1_fe_set_int(secp256k1_fe_t *r, int a) { + r->n[0] = a; + r->n[1] = r->n[2] = r->n[3] = r->n[4] = r->n[5] = r->n[6] = r->n[7] = r->n[8] = r->n[9] = 0; +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static int secp256k1_fe_is_zero(const secp256k1_fe_t *a) { + const uint32_t *t = a->n; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + return (t[0] | t[1] | t[2] | t[3] | t[4] | t[5] | t[6] | t[7] | t[8] | t[9]) == 0; +} + +SECP256K1_INLINE static int secp256k1_fe_is_odd(const secp256k1_fe_t *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + return a->n[0] & 1; +} + +SECP256K1_INLINE static void secp256k1_fe_clear(secp256k1_fe_t *a) { + int i; +#ifdef VERIFY + a->magnitude = 0; + a->normalized = 1; +#endif + for (i=0; i<10; i++) { + a->n[i] = 0; + } +} + +static int secp256k1_fe_cmp_var(const secp256k1_fe_t *a, const secp256k1_fe_t *b) { + int i; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + VERIFY_CHECK(b->normalized); + secp256k1_fe_verify(a); + secp256k1_fe_verify(b); +#endif + for (i = 9; i >= 0; i--) { + if (a->n[i] > b->n[i]) { + return 1; + } + if (a->n[i] < b->n[i]) { + return -1; + } + } + return 0; +} + +static int secp256k1_fe_set_b32(secp256k1_fe_t *r, const unsigned char *a) { + int i; + r->n[0] = r->n[1] = r->n[2] = r->n[3] = r->n[4] = 0; + r->n[5] = r->n[6] = r->n[7] = r->n[8] = r->n[9] = 0; + for (i=0; i<32; i++) { + int j; + for (j=0; j<4; j++) { + int limb = (8*i+2*j)/26; + int shift = (8*i+2*j)%26; + r->n[limb] |= (uint32_t)((a[31-i] >> (2*j)) & 0x3) << shift; + } + } + if (r->n[9] == 0x3FFFFFUL && (r->n[8] & r->n[7] & r->n[6] & r->n[5] & r->n[4] & r->n[3] & r->n[2]) == 0x3FFFFFFUL && (r->n[1] + 0x40UL + ((r->n[0] + 0x3D1UL) >> 26)) > 0x3FFFFFFUL) { + return 0; + } +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif + return 1; +} + +/** Convert a field element to a 32-byte big endian value. Requires the input to be normalized */ +static void secp256k1_fe_get_b32(unsigned char *r, const secp256k1_fe_t *a) { + int i; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + for (i=0; i<32; i++) { + int j; + int c = 0; + for (j=0; j<4; j++) { + int limb = (8*i+2*j)/26; + int shift = (8*i+2*j)%26; + c |= ((a->n[limb] >> shift) & 0x3) << (2 * j); + } + r[31-i] = c; + } +} + +SECP256K1_INLINE static void secp256k1_fe_negate(secp256k1_fe_t *r, const secp256k1_fe_t *a, int m) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= m); + secp256k1_fe_verify(a); +#endif + r->n[0] = 0x3FFFC2FUL * 2 * (m + 1) - a->n[0]; + r->n[1] = 0x3FFFFBFUL * 2 * (m + 1) - a->n[1]; + r->n[2] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[2]; + r->n[3] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[3]; + r->n[4] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[4]; + r->n[5] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[5]; + r->n[6] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[6]; + r->n[7] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[7]; + r->n[8] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[8]; + r->n[9] = 0x03FFFFFUL * 2 * (m + 1) - a->n[9]; +#ifdef VERIFY + r->magnitude = m + 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static void secp256k1_fe_mul_int(secp256k1_fe_t *r, int a) { + r->n[0] *= a; + r->n[1] *= a; + r->n[2] *= a; + r->n[3] *= a; + r->n[4] *= a; + r->n[5] *= a; + r->n[6] *= a; + r->n[7] *= a; + r->n[8] *= a; + r->n[9] *= a; +#ifdef VERIFY + r->magnitude *= a; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static void secp256k1_fe_add(secp256k1_fe_t *r, const secp256k1_fe_t *a) { +#ifdef VERIFY + secp256k1_fe_verify(a); +#endif + r->n[0] += a->n[0]; + r->n[1] += a->n[1]; + r->n[2] += a->n[2]; + r->n[3] += a->n[3]; + r->n[4] += a->n[4]; + r->n[5] += a->n[5]; + r->n[6] += a->n[6]; + r->n[7] += a->n[7]; + r->n[8] += a->n[8]; + r->n[9] += a->n[9]; +#ifdef VERIFY + r->magnitude += a->magnitude; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +#ifdef VERIFY +#define VERIFY_BITS(x, n) VERIFY_CHECK(((x) >> (n)) == 0) +#else +#define VERIFY_BITS(x, n) do { } while(0) +#endif + +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t *a, const uint32_t * SECP256K1_RESTRICT b) { + uint64_t c, d; + uint64_t u0, u1, u2, u3, u4, u5, u6, u7, u8; + uint32_t t9, t1, t0, t2, t3, t4, t5, t6, t7; + const uint32_t M = 0x3FFFFFFUL, R0 = 0x3D10UL, R1 = 0x400UL; + + VERIFY_BITS(a[0], 30); + VERIFY_BITS(a[1], 30); + VERIFY_BITS(a[2], 30); + VERIFY_BITS(a[3], 30); + VERIFY_BITS(a[4], 30); + VERIFY_BITS(a[5], 30); + VERIFY_BITS(a[6], 30); + VERIFY_BITS(a[7], 30); + VERIFY_BITS(a[8], 30); + VERIFY_BITS(a[9], 26); + VERIFY_BITS(b[0], 30); + VERIFY_BITS(b[1], 30); + VERIFY_BITS(b[2], 30); + VERIFY_BITS(b[3], 30); + VERIFY_BITS(b[4], 30); + VERIFY_BITS(b[5], 30); + VERIFY_BITS(b[6], 30); + VERIFY_BITS(b[7], 30); + VERIFY_BITS(b[8], 30); + VERIFY_BITS(b[9], 26); + + /** [... a b c] is a shorthand for ... + a<<52 + b<<26 + c<<0 mod n. + * px is a shorthand for sum(a[i]*b[x-i], i=0..x). + * Note that [x 0 0 0 0 0 0 0 0 0 0] = [x*R1 x*R0]. + */ + + d = (uint64_t)a[0] * b[9] + + (uint64_t)a[1] * b[8] + + (uint64_t)a[2] * b[7] + + (uint64_t)a[3] * b[6] + + (uint64_t)a[4] * b[5] + + (uint64_t)a[5] * b[4] + + (uint64_t)a[6] * b[3] + + (uint64_t)a[7] * b[2] + + (uint64_t)a[8] * b[1] + + (uint64_t)a[9] * b[0]; + /* VERIFY_BITS(d, 64); */ + /* [d 0 0 0 0 0 0 0 0 0] = [p9 0 0 0 0 0 0 0 0 0] */ + t9 = d & M; d >>= 26; + VERIFY_BITS(t9, 26); + VERIFY_BITS(d, 38); + /* [d t9 0 0 0 0 0 0 0 0 0] = [p9 0 0 0 0 0 0 0 0 0] */ + + c = (uint64_t)a[0] * b[0]; + VERIFY_BITS(c, 60); + /* [d t9 0 0 0 0 0 0 0 0 c] = [p9 0 0 0 0 0 0 0 0 p0] */ + d += (uint64_t)a[1] * b[9] + + (uint64_t)a[2] * b[8] + + (uint64_t)a[3] * b[7] + + (uint64_t)a[4] * b[6] + + (uint64_t)a[5] * b[5] + + (uint64_t)a[6] * b[4] + + (uint64_t)a[7] * b[3] + + (uint64_t)a[8] * b[2] + + (uint64_t)a[9] * b[1]; + VERIFY_BITS(d, 63); + /* [d t9 0 0 0 0 0 0 0 0 c] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + u0 = d & M; d >>= 26; c += u0 * R0; + VERIFY_BITS(u0, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 61); + /* [d u0 t9 0 0 0 0 0 0 0 0 c-u0*R0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + t0 = c & M; c >>= 26; c += u0 * R1; + VERIFY_BITS(t0, 26); + VERIFY_BITS(c, 37); + /* [d u0 t9 0 0 0 0 0 0 0 c-u0*R1 t0-u0*R0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + + c += (uint64_t)a[0] * b[1] + + (uint64_t)a[1] * b[0]; + VERIFY_BITS(c, 62); + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p10 p9 0 0 0 0 0 0 0 p1 p0] */ + d += (uint64_t)a[2] * b[9] + + (uint64_t)a[3] * b[8] + + (uint64_t)a[4] * b[7] + + (uint64_t)a[5] * b[6] + + (uint64_t)a[6] * b[5] + + (uint64_t)a[7] * b[4] + + (uint64_t)a[8] * b[3] + + (uint64_t)a[9] * b[2]; + VERIFY_BITS(d, 63); + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + u1 = d & M; d >>= 26; c += u1 * R0; + VERIFY_BITS(u1, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 63); + /* [d u1 0 t9 0 0 0 0 0 0 0 c-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + t1 = c & M; c >>= 26; c += u1 * R1; + VERIFY_BITS(t1, 26); + VERIFY_BITS(c, 38); + /* [d u1 0 t9 0 0 0 0 0 0 c-u1*R1 t1-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + + c += (uint64_t)a[0] * b[2] + + (uint64_t)a[1] * b[1] + + (uint64_t)a[2] * b[0]; + VERIFY_BITS(c, 62); + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + d += (uint64_t)a[3] * b[9] + + (uint64_t)a[4] * b[8] + + (uint64_t)a[5] * b[7] + + (uint64_t)a[6] * b[6] + + (uint64_t)a[7] * b[5] + + (uint64_t)a[8] * b[4] + + (uint64_t)a[9] * b[3]; + VERIFY_BITS(d, 63); + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + u2 = d & M; d >>= 26; c += u2 * R0; + VERIFY_BITS(u2, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 63); + /* [d u2 0 0 t9 0 0 0 0 0 0 c-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + t2 = c & M; c >>= 26; c += u2 * R1; + VERIFY_BITS(t2, 26); + VERIFY_BITS(c, 38); + /* [d u2 0 0 t9 0 0 0 0 0 c-u2*R1 t2-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[3] + + (uint64_t)a[1] * b[2] + + (uint64_t)a[2] * b[1] + + (uint64_t)a[3] * b[0]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + d += (uint64_t)a[4] * b[9] + + (uint64_t)a[5] * b[8] + + (uint64_t)a[6] * b[7] + + (uint64_t)a[7] * b[6] + + (uint64_t)a[8] * b[5] + + (uint64_t)a[9] * b[4]; + VERIFY_BITS(d, 63); + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + u3 = d & M; d >>= 26; c += u3 * R0; + VERIFY_BITS(u3, 26); + VERIFY_BITS(d, 37); + /* VERIFY_BITS(c, 64); */ + /* [d u3 0 0 0 t9 0 0 0 0 0 c-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + t3 = c & M; c >>= 26; c += u3 * R1; + VERIFY_BITS(t3, 26); + VERIFY_BITS(c, 39); + /* [d u3 0 0 0 t9 0 0 0 0 c-u3*R1 t3-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[4] + + (uint64_t)a[1] * b[3] + + (uint64_t)a[2] * b[2] + + (uint64_t)a[3] * b[1] + + (uint64_t)a[4] * b[0]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[5] * b[9] + + (uint64_t)a[6] * b[8] + + (uint64_t)a[7] * b[7] + + (uint64_t)a[8] * b[6] + + (uint64_t)a[9] * b[5]; + VERIFY_BITS(d, 62); + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + u4 = d & M; d >>= 26; c += u4 * R0; + VERIFY_BITS(u4, 26); + VERIFY_BITS(d, 36); + /* VERIFY_BITS(c, 64); */ + /* [d u4 0 0 0 0 t9 0 0 0 0 c-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + t4 = c & M; c >>= 26; c += u4 * R1; + VERIFY_BITS(t4, 26); + VERIFY_BITS(c, 39); + /* [d u4 0 0 0 0 t9 0 0 0 c-u4*R1 t4-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[5] + + (uint64_t)a[1] * b[4] + + (uint64_t)a[2] * b[3] + + (uint64_t)a[3] * b[2] + + (uint64_t)a[4] * b[1] + + (uint64_t)a[5] * b[0]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[6] * b[9] + + (uint64_t)a[7] * b[8] + + (uint64_t)a[8] * b[7] + + (uint64_t)a[9] * b[6]; + VERIFY_BITS(d, 62); + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + u5 = d & M; d >>= 26; c += u5 * R0; + VERIFY_BITS(u5, 26); + VERIFY_BITS(d, 36); + /* VERIFY_BITS(c, 64); */ + /* [d u5 0 0 0 0 0 t9 0 0 0 c-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + t5 = c & M; c >>= 26; c += u5 * R1; + VERIFY_BITS(t5, 26); + VERIFY_BITS(c, 39); + /* [d u5 0 0 0 0 0 t9 0 0 c-u5*R1 t5-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[6] + + (uint64_t)a[1] * b[5] + + (uint64_t)a[2] * b[4] + + (uint64_t)a[3] * b[3] + + (uint64_t)a[4] * b[2] + + (uint64_t)a[5] * b[1] + + (uint64_t)a[6] * b[0]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[7] * b[9] + + (uint64_t)a[8] * b[8] + + (uint64_t)a[9] * b[7]; + VERIFY_BITS(d, 61); + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + u6 = d & M; d >>= 26; c += u6 * R0; + VERIFY_BITS(u6, 26); + VERIFY_BITS(d, 35); + /* VERIFY_BITS(c, 64); */ + /* [d u6 0 0 0 0 0 0 t9 0 0 c-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + t6 = c & M; c >>= 26; c += u6 * R1; + VERIFY_BITS(t6, 26); + VERIFY_BITS(c, 39); + /* [d u6 0 0 0 0 0 0 t9 0 c-u6*R1 t6-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[7] + + (uint64_t)a[1] * b[6] + + (uint64_t)a[2] * b[5] + + (uint64_t)a[3] * b[4] + + (uint64_t)a[4] * b[3] + + (uint64_t)a[5] * b[2] + + (uint64_t)a[6] * b[1] + + (uint64_t)a[7] * b[0]; + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x8000007C00000007ULL); + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[8] * b[9] + + (uint64_t)a[9] * b[8]; + VERIFY_BITS(d, 58); + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + u7 = d & M; d >>= 26; c += u7 * R0; + VERIFY_BITS(u7, 26); + VERIFY_BITS(d, 32); + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x800001703FFFC2F7ULL); + /* [d u7 0 0 0 0 0 0 0 t9 0 c-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + t7 = c & M; c >>= 26; c += u7 * R1; + VERIFY_BITS(t7, 26); + VERIFY_BITS(c, 38); + /* [d u7 0 0 0 0 0 0 0 t9 c-u7*R1 t7-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[8] + + (uint64_t)a[1] * b[7] + + (uint64_t)a[2] * b[6] + + (uint64_t)a[3] * b[5] + + (uint64_t)a[4] * b[4] + + (uint64_t)a[5] * b[3] + + (uint64_t)a[6] * b[2] + + (uint64_t)a[7] * b[1] + + (uint64_t)a[8] * b[0]; + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x9000007B80000008ULL); + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[9] * b[9]; + VERIFY_BITS(d, 57); + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + u8 = d & M; d >>= 26; c += u8 * R0; + VERIFY_BITS(u8, 26); + VERIFY_BITS(d, 31); + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x9000016FBFFFC2F8ULL); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + r[3] = t3; + VERIFY_BITS(r[3], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[4] = t4; + VERIFY_BITS(r[4], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[5] = t5; + VERIFY_BITS(r[5], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[6] = t6; + VERIFY_BITS(r[6], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[7] = t7; + VERIFY_BITS(r[7], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + r[8] = c & M; c >>= 26; c += u8 * R1; + VERIFY_BITS(r[8], 26); + VERIFY_BITS(c, 39); + /* [d u8 0 0 0 0 0 0 0 0 t9+c-u8*R1 r8-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 0 0 t9+c r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += d * R0 + t9; + VERIFY_BITS(c, 45); + /* [d 0 0 0 0 0 0 0 0 0 c-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[9] = c & (M >> 4); c >>= 22; c += d * (R1 << 4); + VERIFY_BITS(r[9], 22); + VERIFY_BITS(c, 46); + /* [d 0 0 0 0 0 0 0 0 r9+((c-d*R1<<4)<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 -d*R1 r9+(c<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + d = c * (R0 >> 4) + t0; + VERIFY_BITS(d, 56); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 d-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[0] = d & M; d >>= 26; + VERIFY_BITS(r[0], 26); + VERIFY_BITS(d, 30); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1+d r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += c * (R1 >> 4) + t1; + VERIFY_BITS(d, 53); + VERIFY_CHECK(d <= 0x10000003FFFFBFULL); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 d-c*R1>>4 r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [r9 r8 r7 r6 r5 r4 r3 t2 d r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[1] = d & M; d >>= 26; + VERIFY_BITS(r[1], 26); + VERIFY_BITS(d, 27); + VERIFY_CHECK(d <= 0x4000000ULL); + /* [r9 r8 r7 r6 r5 r4 r3 t2+d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += t2; + VERIFY_BITS(d, 27); + /* [r9 r8 r7 r6 r5 r4 r3 d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[2] = d; + VERIFY_BITS(r[2], 27); + /* [r9 r8 r7 r6 r5 r4 r3 r2 r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ +} + +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t *a) { + uint64_t c, d; + uint64_t u0, u1, u2, u3, u4, u5, u6, u7, u8; + uint32_t t9, t0, t1, t2, t3, t4, t5, t6, t7; + const uint32_t M = 0x3FFFFFFUL, R0 = 0x3D10UL, R1 = 0x400UL; + + VERIFY_BITS(a[0], 30); + VERIFY_BITS(a[1], 30); + VERIFY_BITS(a[2], 30); + VERIFY_BITS(a[3], 30); + VERIFY_BITS(a[4], 30); + VERIFY_BITS(a[5], 30); + VERIFY_BITS(a[6], 30); + VERIFY_BITS(a[7], 30); + VERIFY_BITS(a[8], 30); + VERIFY_BITS(a[9], 26); + + /** [... a b c] is a shorthand for ... + a<<52 + b<<26 + c<<0 mod n. + * px is a shorthand for sum(a[i]*a[x-i], i=0..x). + * Note that [x 0 0 0 0 0 0 0 0 0 0] = [x*R1 x*R0]. + */ + + d = (uint64_t)(a[0]*2) * a[9] + + (uint64_t)(a[1]*2) * a[8] + + (uint64_t)(a[2]*2) * a[7] + + (uint64_t)(a[3]*2) * a[6] + + (uint64_t)(a[4]*2) * a[5]; + /* VERIFY_BITS(d, 64); */ + /* [d 0 0 0 0 0 0 0 0 0] = [p9 0 0 0 0 0 0 0 0 0] */ + t9 = d & M; d >>= 26; + VERIFY_BITS(t9, 26); + VERIFY_BITS(d, 38); + /* [d t9 0 0 0 0 0 0 0 0 0] = [p9 0 0 0 0 0 0 0 0 0] */ + + c = (uint64_t)a[0] * a[0]; + VERIFY_BITS(c, 60); + /* [d t9 0 0 0 0 0 0 0 0 c] = [p9 0 0 0 0 0 0 0 0 p0] */ + d += (uint64_t)(a[1]*2) * a[9] + + (uint64_t)(a[2]*2) * a[8] + + (uint64_t)(a[3]*2) * a[7] + + (uint64_t)(a[4]*2) * a[6] + + (uint64_t)a[5] * a[5]; + VERIFY_BITS(d, 63); + /* [d t9 0 0 0 0 0 0 0 0 c] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + u0 = d & M; d >>= 26; c += u0 * R0; + VERIFY_BITS(u0, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 61); + /* [d u0 t9 0 0 0 0 0 0 0 0 c-u0*R0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + t0 = c & M; c >>= 26; c += u0 * R1; + VERIFY_BITS(t0, 26); + VERIFY_BITS(c, 37); + /* [d u0 t9 0 0 0 0 0 0 0 c-u0*R1 t0-u0*R0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + + c += (uint64_t)(a[0]*2) * a[1]; + VERIFY_BITS(c, 62); + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p10 p9 0 0 0 0 0 0 0 p1 p0] */ + d += (uint64_t)(a[2]*2) * a[9] + + (uint64_t)(a[3]*2) * a[8] + + (uint64_t)(a[4]*2) * a[7] + + (uint64_t)(a[5]*2) * a[6]; + VERIFY_BITS(d, 63); + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + u1 = d & M; d >>= 26; c += u1 * R0; + VERIFY_BITS(u1, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 63); + /* [d u1 0 t9 0 0 0 0 0 0 0 c-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + t1 = c & M; c >>= 26; c += u1 * R1; + VERIFY_BITS(t1, 26); + VERIFY_BITS(c, 38); + /* [d u1 0 t9 0 0 0 0 0 0 c-u1*R1 t1-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[2] + + (uint64_t)a[1] * a[1]; + VERIFY_BITS(c, 62); + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + d += (uint64_t)(a[3]*2) * a[9] + + (uint64_t)(a[4]*2) * a[8] + + (uint64_t)(a[5]*2) * a[7] + + (uint64_t)a[6] * a[6]; + VERIFY_BITS(d, 63); + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + u2 = d & M; d >>= 26; c += u2 * R0; + VERIFY_BITS(u2, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 63); + /* [d u2 0 0 t9 0 0 0 0 0 0 c-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + t2 = c & M; c >>= 26; c += u2 * R1; + VERIFY_BITS(t2, 26); + VERIFY_BITS(c, 38); + /* [d u2 0 0 t9 0 0 0 0 0 c-u2*R1 t2-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[3] + + (uint64_t)(a[1]*2) * a[2]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + d += (uint64_t)(a[4]*2) * a[9] + + (uint64_t)(a[5]*2) * a[8] + + (uint64_t)(a[6]*2) * a[7]; + VERIFY_BITS(d, 63); + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + u3 = d & M; d >>= 26; c += u3 * R0; + VERIFY_BITS(u3, 26); + VERIFY_BITS(d, 37); + /* VERIFY_BITS(c, 64); */ + /* [d u3 0 0 0 t9 0 0 0 0 0 c-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + t3 = c & M; c >>= 26; c += u3 * R1; + VERIFY_BITS(t3, 26); + VERIFY_BITS(c, 39); + /* [d u3 0 0 0 t9 0 0 0 0 c-u3*R1 t3-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[4] + + (uint64_t)(a[1]*2) * a[3] + + (uint64_t)a[2] * a[2]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + d += (uint64_t)(a[5]*2) * a[9] + + (uint64_t)(a[6]*2) * a[8] + + (uint64_t)a[7] * a[7]; + VERIFY_BITS(d, 62); + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + u4 = d & M; d >>= 26; c += u4 * R0; + VERIFY_BITS(u4, 26); + VERIFY_BITS(d, 36); + /* VERIFY_BITS(c, 64); */ + /* [d u4 0 0 0 0 t9 0 0 0 0 c-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + t4 = c & M; c >>= 26; c += u4 * R1; + VERIFY_BITS(t4, 26); + VERIFY_BITS(c, 39); + /* [d u4 0 0 0 0 t9 0 0 0 c-u4*R1 t4-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[5] + + (uint64_t)(a[1]*2) * a[4] + + (uint64_t)(a[2]*2) * a[3]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)(a[6]*2) * a[9] + + (uint64_t)(a[7]*2) * a[8]; + VERIFY_BITS(d, 62); + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + u5 = d & M; d >>= 26; c += u5 * R0; + VERIFY_BITS(u5, 26); + VERIFY_BITS(d, 36); + /* VERIFY_BITS(c, 64); */ + /* [d u5 0 0 0 0 0 t9 0 0 0 c-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + t5 = c & M; c >>= 26; c += u5 * R1; + VERIFY_BITS(t5, 26); + VERIFY_BITS(c, 39); + /* [d u5 0 0 0 0 0 t9 0 0 c-u5*R1 t5-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[6] + + (uint64_t)(a[1]*2) * a[5] + + (uint64_t)(a[2]*2) * a[4] + + (uint64_t)a[3] * a[3]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)(a[7]*2) * a[9] + + (uint64_t)a[8] * a[8]; + VERIFY_BITS(d, 61); + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + u6 = d & M; d >>= 26; c += u6 * R0; + VERIFY_BITS(u6, 26); + VERIFY_BITS(d, 35); + /* VERIFY_BITS(c, 64); */ + /* [d u6 0 0 0 0 0 0 t9 0 0 c-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + t6 = c & M; c >>= 26; c += u6 * R1; + VERIFY_BITS(t6, 26); + VERIFY_BITS(c, 39); + /* [d u6 0 0 0 0 0 0 t9 0 c-u6*R1 t6-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[7] + + (uint64_t)(a[1]*2) * a[6] + + (uint64_t)(a[2]*2) * a[5] + + (uint64_t)(a[3]*2) * a[4]; + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x8000007C00000007ULL); + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)(a[8]*2) * a[9]; + VERIFY_BITS(d, 58); + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + u7 = d & M; d >>= 26; c += u7 * R0; + VERIFY_BITS(u7, 26); + VERIFY_BITS(d, 32); + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x800001703FFFC2F7ULL); + /* [d u7 0 0 0 0 0 0 0 t9 0 c-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + t7 = c & M; c >>= 26; c += u7 * R1; + VERIFY_BITS(t7, 26); + VERIFY_BITS(c, 38); + /* [d u7 0 0 0 0 0 0 0 t9 c-u7*R1 t7-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[8] + + (uint64_t)(a[1]*2) * a[7] + + (uint64_t)(a[2]*2) * a[6] + + (uint64_t)(a[3]*2) * a[5] + + (uint64_t)a[4] * a[4]; + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x9000007B80000008ULL); + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[9] * a[9]; + VERIFY_BITS(d, 57); + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + u8 = d & M; d >>= 26; c += u8 * R0; + VERIFY_BITS(u8, 26); + VERIFY_BITS(d, 31); + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x9000016FBFFFC2F8ULL); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + r[3] = t3; + VERIFY_BITS(r[3], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[4] = t4; + VERIFY_BITS(r[4], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[5] = t5; + VERIFY_BITS(r[5], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[6] = t6; + VERIFY_BITS(r[6], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[7] = t7; + VERIFY_BITS(r[7], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + r[8] = c & M; c >>= 26; c += u8 * R1; + VERIFY_BITS(r[8], 26); + VERIFY_BITS(c, 39); + /* [d u8 0 0 0 0 0 0 0 0 t9+c-u8*R1 r8-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 0 0 t9+c r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += d * R0 + t9; + VERIFY_BITS(c, 45); + /* [d 0 0 0 0 0 0 0 0 0 c-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[9] = c & (M >> 4); c >>= 22; c += d * (R1 << 4); + VERIFY_BITS(r[9], 22); + VERIFY_BITS(c, 46); + /* [d 0 0 0 0 0 0 0 0 r9+((c-d*R1<<4)<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 -d*R1 r9+(c<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + d = c * (R0 >> 4) + t0; + VERIFY_BITS(d, 56); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 d-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[0] = d & M; d >>= 26; + VERIFY_BITS(r[0], 26); + VERIFY_BITS(d, 30); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1+d r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += c * (R1 >> 4) + t1; + VERIFY_BITS(d, 53); + VERIFY_CHECK(d <= 0x10000003FFFFBFULL); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 d-c*R1>>4 r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [r9 r8 r7 r6 r5 r4 r3 t2 d r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[1] = d & M; d >>= 26; + VERIFY_BITS(r[1], 26); + VERIFY_BITS(d, 27); + VERIFY_CHECK(d <= 0x4000000ULL); + /* [r9 r8 r7 r6 r5 r4 r3 t2+d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += t2; + VERIFY_BITS(d, 27); + /* [r9 r8 r7 r6 r5 r4 r3 d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[2] = d; + VERIFY_BITS(r[2], 27); + /* [r9 r8 r7 r6 r5 r4 r3 r2 r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ +} + + +static void secp256k1_fe_mul(secp256k1_fe_t *r, const secp256k1_fe_t *a, const secp256k1_fe_t * SECP256K1_RESTRICT b) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= 8); + VERIFY_CHECK(b->magnitude <= 8); + secp256k1_fe_verify(a); + secp256k1_fe_verify(b); + VERIFY_CHECK(r != b); +#endif + secp256k1_fe_mul_inner(r->n, a->n, b->n); +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= 8); + secp256k1_fe_verify(a); +#endif + secp256k1_fe_sqr_inner(r->n, a->n); +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static SECP256K1_INLINE void secp256k1_fe_cmov(secp256k1_fe_t *r, const secp256k1_fe_t *a, int flag) { + uint32_t mask0, mask1; + mask0 = flag + ~((uint32_t)0); + mask1 = ~mask0; + r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); + r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); + r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); + r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); + r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1); + r->n[5] = (r->n[5] & mask0) | (a->n[5] & mask1); + r->n[6] = (r->n[6] & mask0) | (a->n[6] & mask1); + r->n[7] = (r->n[7] & mask0) | (a->n[7] & mask1); + r->n[8] = (r->n[8] & mask0) | (a->n[8] & mask1); + r->n[9] = (r->n[9] & mask0) | (a->n[9] & mask1); +#ifdef VERIFY + if (a->magnitude > r->magnitude) { + r->magnitude = a->magnitude; + } + r->normalized &= a->normalized; +#endif +} + +static SECP256K1_INLINE void secp256k1_fe_storage_cmov(secp256k1_fe_storage_t *r, const secp256k1_fe_storage_t *a, int flag) { + uint32_t mask0, mask1; + mask0 = flag + ~((uint32_t)0); + mask1 = ~mask0; + r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); + r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); + r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); + r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); + r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1); + r->n[5] = (r->n[5] & mask0) | (a->n[5] & mask1); + r->n[6] = (r->n[6] & mask0) | (a->n[6] & mask1); + r->n[7] = (r->n[7] & mask0) | (a->n[7] & mask1); +} + +static void secp256k1_fe_to_storage(secp256k1_fe_storage_t *r, const secp256k1_fe_t *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); +#endif + r->n[0] = a->n[0] | a->n[1] << 26; + r->n[1] = a->n[1] >> 6 | a->n[2] << 20; + r->n[2] = a->n[2] >> 12 | a->n[3] << 14; + r->n[3] = a->n[3] >> 18 | a->n[4] << 8; + r->n[4] = a->n[4] >> 24 | a->n[5] << 2 | a->n[6] << 28; + r->n[5] = a->n[6] >> 4 | a->n[7] << 22; + r->n[6] = a->n[7] >> 10 | a->n[8] << 16; + r->n[7] = a->n[8] >> 16 | a->n[9] << 10; +} + +static SECP256K1_INLINE void secp256k1_fe_from_storage(secp256k1_fe_t *r, const secp256k1_fe_storage_t *a) { + r->n[0] = a->n[0] & 0x3FFFFFFUL; + r->n[1] = a->n[0] >> 26 | ((a->n[1] << 6) & 0x3FFFFFFUL); + r->n[2] = a->n[1] >> 20 | ((a->n[2] << 12) & 0x3FFFFFFUL); + r->n[3] = a->n[2] >> 14 | ((a->n[3] << 18) & 0x3FFFFFFUL); + r->n[4] = a->n[3] >> 8 | ((a->n[4] << 24) & 0x3FFFFFFUL); + r->n[5] = (a->n[4] >> 2) & 0x3FFFFFFUL; + r->n[6] = a->n[4] >> 28 | ((a->n[5] << 4) & 0x3FFFFFFUL); + r->n[7] = a->n[5] >> 22 | ((a->n[6] << 10) & 0x3FFFFFFUL); + r->n[8] = a->n[6] >> 16 | ((a->n[7] << 16) & 0x3FFFFFFUL); + r->n[9] = a->n[7] >> 10; +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; +#endif +} + +#endif diff --git a/crypto777/secp256k1/field_5x52.h b/crypto777/secp256k1/field_5x52.h new file mode 100644 index 000000000..8b24da702 --- /dev/null +++ b/crypto777/secp256k1/field_5x52.h @@ -0,0 +1,47 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_FIELD_REPR_ +#define _SECP256K1_FIELD_REPR_ + +#include + +typedef struct { + /* X = sum(i=0..4, elem[i]*2^52) mod n */ + uint64_t n[5]; +#ifdef VERIFY + int magnitude; + int normalized; +#endif +} secp256k1_fe_t; + +/* Unpacks a constant into a overlapping multi-limbed FE element. */ +#define SECP256K1_FE_CONST_INNER(d7, d6, d5, d4, d3, d2, d1, d0) { \ + (d0) | ((uint64_t)(d1) & 0xFFFFFUL) << 32, \ + ((uint64_t)(d1) >> 20) | ((uint64_t)(d2)) << 12 | ((uint64_t)(d3) & 0xFFUL) << 44, \ + ((uint64_t)(d3) >> 8) | ((uint64_t)(d4) & 0xFFFFFFFUL) << 24, \ + ((uint64_t)(d4) >> 28) | ((uint64_t)(d5)) << 4 | ((uint64_t)(d6) & 0xFFFFUL) << 36, \ + ((uint64_t)(d6) >> 16) | ((uint64_t)(d7)) << 16 \ +} + +#ifdef VERIFY +#define SECP256K1_FE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {SECP256K1_FE_CONST_INNER((d7), (d6), (d5), (d4), (d3), (d2), (d1), (d0)), 1, 1} +#else +#define SECP256K1_FE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {SECP256K1_FE_CONST_INNER((d7), (d6), (d5), (d4), (d3), (d2), (d1), (d0))} +#endif + +typedef struct { + uint64_t n[4]; +} secp256k1_fe_storage_t; + +#define SECP256K1_FE_STORAGE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{ \ + (d0) | ((uint64_t)(d1)) << 32, \ + (d2) | ((uint64_t)(d3)) << 32, \ + (d4) | ((uint64_t)(d5)) << 32, \ + (d6) | ((uint64_t)(d7)) << 32 \ +}} + +#endif diff --git a/crypto777/secp256k1/field_5x52_asm_impl.h b/crypto777/secp256k1/field_5x52_asm_impl.h new file mode 100644 index 000000000..98cc004bf --- /dev/null +++ b/crypto777/secp256k1/field_5x52_asm_impl.h @@ -0,0 +1,502 @@ +/********************************************************************** + * Copyright (c) 2013-2014 Diederik Huys, Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +/** + * Changelog: + * - March 2013, Diederik Huys: original version + * - November 2014, Pieter Wuille: updated to use Peter Dettman's parallel multiplication algorithm + * - December 2014, Pieter Wuille: converted from YASM to GCC inline assembly + */ + +#ifndef _SECP256K1_FIELD_INNER5X52_IMPL_H_ +#define _SECP256K1_FIELD_INNER5X52_IMPL_H_ + +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint64_t *r, const uint64_t *a, const uint64_t * SECP256K1_RESTRICT b) { +/** + * Registers: rdx:rax = multiplication accumulator + * r9:r8 = c + * r15:rcx = d + * r10-r14 = a0-a4 + * rbx = b + * rdi = r + * rsi = a / t? + */ + uint64_t tmp1, tmp2, tmp3; +__asm__ __volatile__( + "movq 0(%%rsi),%%r10\n" + "movq 8(%%rsi),%%r11\n" + "movq 16(%%rsi),%%r12\n" + "movq 24(%%rsi),%%r13\n" + "movq 32(%%rsi),%%r14\n" + + /* d += a3 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r13\n" + "movq %%rax,%%rcx\n" + "movq %%rdx,%%r15\n" + /* d += a2 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d = a0 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c = a4 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r14\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += (c & M) * R */ + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* t3 (tmp1) = d & M */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + "movq %%rsi,%q1\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* d += a4 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a0 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += c * R */ + "movq %%r8,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* t4 = d & M (%%rsi) */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* tx = t4 >> 48 (tmp3) */ + "movq %%rsi,%%rax\n" + "shrq $48,%%rax\n" + "movq %%rax,%q3\n" + /* t4 &= (M >> 4) (tmp2) */ + "movq $0xffffffffffff,%%rax\n" + "andq %%rax,%%rsi\n" + "movq %%rsi,%q2\n" + /* c = a0 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r10\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += a4 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* u0 = d & M (%%rsi) */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* u0 = (u0 << 4) | tx (%%rsi) */ + "shlq $4,%%rsi\n" + "movq %q3,%%rax\n" + "orq %%rax,%%rsi\n" + /* c += u0 * (R >> 4) */ + "movq $0x1000003d1,%%rax\n" + "mulq %%rsi\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[0] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,0(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a1 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a0 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a4 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c += (d & M) * R */ + "movq %%rcx,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* r[1] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,8(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a2 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a1 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a0 * b2 (last use of %%r10 = a0) */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* fetch t3 (%%r10, overwrites a0), t4 (%%rsi) */ + "movq %q2,%%rsi\n" + "movq %q1,%%r10\n" + /* d += a4 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c += (d & M) * R */ + "movq %%rcx,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 (%%rcx only) */ + "shrdq $52,%%r15,%%rcx\n" + /* r[2] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,16(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += t3 */ + "addq %%r10,%%r8\n" + /* c += d * R */ + "movq %%rcx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[3] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,24(%%rdi)\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* c += t4 (%%r8 only) */ + "addq %%rsi,%%r8\n" + /* r[4] = c */ + "movq %%r8,32(%%rdi)\n" +: "+S"(a), "=m"(tmp1), "=m"(tmp2), "=m"(tmp3) +: "b"(b), "D"(r) +: "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "cc", "memory" +); +} + +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint64_t *r, const uint64_t *a) { +/** + * Registers: rdx:rax = multiplication accumulator + * r9:r8 = c + * rcx:rbx = d + * r10-r14 = a0-a4 + * r15 = M (0xfffffffffffff) + * rdi = r + * rsi = a / t? + */ + uint64_t tmp1, tmp2, tmp3; +__asm__ __volatile__( + "movq 0(%%rsi),%%r10\n" + "movq 8(%%rsi),%%r11\n" + "movq 16(%%rsi),%%r12\n" + "movq 24(%%rsi),%%r13\n" + "movq 32(%%rsi),%%r14\n" + "movq $0xfffffffffffff,%%r15\n" + + /* d = (a0*2) * a3 */ + "leaq (%%r10,%%r10,1),%%rax\n" + "mulq %%r13\n" + "movq %%rax,%%rbx\n" + "movq %%rdx,%%rcx\n" + /* d += (a1*2) * a2 */ + "leaq (%%r11,%%r11,1),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c = a4 * a4 */ + "movq %%r14,%%rax\n" + "mulq %%r14\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += (c & M) * R */ + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* t3 (tmp1) = d & M */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + "movq %%rsi,%q1\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* a4 *= 2 */ + "addq %%r14,%%r14\n" + /* d += a0 * a4 */ + "movq %%r10,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d+= (a1*2) * a3 */ + "leaq (%%r11,%%r11,1),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += a2 * a2 */ + "movq %%r12,%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += c * R */ + "movq %%r8,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* t4 = d & M (%%rsi) */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* tx = t4 >> 48 (tmp3) */ + "movq %%rsi,%%rax\n" + "shrq $48,%%rax\n" + "movq %%rax,%q3\n" + /* t4 &= (M >> 4) (tmp2) */ + "movq $0xffffffffffff,%%rax\n" + "andq %%rax,%%rsi\n" + "movq %%rsi,%q2\n" + /* c = a0 * a0 */ + "movq %%r10,%%rax\n" + "mulq %%r10\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += a1 * a4 */ + "movq %%r11,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += (a2*2) * a3 */ + "leaq (%%r12,%%r12,1),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* u0 = d & M (%%rsi) */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* u0 = (u0 << 4) | tx (%%rsi) */ + "shlq $4,%%rsi\n" + "movq %q3,%%rax\n" + "orq %%rax,%%rsi\n" + /* c += u0 * (R >> 4) */ + "movq $0x1000003d1,%%rax\n" + "mulq %%rsi\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[0] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,0(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* a0 *= 2 */ + "addq %%r10,%%r10\n" + /* c += a0 * a1 */ + "movq %%r10,%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a2 * a4 */ + "movq %%r12,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += a3 * a3 */ + "movq %%r13,%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c += (d & M) * R */ + "movq %%rbx,%%rax\n" + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* r[1] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,8(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a0 * a2 (last use of %%r10) */ + "movq %%r10,%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* fetch t3 (%%r10, overwrites a0),t4 (%%rsi) */ + "movq %q2,%%rsi\n" + "movq %q1,%%r10\n" + /* c += a1 * a1 */ + "movq %%r11,%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a3 * a4 */ + "movq %%r13,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c += (d & M) * R */ + "movq %%rbx,%%rax\n" + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 (%%rbx only) */ + "shrdq $52,%%rcx,%%rbx\n" + /* r[2] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,16(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += t3 */ + "addq %%r10,%%r8\n" + /* c += d * R */ + "movq %%rbx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[3] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,24(%%rdi)\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* c += t4 (%%r8 only) */ + "addq %%rsi,%%r8\n" + /* r[4] = c */ + "movq %%r8,32(%%rdi)\n" +: "+S"(a), "=m"(tmp1), "=m"(tmp2), "=m"(tmp3) +: "D"(r) +: "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "cc", "memory" +); +} + +#endif diff --git a/crypto777/secp256k1/field_5x52_impl.h b/crypto777/secp256k1/field_5x52_impl.h new file mode 100644 index 000000000..768e7c9a0 --- /dev/null +++ b/crypto777/secp256k1/field_5x52_impl.h @@ -0,0 +1,456 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_FIELD_REPR_IMPL_H_ +#define _SECP256K1_FIELD_REPR_IMPL_H_ + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include +#include "util.h" +#include "num.h" +#include "field.h" + +#if defined(USE_ASM_X86_64) +#include "field_5x52_asm_impl.h" +#else +#include "field_5x52_int128_impl.h" +#endif + +/** Implements arithmetic modulo FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F, + * represented as 5 uint64_t's in base 2^52. The values are allowed to contain >52 each. In particular, + * each FieldElem has a 'magnitude' associated with it. Internally, a magnitude M means each element + * is at most M*(2^53-1), except the most significant one, which is limited to M*(2^49-1). All operations + * accept any input with magnitude at most M, and have different rules for propagating magnitude to their + * output. + */ + +#ifdef VERIFY +static void secp256k1_fe_verify(const secp256k1_fe_t *a) { + const uint64_t *d = a->n; + int m = a->normalized ? 1 : 2 * a->magnitude, r = 1; + /* secp256k1 'p' value defined in "Standards for Efficient Cryptography" (SEC2) 2.7.1. */ + r &= (d[0] <= 0xFFFFFFFFFFFFFULL * m); + r &= (d[1] <= 0xFFFFFFFFFFFFFULL * m); + r &= (d[2] <= 0xFFFFFFFFFFFFFULL * m); + r &= (d[3] <= 0xFFFFFFFFFFFFFULL * m); + r &= (d[4] <= 0x0FFFFFFFFFFFFULL * m); + r &= (a->magnitude >= 0); + r &= (a->magnitude <= 2048); + if (a->normalized) { + r &= (a->magnitude <= 1); + if (r && (d[4] == 0x0FFFFFFFFFFFFULL) && ((d[3] & d[2] & d[1]) == 0xFFFFFFFFFFFFFULL)) { + r &= (d[0] < 0xFFFFEFFFFFC2FULL); + } + } + VERIFY_CHECK(r == 1); +} +#else +static void secp256k1_fe_verify(const secp256k1_fe_t *a) { + (void)a; +} +#endif + +static void secp256k1_fe_normalize(secp256k1_fe_t *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t m; + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; m = t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; m &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; m &= t3; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t4 >> 48) | ((t4 == 0x0FFFFFFFFFFFFULL) & (m == 0xFFFFFFFFFFFFFULL) + & (t0 >= 0xFFFFEFFFFFC2FULL)); + + /* Apply the final reduction (for constant-time behaviour, we do it always) */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; + + /* If t4 didn't carry to bit 48 already, then it should have after any final reduction */ + VERIFY_CHECK(t4 >> 48 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t4 &= 0x0FFFFFFFFFFFFULL; + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_normalize_weak(secp256k1_fe_t *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + +#ifdef VERIFY + r->magnitude = 1; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_normalize_var(secp256k1_fe_t *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t m; + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; m = t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; m &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; m &= t3; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t4 >> 48) | ((t4 == 0x0FFFFFFFFFFFFULL) & (m == 0xFFFFFFFFFFFFFULL) + & (t0 >= 0xFFFFEFFFFFC2FULL)); + + if (x) { + t0 += 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; + + /* If t4 didn't carry to bit 48 already, then it should have after any final reduction */ + VERIFY_CHECK(t4 >> 48 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t4 &= 0x0FFFFFFFFFFFFULL; + } + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +static int secp256k1_fe_normalizes_to_zero(secp256k1_fe_t *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* z0 tracks a possible raw value of 0, z1 tracks a possible raw value of P */ + uint64_t z0, z1; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; z0 = t0; z1 = t0 ^ 0x1000003D0ULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; z0 |= t1; z1 &= t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; z0 |= t2; z1 &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; z0 |= t3; z1 &= t3; + z0 |= t4; z1 &= t4 ^ 0xF000000000000ULL; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + return (z0 == 0) | (z1 == 0xFFFFFFFFFFFFFULL); +} + +static int secp256k1_fe_normalizes_to_zero_var(secp256k1_fe_t *r) { + uint64_t t0, t1, t2, t3, t4; + uint64_t z0, z1; + uint64_t x; + + t0 = r->n[0]; + t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + x = t4 >> 48; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + + /* z0 tracks a possible raw value of 0, z1 tracks a possible raw value of P */ + z0 = t0 & 0xFFFFFFFFFFFFFULL; + z1 = z0 ^ 0x1000003D0ULL; + + /* Fast return path should catch the majority of cases */ + if ((z0 != 0ULL) & (z1 != 0xFFFFFFFFFFFFFULL)) { + return 0; + } + + t1 = r->n[1]; + t2 = r->n[2]; + t3 = r->n[3]; + + t4 &= 0x0FFFFFFFFFFFFULL; + + t1 += (t0 >> 52); t0 = z0; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; z0 |= t1; z1 &= t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; z0 |= t2; z1 &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; z0 |= t3; z1 &= t3; + z0 |= t4; z1 &= t4 ^ 0xF000000000000ULL; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + return (z0 == 0) | (z1 == 0xFFFFFFFFFFFFFULL); +} + +SECP256K1_INLINE static void secp256k1_fe_set_int(secp256k1_fe_t *r, int a) { + r->n[0] = a; + r->n[1] = r->n[2] = r->n[3] = r->n[4] = 0; +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static int secp256k1_fe_is_zero(const secp256k1_fe_t *a) { + const uint64_t *t = a->n; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + return (t[0] | t[1] | t[2] | t[3] | t[4]) == 0; +} + +SECP256K1_INLINE static int secp256k1_fe_is_odd(const secp256k1_fe_t *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + return a->n[0] & 1; +} + +SECP256K1_INLINE static void secp256k1_fe_clear(secp256k1_fe_t *a) { + int i; +#ifdef VERIFY + a->magnitude = 0; + a->normalized = 1; +#endif + for (i=0; i<5; i++) { + a->n[i] = 0; + } +} + +static int secp256k1_fe_cmp_var(const secp256k1_fe_t *a, const secp256k1_fe_t *b) { + int i; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + VERIFY_CHECK(b->normalized); + secp256k1_fe_verify(a); + secp256k1_fe_verify(b); +#endif + for (i = 4; i >= 0; i--) { + if (a->n[i] > b->n[i]) { + return 1; + } + if (a->n[i] < b->n[i]) { + return -1; + } + } + return 0; +} + +static int secp256k1_fe_set_b32(secp256k1_fe_t *r, const unsigned char *a) { + int i; + r->n[0] = r->n[1] = r->n[2] = r->n[3] = r->n[4] = 0; + for (i=0; i<32; i++) { + int j; + for (j=0; j<2; j++) { + int limb = (8*i+4*j)/52; + int shift = (8*i+4*j)%52; + r->n[limb] |= (uint64_t)((a[31-i] >> (4*j)) & 0xF) << shift; + } + } + if (r->n[4] == 0x0FFFFFFFFFFFFULL && (r->n[3] & r->n[2] & r->n[1]) == 0xFFFFFFFFFFFFFULL && r->n[0] >= 0xFFFFEFFFFFC2FULL) { + return 0; + } +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif + return 1; +} + +/** Convert a field element to a 32-byte big endian value. Requires the input to be normalized */ +static void secp256k1_fe_get_b32(unsigned char *r, const secp256k1_fe_t *a) { + int i; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + for (i=0; i<32; i++) { + int j; + int c = 0; + for (j=0; j<2; j++) { + int limb = (8*i+4*j)/52; + int shift = (8*i+4*j)%52; + c |= ((a->n[limb] >> shift) & 0xF) << (4 * j); + } + r[31-i] = c; + } +} + +SECP256K1_INLINE static void secp256k1_fe_negate(secp256k1_fe_t *r, const secp256k1_fe_t *a, int m) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= m); + secp256k1_fe_verify(a); +#endif + r->n[0] = 0xFFFFEFFFFFC2FULL * 2 * (m + 1) - a->n[0]; + r->n[1] = 0xFFFFFFFFFFFFFULL * 2 * (m + 1) - a->n[1]; + r->n[2] = 0xFFFFFFFFFFFFFULL * 2 * (m + 1) - a->n[2]; + r->n[3] = 0xFFFFFFFFFFFFFULL * 2 * (m + 1) - a->n[3]; + r->n[4] = 0x0FFFFFFFFFFFFULL * 2 * (m + 1) - a->n[4]; +#ifdef VERIFY + r->magnitude = m + 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static void secp256k1_fe_mul_int(secp256k1_fe_t *r, int a) { + r->n[0] *= a; + r->n[1] *= a; + r->n[2] *= a; + r->n[3] *= a; + r->n[4] *= a; +#ifdef VERIFY + r->magnitude *= a; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static void secp256k1_fe_add(secp256k1_fe_t *r, const secp256k1_fe_t *a) { +#ifdef VERIFY + secp256k1_fe_verify(a); +#endif + r->n[0] += a->n[0]; + r->n[1] += a->n[1]; + r->n[2] += a->n[2]; + r->n[3] += a->n[3]; + r->n[4] += a->n[4]; +#ifdef VERIFY + r->magnitude += a->magnitude; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_mul(secp256k1_fe_t *r, const secp256k1_fe_t *a, const secp256k1_fe_t * SECP256K1_RESTRICT b) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= 8); + VERIFY_CHECK(b->magnitude <= 8); + secp256k1_fe_verify(a); + secp256k1_fe_verify(b); + VERIFY_CHECK(r != b); +#endif + secp256k1_fe_mul_inner(r->n, a->n, b->n); +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= 8); + secp256k1_fe_verify(a); +#endif + secp256k1_fe_sqr_inner(r->n, a->n); +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static SECP256K1_INLINE void secp256k1_fe_cmov(secp256k1_fe_t *r, const secp256k1_fe_t *a, int flag) { + uint64_t mask0, mask1; + mask0 = flag + ~((uint64_t)0); + mask1 = ~mask0; + r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); + r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); + r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); + r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); + r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1); +#ifdef VERIFY + if (a->magnitude > r->magnitude) { + r->magnitude = a->magnitude; + } + r->normalized &= a->normalized; +#endif +} + +static SECP256K1_INLINE void secp256k1_fe_storage_cmov(secp256k1_fe_storage_t *r, const secp256k1_fe_storage_t *a, int flag) { + uint64_t mask0, mask1; + mask0 = flag + ~((uint64_t)0); + mask1 = ~mask0; + r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); + r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); + r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); + r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); +} + +static void secp256k1_fe_to_storage(secp256k1_fe_storage_t *r, const secp256k1_fe_t *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); +#endif + r->n[0] = a->n[0] | a->n[1] << 52; + r->n[1] = a->n[1] >> 12 | a->n[2] << 40; + r->n[2] = a->n[2] >> 24 | a->n[3] << 28; + r->n[3] = a->n[3] >> 36 | a->n[4] << 16; +} + +static SECP256K1_INLINE void secp256k1_fe_from_storage(secp256k1_fe_t *r, const secp256k1_fe_storage_t *a) { + r->n[0] = a->n[0] & 0xFFFFFFFFFFFFFULL; + r->n[1] = a->n[0] >> 52 | ((a->n[1] << 12) & 0xFFFFFFFFFFFFFULL); + r->n[2] = a->n[1] >> 40 | ((a->n[2] << 24) & 0xFFFFFFFFFFFFFULL); + r->n[3] = a->n[2] >> 28 | ((a->n[3] << 36) & 0xFFFFFFFFFFFFFULL); + r->n[4] = a->n[3] >> 16; +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; +#endif +} + +#endif diff --git a/crypto777/secp256k1/field_5x52_int128_impl.h b/crypto777/secp256k1/field_5x52_int128_impl.h new file mode 100644 index 000000000..9280bb5ea --- /dev/null +++ b/crypto777/secp256k1/field_5x52_int128_impl.h @@ -0,0 +1,277 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_FIELD_INNER5X52_IMPL_H_ +#define _SECP256K1_FIELD_INNER5X52_IMPL_H_ + +#include + +#ifdef VERIFY +#define VERIFY_BITS(x, n) VERIFY_CHECK(((x) >> (n)) == 0) +#else +#define VERIFY_BITS(x, n) do { } while(0) +#endif + +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint64_t *r, const uint64_t *a, const uint64_t * SECP256K1_RESTRICT b) { + uint128_t c, d; + uint64_t t3, t4, tx, u0; + uint64_t a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4]; + const uint64_t M = 0xFFFFFFFFFFFFFULL, R = 0x1000003D10ULL; + + VERIFY_BITS(a[0], 56); + VERIFY_BITS(a[1], 56); + VERIFY_BITS(a[2], 56); + VERIFY_BITS(a[3], 56); + VERIFY_BITS(a[4], 52); + VERIFY_BITS(b[0], 56); + VERIFY_BITS(b[1], 56); + VERIFY_BITS(b[2], 56); + VERIFY_BITS(b[3], 56); + VERIFY_BITS(b[4], 52); + VERIFY_CHECK(r != b); + + /* [... a b c] is a shorthand for ... + a<<104 + b<<52 + c<<0 mod n. + * px is a shorthand for sum(a[i]*b[x-i], i=0..x). + * Note that [x 0 0 0 0 0] = [x*R]. + */ + + d = (uint128_t)a0 * b[3] + + (uint128_t)a1 * b[2] + + (uint128_t)a2 * b[1] + + (uint128_t)a3 * b[0]; + VERIFY_BITS(d, 114); + /* [d 0 0 0] = [p3 0 0 0] */ + c = (uint128_t)a4 * b[4]; + VERIFY_BITS(c, 112); + /* [c 0 0 0 0 d 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + d += (c & M) * R; c >>= 52; + VERIFY_BITS(d, 115); + VERIFY_BITS(c, 60); + /* [c 0 0 0 0 0 d 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + t3 = d & M; d >>= 52; + VERIFY_BITS(t3, 52); + VERIFY_BITS(d, 63); + /* [c 0 0 0 0 d t3 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + + d += (uint128_t)a0 * b[4] + + (uint128_t)a1 * b[3] + + (uint128_t)a2 * b[2] + + (uint128_t)a3 * b[1] + + (uint128_t)a4 * b[0]; + VERIFY_BITS(d, 115); + /* [c 0 0 0 0 d t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + d += c * R; + VERIFY_BITS(d, 116); + /* [d t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + t4 = d & M; d >>= 52; + VERIFY_BITS(t4, 52); + VERIFY_BITS(d, 64); + /* [d t4 t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + tx = (t4 >> 48); t4 &= (M >> 4); + VERIFY_BITS(tx, 4); + VERIFY_BITS(t4, 48); + /* [d t4+(tx<<48) t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + + c = (uint128_t)a0 * b[0]; + VERIFY_BITS(c, 112); + /* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 0 p4 p3 0 0 p0] */ + d += (uint128_t)a1 * b[4] + + (uint128_t)a2 * b[3] + + (uint128_t)a3 * b[2] + + (uint128_t)a4 * b[1]; + VERIFY_BITS(d, 115); + /* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + u0 = d & M; d >>= 52; + VERIFY_BITS(u0, 52); + VERIFY_BITS(d, 63); + /* [d u0 t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + /* [d 0 t4+(tx<<48)+(u0<<52) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + u0 = (u0 << 4) | tx; + VERIFY_BITS(u0, 56); + /* [d 0 t4+(u0<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + c += (uint128_t)u0 * (R >> 4); + VERIFY_BITS(c, 115); + /* [d 0 t4 t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + r[0] = c & M; c >>= 52; + VERIFY_BITS(r[0], 52); + VERIFY_BITS(c, 61); + /* [d 0 t4 t3 0 c r0] = [p8 0 0 p5 p4 p3 0 0 p0] */ + + c += (uint128_t)a0 * b[1] + + (uint128_t)a1 * b[0]; + VERIFY_BITS(c, 114); + /* [d 0 t4 t3 0 c r0] = [p8 0 0 p5 p4 p3 0 p1 p0] */ + d += (uint128_t)a2 * b[4] + + (uint128_t)a3 * b[3] + + (uint128_t)a4 * b[2]; + VERIFY_BITS(d, 114); + /* [d 0 t4 t3 0 c r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + c += (d & M) * R; d >>= 52; + VERIFY_BITS(c, 115); + VERIFY_BITS(d, 62); + /* [d 0 0 t4 t3 0 c r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + r[1] = c & M; c >>= 52; + VERIFY_BITS(r[1], 52); + VERIFY_BITS(c, 63); + /* [d 0 0 t4 t3 c r1 r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + + c += (uint128_t)a0 * b[2] + + (uint128_t)a1 * b[1] + + (uint128_t)a2 * b[0]; + VERIFY_BITS(c, 114); + /* [d 0 0 t4 t3 c r1 r0] = [p8 0 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint128_t)a3 * b[4] + + (uint128_t)a4 * b[3]; + VERIFY_BITS(d, 114); + /* [d 0 0 t4 t3 c t1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += (d & M) * R; d >>= 52; + VERIFY_BITS(c, 115); + VERIFY_BITS(d, 62); + /* [d 0 0 0 t4 t3 c r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + /* [d 0 0 0 t4 t3 c r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[2] = c & M; c >>= 52; + VERIFY_BITS(r[2], 52); + VERIFY_BITS(c, 63); + /* [d 0 0 0 t4 t3+c r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += d * R + t3;; + VERIFY_BITS(c, 100); + /* [t4 c r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[3] = c & M; c >>= 52; + VERIFY_BITS(r[3], 52); + VERIFY_BITS(c, 48); + /* [t4+c r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += t4; + VERIFY_BITS(c, 49); + /* [c r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[4] = c; + VERIFY_BITS(r[4], 49); + /* [r4 r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ +} + +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint64_t *r, const uint64_t *a) { + uint128_t c, d; + uint64_t a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4]; + int64_t t3, t4, tx, u0; + const uint64_t M = 0xFFFFFFFFFFFFFULL, R = 0x1000003D10ULL; + + VERIFY_BITS(a[0], 56); + VERIFY_BITS(a[1], 56); + VERIFY_BITS(a[2], 56); + VERIFY_BITS(a[3], 56); + VERIFY_BITS(a[4], 52); + + /** [... a b c] is a shorthand for ... + a<<104 + b<<52 + c<<0 mod n. + * px is a shorthand for sum(a[i]*a[x-i], i=0..x). + * Note that [x 0 0 0 0 0] = [x*R]. + */ + + d = (uint128_t)(a0*2) * a3 + + (uint128_t)(a1*2) * a2; + VERIFY_BITS(d, 114); + /* [d 0 0 0] = [p3 0 0 0] */ + c = (uint128_t)a4 * a4; + VERIFY_BITS(c, 112); + /* [c 0 0 0 0 d 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + d += (c & M) * R; c >>= 52; + VERIFY_BITS(d, 115); + VERIFY_BITS(c, 60); + /* [c 0 0 0 0 0 d 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + t3 = d & M; d >>= 52; + VERIFY_BITS(t3, 52); + VERIFY_BITS(d, 63); + /* [c 0 0 0 0 d t3 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + + a4 *= 2; + d += (uint128_t)a0 * a4 + + (uint128_t)(a1*2) * a3 + + (uint128_t)a2 * a2; + VERIFY_BITS(d, 115); + /* [c 0 0 0 0 d t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + d += c * R; + VERIFY_BITS(d, 116); + /* [d t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + t4 = d & M; d >>= 52; + VERIFY_BITS(t4, 52); + VERIFY_BITS(d, 64); + /* [d t4 t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + tx = (t4 >> 48); t4 &= (M >> 4); + VERIFY_BITS(tx, 4); + VERIFY_BITS(t4, 48); + /* [d t4+(tx<<48) t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + + c = (uint128_t)a0 * a0; + VERIFY_BITS(c, 112); + /* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 0 p4 p3 0 0 p0] */ + d += (uint128_t)a1 * a4 + + (uint128_t)(a2*2) * a3; + VERIFY_BITS(d, 114); + /* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + u0 = d & M; d >>= 52; + VERIFY_BITS(u0, 52); + VERIFY_BITS(d, 62); + /* [d u0 t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + /* [d 0 t4+(tx<<48)+(u0<<52) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + u0 = (u0 << 4) | tx; + VERIFY_BITS(u0, 56); + /* [d 0 t4+(u0<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + c += (uint128_t)u0 * (R >> 4); + VERIFY_BITS(c, 113); + /* [d 0 t4 t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + r[0] = c & M; c >>= 52; + VERIFY_BITS(r[0], 52); + VERIFY_BITS(c, 61); + /* [d 0 t4 t3 0 c r0] = [p8 0 0 p5 p4 p3 0 0 p0] */ + + a0 *= 2; + c += (uint128_t)a0 * a1; + VERIFY_BITS(c, 114); + /* [d 0 t4 t3 0 c r0] = [p8 0 0 p5 p4 p3 0 p1 p0] */ + d += (uint128_t)a2 * a4 + + (uint128_t)a3 * a3; + VERIFY_BITS(d, 114); + /* [d 0 t4 t3 0 c r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + c += (d & M) * R; d >>= 52; + VERIFY_BITS(c, 115); + VERIFY_BITS(d, 62); + /* [d 0 0 t4 t3 0 c r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + r[1] = c & M; c >>= 52; + VERIFY_BITS(r[1], 52); + VERIFY_BITS(c, 63); + /* [d 0 0 t4 t3 c r1 r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + + c += (uint128_t)a0 * a2 + + (uint128_t)a1 * a1; + VERIFY_BITS(c, 114); + /* [d 0 0 t4 t3 c r1 r0] = [p8 0 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint128_t)a3 * a4; + VERIFY_BITS(d, 114); + /* [d 0 0 t4 t3 c r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += (d & M) * R; d >>= 52; + VERIFY_BITS(c, 115); + VERIFY_BITS(d, 62); + /* [d 0 0 0 t4 t3 c r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[2] = c & M; c >>= 52; + VERIFY_BITS(r[2], 52); + VERIFY_BITS(c, 63); + /* [d 0 0 0 t4 t3+c r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + c += d * R + t3;; + VERIFY_BITS(c, 100); + /* [t4 c r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[3] = c & M; c >>= 52; + VERIFY_BITS(r[3], 52); + VERIFY_BITS(c, 48); + /* [t4+c r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += t4; + VERIFY_BITS(c, 49); + /* [c r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[4] = c; + VERIFY_BITS(r[4], 49); + /* [r4 r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ +} + +#endif diff --git a/crypto777/secp256k1/field_impl.h b/crypto777/secp256k1/field_impl.h new file mode 100644 index 000000000..6ccbf21dd --- /dev/null +++ b/crypto777/secp256k1/field_impl.h @@ -0,0 +1,271 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_FIELD_IMPL_H_ +#define _SECP256K1_FIELD_IMPL_H_ + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include "util.h" + +#if defined(USE_FIELD_10X26) +#include "field_10x26_impl.h" +#elif defined(USE_FIELD_5X52) +#include "field_5x52_impl.h" +#else +#error "Please select field implementation" +#endif + +SECP256K1_INLINE static int secp256k1_fe_equal_var(const secp256k1_fe_t *a, const secp256k1_fe_t *b) { + secp256k1_fe_t na; + secp256k1_fe_negate(&na, a, 1); + secp256k1_fe_add(&na, b); + return secp256k1_fe_normalizes_to_zero_var(&na); +} + +static int secp256k1_fe_sqrt_var(secp256k1_fe_t *r, const secp256k1_fe_t *a) { + secp256k1_fe_t x2, x3, x6, x9, x11, x22, x44, x88, x176, x220, x223, t1; + int j; + + /** The binary representation of (p + 1)/4 has 3 blocks of 1s, with lengths in + * { 2, 22, 223 }. Use an addition chain to calculate 2^n - 1 for each block: + * 1, [2], 3, 6, 9, 11, [22], 44, 88, 176, 220, [223] + */ + + secp256k1_fe_sqr(&x2, a); + secp256k1_fe_mul(&x2, &x2, a); + + secp256k1_fe_sqr(&x3, &x2); + secp256k1_fe_mul(&x3, &x3, a); + + x6 = x3; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x6, &x6); + } + secp256k1_fe_mul(&x6, &x6, &x3); + + x9 = x6; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x9, &x9); + } + secp256k1_fe_mul(&x9, &x9, &x3); + + x11 = x9; + for (j=0; j<2; j++) { + secp256k1_fe_sqr(&x11, &x11); + } + secp256k1_fe_mul(&x11, &x11, &x2); + + x22 = x11; + for (j=0; j<11; j++) { + secp256k1_fe_sqr(&x22, &x22); + } + secp256k1_fe_mul(&x22, &x22, &x11); + + x44 = x22; + for (j=0; j<22; j++) { + secp256k1_fe_sqr(&x44, &x44); + } + secp256k1_fe_mul(&x44, &x44, &x22); + + x88 = x44; + for (j=0; j<44; j++) { + secp256k1_fe_sqr(&x88, &x88); + } + secp256k1_fe_mul(&x88, &x88, &x44); + + x176 = x88; + for (j=0; j<88; j++) { + secp256k1_fe_sqr(&x176, &x176); + } + secp256k1_fe_mul(&x176, &x176, &x88); + + x220 = x176; + for (j=0; j<44; j++) { + secp256k1_fe_sqr(&x220, &x220); + } + secp256k1_fe_mul(&x220, &x220, &x44); + + x223 = x220; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x223, &x223); + } + secp256k1_fe_mul(&x223, &x223, &x3); + + /* The final result is then assembled using a sliding window over the blocks. */ + + t1 = x223; + for (j=0; j<23; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, &x22); + for (j=0; j<6; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, &x2); + secp256k1_fe_sqr(&t1, &t1); + secp256k1_fe_sqr(r, &t1); + + /* Check that a square root was actually calculated */ + + secp256k1_fe_sqr(&t1, r); + return secp256k1_fe_equal_var(&t1, a); +} + +static void secp256k1_fe_inv(secp256k1_fe_t *r, const secp256k1_fe_t *a) { + secp256k1_fe_t x2, x3, x6, x9, x11, x22, x44, x88, x176, x220, x223, t1; + int j; + + /** The binary representation of (p - 2) has 5 blocks of 1s, with lengths in + * { 1, 2, 22, 223 }. Use an addition chain to calculate 2^n - 1 for each block: + * [1], [2], 3, 6, 9, 11, [22], 44, 88, 176, 220, [223] + */ + + secp256k1_fe_sqr(&x2, a); + secp256k1_fe_mul(&x2, &x2, a); + + secp256k1_fe_sqr(&x3, &x2); + secp256k1_fe_mul(&x3, &x3, a); + + x6 = x3; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x6, &x6); + } + secp256k1_fe_mul(&x6, &x6, &x3); + + x9 = x6; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x9, &x9); + } + secp256k1_fe_mul(&x9, &x9, &x3); + + x11 = x9; + for (j=0; j<2; j++) { + secp256k1_fe_sqr(&x11, &x11); + } + secp256k1_fe_mul(&x11, &x11, &x2); + + x22 = x11; + for (j=0; j<11; j++) { + secp256k1_fe_sqr(&x22, &x22); + } + secp256k1_fe_mul(&x22, &x22, &x11); + + x44 = x22; + for (j=0; j<22; j++) { + secp256k1_fe_sqr(&x44, &x44); + } + secp256k1_fe_mul(&x44, &x44, &x22); + + x88 = x44; + for (j=0; j<44; j++) { + secp256k1_fe_sqr(&x88, &x88); + } + secp256k1_fe_mul(&x88, &x88, &x44); + + x176 = x88; + for (j=0; j<88; j++) { + secp256k1_fe_sqr(&x176, &x176); + } + secp256k1_fe_mul(&x176, &x176, &x88); + + x220 = x176; + for (j=0; j<44; j++) { + secp256k1_fe_sqr(&x220, &x220); + } + secp256k1_fe_mul(&x220, &x220, &x44); + + x223 = x220; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x223, &x223); + } + secp256k1_fe_mul(&x223, &x223, &x3); + + /* The final result is then assembled using a sliding window over the blocks. */ + + t1 = x223; + for (j=0; j<23; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, &x22); + for (j=0; j<5; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, a); + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, &x2); + for (j=0; j<2; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(r, a, &t1); +} + +static void secp256k1_fe_inv_var(secp256k1_fe_t *r, const secp256k1_fe_t *a) { +#if defined(USE_FIELD_INV_BUILTIN) + secp256k1_fe_inv(r, a); +#elif defined(USE_FIELD_INV_NUM) + secp256k1_num_t n, m; + static const secp256k1_fe_t negone = SECP256K1_FE_CONST( + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFC2E + ); + /* secp256k1 field prime, value p defined in "Standards for Efficient Cryptography" (SEC2) 2.7.1. */ + static const unsigned char prime[32] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F + }; + unsigned char b[32]; + secp256k1_fe_t c = *a; + secp256k1_fe_normalize_var(&c); + secp256k1_fe_get_b32(b, &c); + secp256k1_num_set_bin(&n, b, 32); + secp256k1_num_set_bin(&m, prime, 32); + secp256k1_num_mod_inverse(&n, &n, &m); + secp256k1_num_get_bin(b, 32, &n); + VERIFY_CHECK(secp256k1_fe_set_b32(r, b)); + /* Verify the result is the (unique) valid inverse using non-GMP code. */ + secp256k1_fe_mul(&c, &c, r); + secp256k1_fe_add(&c, &negone); + CHECK(secp256k1_fe_normalizes_to_zero_var(&c)); +#else +#error "Please select field inverse implementation" +#endif +} + +static void secp256k1_fe_inv_all_var(size_t len, secp256k1_fe_t *r, const secp256k1_fe_t *a) { + secp256k1_fe_t u; + size_t i; + if (len < 1) { + return; + } + + VERIFY_CHECK((r + len <= a) || (a + len <= r)); + + r[0] = a[0]; + + i = 0; + while (++i < len) { + secp256k1_fe_mul(&r[i], &r[i - 1], &a[i]); + } + + secp256k1_fe_inv_var(&u, &r[--i]); + + while (i > 0) { + int j = i--; + secp256k1_fe_mul(&r[j], &r[i], &u); + secp256k1_fe_mul(&u, &u, &a[j]); + } + + r[0] = u; +} + +#endif diff --git a/crypto777/secp256k1/gen_context.c b/crypto777/secp256k1/gen_context.c new file mode 100644 index 000000000..e5c987d64 --- /dev/null +++ b/crypto777/secp256k1/gen_context.c @@ -0,0 +1,74 @@ +/********************************************************************** + * Copyright (c) 2013, 2014, 2015 Thomas Daede, Cory Fields * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#define USE_BASIC_CONFIG 1 + +#include "basic-config.h" +#include "include/secp256k1.h" +#include "field_impl.h" +#include "scalar_impl.h" +#include "group_impl.h" +#include "ecmult_gen_impl.h" + +static void default_error_callback_fn(const char* str, void* data) { + (void)data; + fprintf(stderr, "[libsecp256k1] internal consistency check failed: %s\n", str); + abort(); +} + +static const callback_t default_error_callback = { + default_error_callback_fn, + NULL +}; + +int main(int argc, char **argv) { + secp256k1_ecmult_gen_context_t ctx; + int inner; + int outer; + FILE* fp; + + (void)argc; + (void)argv; + + fp = fopen("src/ecmult_static_context.h","w"); + if (fp == NULL) { + fprintf(stderr, "Could not open src/ecmult_static_context.h for writing!\n"); + return -1; + } + + fprintf(fp, "#ifndef _SECP256K1_ECMULT_STATIC_CONTEXT_\n"); + fprintf(fp, "#define _SECP256K1_ECMULT_STATIC_CONTEXT_\n"); + fprintf(fp, "#include \"group.h\"\n"); + fprintf(fp, "#define SC SECP256K1_GE_STORAGE_CONST\n"); + fprintf(fp, "static const secp256k1_ge_storage_t secp256k1_ecmult_static_context[64][16] = {\n"); + + secp256k1_ecmult_gen_context_init(&ctx); + secp256k1_ecmult_gen_context_build(&ctx, &default_error_callback); + for(outer = 0; outer != 64; outer++) { + fprintf(fp,"{\n"); + for(inner = 0; inner != 16; inner++) { + fprintf(fp," SC(%uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu)", SECP256K1_GE_STORAGE_CONST_GET((*ctx.prec)[outer][inner])); + if (inner != 15) { + fprintf(fp,",\n"); + } else { + fprintf(fp,"\n"); + } + } + if (outer != 63) { + fprintf(fp,"},\n"); + } else { + fprintf(fp,"}\n"); + } + } + fprintf(fp,"};\n"); + secp256k1_ecmult_gen_context_clear(&ctx); + + fprintf(fp, "#undef SC\n"); + fprintf(fp, "#endif\n"); + fclose(fp); + + return 0; +} diff --git a/crypto777/secp256k1/group.h b/crypto777/secp256k1/group.h new file mode 100644 index 000000000..48398918e --- /dev/null +++ b/crypto777/secp256k1/group.h @@ -0,0 +1,141 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_GROUP_ +#define _SECP256K1_GROUP_ + +#include "num.h" +#include "field.h" + +/** A group element of the secp256k1 curve, in affine coordinates. */ +typedef struct { + secp256k1_fe_t x; + secp256k1_fe_t y; + int infinity; /* whether this represents the point at infinity */ +} secp256k1_ge_t; + +#define SECP256K1_GE_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_CONST((i),(j),(k),(l),(m),(n),(o),(p)), 0} +#define SECP256K1_GE_CONST_INFINITY {SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), 1} + +/** A group element of the secp256k1 curve, in jacobian coordinates. */ +typedef struct { + secp256k1_fe_t x; /* actual X: x/z^2 */ + secp256k1_fe_t y; /* actual Y: y/z^3 */ + secp256k1_fe_t z; + int infinity; /* whether this represents the point at infinity */ +} secp256k1_gej_t; + +#define SECP256K1_GEJ_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_CONST((i),(j),(k),(l),(m),(n),(o),(p)), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1), 0} +#define SECP256K1_GEJ_CONST_INFINITY {SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), 1} + +typedef struct { + secp256k1_fe_storage_t x; + secp256k1_fe_storage_t y; +} secp256k1_ge_storage_t; + +#define SECP256K1_GE_STORAGE_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_STORAGE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_STORAGE_CONST((i),(j),(k),(l),(m),(n),(o),(p))} + +#define SECP256K1_GE_STORAGE_CONST_GET(t) SECP256K1_FE_STORAGE_CONST_GET(t.x), SECP256K1_FE_STORAGE_CONST_GET(t.y) + +/** Set a group element equal to the point at infinity */ +static void secp256k1_ge_set_infinity(secp256k1_ge_t *r); + +/** Set a group element equal to the point with given X and Y coordinates */ +static void secp256k1_ge_set_xy(secp256k1_ge_t *r, const secp256k1_fe_t *x, const secp256k1_fe_t *y); + +/** Set a group element (affine) equal to the point with the given X coordinate, and given oddness + * for Y. Return value indicates whether the result is valid. */ +static int secp256k1_ge_set_xo_var(secp256k1_ge_t *r, const secp256k1_fe_t *x, int odd); + +/** Check whether a group element is the point at infinity. */ +static int secp256k1_ge_is_infinity(const secp256k1_ge_t *a); + +/** Check whether a group element is valid (i.e., on the curve). */ +static int secp256k1_ge_is_valid_var(const secp256k1_ge_t *a); + +static void secp256k1_ge_neg(secp256k1_ge_t *r, const secp256k1_ge_t *a); + +/** Set a group element equal to another which is given in jacobian coordinates */ +static void secp256k1_ge_set_gej(secp256k1_ge_t *r, secp256k1_gej_t *a); + +/** Set a batch of group elements equal to the inputs given in jacobian coordinates */ +static void secp256k1_ge_set_all_gej_var(size_t len, secp256k1_ge_t *r, const secp256k1_gej_t *a, const callback_t *cb); + +/** Set a batch of group elements equal to the inputs given in jacobian + * coordinates (with known z-ratios). zr must contain the known z-ratios such + * that mul(a[i].z, zr[i+1]) == a[i+1].z. zr[0] is ignored. */ +static void secp256k1_ge_set_table_gej_var(size_t len, secp256k1_ge_t *r, const secp256k1_gej_t *a, const secp256k1_fe_t *zr); + +/** Bring a batch inputs given in jacobian coordinates (with known z-ratios) to + * the same global z "denominator". zr must contain the known z-ratios such + * that mul(a[i].z, zr[i+1]) == a[i+1].z. zr[0] is ignored. The x and y + * coordinates of the result are stored in r, the common z coordinate is + * stored in globalz. */ +static void secp256k1_ge_globalz_set_table_gej(size_t len, secp256k1_ge_t *r, secp256k1_fe_t *globalz, const secp256k1_gej_t *a, const secp256k1_fe_t *zr); + +/** Set a group element (jacobian) equal to the point at infinity. */ +static void secp256k1_gej_set_infinity(secp256k1_gej_t *r); + +/** Set a group element (jacobian) equal to the point with given X and Y coordinates. */ +static void secp256k1_gej_set_xy(secp256k1_gej_t *r, const secp256k1_fe_t *x, const secp256k1_fe_t *y); + +/** Set a group element (jacobian) equal to another which is given in affine coordinates. */ +static void secp256k1_gej_set_ge(secp256k1_gej_t *r, const secp256k1_ge_t *a); + +/** Compare the X coordinate of a group element (jacobian). */ +static int secp256k1_gej_eq_x_var(const secp256k1_fe_t *x, const secp256k1_gej_t *a); + +/** Set r equal to the inverse of a (i.e., mirrored around the X axis) */ +static void secp256k1_gej_neg(secp256k1_gej_t *r, const secp256k1_gej_t *a); + +/** Check whether a group element is the point at infinity. */ +static int secp256k1_gej_is_infinity(const secp256k1_gej_t *a); + +/** Set r equal to the double of a. If rzr is not-NULL, r->z = a->z * *rzr (where infinity means an implicit z = 0). + * a may not be zero. Constant time. */ +static void secp256k1_gej_double_nonzero(secp256k1_gej_t *r, const secp256k1_gej_t *a, secp256k1_fe_t *rzr); + +/** Set r equal to the double of a. If rzr is not-NULL, r->z = a->z * *rzr (where infinity means an implicit z = 0). */ +static void secp256k1_gej_double_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, secp256k1_fe_t *rzr); + +/** Set r equal to the sum of a and b. If rzr is non-NULL, r->z = a->z * *rzr (a cannot be infinity in that case). */ +static void secp256k1_gej_add_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_gej_t *b, secp256k1_fe_t *rzr); + +/** Set r equal to the sum of a and b (with b given in affine coordinates, and not infinity). */ +static void secp256k1_gej_add_ge(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_ge_t *b); + +/** Set r equal to the sum of a and b (with b given in affine coordinates). This is more efficient + than secp256k1_gej_add_var. It is identical to secp256k1_gej_add_ge but without constant-time + guarantee, and b is allowed to be infinity. If rzr is non-NULL, r->z = a->z * *rzr (a cannot be infinity in that case). */ +static void secp256k1_gej_add_ge_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_ge_t *b, secp256k1_fe_t *rzr); + +/** Set r equal to the sum of a and b (with the inverse of b's Z coordinate passed as bzinv). */ +static void secp256k1_gej_add_zinv_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_ge_t *b, const secp256k1_fe_t *bzinv); + +#ifdef USE_ENDOMORPHISM +/** Set r to be equal to lambda times a, where lambda is chosen in a way such that this is very fast. */ +static void secp256k1_ge_mul_lambda(secp256k1_ge_t *r, const secp256k1_ge_t *a); +#endif + +/** Clear a secp256k1_gej_t to prevent leaking sensitive information. */ +static void secp256k1_gej_clear(secp256k1_gej_t *r); + +/** Clear a secp256k1_ge_t to prevent leaking sensitive information. */ +static void secp256k1_ge_clear(secp256k1_ge_t *r); + +/** Convert a group element to the storage type. */ +static void secp256k1_ge_to_storage(secp256k1_ge_storage_t *r, const secp256k1_ge_t*); + +/** Convert a group element back from the storage type. */ +static void secp256k1_ge_from_storage(secp256k1_ge_t *r, const secp256k1_ge_storage_t*); + +/** If flag is true, set *r equal to *a; otherwise leave it. Constant-time. */ +static void secp256k1_ge_storage_cmov(secp256k1_ge_storage_t *r, const secp256k1_ge_storage_t *a, int flag); + +/** Rescale a jacobian point by b which must be non-zero. Constant-time. */ +static void secp256k1_gej_rescale(secp256k1_gej_t *r, const secp256k1_fe_t *b); + +#endif diff --git a/crypto777/secp256k1/group_impl.h b/crypto777/secp256k1/group_impl.h new file mode 100644 index 000000000..165eba2a5 --- /dev/null +++ b/crypto777/secp256k1/group_impl.h @@ -0,0 +1,634 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_GROUP_IMPL_H_ +#define _SECP256K1_GROUP_IMPL_H_ + +#include + +#include "num.h" +#include "field.h" +#include "group.h" + +/** Generator for secp256k1, value 'g' defined in + * "Standards for Efficient Cryptography" (SEC2) 2.7.1. + */ +static const secp256k1_ge_t secp256k1_ge_const_g = SECP256K1_GE_CONST( + 0x79BE667EUL, 0xF9DCBBACUL, 0x55A06295UL, 0xCE870B07UL, + 0x029BFCDBUL, 0x2DCE28D9UL, 0x59F2815BUL, 0x16F81798UL, + 0x483ADA77UL, 0x26A3C465UL, 0x5DA4FBFCUL, 0x0E1108A8UL, + 0xFD17B448UL, 0xA6855419UL, 0x9C47D08FUL, 0xFB10D4B8UL +); + +static void secp256k1_ge_set_gej_zinv(secp256k1_ge_t *r, const secp256k1_gej_t *a, const secp256k1_fe_t *zi) { + secp256k1_fe_t zi2; + secp256k1_fe_t zi3; + secp256k1_fe_sqr(&zi2, zi); + secp256k1_fe_mul(&zi3, &zi2, zi); + secp256k1_fe_mul(&r->x, &a->x, &zi2); + secp256k1_fe_mul(&r->y, &a->y, &zi3); + r->infinity = a->infinity; +} + +static void secp256k1_ge_set_infinity(secp256k1_ge_t *r) { + r->infinity = 1; +} + +static void secp256k1_ge_set_xy(secp256k1_ge_t *r, const secp256k1_fe_t *x, const secp256k1_fe_t *y) { + r->infinity = 0; + r->x = *x; + r->y = *y; +} + +static int secp256k1_ge_is_infinity(const secp256k1_ge_t *a) { + return a->infinity; +} + +static void secp256k1_ge_neg(secp256k1_ge_t *r, const secp256k1_ge_t *a) { + *r = *a; + secp256k1_fe_normalize_weak(&r->y); + secp256k1_fe_negate(&r->y, &r->y, 1); +} + +static void secp256k1_ge_set_gej(secp256k1_ge_t *r, secp256k1_gej_t *a) { + secp256k1_fe_t z2, z3; + r->infinity = a->infinity; + secp256k1_fe_inv(&a->z, &a->z); + secp256k1_fe_sqr(&z2, &a->z); + secp256k1_fe_mul(&z3, &a->z, &z2); + secp256k1_fe_mul(&a->x, &a->x, &z2); + secp256k1_fe_mul(&a->y, &a->y, &z3); + secp256k1_fe_set_int(&a->z, 1); + r->x = a->x; + r->y = a->y; +} + +static void secp256k1_ge_set_gej_var(secp256k1_ge_t *r, secp256k1_gej_t *a) { + secp256k1_fe_t z2, z3; + r->infinity = a->infinity; + if (a->infinity) { + return; + } + secp256k1_fe_inv_var(&a->z, &a->z); + secp256k1_fe_sqr(&z2, &a->z); + secp256k1_fe_mul(&z3, &a->z, &z2); + secp256k1_fe_mul(&a->x, &a->x, &z2); + secp256k1_fe_mul(&a->y, &a->y, &z3); + secp256k1_fe_set_int(&a->z, 1); + r->x = a->x; + r->y = a->y; +} + +static void secp256k1_ge_set_all_gej_var(size_t len, secp256k1_ge_t *r, const secp256k1_gej_t *a, const callback_t *cb) { + secp256k1_fe_t *az; + secp256k1_fe_t *azi; + size_t i; + size_t count = 0; + az = (secp256k1_fe_t *)checked_malloc(cb, sizeof(secp256k1_fe_t) * len); + for (i = 0; i < len; i++) { + if (!a[i].infinity) { + az[count++] = a[i].z; + } + } + + azi = (secp256k1_fe_t *)checked_malloc(cb, sizeof(secp256k1_fe_t) * count); + secp256k1_fe_inv_all_var(count, azi, az); + free(az); + + count = 0; + for (i = 0; i < len; i++) { + r[i].infinity = a[i].infinity; + if (!a[i].infinity) { + secp256k1_ge_set_gej_zinv(&r[i], &a[i], &azi[count++]); + } + } + free(azi); +} + +static void secp256k1_ge_set_table_gej_var(size_t len, secp256k1_ge_t *r, const secp256k1_gej_t *a, const secp256k1_fe_t *zr) { + size_t i = len - 1; + secp256k1_fe_t zi; + + if (len < 1) + return; + + /* Compute the inverse of the last z coordinate, and use it to compute the last affine output. */ + secp256k1_fe_inv(&zi, &a[i].z); + secp256k1_ge_set_gej_zinv(&r[i], &a[i], &zi); + + /* Work out way backwards, using the z-ratios to scale the x/y values. */ + while (i > 0) { + secp256k1_fe_mul(&zi, &zi, &zr[i]); + i--; + secp256k1_ge_set_gej_zinv(&r[i], &a[i], &zi); + } +} + +static void secp256k1_ge_globalz_set_table_gej(size_t len, secp256k1_ge_t *r, secp256k1_fe_t *globalz, const secp256k1_gej_t *a, const secp256k1_fe_t *zr) { + size_t i = len - 1; + secp256k1_fe_t zs; + + if (len < 1) + return; + + /* The z of the final point gives us the "global Z" for the table. */ + r[i].x = a[i].x; + r[i].y = a[i].y; + *globalz = a[i].z; + r[i].infinity = 0; + zs = zr[i]; + + /* Work our way backwards, using the z-ratios to scale the x/y values. */ + while (i > 0) { + if (i != len - 1) { + secp256k1_fe_mul(&zs, &zs, &zr[i]); + } + i--; + secp256k1_ge_set_gej_zinv(&r[i], &a[i], &zs); + } +} + +static void secp256k1_gej_set_infinity(secp256k1_gej_t *r) { + r->infinity = 1; + secp256k1_fe_set_int(&r->x, 0); + secp256k1_fe_set_int(&r->y, 0); + secp256k1_fe_set_int(&r->z, 0); +} + +static void secp256k1_gej_set_xy(secp256k1_gej_t *r, const secp256k1_fe_t *x, const secp256k1_fe_t *y) { + r->infinity = 0; + r->x = *x; + r->y = *y; + secp256k1_fe_set_int(&r->z, 1); +} + +static void secp256k1_gej_clear(secp256k1_gej_t *r) { + r->infinity = 0; + secp256k1_fe_clear(&r->x); + secp256k1_fe_clear(&r->y); + secp256k1_fe_clear(&r->z); +} + +static void secp256k1_ge_clear(secp256k1_ge_t *r) { + r->infinity = 0; + secp256k1_fe_clear(&r->x); + secp256k1_fe_clear(&r->y); +} + +static int secp256k1_ge_set_xo_var(secp256k1_ge_t *r, const secp256k1_fe_t *x, int odd) { + secp256k1_fe_t x2, x3, c; + r->x = *x; + secp256k1_fe_sqr(&x2, x); + secp256k1_fe_mul(&x3, x, &x2); + r->infinity = 0; + secp256k1_fe_set_int(&c, 7); + secp256k1_fe_add(&c, &x3); + if (!secp256k1_fe_sqrt_var(&r->y, &c)) { + return 0; + } + secp256k1_fe_normalize_var(&r->y); + if (secp256k1_fe_is_odd(&r->y) != odd) { + secp256k1_fe_negate(&r->y, &r->y, 1); + } + return 1; +} + +static void secp256k1_gej_set_ge(secp256k1_gej_t *r, const secp256k1_ge_t *a) { + r->infinity = a->infinity; + r->x = a->x; + r->y = a->y; + secp256k1_fe_set_int(&r->z, 1); +} + +static int secp256k1_gej_eq_x_var(const secp256k1_fe_t *x, const secp256k1_gej_t *a) { + secp256k1_fe_t r, r2; + VERIFY_CHECK(!a->infinity); + secp256k1_fe_sqr(&r, &a->z); secp256k1_fe_mul(&r, &r, x); + r2 = a->x; secp256k1_fe_normalize_weak(&r2); + return secp256k1_fe_equal_var(&r, &r2); +} + +static void secp256k1_gej_neg(secp256k1_gej_t *r, const secp256k1_gej_t *a) { + r->infinity = a->infinity; + r->x = a->x; + r->y = a->y; + r->z = a->z; + secp256k1_fe_normalize_weak(&r->y); + secp256k1_fe_negate(&r->y, &r->y, 1); +} + +static int secp256k1_gej_is_infinity(const secp256k1_gej_t *a) { + return a->infinity; +} + +static int secp256k1_gej_is_valid_var(const secp256k1_gej_t *a) { + secp256k1_fe_t y2, x3, z2, z6; + if (a->infinity) { + return 0; + } + /** y^2 = x^3 + 7 + * (Y/Z^3)^2 = (X/Z^2)^3 + 7 + * Y^2 / Z^6 = X^3 / Z^6 + 7 + * Y^2 = X^3 + 7*Z^6 + */ + secp256k1_fe_sqr(&y2, &a->y); + secp256k1_fe_sqr(&x3, &a->x); secp256k1_fe_mul(&x3, &x3, &a->x); + secp256k1_fe_sqr(&z2, &a->z); + secp256k1_fe_sqr(&z6, &z2); secp256k1_fe_mul(&z6, &z6, &z2); + secp256k1_fe_mul_int(&z6, 7); + secp256k1_fe_add(&x3, &z6); + secp256k1_fe_normalize_weak(&x3); + return secp256k1_fe_equal_var(&y2, &x3); +} + +static int secp256k1_ge_is_valid_var(const secp256k1_ge_t *a) { + secp256k1_fe_t y2, x3, c; + if (a->infinity) { + return 0; + } + /* y^2 = x^3 + 7 */ + secp256k1_fe_sqr(&y2, &a->y); + secp256k1_fe_sqr(&x3, &a->x); secp256k1_fe_mul(&x3, &x3, &a->x); + secp256k1_fe_set_int(&c, 7); + secp256k1_fe_add(&x3, &c); + secp256k1_fe_normalize_weak(&x3); + return secp256k1_fe_equal_var(&y2, &x3); +} + +static void secp256k1_gej_double_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, secp256k1_fe_t *rzr) { + /* Operations: 3 mul, 4 sqr, 0 normalize, 12 mul_int/add/negate */ + secp256k1_fe_t t1,t2,t3,t4; + /** For secp256k1, 2Q is infinity if and only if Q is infinity. This is because if 2Q = infinity, + * Q must equal -Q, or that Q.y == -(Q.y), or Q.y is 0. For a point on y^2 = x^3 + 7 to have + * y=0, x^3 must be -7 mod p. However, -7 has no cube root mod p. + */ + r->infinity = a->infinity; + if (r->infinity) { + if (rzr) { + secp256k1_fe_set_int(rzr, 1); + } + return; + } + + if (rzr) { + *rzr = a->y; + secp256k1_fe_normalize_weak(rzr); + secp256k1_fe_mul_int(rzr, 2); + } + + secp256k1_fe_mul(&r->z, &a->z, &a->y); + secp256k1_fe_mul_int(&r->z, 2); /* Z' = 2*Y*Z (2) */ + secp256k1_fe_sqr(&t1, &a->x); + secp256k1_fe_mul_int(&t1, 3); /* T1 = 3*X^2 (3) */ + secp256k1_fe_sqr(&t2, &t1); /* T2 = 9*X^4 (1) */ + secp256k1_fe_sqr(&t3, &a->y); + secp256k1_fe_mul_int(&t3, 2); /* T3 = 2*Y^2 (2) */ + secp256k1_fe_sqr(&t4, &t3); + secp256k1_fe_mul_int(&t4, 2); /* T4 = 8*Y^4 (2) */ + secp256k1_fe_mul(&t3, &t3, &a->x); /* T3 = 2*X*Y^2 (1) */ + r->x = t3; + secp256k1_fe_mul_int(&r->x, 4); /* X' = 8*X*Y^2 (4) */ + secp256k1_fe_negate(&r->x, &r->x, 4); /* X' = -8*X*Y^2 (5) */ + secp256k1_fe_add(&r->x, &t2); /* X' = 9*X^4 - 8*X*Y^2 (6) */ + secp256k1_fe_negate(&t2, &t2, 1); /* T2 = -9*X^4 (2) */ + secp256k1_fe_mul_int(&t3, 6); /* T3 = 12*X*Y^2 (6) */ + secp256k1_fe_add(&t3, &t2); /* T3 = 12*X*Y^2 - 9*X^4 (8) */ + secp256k1_fe_mul(&r->y, &t1, &t3); /* Y' = 36*X^3*Y^2 - 27*X^6 (1) */ + secp256k1_fe_negate(&t2, &t4, 2); /* T2 = -8*Y^4 (3) */ + secp256k1_fe_add(&r->y, &t2); /* Y' = 36*X^3*Y^2 - 27*X^6 - 8*Y^4 (4) */ +} + +static SECP256K1_INLINE void secp256k1_gej_double_nonzero(secp256k1_gej_t *r, const secp256k1_gej_t *a, secp256k1_fe_t *rzr) { + VERIFY_CHECK(!secp256k1_gej_is_infinity(a)); + secp256k1_gej_double_var(r, a, rzr); +} + +static void secp256k1_gej_add_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_gej_t *b, secp256k1_fe_t *rzr) { + /* Operations: 12 mul, 4 sqr, 2 normalize, 12 mul_int/add/negate */ + secp256k1_fe_t z22, z12, u1, u2, s1, s2, h, i, i2, h2, h3, t; + + if (a->infinity) { + VERIFY_CHECK(rzr == NULL); + *r = *b; + return; + } + + if (b->infinity) { + if (rzr) { + secp256k1_fe_set_int(rzr, 1); + } + *r = *a; + return; + } + + r->infinity = 0; + secp256k1_fe_sqr(&z22, &b->z); + secp256k1_fe_sqr(&z12, &a->z); + secp256k1_fe_mul(&u1, &a->x, &z22); + secp256k1_fe_mul(&u2, &b->x, &z12); + secp256k1_fe_mul(&s1, &a->y, &z22); secp256k1_fe_mul(&s1, &s1, &b->z); + secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &a->z); + secp256k1_fe_negate(&h, &u1, 1); secp256k1_fe_add(&h, &u2); + secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); + if (secp256k1_fe_normalizes_to_zero_var(&h)) { + if (secp256k1_fe_normalizes_to_zero_var(&i)) { + secp256k1_gej_double_var(r, a, rzr); + } else { + if (rzr) { + secp256k1_fe_set_int(rzr, 0); + } + r->infinity = 1; + } + return; + } + secp256k1_fe_sqr(&i2, &i); + secp256k1_fe_sqr(&h2, &h); + secp256k1_fe_mul(&h3, &h, &h2); + secp256k1_fe_mul(&h, &h, &b->z); + if (rzr) { + *rzr = h; + } + secp256k1_fe_mul(&r->z, &a->z, &h); + secp256k1_fe_mul(&t, &u1, &h2); + r->x = t; secp256k1_fe_mul_int(&r->x, 2); secp256k1_fe_add(&r->x, &h3); secp256k1_fe_negate(&r->x, &r->x, 3); secp256k1_fe_add(&r->x, &i2); + secp256k1_fe_negate(&r->y, &r->x, 5); secp256k1_fe_add(&r->y, &t); secp256k1_fe_mul(&r->y, &r->y, &i); + secp256k1_fe_mul(&h3, &h3, &s1); secp256k1_fe_negate(&h3, &h3, 1); + secp256k1_fe_add(&r->y, &h3); +} + +static void secp256k1_gej_add_ge_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_ge_t *b, secp256k1_fe_t *rzr) { + /* 8 mul, 3 sqr, 4 normalize, 12 mul_int/add/negate */ + secp256k1_fe_t z12, u1, u2, s1, s2, h, i, i2, h2, h3, t; + if (a->infinity) { + VERIFY_CHECK(rzr == NULL); + secp256k1_gej_set_ge(r, b); + return; + } + if (b->infinity) { + if (rzr) { + secp256k1_fe_set_int(rzr, 1); + } + *r = *a; + return; + } + r->infinity = 0; + + secp256k1_fe_sqr(&z12, &a->z); + u1 = a->x; secp256k1_fe_normalize_weak(&u1); + secp256k1_fe_mul(&u2, &b->x, &z12); + s1 = a->y; secp256k1_fe_normalize_weak(&s1); + secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &a->z); + secp256k1_fe_negate(&h, &u1, 1); secp256k1_fe_add(&h, &u2); + secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); + if (secp256k1_fe_normalizes_to_zero_var(&h)) { + if (secp256k1_fe_normalizes_to_zero_var(&i)) { + secp256k1_gej_double_var(r, a, rzr); + } else { + if (rzr) { + secp256k1_fe_set_int(rzr, 0); + } + r->infinity = 1; + } + return; + } + secp256k1_fe_sqr(&i2, &i); + secp256k1_fe_sqr(&h2, &h); + secp256k1_fe_mul(&h3, &h, &h2); + if (rzr) { + *rzr = h; + } + secp256k1_fe_mul(&r->z, &a->z, &h); + secp256k1_fe_mul(&t, &u1, &h2); + r->x = t; secp256k1_fe_mul_int(&r->x, 2); secp256k1_fe_add(&r->x, &h3); secp256k1_fe_negate(&r->x, &r->x, 3); secp256k1_fe_add(&r->x, &i2); + secp256k1_fe_negate(&r->y, &r->x, 5); secp256k1_fe_add(&r->y, &t); secp256k1_fe_mul(&r->y, &r->y, &i); + secp256k1_fe_mul(&h3, &h3, &s1); secp256k1_fe_negate(&h3, &h3, 1); + secp256k1_fe_add(&r->y, &h3); +} + +static void secp256k1_gej_add_zinv_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_ge_t *b, const secp256k1_fe_t *bzinv) { + /* 9 mul, 3 sqr, 4 normalize, 12 mul_int/add/negate */ + secp256k1_fe_t az, z12, u1, u2, s1, s2, h, i, i2, h2, h3, t; + + if (b->infinity) { + *r = *a; + return; + } + if (a->infinity) { + secp256k1_fe_t bzinv2, bzinv3; + r->infinity = b->infinity; + secp256k1_fe_sqr(&bzinv2, bzinv); + secp256k1_fe_mul(&bzinv3, &bzinv2, bzinv); + secp256k1_fe_mul(&r->x, &b->x, &bzinv2); + secp256k1_fe_mul(&r->y, &b->y, &bzinv3); + secp256k1_fe_set_int(&r->z, 1); + return; + } + r->infinity = 0; + + /** We need to calculate (rx,ry,rz) = (ax,ay,az) + (bx,by,1/bzinv). Due to + * secp256k1's isomorphism we can multiply the Z coordinates on both sides + * by bzinv, and get: (rx,ry,rz*bzinv) = (ax,ay,az*bzinv) + (bx,by,1). + * This means that (rx,ry,rz) can be calculated as + * (ax,ay,az*bzinv) + (bx,by,1), when not applying the bzinv factor to rz. + * The variable az below holds the modified Z coordinate for a, which is used + * for the computation of rx and ry, but not for rz. + */ + secp256k1_fe_mul(&az, &a->z, bzinv); + + secp256k1_fe_sqr(&z12, &az); + u1 = a->x; secp256k1_fe_normalize_weak(&u1); + secp256k1_fe_mul(&u2, &b->x, &z12); + s1 = a->y; secp256k1_fe_normalize_weak(&s1); + secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &az); + secp256k1_fe_negate(&h, &u1, 1); secp256k1_fe_add(&h, &u2); + secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); + if (secp256k1_fe_normalizes_to_zero_var(&h)) { + if (secp256k1_fe_normalizes_to_zero_var(&i)) { + secp256k1_gej_double_var(r, a, NULL); + } else { + r->infinity = 1; + } + return; + } + secp256k1_fe_sqr(&i2, &i); + secp256k1_fe_sqr(&h2, &h); + secp256k1_fe_mul(&h3, &h, &h2); + r->z = a->z; secp256k1_fe_mul(&r->z, &r->z, &h); + secp256k1_fe_mul(&t, &u1, &h2); + r->x = t; secp256k1_fe_mul_int(&r->x, 2); secp256k1_fe_add(&r->x, &h3); secp256k1_fe_negate(&r->x, &r->x, 3); secp256k1_fe_add(&r->x, &i2); + secp256k1_fe_negate(&r->y, &r->x, 5); secp256k1_fe_add(&r->y, &t); secp256k1_fe_mul(&r->y, &r->y, &i); + secp256k1_fe_mul(&h3, &h3, &s1); secp256k1_fe_negate(&h3, &h3, 1); + secp256k1_fe_add(&r->y, &h3); +} + + +static void secp256k1_gej_add_ge(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_ge_t *b) { + /* Operations: 7 mul, 5 sqr, 4 normalize, 21 mul_int/add/negate/cmov */ + static const secp256k1_fe_t fe_1 = SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1); + secp256k1_fe_t zz, u1, u2, s1, s2, t, tt, m, n, q, rr; + secp256k1_fe_t m_alt, rr_alt; + int infinity, degenerate; + VERIFY_CHECK(!b->infinity); + VERIFY_CHECK(a->infinity == 0 || a->infinity == 1); + + /** In: + * Eric Brier and Marc Joye, Weierstrass Elliptic Curves and Side-Channel Attacks. + * In D. Naccache and P. Paillier, Eds., Public Key Cryptography, vol. 2274 of Lecture Notes in Computer Science, pages 335-345. Springer-Verlag, 2002. + * we find as solution for a unified addition/doubling formula: + * lambda = ((x1 + x2)^2 - x1 * x2 + a) / (y1 + y2), with a = 0 for secp256k1's curve equation. + * x3 = lambda^2 - (x1 + x2) + * 2*y3 = lambda * (x1 + x2 - 2 * x3) - (y1 + y2). + * + * Substituting x_i = Xi / Zi^2 and yi = Yi / Zi^3, for i=1,2,3, gives: + * U1 = X1*Z2^2, U2 = X2*Z1^2 + * S1 = Y1*Z2^3, S2 = Y2*Z1^3 + * Z = Z1*Z2 + * T = U1+U2 + * M = S1+S2 + * Q = T*M^2 + * R = T^2-U1*U2 + * X3 = 4*(R^2-Q) + * Y3 = 4*(R*(3*Q-2*R^2)-M^4) + * Z3 = 2*M*Z + * (Note that the paper uses xi = Xi / Zi and yi = Yi / Zi instead.) + * + * This formula has the benefit of being the same for both addition + * of distinct points and doubling. However, it breaks down in the + * case that either point is infinity, or that y1 = -y2. We handle + * these cases in the following ways: + * + * - If b is infinity we simply bail by means of a VERIFY_CHECK. + * + * - If a is infinity, we detect this, and at the end of the + * computation replace the result (which will be meaningless, + * but we compute to be constant-time) with b.x : b.y : 1. + * + * - If a = -b, we have y1 = -y2, which is a degenerate case. + * But here the answer is infinity, so we simply set the + * infinity flag of the result, overriding the computed values + * without even needing to cmov. + * + * - If y1 = -y2 but x1 != x2, which does occur thanks to certain + * properties of our curve (specifically, 1 has nontrivial cube + * roots in our field, and the curve equation has no x coefficient) + * then the answer is not infinity but also not given by the above + * equation. In this case, we cmov in place an alternate expression + * for lambda. Specifically (y1 - y2)/(x1 - x2). Where both these + * expressions for lambda are defined, they are equal, and can be + * obtained from each other by multiplication by (y1 + y2)/(y1 + y2) + * then substitution of x^3 + 7 for y^2 (using the curve equation). + * For all pairs of nonzero points (a, b) at least one is defined, + * so this covers everything. + */ + + secp256k1_fe_sqr(&zz, &a->z); /* z = Z1^2 */ + u1 = a->x; secp256k1_fe_normalize_weak(&u1); /* u1 = U1 = X1*Z2^2 (1) */ + secp256k1_fe_mul(&u2, &b->x, &zz); /* u2 = U2 = X2*Z1^2 (1) */ + s1 = a->y; secp256k1_fe_normalize_weak(&s1); /* s1 = S1 = Y1*Z2^3 (1) */ + secp256k1_fe_mul(&s2, &b->y, &zz); /* s2 = Y2*Z2^2 (1) */ + secp256k1_fe_mul(&s2, &s2, &a->z); /* s2 = S2 = Y2*Z1^3 (1) */ + t = u1; secp256k1_fe_add(&t, &u2); /* t = T = U1+U2 (2) */ + m = s1; secp256k1_fe_add(&m, &s2); /* m = M = S1+S2 (2) */ + secp256k1_fe_sqr(&rr, &t); /* rr = T^2 (1) */ + secp256k1_fe_negate(&m_alt, &u2, 1); /* Malt = -X2*Z1^2 */ + secp256k1_fe_mul(&tt, &u1, &m_alt); /* tt = -U1*U2 (2) */ + secp256k1_fe_add(&rr, &tt); /* rr = R = T^2-U1*U2 (3) */ + /** If lambda = R/M = 0/0 we have a problem (except in the "trivial" + * case that Z = z1z2 = 0, and this is special-cased later on). */ + degenerate = secp256k1_fe_normalizes_to_zero(&m) & + secp256k1_fe_normalizes_to_zero(&rr); + /* This only occurs when y1 == -y2 and x1^3 == x2^3, but x1 != x2. + * This means either x1 == beta*x2 or beta*x1 == x2, where beta is + * a nontrivial cube root of one. In either case, an alternate + * non-indeterminate expression for lambda is (y1 - y2)/(x1 - x2), + * so we set R/M equal to this. */ + rr_alt = s1; + secp256k1_fe_mul_int(&rr_alt, 2); /* rr = Y1*Z2^3 - Y2*Z1^3 (2) */ + secp256k1_fe_add(&m_alt, &u1); /* Malt = X1*Z2^2 - X2*Z1^2 */ + + secp256k1_fe_cmov(&rr_alt, &rr, !degenerate); + secp256k1_fe_cmov(&m_alt, &m, !degenerate); + /* Now Ralt / Malt = lambda and is guaranteed not to be 0/0. + * From here on out Ralt and Malt represent the numerator + * and denominator of lambda; R and M represent the explicit + * expressions x1^2 + x2^2 + x1x2 and y1 + y2. */ + secp256k1_fe_sqr(&n, &m_alt); /* n = Malt^2 (1) */ + secp256k1_fe_mul(&q, &n, &t); /* q = Q = T*Malt^2 (1) */ + /* These two lines use the observation that either M == Malt or M == 0, + * so M^3 * Malt is either Malt^4 (which is computed by squaring), or + * zero (which is "computed" by cmov). So the cost is one squaring + * versus two multiplications. */ + secp256k1_fe_sqr(&n, &n); + secp256k1_fe_cmov(&n, &m, degenerate); /* n = M^3 * Malt (2) */ + secp256k1_fe_sqr(&t, &rr_alt); /* t = Ralt^2 (1) */ + secp256k1_fe_mul(&r->z, &a->z, &m_alt); /* r->z = Malt*Z (1) */ + infinity = secp256k1_fe_normalizes_to_zero(&r->z) * (1 - a->infinity); + secp256k1_fe_mul_int(&r->z, 2); /* r->z = Z3 = 2*Malt*Z (2) */ + secp256k1_fe_negate(&q, &q, 1); /* q = -Q (2) */ + secp256k1_fe_add(&t, &q); /* t = Ralt^2-Q (3) */ + secp256k1_fe_normalize_weak(&t); + r->x = t; /* r->x = Ralt^2-Q (1) */ + secp256k1_fe_mul_int(&t, 2); /* t = 2*x3 (2) */ + secp256k1_fe_add(&t, &q); /* t = 2*x3 - Q: (4) */ + secp256k1_fe_mul(&t, &t, &rr_alt); /* t = Ralt*(2*x3 - Q) (1) */ + secp256k1_fe_add(&t, &n); /* t = Ralt*(2*x3 - Q) + M^3*Malt (3) */ + secp256k1_fe_negate(&r->y, &t, 3); /* r->y = Ralt*(Q - 2x3) - M^3*Malt (4) */ + secp256k1_fe_normalize_weak(&r->y); + secp256k1_fe_mul_int(&r->x, 4); /* r->x = X3 = 4*(Ralt^2-Q) */ + secp256k1_fe_mul_int(&r->y, 4); /* r->y = Y3 = 4*Ralt*(Q - 2x3) - 4*M^3*Malt (4) */ + + /** In case a->infinity == 1, replace r with (b->x, b->y, 1). */ + secp256k1_fe_cmov(&r->x, &b->x, a->infinity); + secp256k1_fe_cmov(&r->y, &b->y, a->infinity); + secp256k1_fe_cmov(&r->z, &fe_1, a->infinity); + r->infinity = infinity; +} + +static void secp256k1_gej_rescale(secp256k1_gej_t *r, const secp256k1_fe_t *s) { + /* Operations: 4 mul, 1 sqr */ + secp256k1_fe_t zz; + VERIFY_CHECK(!secp256k1_fe_is_zero(s)); + secp256k1_fe_sqr(&zz, s); + secp256k1_fe_mul(&r->x, &r->x, &zz); /* r->x *= s^2 */ + secp256k1_fe_mul(&r->y, &r->y, &zz); + secp256k1_fe_mul(&r->y, &r->y, s); /* r->y *= s^3 */ + secp256k1_fe_mul(&r->z, &r->z, s); /* r->z *= s */ +} + +static void secp256k1_ge_to_storage(secp256k1_ge_storage_t *r, const secp256k1_ge_t *a) { + secp256k1_fe_t x, y; + VERIFY_CHECK(!a->infinity); + x = a->x; + secp256k1_fe_normalize(&x); + y = a->y; + secp256k1_fe_normalize(&y); + secp256k1_fe_to_storage(&r->x, &x); + secp256k1_fe_to_storage(&r->y, &y); +} + +static void secp256k1_ge_from_storage(secp256k1_ge_t *r, const secp256k1_ge_storage_t *a) { + secp256k1_fe_from_storage(&r->x, &a->x); + secp256k1_fe_from_storage(&r->y, &a->y); + r->infinity = 0; +} + +static SECP256K1_INLINE void secp256k1_ge_storage_cmov(secp256k1_ge_storage_t *r, const secp256k1_ge_storage_t *a, int flag) { + secp256k1_fe_storage_cmov(&r->x, &a->x, flag); + secp256k1_fe_storage_cmov(&r->y, &a->y, flag); +} + +#ifdef USE_ENDOMORPHISM +static void secp256k1_ge_mul_lambda(secp256k1_ge_t *r, const secp256k1_ge_t *a) { + static const secp256k1_fe_t beta = SECP256K1_FE_CONST( + 0x7ae96a2bul, 0x657c0710ul, 0x6e64479eul, 0xac3434e9ul, + 0x9cf04975ul, 0x12f58995ul, 0xc1396c28ul, 0x719501eeul + ); + *r = *a; + secp256k1_fe_mul(&r->x, &r->x, &beta); +} +#endif + +#endif diff --git a/crypto777/secp256k1/hash.h b/crypto777/secp256k1/hash.h new file mode 100644 index 000000000..0ff01e63f --- /dev/null +++ b/crypto777/secp256k1/hash.h @@ -0,0 +1,41 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_HASH_ +#define _SECP256K1_HASH_ + +#include +#include + +typedef struct { + uint32_t s[32]; + uint32_t buf[16]; /* In big endian */ + size_t bytes; +} secp256k1_sha256_t; + +static void secp256k1_sha256_initialize(secp256k1_sha256_t *hash); +static void secp256k1_sha256_write(secp256k1_sha256_t *hash, const unsigned char *data, size_t size); +static void secp256k1_sha256_finalize(secp256k1_sha256_t *hash, unsigned char *out32); + +typedef struct { + secp256k1_sha256_t inner, outer; +} secp256k1_hmac_sha256_t; + +static void secp256k1_hmac_sha256_initialize(secp256k1_hmac_sha256_t *hash, const unsigned char *key, size_t size); +static void secp256k1_hmac_sha256_write(secp256k1_hmac_sha256_t *hash, const unsigned char *data, size_t size); +static void secp256k1_hmac_sha256_finalize(secp256k1_hmac_sha256_t *hash, unsigned char *out32); + +typedef struct { + unsigned char v[32]; + unsigned char k[32]; + int retry; +} secp256k1_rfc6979_hmac_sha256_t; + +static void secp256k1_rfc6979_hmac_sha256_initialize(secp256k1_rfc6979_hmac_sha256_t *rng, const unsigned char *key, size_t keylen); +static void secp256k1_rfc6979_hmac_sha256_generate(secp256k1_rfc6979_hmac_sha256_t *rng, unsigned char *out, size_t outlen); +static void secp256k1_rfc6979_hmac_sha256_finalize(secp256k1_rfc6979_hmac_sha256_t *rng); + +#endif diff --git a/crypto777/secp256k1/hash_impl.h b/crypto777/secp256k1/hash_impl.h new file mode 100644 index 000000000..ae55df6d8 --- /dev/null +++ b/crypto777/secp256k1/hash_impl.h @@ -0,0 +1,283 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_HASH_IMPL_H_ +#define _SECP256K1_HASH_IMPL_H_ + +#include "hash.h" + +#include +#include +#include + +#define Ch(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) +#define Maj(x,y,z) (((x) & (y)) | ((z) & ((x) | (y)))) +#define Sigma0(x) (((x) >> 2 | (x) << 30) ^ ((x) >> 13 | (x) << 19) ^ ((x) >> 22 | (x) << 10)) +#define Sigma1(x) (((x) >> 6 | (x) << 26) ^ ((x) >> 11 | (x) << 21) ^ ((x) >> 25 | (x) << 7)) +#define sigma0(x) (((x) >> 7 | (x) << 25) ^ ((x) >> 18 | (x) << 14) ^ ((x) >> 3)) +#define sigma1(x) (((x) >> 17 | (x) << 15) ^ ((x) >> 19 | (x) << 13) ^ ((x) >> 10)) + +#define Round(a,b,c,d,e,f,g,h,k,w) do { \ + uint32_t t1 = (h) + Sigma1(e) + Ch((e), (f), (g)) + (k) + (w); \ + uint32_t t2 = Sigma0(a) + Maj((a), (b), (c)); \ + (d) += t1; \ + (h) = t1 + t2; \ +} while(0) + +#ifdef WORDS_BIGENDIAN +#define BE32(x) (x) +#else +#define BE32(p) ((((p) & 0xFF) << 24) | (((p) & 0xFF00) << 8) | (((p) & 0xFF0000) >> 8) | (((p) & 0xFF000000) >> 24)) +#endif + +static void secp256k1_sha256_initialize(secp256k1_sha256_t *hash) { + hash->s[0] = 0x6a09e667ul; + hash->s[1] = 0xbb67ae85ul; + hash->s[2] = 0x3c6ef372ul; + hash->s[3] = 0xa54ff53aul; + hash->s[4] = 0x510e527ful; + hash->s[5] = 0x9b05688cul; + hash->s[6] = 0x1f83d9abul; + hash->s[7] = 0x5be0cd19ul; + hash->bytes = 0; +} + +/** Perform one SHA-256 transformation, processing 16 big endian 32-bit words. */ +static void secp256k1_sha256_transform(uint32_t* s, const uint32_t* chunk) { + uint32_t a = s[0], b = s[1], c = s[2], d = s[3], e = s[4], f = s[5], g = s[6], h = s[7]; + uint32_t w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15; + + Round(a, b, c, d, e, f, g, h, 0x428a2f98, w0 = BE32(chunk[0])); + Round(h, a, b, c, d, e, f, g, 0x71374491, w1 = BE32(chunk[1])); + Round(g, h, a, b, c, d, e, f, 0xb5c0fbcf, w2 = BE32(chunk[2])); + Round(f, g, h, a, b, c, d, e, 0xe9b5dba5, w3 = BE32(chunk[3])); + Round(e, f, g, h, a, b, c, d, 0x3956c25b, w4 = BE32(chunk[4])); + Round(d, e, f, g, h, a, b, c, 0x59f111f1, w5 = BE32(chunk[5])); + Round(c, d, e, f, g, h, a, b, 0x923f82a4, w6 = BE32(chunk[6])); + Round(b, c, d, e, f, g, h, a, 0xab1c5ed5, w7 = BE32(chunk[7])); + Round(a, b, c, d, e, f, g, h, 0xd807aa98, w8 = BE32(chunk[8])); + Round(h, a, b, c, d, e, f, g, 0x12835b01, w9 = BE32(chunk[9])); + Round(g, h, a, b, c, d, e, f, 0x243185be, w10 = BE32(chunk[10])); + Round(f, g, h, a, b, c, d, e, 0x550c7dc3, w11 = BE32(chunk[11])); + Round(e, f, g, h, a, b, c, d, 0x72be5d74, w12 = BE32(chunk[12])); + Round(d, e, f, g, h, a, b, c, 0x80deb1fe, w13 = BE32(chunk[13])); + Round(c, d, e, f, g, h, a, b, 0x9bdc06a7, w14 = BE32(chunk[14])); + Round(b, c, d, e, f, g, h, a, 0xc19bf174, w15 = BE32(chunk[15])); + + Round(a, b, c, d, e, f, g, h, 0xe49b69c1, w0 += sigma1(w14) + w9 + sigma0(w1)); + Round(h, a, b, c, d, e, f, g, 0xefbe4786, w1 += sigma1(w15) + w10 + sigma0(w2)); + Round(g, h, a, b, c, d, e, f, 0x0fc19dc6, w2 += sigma1(w0) + w11 + sigma0(w3)); + Round(f, g, h, a, b, c, d, e, 0x240ca1cc, w3 += sigma1(w1) + w12 + sigma0(w4)); + Round(e, f, g, h, a, b, c, d, 0x2de92c6f, w4 += sigma1(w2) + w13 + sigma0(w5)); + Round(d, e, f, g, h, a, b, c, 0x4a7484aa, w5 += sigma1(w3) + w14 + sigma0(w6)); + Round(c, d, e, f, g, h, a, b, 0x5cb0a9dc, w6 += sigma1(w4) + w15 + sigma0(w7)); + Round(b, c, d, e, f, g, h, a, 0x76f988da, w7 += sigma1(w5) + w0 + sigma0(w8)); + Round(a, b, c, d, e, f, g, h, 0x983e5152, w8 += sigma1(w6) + w1 + sigma0(w9)); + Round(h, a, b, c, d, e, f, g, 0xa831c66d, w9 += sigma1(w7) + w2 + sigma0(w10)); + Round(g, h, a, b, c, d, e, f, 0xb00327c8, w10 += sigma1(w8) + w3 + sigma0(w11)); + Round(f, g, h, a, b, c, d, e, 0xbf597fc7, w11 += sigma1(w9) + w4 + sigma0(w12)); + Round(e, f, g, h, a, b, c, d, 0xc6e00bf3, w12 += sigma1(w10) + w5 + sigma0(w13)); + Round(d, e, f, g, h, a, b, c, 0xd5a79147, w13 += sigma1(w11) + w6 + sigma0(w14)); + Round(c, d, e, f, g, h, a, b, 0x06ca6351, w14 += sigma1(w12) + w7 + sigma0(w15)); + Round(b, c, d, e, f, g, h, a, 0x14292967, w15 += sigma1(w13) + w8 + sigma0(w0)); + + Round(a, b, c, d, e, f, g, h, 0x27b70a85, w0 += sigma1(w14) + w9 + sigma0(w1)); + Round(h, a, b, c, d, e, f, g, 0x2e1b2138, w1 += sigma1(w15) + w10 + sigma0(w2)); + Round(g, h, a, b, c, d, e, f, 0x4d2c6dfc, w2 += sigma1(w0) + w11 + sigma0(w3)); + Round(f, g, h, a, b, c, d, e, 0x53380d13, w3 += sigma1(w1) + w12 + sigma0(w4)); + Round(e, f, g, h, a, b, c, d, 0x650a7354, w4 += sigma1(w2) + w13 + sigma0(w5)); + Round(d, e, f, g, h, a, b, c, 0x766a0abb, w5 += sigma1(w3) + w14 + sigma0(w6)); + Round(c, d, e, f, g, h, a, b, 0x81c2c92e, w6 += sigma1(w4) + w15 + sigma0(w7)); + Round(b, c, d, e, f, g, h, a, 0x92722c85, w7 += sigma1(w5) + w0 + sigma0(w8)); + Round(a, b, c, d, e, f, g, h, 0xa2bfe8a1, w8 += sigma1(w6) + w1 + sigma0(w9)); + Round(h, a, b, c, d, e, f, g, 0xa81a664b, w9 += sigma1(w7) + w2 + sigma0(w10)); + Round(g, h, a, b, c, d, e, f, 0xc24b8b70, w10 += sigma1(w8) + w3 + sigma0(w11)); + Round(f, g, h, a, b, c, d, e, 0xc76c51a3, w11 += sigma1(w9) + w4 + sigma0(w12)); + Round(e, f, g, h, a, b, c, d, 0xd192e819, w12 += sigma1(w10) + w5 + sigma0(w13)); + Round(d, e, f, g, h, a, b, c, 0xd6990624, w13 += sigma1(w11) + w6 + sigma0(w14)); + Round(c, d, e, f, g, h, a, b, 0xf40e3585, w14 += sigma1(w12) + w7 + sigma0(w15)); + Round(b, c, d, e, f, g, h, a, 0x106aa070, w15 += sigma1(w13) + w8 + sigma0(w0)); + + Round(a, b, c, d, e, f, g, h, 0x19a4c116, w0 += sigma1(w14) + w9 + sigma0(w1)); + Round(h, a, b, c, d, e, f, g, 0x1e376c08, w1 += sigma1(w15) + w10 + sigma0(w2)); + Round(g, h, a, b, c, d, e, f, 0x2748774c, w2 += sigma1(w0) + w11 + sigma0(w3)); + Round(f, g, h, a, b, c, d, e, 0x34b0bcb5, w3 += sigma1(w1) + w12 + sigma0(w4)); + Round(e, f, g, h, a, b, c, d, 0x391c0cb3, w4 += sigma1(w2) + w13 + sigma0(w5)); + Round(d, e, f, g, h, a, b, c, 0x4ed8aa4a, w5 += sigma1(w3) + w14 + sigma0(w6)); + Round(c, d, e, f, g, h, a, b, 0x5b9cca4f, w6 += sigma1(w4) + w15 + sigma0(w7)); + Round(b, c, d, e, f, g, h, a, 0x682e6ff3, w7 += sigma1(w5) + w0 + sigma0(w8)); + Round(a, b, c, d, e, f, g, h, 0x748f82ee, w8 += sigma1(w6) + w1 + sigma0(w9)); + Round(h, a, b, c, d, e, f, g, 0x78a5636f, w9 += sigma1(w7) + w2 + sigma0(w10)); + Round(g, h, a, b, c, d, e, f, 0x84c87814, w10 += sigma1(w8) + w3 + sigma0(w11)); + Round(f, g, h, a, b, c, d, e, 0x8cc70208, w11 += sigma1(w9) + w4 + sigma0(w12)); + Round(e, f, g, h, a, b, c, d, 0x90befffa, w12 += sigma1(w10) + w5 + sigma0(w13)); + Round(d, e, f, g, h, a, b, c, 0xa4506ceb, w13 += sigma1(w11) + w6 + sigma0(w14)); + Round(c, d, e, f, g, h, a, b, 0xbef9a3f7, w14 + sigma1(w12) + w7 + sigma0(w15)); + Round(b, c, d, e, f, g, h, a, 0xc67178f2, w15 + sigma1(w13) + w8 + sigma0(w0)); + + s[0] += a; + s[1] += b; + s[2] += c; + s[3] += d; + s[4] += e; + s[5] += f; + s[6] += g; + s[7] += h; +} + +static void secp256k1_sha256_write(secp256k1_sha256_t *hash, const unsigned char *data, size_t len) { + size_t bufsize = hash->bytes & 0x3F; + hash->bytes += len; + while (bufsize + len >= 64) { + /* Fill the buffer, and process it. */ + memcpy(((unsigned char*)hash->buf) + bufsize, data, 64 - bufsize); + data += 64 - bufsize; + len -= 64 - bufsize; + secp256k1_sha256_transform(hash->s, hash->buf); + bufsize = 0; + } + if (len) { + /* Fill the buffer with what remains. */ + memcpy(((unsigned char*)hash->buf) + bufsize, data, len); + } +} + +static void secp256k1_sha256_finalize(secp256k1_sha256_t *hash, unsigned char *out32) { + static const unsigned char pad[64] = {0x80, 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, 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}; + uint32_t sizedesc[2]; + uint32_t out[8]; + int i = 0; + sizedesc[0] = BE32(hash->bytes >> 29); + sizedesc[1] = BE32(hash->bytes << 3); + secp256k1_sha256_write(hash, pad, 1 + ((119 - (hash->bytes % 64)) % 64)); + secp256k1_sha256_write(hash, (const unsigned char*)sizedesc, 8); + for (i = 0; i < 8; i++) { + out[i] = BE32(hash->s[i]); + hash->s[i] = 0; + } + memcpy(out32, (const unsigned char*)out, 32); +} + +static void secp256k1_hmac_sha256_initialize(secp256k1_hmac_sha256_t *hash, const unsigned char *key, size_t keylen) { + int n; + unsigned char rkey[64]; + if (keylen <= 64) { + memcpy(rkey, key, keylen); + memset(rkey + keylen, 0, 64 - keylen); + } else { + secp256k1_sha256_t sha256; + secp256k1_sha256_initialize(&sha256); + secp256k1_sha256_write(&sha256, key, keylen); + secp256k1_sha256_finalize(&sha256, rkey); + memset(rkey + 32, 0, 32); + } + + secp256k1_sha256_initialize(&hash->outer); + for (n = 0; n < 64; n++) { + rkey[n] ^= 0x5c; + } + secp256k1_sha256_write(&hash->outer, rkey, 64); + + secp256k1_sha256_initialize(&hash->inner); + for (n = 0; n < 64; n++) { + rkey[n] ^= 0x5c ^ 0x36; + } + secp256k1_sha256_write(&hash->inner, rkey, 64); + memset(rkey, 0, 64); +} + +static void secp256k1_hmac_sha256_write(secp256k1_hmac_sha256_t *hash, const unsigned char *data, size_t size) { + secp256k1_sha256_write(&hash->inner, data, size); +} + +static void secp256k1_hmac_sha256_finalize(secp256k1_hmac_sha256_t *hash, unsigned char *out32) { + unsigned char temp[32]; + secp256k1_sha256_finalize(&hash->inner, temp); + secp256k1_sha256_write(&hash->outer, temp, 32); + memset(temp, 0, 32); + secp256k1_sha256_finalize(&hash->outer, out32); +} + + +static void secp256k1_rfc6979_hmac_sha256_initialize(secp256k1_rfc6979_hmac_sha256_t *rng, const unsigned char *key, size_t keylen) { + secp256k1_hmac_sha256_t hmac; + static const unsigned char zero[1] = {0x00}; + static const unsigned char one[1] = {0x01}; + + memset(rng->v, 0x01, 32); /* RFC6979 3.2.b. */ + memset(rng->k, 0x00, 32); /* RFC6979 3.2.c. */ + + /* RFC6979 3.2.d. */ + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_write(&hmac, zero, 1); + secp256k1_hmac_sha256_write(&hmac, key, keylen); + secp256k1_hmac_sha256_finalize(&hmac, rng->k); + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_finalize(&hmac, rng->v); + + /* RFC6979 3.2.f. */ + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_write(&hmac, one, 1); + secp256k1_hmac_sha256_write(&hmac, key, keylen); + secp256k1_hmac_sha256_finalize(&hmac, rng->k); + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_finalize(&hmac, rng->v); + rng->retry = 0; +} + +static void secp256k1_rfc6979_hmac_sha256_generate(secp256k1_rfc6979_hmac_sha256_t *rng, unsigned char *out, size_t outlen) { + /* RFC6979 3.2.h. */ + static const unsigned char zero[1] = {0x00}; + if (rng->retry) { + secp256k1_hmac_sha256_t hmac; + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_write(&hmac, zero, 1); + secp256k1_hmac_sha256_finalize(&hmac, rng->k); + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_finalize(&hmac, rng->v); + } + + while (outlen > 0) { + secp256k1_hmac_sha256_t hmac; + int now = outlen; + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_finalize(&hmac, rng->v); + if (now > 32) { + now = 32; + } + memcpy(out, rng->v, now); + out += now; + outlen -= now; + } + + rng->retry = 1; +} + +static void secp256k1_rfc6979_hmac_sha256_finalize(secp256k1_rfc6979_hmac_sha256_t *rng) { + memset(rng->k, 0, 32); + memset(rng->v, 0, 32); + rng->retry = 0; +} + + +#undef Round +#undef sigma0 +#undef sigma1 +#undef Sigma0 +#undef Sigma1 +#undef Ch +#undef Maj +#undef ReadBE32 +#undef WriteBE32 + +#endif diff --git a/crypto777/secp256k1/libsecp256k1-config.h b/crypto777/secp256k1/libsecp256k1-config.h new file mode 100644 index 000000000..098f914ed --- /dev/null +++ b/crypto777/secp256k1/libsecp256k1-config.h @@ -0,0 +1,152 @@ +/* src/libsecp256k1-config.h. Generated from libsecp256k1-config.h.in by configure. */ +/* src/libsecp256k1-config.h.in. Generated from configure.ac by autoheader. */ + +#ifndef LIBSECP256K1_CONFIG_H +#define LIBSECP256K1_CONFIG_H + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* Define this symbol to enable the ECDH module */ +#define ENABLE_MODULE_ECDH +/* #undef ENABLE_MODULE_ECDH */ + +/* Define this symbol to enable the Pedersen / zero knowledge range proof + module */ +#define ENABLE_MODULE_RANGEPROOF +/* #undef ENABLE_MODULE_RANGEPROOF */ + +/* Define this symbol to enable the Schnorr signature module */ +#define ENABLE_MODULE_SCHNORR +/* #undef ENABLE_MODULE_SCHNORR */ + +/* Define this symbol if OpenSSL EC functions are available */ +#define ENABLE_OPENSSL_TESTS 1 + +/* Define this symbol if __builtin_clzll is available */ +#define HAVE_BUILTIN_CLZLL 1 + +/* Define this symbol if __builtin_expect is available */ +#define HAVE_BUILTIN_EXPECT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define this symbol if libcrypto is installed */ +#define HAVE_LIBCRYPTO 0 + +/* Define this symbol if libgmp is installed */ +/* #undef HAVE_LIBGMP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if the system has the type `__int128'. */ +#define HAVE___INT128 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "libsecp256k1" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libsecp256k1" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "libsecp256k1 0.1" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "libsecp256k1" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "0.1" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define this symbol to enable x86_64 assembly optimizations */ +#define USE_ASM_X86_64 1 + +/* Define this symbol to use a statically generated ecmult table */ +#define USE_ECMULT_STATIC_PRECOMPUTATION 1 + +/* Define this symbol to use endomorphism optimization */ +/* #undef USE_ENDOMORPHISM */ + +/* Define this symbol to use the FIELD_10X26 implementation */ +/* #undef USE_FIELD_10X26 */ + +/* Define this symbol to use the FIELD_5X52 implementation */ +#define USE_FIELD_5X52 1 + +/* Define this symbol to use the native field inverse implementation */ +#define USE_FIELD_INV_BUILTIN 1 + +/* Define this symbol to use the num-based field inverse implementation */ +/* #undef USE_FIELD_INV_NUM */ + +/* Define this symbol to use the gmp implementation for num */ +/* #undef USE_NUM_GMP */ + +/* Define this symbol to use no num implementation */ +#define USE_NUM_NONE 1 + +/* Define this symbol to use the 4x64 scalar implementation */ +#define USE_SCALAR_4X64 1 + +/* Define this symbol to use the 8x32 scalar implementation */ +/* #undef USE_SCALAR_8X32 */ + +/* Define this symbol to use the native scalar inverse implementation */ +#define USE_SCALAR_INV_BUILTIN 1 + +/* Define this symbol to use the num-based scalar inverse implementation */ +/* #undef USE_SCALAR_INV_NUM */ + +/* Version number of package */ +#define VERSION "0.1" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +#endif /*LIBSECP256K1_CONFIG_H*/ diff --git a/crypto777/secp256k1/modules/ecdh/Makefile.am.include b/crypto777/secp256k1/modules/ecdh/Makefile.am.include new file mode 100644 index 000000000..8ef3aff92 --- /dev/null +++ b/crypto777/secp256k1/modules/ecdh/Makefile.am.include @@ -0,0 +1,9 @@ +include_HEADERS += include/secp256k1_ecdh.h +noinst_HEADERS += src/modules/ecdh/main_impl.h +noinst_HEADERS += src/modules/ecdh/tests_impl.h +if USE_BENCHMARK +noinst_PROGRAMS += bench_ecdh +bench_ecdh_SOURCES = src/bench_ecdh.c +bench_ecdh_LDADD = libsecp256k1.la $(SECP_LIBS) +bench_ecdh_LDFLAGS = -static +endif diff --git a/crypto777/secp256k1/modules/ecdh/main_impl.h b/crypto777/secp256k1/modules/ecdh/main_impl.h new file mode 100644 index 000000000..064cf6e57 --- /dev/null +++ b/crypto777/secp256k1/modules/ecdh/main_impl.h @@ -0,0 +1,53 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_MODULE_ECDH_MAIN_ +#define _SECP256K1_MODULE_ECDH_MAIN_ + +#include "ecmult_const_impl.h" + +int secp256k1_ecdh(const secp256k1_context_t* ctx, unsigned char *result, const secp256k1_pubkey_t *point, const unsigned char *scalar) { + int ret = 0; + int overflow = 0; + secp256k1_gej_t res; + secp256k1_ge_t pt; + secp256k1_scalar_t s; + ARG_CHECK(result != NULL); + ARG_CHECK(point != NULL); + ARG_CHECK(scalar != NULL); + (void)ctx; + + secp256k1_pubkey_load(ctx, &pt, point); + secp256k1_scalar_set_b32(&s, scalar, &overflow); + if (overflow || secp256k1_scalar_is_zero(&s)) { + ret = 0; + } else { + unsigned char x[32]; + unsigned char y[1]; + secp256k1_sha256_t sha; + + secp256k1_ecmult_const(&res, &pt, &s); + secp256k1_ge_set_gej(&pt, &res); + /* Compute a hash of the point in compressed form + * Note we cannot use secp256k1_eckey_pubkey_serialize here since it does not + * expect its output to be secret and has a timing sidechannel. */ + secp256k1_fe_normalize(&pt.x); + secp256k1_fe_normalize(&pt.y); + secp256k1_fe_get_b32(x, &pt.x); + y[0] = 0x02 | secp256k1_fe_is_odd(&pt.y); + + secp256k1_sha256_initialize(&sha); + secp256k1_sha256_write(&sha, y, sizeof(y)); + secp256k1_sha256_write(&sha, x, sizeof(x)); + secp256k1_sha256_finalize(&sha, result); + ret = 1; + } + + secp256k1_scalar_clear(&s); + return ret; +} + +#endif diff --git a/crypto777/secp256k1/modules/ecdh/tests_impl.h b/crypto777/secp256k1/modules/ecdh/tests_impl.h new file mode 100644 index 000000000..271eb28aa --- /dev/null +++ b/crypto777/secp256k1/modules/ecdh/tests_impl.h @@ -0,0 +1,75 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_MODULE_ECDH_TESTS_ +#define _SECP256K1_MODULE_ECDH_TESTS_ + +void test_ecdh_generator_basepoint(void) { + unsigned char s_one[32] = { 0 }; + secp256k1_pubkey_t point[2]; + int i; + + s_one[31] = 1; + /* Check against pubkey creation when the basepoint is the generator */ + for (i = 0; i < 100; ++i) { + secp256k1_sha256_t sha; + unsigned char s_b32[32]; + unsigned char output_ecdh[32]; + unsigned char output_ser[32]; + unsigned char point_ser[33]; + int point_ser_len = sizeof(point_ser); + secp256k1_scalar_t s; + + random_scalar_order(&s); + secp256k1_scalar_get_b32(s_b32, &s); + + /* compute using ECDH function */ + CHECK(secp256k1_ec_pubkey_create(ctx, &point[0], s_one) == 1); + CHECK(secp256k1_ecdh(ctx, output_ecdh, &point[0], s_b32) == 1); + /* compute "explicitly" */ + CHECK(secp256k1_ec_pubkey_create(ctx, &point[1], s_b32) == 1); + CHECK(secp256k1_ec_pubkey_serialize(ctx, point_ser, &point_ser_len, &point[1], 1) == 1); + CHECK(point_ser_len == sizeof(point_ser)); + secp256k1_sha256_initialize(&sha); + secp256k1_sha256_write(&sha, point_ser, point_ser_len); + secp256k1_sha256_finalize(&sha, output_ser); + /* compare */ + CHECK(memcmp(output_ecdh, output_ser, sizeof(output_ser)) == 0); + } +} + +void test_bad_scalar(void) { + unsigned char s_zero[32] = { 0 }; + unsigned char s_overflow[32] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, + 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41 + }; + unsigned char s_rand[32] = { 0 }; + unsigned char output[32]; + secp256k1_scalar_t rand; + secp256k1_pubkey_t point; + + /* Create random point */ + random_scalar_order(&rand); + secp256k1_scalar_get_b32(s_rand, &rand); + CHECK(secp256k1_ec_pubkey_create(ctx, &point, s_rand) == 1); + + /* Try to multiply it by bad values */ + CHECK(secp256k1_ecdh(ctx, output, &point, s_zero) == 0); + CHECK(secp256k1_ecdh(ctx, output, &point, s_overflow) == 0); + /* ...and a good one */ + s_overflow[31] -= 1; + CHECK(secp256k1_ecdh(ctx, output, &point, s_overflow) == 1); +} + +void run_ecdh_tests(void) { + test_ecdh_generator_basepoint(); + test_bad_scalar(); +} + +#endif diff --git a/crypto777/secp256k1/modules/rangeproof/Makefile.am.include b/crypto777/secp256k1/modules/rangeproof/Makefile.am.include new file mode 100644 index 000000000..ff8b8d380 --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/Makefile.am.include @@ -0,0 +1,15 @@ +include_HEADERS += include/secp256k1_rangeproof.h +noinst_HEADERS += src/modules/rangeproof/main_impl.h +noinst_HEADERS += src/modules/rangeproof/pedersen.h +noinst_HEADERS += src/modules/rangeproof/pedersen_impl.h +noinst_HEADERS += src/modules/rangeproof/borromean.h +noinst_HEADERS += src/modules/rangeproof/borromean_impl.h +noinst_HEADERS += src/modules/rangeproof/rangeproof.h +noinst_HEADERS += src/modules/rangeproof/rangeproof_impl.h +noinst_HEADERS += src/modules/rangeproof/tests_impl.h +if USE_BENCHMARK +noinst_PROGRAMS += bench_rangeproof +bench_rangeproof_SOURCES = src/bench_rangeproof.c +bench_rangeproof_LDADD = libsecp256k1.la $(SECP_LIBS) +bench_rangeproof_LDFLAGS = -static +endif diff --git a/crypto777/secp256k1/modules/rangeproof/borromean.h b/crypto777/secp256k1/modules/rangeproof/borromean.h new file mode 100644 index 000000000..a28dfebdb --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/borromean.h @@ -0,0 +1,24 @@ +/********************************************************************** + * Copyright (c) 2014, 2015 Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + + +#ifndef _SECP256K1_BORROMEAN_H_ +#define _SECP256K1_BORROMEAN_H_ + +#include "scalar.h" +#include "field.h" +#include "group.h" +#include "ecmult.h" +#include "ecmult_gen.h" + +int secp256k1_borromean_verify(const secp256k1_ecmult_context_t* ecmult_ctx, secp256k1_scalar_t *evalues, const unsigned char *e0, const secp256k1_scalar_t *s, + const secp256k1_gej_t *pubs, const int *rsizes, int nrings, const unsigned char *m, int mlen); + +int secp256k1_borromean_sign(const secp256k1_ecmult_context_t* ecmult_ctx, const secp256k1_ecmult_gen_context_t *ecmult_gen_ctx, + unsigned char *e0, secp256k1_scalar_t *s, const secp256k1_gej_t *pubs, const secp256k1_scalar_t *k, const secp256k1_scalar_t *sec, + const int *rsizes, const int *secidx, int nrings, const unsigned char *m, int mlen); + +#endif diff --git a/crypto777/secp256k1/modules/rangeproof/borromean_impl.h b/crypto777/secp256k1/modules/rangeproof/borromean_impl.h new file mode 100644 index 000000000..0c4f1c952 --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/borromean_impl.h @@ -0,0 +1,201 @@ +/********************************************************************** + * Copyright (c) 2014, 2015 Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + + +#ifndef _SECP256K1_BORROMEAN_IMPL_H_ +#define _SECP256K1_BORROMEAN_IMPL_H_ + +#include "scalar.h" +#include "field.h" +#include "group.h" +#include "ecmult.h" +#include "ecmult_gen.h" +#include "borromean.h" + +#include + +#ifdef WORDS_BIGENDIAN +#define BE32(x) (x) +#else +#define BE32(p) ((((p) & 0xFF) << 24) | (((p) & 0xFF00) << 8) | (((p) & 0xFF0000) >> 8) | (((p) & 0xFF000000) >> 24)) +#endif + +SECP256K1_INLINE static void secp256k1_borromean_hash(unsigned char *hash, const unsigned char *m, int mlen, const unsigned char *e, int elen, + int ridx, int eidx) { + uint32_t ring; + uint32_t epos; + secp256k1_sha256_t sha256_en; + secp256k1_sha256_initialize(&sha256_en); + ring = BE32((uint32_t)ridx); + epos = BE32((uint32_t)eidx); + secp256k1_sha256_write(&sha256_en, e, elen); + secp256k1_sha256_write(&sha256_en, m, mlen); + secp256k1_sha256_write(&sha256_en, (unsigned char*)&ring, 4); + secp256k1_sha256_write(&sha256_en, (unsigned char*)&epos, 4); + secp256k1_sha256_finalize(&sha256_en, hash); +} + +/** "Borromean" ring signature. + * Verifies nrings concurrent ring signatures all sharing a challenge value. + * Signature is one s value per pubkey and a hash. + * Verification equation: + * | m = H(P_{0..}||message) (Message must contain pubkeys or a pubkey commitment) + * | For each ring i: + * | | en = to_scalar(H(e0||m||i||0)) + * | | For each pubkey j: + * | | | r = s_i_j G + en * P_i_j + * | | | e = H(r||m||i||j) + * | | | en = to_scalar(e) + * | | r_i = r + * | return e_0 ==== H(r_{0..i}||m) + */ +int secp256k1_borromean_verify(const secp256k1_ecmult_context_t* ecmult_ctx, secp256k1_scalar_t *evalues, const unsigned char *e0, + const secp256k1_scalar_t *s, const secp256k1_gej_t *pubs, const int *rsizes, int nrings, const unsigned char *m, int mlen) { + secp256k1_gej_t rgej; + secp256k1_ge_t rge; + secp256k1_scalar_t ens; + secp256k1_sha256_t sha256_e0; + unsigned char tmp[33]; + int i; + int j; + int count; + int size; + int overflow; + VERIFY_CHECK(ecmult_ctx != NULL); + VERIFY_CHECK(e0 != NULL); + VERIFY_CHECK(s != NULL); + VERIFY_CHECK(pubs != NULL); + VERIFY_CHECK(rsizes != NULL); + VERIFY_CHECK(nrings > 0); + VERIFY_CHECK(m != NULL); + count = 0; + secp256k1_sha256_initialize(&sha256_e0); + for (i = 0; i < nrings; i++) { + VERIFY_CHECK(INT_MAX - count > rsizes[i]); + secp256k1_borromean_hash(tmp, m, mlen, e0, 32, i, 0); + secp256k1_scalar_set_b32(&ens, tmp, &overflow); + for (j = 0; j < rsizes[i]; j++) { + if (overflow || secp256k1_scalar_is_zero(&s[count]) || secp256k1_scalar_is_zero(&ens) || secp256k1_gej_is_infinity(&pubs[count])) { + return 0; + } + if (evalues) { + /*If requested, save the challenges for proof rewind.*/ + evalues[count] = ens; + } + secp256k1_ecmult(ecmult_ctx, &rgej, &pubs[count], &ens, &s[count]); + if (secp256k1_gej_is_infinity(&rgej)) { + return 0; + } + /* OPT: loop can be hoisted and split to use batch inversion across all the rings; this would make it much faster. */ + secp256k1_ge_set_gej_var(&rge, &rgej); + secp256k1_eckey_pubkey_serialize(&rge, tmp, &size, 1); + if (j != rsizes[i] - 1) { + secp256k1_borromean_hash(tmp, m, mlen, tmp, 33, i, j + 1); + secp256k1_scalar_set_b32(&ens, tmp, &overflow); + } else { + secp256k1_sha256_write(&sha256_e0, tmp, size); + } + count++; + } + } + secp256k1_sha256_write(&sha256_e0, m, mlen); + secp256k1_sha256_finalize(&sha256_e0, tmp); + return memcmp(e0, tmp, 32) == 0; +} + +int secp256k1_borromean_sign(const secp256k1_ecmult_context_t* ecmult_ctx, const secp256k1_ecmult_gen_context_t *ecmult_gen_ctx, + unsigned char *e0, secp256k1_scalar_t *s, const secp256k1_gej_t *pubs, const secp256k1_scalar_t *k, const secp256k1_scalar_t *sec, + const int *rsizes, const int *secidx, int nrings, const unsigned char *m, int mlen) { + secp256k1_gej_t rgej; + secp256k1_ge_t rge; + secp256k1_scalar_t ens; + secp256k1_sha256_t sha256_e0; + unsigned char tmp[33]; + int i; + int j; + int count; + int size; + int overflow; + VERIFY_CHECK(ecmult_ctx != NULL); + VERIFY_CHECK(ecmult_gen_ctx != NULL); + VERIFY_CHECK(e0 != NULL); + VERIFY_CHECK(s != NULL); + VERIFY_CHECK(pubs != NULL); + VERIFY_CHECK(k != NULL); + VERIFY_CHECK(sec != NULL); + VERIFY_CHECK(rsizes != NULL); + VERIFY_CHECK(secidx != NULL); + VERIFY_CHECK(nrings > 0); + VERIFY_CHECK(m != NULL); + secp256k1_sha256_initialize(&sha256_e0); + count = 0; + for (i = 0; i < nrings; i++) { + VERIFY_CHECK(INT_MAX - count > rsizes[i]); + secp256k1_ecmult_gen(ecmult_gen_ctx, &rgej, &k[i]); + secp256k1_ge_set_gej(&rge, &rgej); + if (secp256k1_gej_is_infinity(&rgej)) { + return 0; + } + secp256k1_eckey_pubkey_serialize(&rge, tmp, &size, 1); + for (j = secidx[i] + 1; j < rsizes[i]; j++) { + secp256k1_borromean_hash(tmp, m, mlen, tmp, 33, i, j); + secp256k1_scalar_set_b32(&ens, tmp, &overflow); + if (overflow || secp256k1_scalar_is_zero(&ens)) { + return 0; + } + /** The signing algorithm as a whole is not memory uniform so there is likely a cache sidechannel that + * leaks which members are non-forgeries. That the forgeries themselves are variable time may leave + * an additional privacy impacting timing side-channel, but not a key loss one. + */ + secp256k1_ecmult(ecmult_ctx, &rgej, &pubs[count + j], &ens, &s[count + j]); + if (secp256k1_gej_is_infinity(&rgej)) { + return 0; + } + secp256k1_ge_set_gej_var(&rge, &rgej); + secp256k1_eckey_pubkey_serialize(&rge, tmp, &size, 1); + } + secp256k1_sha256_write(&sha256_e0, tmp, size); + count += rsizes[i]; + } + secp256k1_sha256_write(&sha256_e0, m, mlen); + secp256k1_sha256_finalize(&sha256_e0, e0); + count = 0; + for (i = 0; i < nrings; i++) { + VERIFY_CHECK(INT_MAX - count > rsizes[i]); + secp256k1_borromean_hash(tmp, m, mlen, e0, 32, i, 0); + secp256k1_scalar_set_b32(&ens, tmp, &overflow); + if (overflow || secp256k1_scalar_is_zero(&ens)) { + return 0; + } + for (j = 0; j < secidx[i]; j++) { + secp256k1_ecmult(ecmult_ctx, &rgej, &pubs[count + j], &ens, &s[count + j]); + if (secp256k1_gej_is_infinity(&rgej)) { + return 0; + } + secp256k1_ge_set_gej_var(&rge, &rgej); + secp256k1_eckey_pubkey_serialize(&rge, tmp, &size, 1); + secp256k1_borromean_hash(tmp, m, mlen, tmp, 33, i, j + 1); + secp256k1_scalar_set_b32(&ens, tmp, &overflow); + if (overflow || secp256k1_scalar_is_zero(&ens)) { + return 0; + } + } + secp256k1_scalar_mul(&s[count + j], &ens, &sec[i]); + secp256k1_scalar_negate(&s[count + j], &s[count + j]); + secp256k1_scalar_add(&s[count + j], &s[count + j], &k[i]); + if (secp256k1_scalar_is_zero(&s[count + j])) { + return 0; + } + count += rsizes[i]; + } + secp256k1_scalar_clear(&ens); + secp256k1_ge_clear(&rge); + secp256k1_gej_clear(&rgej); + memset(tmp, 0, 33); + return 1; +} + +#endif diff --git a/crypto777/secp256k1/modules/rangeproof/main_impl.h b/crypto777/secp256k1/modules/rangeproof/main_impl.h new file mode 100644 index 000000000..7abdc98c9 --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/main_impl.h @@ -0,0 +1,176 @@ +/********************************************************************** + * Copyright (c) 2014-2015 Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_MODULE_RANGEPROOF_MAIN +#define SECP256K1_MODULE_RANGEPROOF_MAIN + +#include "modules/rangeproof/pedersen_impl.h" +#include "modules/rangeproof/borromean_impl.h" +#include "modules/rangeproof/rangeproof_impl.h" + +void secp256k1_pedersen_context_initialize(secp256k1_context_t* ctx) { + secp256k1_pedersen_context_build(&ctx->pedersen_ctx, &ctx->error_callback); +} + +/* Generates a pedersen commitment: *commit = blind * G + value * G2. The commitment is 33 bytes, the blinding factor is 32 bytes.*/ +int secp256k1_pedersen_commit(const secp256k1_context_t* ctx, unsigned char *commit, unsigned char *blind, uint64_t value) { + secp256k1_gej_t rj; + secp256k1_ge_t r; + secp256k1_scalar_t sec; + int sz; + int overflow; + int ret = 0; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(secp256k1_pedersen_context_is_built(&ctx->pedersen_ctx)); + ARG_CHECK(commit != NULL); + ARG_CHECK(blind != NULL); + secp256k1_scalar_set_b32(&sec, blind, &overflow); + if (!overflow) { + secp256k1_pedersen_ecmult(&ctx->ecmult_gen_ctx, &ctx->pedersen_ctx, &rj, &sec, value); + if (!secp256k1_gej_is_infinity(&rj)) { + secp256k1_ge_set_gej(&r, &rj); + sz = 33; + ret = secp256k1_eckey_pubkey_serialize(&r, commit, &sz, 1); + } + secp256k1_gej_clear(&rj); + secp256k1_ge_clear(&r); + } + secp256k1_scalar_clear(&sec); + return ret; +} + +/** Takes a list of n pointers to 32 byte blinding values, the first negs of which are treated with positive sign and the rest + * negative, then calculates an additional blinding value that adds to zero. + */ +int secp256k1_pedersen_blind_sum(const secp256k1_context_t* ctx, unsigned char *blind_out, const unsigned char * const *blinds, int n, int npositive) { + secp256k1_scalar_t acc; + secp256k1_scalar_t x; + int i; + int overflow; + ARG_CHECK(ctx != NULL); + ARG_CHECK(blind_out != NULL); + ARG_CHECK(blinds != NULL); + secp256k1_scalar_set_int(&acc, 0); + for (i = 0; i < n; i++) { + secp256k1_scalar_set_b32(&x, blinds[i], &overflow); + if (overflow) { + return 0; + } + if (i >= npositive) { + secp256k1_scalar_negate(&x, &x); + } + secp256k1_scalar_add(&acc, &acc, &x); + } + secp256k1_scalar_get_b32(blind_out, &acc); + secp256k1_scalar_clear(&acc); + secp256k1_scalar_clear(&x); + return 1; +} + +/* Takes two list of 33-byte commitments and sums the first set and subtracts the second and verifies that they sum to excess. */ +int secp256k1_pedersen_verify_tally(const secp256k1_context_t* ctx, const unsigned char * const *commits, int pcnt, + const unsigned char * const *ncommits, int ncnt, int64_t excess) { + secp256k1_gej_t accj; + secp256k1_ge_t add; + int i; + ARG_CHECK(ctx != NULL); + ARG_CHECK(!pcnt || (commits != NULL)); + ARG_CHECK(!ncnt || (ncommits != NULL)); + ARG_CHECK(secp256k1_pedersen_context_is_built(&ctx->pedersen_ctx)); + secp256k1_gej_set_infinity(&accj); + if (excess) { + uint64_t ex; + int neg; + /* Take the absolute value, and negate the result if the input was negative. */ + neg = secp256k1_sign_and_abs64(&ex, excess); + secp256k1_pedersen_ecmult_small(&ctx->pedersen_ctx, &accj, ex); + if (neg) { + secp256k1_gej_neg(&accj, &accj); + } + } + for (i = 0; i < ncnt; i++) { + if (!secp256k1_eckey_pubkey_parse(&add, ncommits[i], 33)) { + return 0; + } + secp256k1_gej_add_ge_var(&accj, &accj, &add, NULL); + } + secp256k1_gej_neg(&accj, &accj); + for (i = 0; i < pcnt; i++) { + if (!secp256k1_eckey_pubkey_parse(&add, commits[i], 33)) { + return 0; + } + secp256k1_gej_add_ge_var(&accj, &accj, &add, NULL); + } + return secp256k1_gej_is_infinity(&accj); +} + +void secp256k1_rangeproof_context_initialize(secp256k1_context_t* ctx) { + secp256k1_rangeproof_context_build(&ctx->rangeproof_ctx, &ctx->error_callback); +} + +int secp256k1_rangeproof_info(const secp256k1_context_t* ctx, int *exp, int *mantissa, + uint64_t *min_value, uint64_t *max_value, const unsigned char *proof, int plen) { + int offset; + uint64_t scale; + ARG_CHECK(exp != NULL); + ARG_CHECK(mantissa != NULL); + ARG_CHECK(min_value != NULL); + ARG_CHECK(max_value != NULL); + offset = 0; + scale = 1; + (void)ctx; + return secp256k1_rangeproof_getheader_impl(&offset, exp, mantissa, &scale, min_value, max_value, proof, plen); +} + +int secp256k1_rangeproof_rewind(const secp256k1_context_t* ctx, + unsigned char *blind_out, uint64_t *value_out, unsigned char *message_out, int *outlen, const unsigned char *nonce, + uint64_t *min_value, uint64_t *max_value, + const unsigned char *commit, const unsigned char *proof, int plen) { + ARG_CHECK(ctx != NULL); + ARG_CHECK(commit != NULL); + ARG_CHECK(proof != NULL); + ARG_CHECK(min_value != NULL); + ARG_CHECK(max_value != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(secp256k1_pedersen_context_is_built(&ctx->pedersen_ctx)); + ARG_CHECK(secp256k1_rangeproof_context_is_built(&ctx->rangeproof_ctx)); + return secp256k1_rangeproof_verify_impl(&ctx->ecmult_ctx, &ctx->ecmult_gen_ctx, &ctx->pedersen_ctx, &ctx->rangeproof_ctx, + blind_out, value_out, message_out, outlen, nonce, min_value, max_value, commit, proof, plen); +} + +int secp256k1_rangeproof_verify(const secp256k1_context_t* ctx, uint64_t *min_value, uint64_t *max_value, + const unsigned char *commit, const unsigned char *proof, int plen) { + ARG_CHECK(ctx != NULL); + ARG_CHECK(commit != NULL); + ARG_CHECK(proof != NULL); + ARG_CHECK(min_value != NULL); + ARG_CHECK(max_value != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(secp256k1_pedersen_context_is_built(&ctx->pedersen_ctx)); + ARG_CHECK(secp256k1_rangeproof_context_is_built(&ctx->rangeproof_ctx)); + return secp256k1_rangeproof_verify_impl(&ctx->ecmult_ctx, NULL, &ctx->pedersen_ctx, &ctx->rangeproof_ctx, + NULL, NULL, NULL, NULL, NULL, min_value, max_value, commit, proof, plen); +} + +int secp256k1_rangeproof_sign(const secp256k1_context_t* ctx, unsigned char *proof, int *plen, uint64_t min_value, + const unsigned char *commit, const unsigned char *blind, const unsigned char *nonce, int exp, int min_bits, uint64_t value){ + ARG_CHECK(ctx != NULL); + ARG_CHECK(proof != NULL); + ARG_CHECK(plen != NULL); + ARG_CHECK(commit != NULL); + ARG_CHECK(blind != NULL); + ARG_CHECK(nonce != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(secp256k1_pedersen_context_is_built(&ctx->pedersen_ctx)); + ARG_CHECK(secp256k1_rangeproof_context_is_built(&ctx->rangeproof_ctx)); + return secp256k1_rangeproof_sign_impl(&ctx->ecmult_ctx, &ctx->ecmult_gen_ctx, &ctx->pedersen_ctx, &ctx->rangeproof_ctx, + proof, plen, min_value, commit, blind, nonce, exp, min_bits, value); +} + +#endif diff --git a/crypto777/secp256k1/modules/rangeproof/pedersen.h b/crypto777/secp256k1/modules/rangeproof/pedersen.h new file mode 100644 index 000000000..382d823b4 --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/pedersen.h @@ -0,0 +1,34 @@ +/********************************************************************** + * Copyright (c) 2014, 2015 Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_PEDERSEN_H_ +#define _SECP256K1_PEDERSEN_H_ + +#include "group.h" +#include "scalar.h" + +#include + +typedef struct { + secp256k1_ge_storage_t (*prec)[16][16]; /* prec[j][i] = 16^j * i * G + U_i */ +} secp256k1_pedersen_context_t; + +static void secp256k1_pedersen_context_init(secp256k1_pedersen_context_t* ctx); +static void secp256k1_pedersen_context_build(secp256k1_pedersen_context_t* ctx, const callback_t* cb); +static void secp256k1_pedersen_context_clone(secp256k1_pedersen_context_t *dst, + const secp256k1_pedersen_context_t* src, const callback_t* cb); +static void secp256k1_pedersen_context_clear(secp256k1_pedersen_context_t* ctx); + +static int secp256k1_pedersen_context_is_built(const secp256k1_pedersen_context_t* ctx); + +/** Multiply a small number with the generator: r = gn*G2 */ +static void secp256k1_pedersen_ecmult_small(const secp256k1_pedersen_context_t *ctx, secp256k1_gej_t *r, uint64_t gn); + +/* sec * G + value * G2. */ +static void secp256k1_pedersen_ecmult(const secp256k1_ecmult_gen_context_t *ecmult_gen_ctx, + const secp256k1_pedersen_context_t *pedersen_ctx, secp256k1_gej_t *rj, const secp256k1_scalar_t *sec, uint64_t value); + +#endif diff --git a/crypto777/secp256k1/modules/rangeproof/pedersen_impl.h b/crypto777/secp256k1/modules/rangeproof/pedersen_impl.h new file mode 100644 index 000000000..e0915f4e7 --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/pedersen_impl.h @@ -0,0 +1,139 @@ +/*********************************************************************** + * Copyright (c) 2015 Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php. * + ***********************************************************************/ + +#ifndef _SECP256K1_PEDERSEN_IMPL_H_ +#define _SECP256K1_PEDERSEN_IMPL_H_ + +/** Alternative generator for secp256k1. + * This is the sha256 of 'g' after DER encoding (without compression), + * which happens to be a point on the curve. + * sage: G2 = EllipticCurve ([F (0), F (7)]).lift_x(int(hashlib.sha256('0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8'.decode('hex')).hexdigest(),16)) + * sage: '%x %x'%G2.xy() + */ +static const secp256k1_ge_t secp256k1_ge_const_g2 = SECP256K1_GE_CONST( + 0x50929b74UL, 0xc1a04954UL, 0xb78b4b60UL, 0x35e97a5eUL, + 0x078a5a0fUL, 0x28ec96d5UL, 0x47bfee9aUL, 0xce803ac0UL, + 0x31d3c686UL, 0x3973926eUL, 0x049e637cUL, 0xb1b5f40aUL, + 0x36dac28aUL, 0xf1766968UL, 0xc30c2313UL, 0xf3a38904UL +); + +static void secp256k1_pedersen_context_init(secp256k1_pedersen_context_t *ctx) { + ctx->prec = NULL; +} + +static void secp256k1_pedersen_context_build(secp256k1_pedersen_context_t *ctx, const callback_t *cb) { + secp256k1_ge_t prec[256]; + secp256k1_gej_t gj; + secp256k1_gej_t nums_gej; + int i, j; + + if (ctx->prec != NULL) { + return; + } + + ctx->prec = (secp256k1_ge_storage_t (*)[16][16])checked_malloc(cb, sizeof(*ctx->prec)); + + /* get the generator */ + secp256k1_gej_set_ge(&gj, &secp256k1_ge_const_g2); + + /* Construct a group element with no known corresponding scalar (nothing up my sleeve). */ + { + static const unsigned char nums_b32[33] = "The scalar for this x is unknown"; + secp256k1_fe_t nums_x; + secp256k1_ge_t nums_ge; + VERIFY_CHECK(secp256k1_fe_set_b32(&nums_x, nums_b32)); + VERIFY_CHECK(secp256k1_ge_set_xo_var(&nums_ge, &nums_x, 0)); + secp256k1_gej_set_ge(&nums_gej, &nums_ge); + /* Add G to make the bits in x uniformly distributed. */ + secp256k1_gej_add_ge_var(&nums_gej, &nums_gej, &secp256k1_ge_const_g2, NULL); + } + + /* compute prec. */ + { + secp256k1_gej_t precj[256]; /* Jacobian versions of prec. */ + secp256k1_gej_t gbase; + secp256k1_gej_t numsbase; + gbase = gj; /* 16^j * G */ + numsbase = nums_gej; /* 2^j * nums. */ + for (j = 0; j < 16; j++) { + /* Set precj[j*16 .. j*16+15] to (numsbase, numsbase + gbase, ..., numsbase + 15*gbase). */ + precj[j*16] = numsbase; + for (i = 1; i < 16; i++) { + secp256k1_gej_add_var(&precj[j*16 + i], &precj[j*16 + i - 1], &gbase, NULL); + } + /* Multiply gbase by 16. */ + for (i = 0; i < 4; i++) { + secp256k1_gej_double_var(&gbase, &gbase, NULL); + } + /* Multiply numbase by 2. */ + secp256k1_gej_double_var(&numsbase, &numsbase, NULL); + if (j == 14) { + /* In the last iteration, numsbase is (1 - 2^j) * nums instead. */ + secp256k1_gej_neg(&numsbase, &numsbase); + secp256k1_gej_add_var(&numsbase, &numsbase, &nums_gej, NULL); + } + } + secp256k1_ge_set_all_gej_var(256, prec, precj, cb); + } + for (j = 0; j < 16; j++) { + for (i = 0; i < 16; i++) { + secp256k1_ge_to_storage(&(*ctx->prec)[j][i], &prec[j*16 + i]); + } + } +} + +static int secp256k1_pedersen_context_is_built(const secp256k1_pedersen_context_t* ctx) { + return ctx->prec != NULL; +} + +static void secp256k1_pedersen_context_clone(secp256k1_pedersen_context_t *dst, + const secp256k1_pedersen_context_t *src, const callback_t *cb) { + if (src->prec == NULL) { + dst->prec = NULL; + } else { + dst->prec = (secp256k1_ge_storage_t (*)[16][16])checked_malloc(cb, sizeof(*dst->prec)); + memcpy(dst->prec, src->prec, sizeof(*dst->prec)); + } +} + +static void secp256k1_pedersen_context_clear(secp256k1_pedersen_context_t *ctx) { + free(ctx->prec); + ctx->prec = NULL; +} + +/* Version of secp256k1_ecmult_gen using the second generator and working only on numbers in the range [0 .. 2^64). */ +static void secp256k1_pedersen_ecmult_small(const secp256k1_pedersen_context_t *ctx, secp256k1_gej_t *r, uint64_t gn) { + secp256k1_ge_t add; + secp256k1_ge_storage_t adds; + int bits; + int i, j; + memset(&adds, 0, sizeof(adds)); + secp256k1_gej_set_infinity(r); + add.infinity = 0; + for (j = 0; j < 16; j++) { + bits = (gn >> (j * 4)) & 15; + for (i = 0; i < 16; i++) { + secp256k1_ge_storage_cmov(&adds, &(*ctx->prec)[j][i], i == bits); + } + secp256k1_ge_from_storage(&add, &adds); + secp256k1_gej_add_ge(r, r, &add); + } + bits = 0; + secp256k1_ge_clear(&add); +} + +/* sec * G + value * G2. */ +SECP256K1_INLINE static void secp256k1_pedersen_ecmult(const secp256k1_ecmult_gen_context_t *ecmult_gen_ctx, + const secp256k1_pedersen_context_t *pedersen_ctx, secp256k1_gej_t *rj, const secp256k1_scalar_t *sec, uint64_t value) { + secp256k1_gej_t vj; + secp256k1_ecmult_gen(ecmult_gen_ctx, rj, sec); + secp256k1_pedersen_ecmult_small(pedersen_ctx, &vj, value); + /* FIXME: constant time. */ + secp256k1_gej_add_var(rj, rj, &vj, NULL); + secp256k1_gej_clear(&vj); +} + +#endif diff --git a/crypto777/secp256k1/modules/rangeproof/rangeproof.h b/crypto777/secp256k1/modules/rangeproof/rangeproof.h new file mode 100644 index 000000000..5a3e1871e --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/rangeproof.h @@ -0,0 +1,31 @@ +/********************************************************************** + * Copyright (c) 2015 Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_RANGEPROOF_H_ +#define _SECP256K1_RANGEPROOF_H_ + +#include "scalar.h" +#include "group.h" + +typedef struct { + secp256k1_ge_storage_t (*prec)[1005]; +} secp256k1_rangeproof_context_t; + + +static void secp256k1_rangeproof_context_init(secp256k1_rangeproof_context_t* ctx); +static void secp256k1_rangeproof_context_build(secp256k1_rangeproof_context_t* ctx, const callback_t* cb); +static void secp256k1_rangeproof_context_clone(secp256k1_rangeproof_context_t *dst, + const secp256k1_rangeproof_context_t* src, const callback_t* cb); +static void secp256k1_rangeproof_context_clear(secp256k1_rangeproof_context_t* ctx); +static int secp256k1_rangeproof_context_is_built(const secp256k1_rangeproof_context_t* ctx); + +static int secp256k1_rangeproof_verify_impl(const secp256k1_ecmult_context_t* ecmult_ctx, + const secp256k1_ecmult_gen_context_t* ecmult_gen_ctx, + const secp256k1_pedersen_context_t* pedersen_ctx, const secp256k1_rangeproof_context_t* rangeproof_ctx, + unsigned char *blindout, uint64_t *value_out, unsigned char *message_out, int *outlen, const unsigned char *nonce, + uint64_t *min_value, uint64_t *max_value, const unsigned char *commit, const unsigned char *proof, int plen); + +#endif diff --git a/crypto777/secp256k1/modules/rangeproof/rangeproof_impl.h b/crypto777/secp256k1/modules/rangeproof/rangeproof_impl.h new file mode 100644 index 000000000..8917d2bec --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/rangeproof_impl.h @@ -0,0 +1,735 @@ +/********************************************************************** + * Copyright (c) 2015 Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_RANGEPROOF_IMPL_H_ +#define _SECP256K1_RANGEPROOF_IMPL_H_ + +#include "scalar.h" +#include "group.h" +#include "rangeproof.h" +#include "hash_impl.h" + +#include "modules/rangeproof/pedersen.h" +#include "modules/rangeproof/borromean.h" + +static const int secp256k1_rangeproof_offsets[20] = { + 0, 96, 189, 276, 360, 438, 510, 579, 642, + 699, 753, 801, 843, 882, 915, 942, 966, 984, + 996, 1005, +}; + +static void secp256k1_rangeproof_context_init(secp256k1_rangeproof_context_t *ctx) { + ctx->prec = NULL; +} + +static void secp256k1_rangeproof_context_build(secp256k1_rangeproof_context_t *ctx, const callback_t* cb) { + secp256k1_ge_t *prec; + secp256k1_gej_t *precj; + secp256k1_gej_t gj; + secp256k1_gej_t one; + int i, pos; + + if (ctx->prec != NULL) { + return; + } + + precj = (secp256k1_gej_t (*))checked_malloc(cb, sizeof(*precj) * 1005); + if (precj == NULL) { + return; + } + prec = (secp256k1_ge_t (*))checked_malloc(cb, sizeof(*prec) * 1005); + if (prec == NULL) { + free(precj); + return; + } + + /* get the generator */ + secp256k1_gej_set_ge(&one, &secp256k1_ge_const_g2); + secp256k1_gej_neg(&one, &one); + + /* compute prec. */ + pos = 0; + for (i = 0; i < 19; i++) { + int pmax; + pmax = secp256k1_rangeproof_offsets[i + 1]; + gj = one; + while (pos < pmax) { + precj[pos] = gj; + pos++; + secp256k1_gej_double_var(&precj[pos], &gj, NULL); + pos++; + secp256k1_gej_add_var(&precj[pos], &precj[pos - 1], &gj, NULL); + pos++; + if (pos < pmax - 1) { + secp256k1_gej_double_var(&gj, &precj[pos - 2], NULL); + } + } + if (i < 18) { + secp256k1_gej_double_var(&gj, &one, NULL); + one = gj; + secp256k1_gej_double_var(&gj, &gj, NULL); + secp256k1_gej_double_var(&gj, &gj, NULL); + secp256k1_gej_add_var(&one, &one, &gj, NULL); + } + } + VERIFY_CHECK(pos == 1005); + secp256k1_ge_set_all_gej_var(1005, prec, precj, cb); + + free(precj); + + ctx->prec = (secp256k1_ge_storage_t (*)[1005])checked_malloc(cb, sizeof(*ctx->prec)); + if (ctx->prec == NULL) { + free(prec); + return; + } + + for (i = 0; i < 1005; i++) { + secp256k1_ge_to_storage(&(*ctx->prec)[i], &prec[i]); + } + free(prec); +} + + +static int secp256k1_rangeproof_context_is_built(const secp256k1_rangeproof_context_t* ctx) { + return ctx->prec != NULL; +} + +static void secp256k1_rangeproof_context_clone(secp256k1_rangeproof_context_t *dst, + const secp256k1_rangeproof_context_t *src, const callback_t* cb) { + if (src->prec == NULL) { + dst->prec = NULL; + } else { + dst->prec = (secp256k1_ge_storage_t (*)[1005])checked_malloc(cb, sizeof(*dst->prec)); + memcpy(dst->prec, src->prec, sizeof(*dst->prec)); + } +} + +static void secp256k1_rangeproof_context_clear(secp256k1_rangeproof_context_t *ctx) { + free(ctx->prec); + ctx->prec = NULL; +} + +SECP256K1_INLINE static void secp256k1_rangeproof_pub_expand(const secp256k1_rangeproof_context_t *ctx, secp256k1_gej_t *pubs, + int exp, int *rsizes, int rings) { + secp256k1_ge_t ge; + secp256k1_ge_storage_t *basis; + int i; + int j; + int npub; + VERIFY_CHECK(exp < 19); + if (exp < 0) { + exp = 0; + } + basis = &(*ctx->prec)[secp256k1_rangeproof_offsets[exp]]; + npub = 0; + for (i = 0; i < rings; i++) { + for (j = 1; j < rsizes[i]; j++) { + secp256k1_ge_from_storage(&ge, &basis[i * 3 + j - 1]); + secp256k1_gej_add_ge_var(&pubs[npub + j], &pubs[npub], &ge, NULL); + } + npub += rsizes[i]; + } +} + +SECP256K1_INLINE static int secp256k1_rangeproof_genrand(secp256k1_scalar_t *sec, secp256k1_scalar_t *s, unsigned char *message, + int *rsizes, int rings, const unsigned char *nonce, const unsigned char *commit, const unsigned char *proof, int len) { + unsigned char tmp[32]; + unsigned char rngseed[32 + 33 + 10]; + secp256k1_rfc6979_hmac_sha256_t rng; + secp256k1_scalar_t acc; + int overflow; + int ret; + int i; + int j; + int b; + int npub; + VERIFY_CHECK(len <= 10); + memcpy(rngseed, nonce, 32); + memcpy(rngseed + 32, commit, 33); + memcpy(rngseed + 65, proof, len); + secp256k1_rfc6979_hmac_sha256_initialize(&rng, rngseed, 32 + 33 + len); + secp256k1_scalar_clear(&acc); + npub = 0; + ret = 1; + for (i = 0; i < rings; i++) { + if (i < rings - 1) { + secp256k1_rfc6979_hmac_sha256_generate(&rng, tmp, 32); + do { + secp256k1_rfc6979_hmac_sha256_generate(&rng, tmp, 32); + secp256k1_scalar_set_b32(&sec[i], tmp, &overflow); + } while (overflow || secp256k1_scalar_is_zero(&sec[i])); + secp256k1_scalar_add(&acc, &acc, &sec[i]); + } else { + secp256k1_scalar_negate(&acc, &acc); + sec[i] = acc; + } + for (j = 0; j < rsizes[i]; j++) { + secp256k1_rfc6979_hmac_sha256_generate(&rng, tmp, 32); + if (message) { + for (b = 0; b < 32; b++) { + tmp[b] ^= message[(i * 4 + j) * 32 + b]; + message[(i * 4 + j) * 32 + b] = tmp[b]; + } + } + secp256k1_scalar_set_b32(&s[npub], tmp, &overflow); + ret &= !(overflow || secp256k1_scalar_is_zero(&s[npub])); + npub++; + } + } + secp256k1_rfc6979_hmac_sha256_finalize(&rng); + secp256k1_scalar_clear(&acc); + memset(tmp, 0, 32); + return ret; +} + +SECP256K1_INLINE static int secp256k1_range_proveparams(uint64_t *v, int *rings, int *rsizes, int *npub, int *secidx, uint64_t *min_value, + int *mantissa, uint64_t *scale, int *exp, int *min_bits, uint64_t value) { + int i; + *rings = 1; + rsizes[0] = 1; + secidx[0] = 0; + *scale = 1; + *mantissa = 0; + *npub = 0; + if (*min_value == UINT64_MAX) { + /* If the minimum value is the maximal representable value, then we cannot code a range. */ + *exp = -1; + } + if (*exp >= 0) { + int max_bits; + uint64_t v2; + if ((*min_value && value > INT64_MAX) || (value && *min_value >= INT64_MAX)) { + /* If either value or min_value is >= 2^63-1 then the other must by zero to avoid overflowing the proven range. */ + return 0; + } + max_bits = *min_value ? secp256k1_clz64_var(*min_value) : 64; + if (*min_bits > max_bits) { + *min_bits = max_bits; + } + if (*min_bits > 61 || value > INT64_MAX) { + /** Ten is not a power of two, so dividing by ten and then representing in base-2 times ten + * expands the representable range. The verifier requires the proven range is within 0..2**64. + * For very large numbers (all over 2**63) we must change our exponent to compensate. + * Rather than handling it precisely, this just disables use of the exponent for big values. + */ + *exp = 0; + } + /* Mask off the least significant digits, as requested. */ + *v = value - *min_value; + /* If the user has asked for more bits of proof then there is room for in the exponent, reduce the exponent. */ + v2 = *min_bits ? (UINT64_MAX>>(64-*min_bits)) : 0; + for (i = 0; i < *exp && (v2 <= UINT64_MAX / 10); i++) { + *v /= 10; + v2 *= 10; + } + *exp = i; + v2 = *v; + for (i = 0; i < *exp; i++) { + v2 *= 10; + *scale *= 10; + } + /* If the masked number isn't precise, compute the public offset. */ + *min_value = value - v2; + /* How many bits do we need to represent our value? */ + *mantissa = *v ? 64 - secp256k1_clz64_var(*v) : 1; + if (*min_bits > *mantissa) { + /* If the user asked for more precision, give it to them. */ + *mantissa = *min_bits; + } + /* Digits in radix-4, except for the last digit if our mantissa length is odd. */ + *rings = (*mantissa + 1) >> 1; + for (i = 0; i < *rings; i++) { + rsizes[i] = ((i < *rings - 1) | (!(*mantissa&1))) ? 4 : 2; + *npub += rsizes[i]; + secidx[i] = (*v >> (i*2)) & 3; + } + VERIFY_CHECK(*mantissa>0); + VERIFY_CHECK((*v & ~(UINT64_MAX>>(64-*mantissa))) == 0); /* Did this get all the bits? */ + } else { + /* A proof for an exact value. */ + *exp = 0; + *min_value = value; + *v = 0; + *npub = 2; + } + VERIFY_CHECK(*v * *scale + *min_value == value); + VERIFY_CHECK(*rings > 0); + VERIFY_CHECK(*rings <= 32); + VERIFY_CHECK(*npub <= 128); + return 1; +} + +/* strawman interface, writes proof in proof, a buffer of plen, proves with respect to min_value the range for commit which has the provided blinding factor and value. */ +SECP256K1_INLINE static int secp256k1_rangeproof_sign_impl(const secp256k1_ecmult_context_t* ecmult_ctx, + const secp256k1_ecmult_gen_context_t* ecmult_gen_ctx, const secp256k1_pedersen_context_t* pedersen_ctx, + const secp256k1_rangeproof_context_t* rangeproof_ctx, unsigned char *proof, int *plen, uint64_t min_value, + const unsigned char *commit, const unsigned char *blind, const unsigned char *nonce, int exp, int min_bits, uint64_t value){ + secp256k1_gej_t pubs[128]; /* Candidate digits for our proof, most inferred. */ + secp256k1_scalar_t s[128]; /* Signatures in our proof, most forged. */ + secp256k1_scalar_t sec[32]; /* Blinding factors for the correct digits. */ + secp256k1_scalar_t k[32]; /* Nonces for our non-forged signatures. */ + secp256k1_scalar_t stmp; + secp256k1_sha256_t sha256_m; + unsigned char prep[4096]; + unsigned char tmp[33]; + unsigned char *signs; /* Location of sign flags in the proof. */ + uint64_t v; + uint64_t scale; /* scale = 10^exp. */ + int mantissa; /* Number of bits proven in the blinded value. */ + int rings; /* How many digits will our proof cover. */ + int rsizes[32]; /* How many possible values there are for each place. */ + int secidx[32]; /* Which digit is the correct one. */ + int len; /* Number of bytes used so far. */ + int i; + int overflow; + int npub; + len = 0; + if (*plen < 65 || min_value > value || min_bits > 64 || min_bits < 0 || exp < -1 || exp > 18) { + return 0; + } + if (!secp256k1_range_proveparams(&v, &rings, rsizes, &npub, secidx, &min_value, &mantissa, &scale, &exp, &min_bits, value)) { + return 0; + } + proof[len] = (rsizes[0] > 1 ? (64 | exp) : 0) | (min_value ? 32 : 0); + len++; + if (rsizes[0] > 1) { + VERIFY_CHECK(mantissa > 0 && mantissa <= 64); + proof[len] = mantissa - 1; + len++; + } + if (min_value) { + for (i = 0; i < 8; i++) { + proof[len + i] = (min_value >> ((7-i) * 8)) & 255; + } + len += 8; + } + /* Do we have enough room for the proof? */ + if (*plen - len < 32 * (npub + rings - 1) + 32 + ((rings+6) >> 3)) { + return 0; + } + secp256k1_sha256_initialize(&sha256_m); + secp256k1_sha256_write(&sha256_m, commit, 33); + secp256k1_sha256_write(&sha256_m, proof, len); + + memset(prep, 0, 4096); + /* Note, the data corresponding to the blinding factors must be zero. */ + if (rsizes[rings - 1] > 1) { + int idx; + /* Value encoding sidechannel. */ + idx = rsizes[rings - 1] - 1; + idx -= secidx[rings - 1] == idx; + idx = ((rings - 1) * 4 + idx) * 32; + for (i = 0; i < 8; i++) { + prep[8 + i + idx] = prep[16 + i + idx] = prep[24 + i + idx] = (v >> (56 - i * 8)) & 255; + prep[i + idx] = 0; + } + prep[idx] = 128; + } + if (!secp256k1_rangeproof_genrand(sec, s, prep, rsizes, rings, nonce, commit, proof, len)) { + return 0; + } + memset(prep, 0, 4096); + for (i = 0; i < rings; i++) { + /* Sign will overwrite the non-forged signature, move that random value into the nonce. */ + k[i] = s[i * 4 + secidx[i]]; + secp256k1_scalar_clear(&s[i * 4 + secidx[i]]); + } + /** Genrand returns the last blinding factor as -sum(rest), + * adding in the blinding factor for our commitment, results in the blinding factor for + * the commitment to the last digit that the verifier can compute for itself by subtracting + * all the digits in the proof from the commitment. This lets the prover skip sending the + * blinded value for one digit. + */ + secp256k1_scalar_set_b32(&stmp, blind, &overflow); + secp256k1_scalar_add(&sec[rings - 1], &sec[rings - 1], &stmp); + if (overflow || secp256k1_scalar_is_zero(&sec[rings - 1])) { + return 0; + } + signs = &proof[len]; + /* We need one sign bit for each blinded value we send. */ + for (i = 0; i < (rings + 6) >> 3; i++) { + signs[i] = 0; + len++; + } + npub = 0; + for (i = 0; i < rings; i++) { + /*OPT: Use the precomputed gen2 basis?*/ + secp256k1_pedersen_ecmult(ecmult_gen_ctx, pedersen_ctx, &pubs[npub], &sec[i], ((uint64_t)secidx[i] * scale) << (i*2)); + if (secp256k1_gej_is_infinity(&pubs[npub])) { + return 0; + } + if (i < rings - 1) { + int size = 33; + secp256k1_ge_t c; + /*OPT: split loop and batch invert.*/ + secp256k1_ge_set_gej_var(&c, &pubs[npub]); + if(!secp256k1_eckey_pubkey_serialize(&c, tmp, &size, 1)) { + return 0; + } + secp256k1_sha256_write(&sha256_m, tmp, 33); + signs[i>>3] |= (tmp[0] == 3) << (i&7); + memcpy(&proof[len], &tmp[1], 32); + len += 32; + } + npub += rsizes[i]; + } + secp256k1_rangeproof_pub_expand(rangeproof_ctx, pubs, exp, rsizes, rings); + secp256k1_sha256_finalize(&sha256_m, tmp); + if (!secp256k1_borromean_sign(ecmult_ctx, ecmult_gen_ctx, &proof[len], s, pubs, k, sec, rsizes, secidx, rings, tmp, 32)) { + return 0; + } + len += 32; + for (i = 0; i < npub; i++) { + secp256k1_scalar_get_b32(&proof[len],&s[i]); + len += 32; + } + VERIFY_CHECK(len <= *plen); + *plen = len; + memset(prep, 0, 4096); + return 1; +} + +/* Computes blinding factor x given k, s, and the challenge e. */ +SECP256K1_INLINE static void secp256k1_rangeproof_recover_x(secp256k1_scalar_t *x, const secp256k1_scalar_t *k, const secp256k1_scalar_t *e, + const secp256k1_scalar_t *s) { + secp256k1_scalar_t stmp; + secp256k1_scalar_negate(x, s); + secp256k1_scalar_add(x, x, k); + secp256k1_scalar_inverse(&stmp, e); + secp256k1_scalar_mul(x, x, &stmp); +} + +/* Computes ring's nonce given the blinding factor x, the challenge e, and the signature s. */ +SECP256K1_INLINE static void secp256k1_rangeproof_recover_k(secp256k1_scalar_t *k, const secp256k1_scalar_t *x, const secp256k1_scalar_t *e, + const secp256k1_scalar_t *s) { + secp256k1_scalar_t stmp; + secp256k1_scalar_mul(&stmp, x, e); + secp256k1_scalar_add(k, s, &stmp); +} + +SECP256K1_INLINE static void secp256k1_rangeproof_ch32xor(unsigned char *x, const unsigned char *y) { + int i; + for (i = 0; i < 32; i++) { + x[i] ^= y[i]; + } +} + +SECP256K1_INLINE static int secp256k1_rangeproof_rewind_inner(secp256k1_scalar_t *blind, uint64_t *v, + unsigned char *m, int *mlen, secp256k1_scalar_t *ev, secp256k1_scalar_t *s, + int *rsizes, int rings, const unsigned char *nonce, const unsigned char *commit, const unsigned char *proof, int len) { + secp256k1_scalar_t s_orig[128]; + secp256k1_scalar_t sec[32]; + secp256k1_scalar_t stmp; + unsigned char prep[4096]; + unsigned char tmp[32]; + uint64_t value; + int offset; + int i; + int j; + int b; + int skip1; + int skip2; + int npub; + npub = ((rings - 1) << 2) + rsizes[rings-1]; + VERIFY_CHECK(npub <= 128); + VERIFY_CHECK(npub >= 1); + memset(prep, 0, 4096); + /* Reconstruct the provers random values. */ + secp256k1_rangeproof_genrand(sec, s_orig, prep, rsizes, rings, nonce, commit, proof, len); + *v = UINT64_MAX; + secp256k1_scalar_clear(blind); + if (rings == 1 && rsizes[0] == 1) { + /* With only a single proof, we can only recover the blinding factor. */ + secp256k1_rangeproof_recover_x(blind, &s_orig[0], &ev[0], &s[0]); + if (v) { + *v = 0; + } + if (mlen) { + *mlen = 0; + } + return 1; + } + npub = (rings - 1) << 2; + for (j = 0; j < 2; j++) { + int idx; + /* Look for a value encoding in the last ring. */ + idx = npub + rsizes[rings - 1] - 1 - j; + secp256k1_scalar_get_b32(tmp, &s[idx]); + secp256k1_rangeproof_ch32xor(tmp, &prep[idx * 32]); + if ((tmp[0] & 128) && (memcmp(&tmp[16], &tmp[24], 8) == 0) && (memcmp(&tmp[8], &tmp[16], 8) == 0)) { + value = 0; + for (i = 0; i < 8; i++) { + value = (value << 8) + tmp[24 + i]; + } + if (v) { + *v = value; + } + memcpy(&prep[idx * 32], tmp, 32); + break; + } + } + if (j > 1) { + /* Couldn't extract a value. */ + if (mlen) { + *mlen = 0; + } + return 0; + } + skip1 = rsizes[rings - 1] - 1 - j; + skip2 = ((value >> ((rings - 1) << 1)) & 3); + if (skip1 == skip2) { + /*Value is in wrong position.*/ + if (mlen) { + *mlen = 0; + } + return 0; + } + skip1 += (rings - 1) << 2; + skip2 += (rings - 1) << 2; + /* Like in the rsize[] == 1 case, Having figured out which s is the one which was not forged, we can recover the blinding factor. */ + secp256k1_rangeproof_recover_x(&stmp, &s_orig[skip2], &ev[skip2], &s[skip2]); + secp256k1_scalar_negate(&sec[rings - 1], &sec[rings - 1]); + secp256k1_scalar_add(blind, &stmp, &sec[rings - 1]); + if (!m || !mlen || *mlen == 0) { + if (mlen) { + *mlen = 0; + } + /* FIXME: cleanup in early out/failure cases. */ + return 1; + } + offset = 0; + npub = 0; + for (i = 0; i < rings; i++) { + int idx; + idx = (value >> (i << 1)) & 3; + for (j = 0; j < rsizes[i]; j++) { + if (npub == skip1 || npub == skip2) { + npub++; + continue; + } + if (idx == j) { + /** For the non-forged signatures the signature is calculated instead of random, instead we recover the prover's nonces. + * this could just as well recover the blinding factors and messages could be put there as is done for recovering the + * blinding factor in the last ring, but it takes an inversion to recover x so it's faster to put the message data in k. + */ + secp256k1_rangeproof_recover_k(&stmp, &sec[i], &ev[npub], &s[npub]); + } else { + stmp = s[npub]; + } + secp256k1_scalar_get_b32(tmp, &stmp); + secp256k1_rangeproof_ch32xor(tmp, &prep[npub * 32]); + for (b = 0; b < 32 && offset < *mlen; b++) { + m[offset] = tmp[b]; + offset++; + } + npub++; + } + } + *mlen = offset; + memset(prep, 0, 4096); + for (i = 0; i < 128; i++) { + secp256k1_scalar_clear(&s_orig[i]); + } + for (i = 0; i < 32; i++) { + secp256k1_scalar_clear(&sec[i]); + } + secp256k1_scalar_clear(&stmp); + return 1; +} + +SECP256K1_INLINE static int secp256k1_rangeproof_getheader_impl(int *offset, int *exp, int *mantissa, uint64_t *scale, + uint64_t *min_value, uint64_t *max_value, const unsigned char *proof, int plen) { + int i; + int has_nz_range; + int has_min; + if (plen < 65 || ((proof[*offset] & 128) != 0)) { + return 0; + } + has_nz_range = proof[*offset] & 64; + has_min = proof[*offset] & 32; + *exp = -1; + *mantissa = 0; + if (has_nz_range) { + *exp = proof[*offset] & 31; + *offset += 1; + if (*exp > 18) { + return 0; + } + *mantissa = proof[*offset] + 1; + if (*mantissa > 64) { + return 0; + } + *max_value = UINT64_MAX>>(64-*mantissa); + } else { + *max_value = 0; + } + *offset += 1; + *scale = 1; + for (i = 0; i < *exp; i++) { + if (*max_value > UINT64_MAX / 10) { + return 0; + } + *max_value *= 10; + *scale *= 10; + } + *min_value = 0; + if (has_min) { + if(plen - *offset < 8) { + return 0; + } + /*FIXME: Compact minvalue encoding?*/ + for (i = 0; i < 8; i++) { + *min_value = (*min_value << 8) | proof[*offset + i]; + } + *offset += 8; + } + if (*max_value > UINT64_MAX - *min_value) { + return 0; + } + *max_value += *min_value; + return 1; +} + +/* Verifies range proof (len plen) for 33-byte commit, the min/max values proven are put in the min/max arguments; returns 0 on failure 1 on success.*/ +SECP256K1_INLINE static int secp256k1_rangeproof_verify_impl(const secp256k1_ecmult_context_t* ecmult_ctx, + const secp256k1_ecmult_gen_context_t* ecmult_gen_ctx, + const secp256k1_pedersen_context_t* pedersen_ctx, const secp256k1_rangeproof_context_t* rangeproof_ctx, + unsigned char *blindout, uint64_t *value_out, unsigned char *message_out, int *outlen, const unsigned char *nonce, + uint64_t *min_value, uint64_t *max_value, const unsigned char *commit, const unsigned char *proof, int plen) { + secp256k1_gej_t accj; + secp256k1_gej_t pubs[128]; + secp256k1_ge_t c; + secp256k1_scalar_t s[128]; + secp256k1_scalar_t evalues[128]; /* Challenges, only used during proof rewind. */ + secp256k1_sha256_t sha256_m; + int rsizes[32]; + int ret; + int i; + int exp; + int mantissa; + int offset; + int rings; + int overflow; + int npub; + int offset_post_header; + uint64_t scale; + unsigned char signs[31]; + unsigned char m[33]; + const unsigned char *e0; + offset = 0; + if (!secp256k1_rangeproof_getheader_impl(&offset, &exp, &mantissa, &scale, min_value, max_value, proof, plen)) { + return 0; + } + offset_post_header = offset; + rings = 1; + rsizes[0] = 1; + npub = 1; + if (mantissa != 0) { + rings = (mantissa >> 1); + for (i = 0; i < rings; i++) { + rsizes[i] = 4; + } + npub = (mantissa >> 1) << 2; + if (mantissa & 1) { + rsizes[rings] = 2; + npub += rsizes[rings]; + rings++; + } + } + VERIFY_CHECK(rings <= 32); + if (plen - offset < 32 * (npub + rings - 1) + 32 + ((rings+6) >> 3)) { + return 0; + } + secp256k1_sha256_initialize(&sha256_m); + secp256k1_sha256_write(&sha256_m, commit, 33); + secp256k1_sha256_write(&sha256_m, proof, offset); + for(i = 0; i < rings - 1; i++) { + signs[i] = (proof[offset + ( i>> 3)] & (1 << (i & 7))) != 0; + } + offset += (rings + 6) >> 3; + if ((rings - 1) & 7) { + /* Number of coded blinded points is not a multiple of 8, force extra sign bits to 0 to reject mutation. */ + if ((proof[offset - 1] >> ((rings - 1) & 7)) != 0) { + return 0; + } + } + npub = 0; + secp256k1_gej_set_infinity(&accj); + if (*min_value) { + secp256k1_pedersen_ecmult_small(pedersen_ctx, &accj, *min_value); + } + for(i = 0; i < rings - 1; i++) { + memcpy(&m[1], &proof[offset], 32); + m[0] = 2 + signs[i]; + if (!secp256k1_eckey_pubkey_parse(&c, m, 33)) { + return 0; + } + secp256k1_sha256_write(&sha256_m, m, 33); + secp256k1_gej_set_ge(&pubs[npub], &c); + secp256k1_gej_add_ge_var(&accj, &accj, &c, NULL); + offset += 32; + npub += rsizes[i]; + } + secp256k1_gej_neg(&accj, &accj); + if (!secp256k1_eckey_pubkey_parse(&c, commit, 33)) { + return 0; + } + secp256k1_gej_add_ge_var(&pubs[npub], &accj, &c, NULL); + if (secp256k1_gej_is_infinity(&pubs[npub])) { + return 0; + } + secp256k1_rangeproof_pub_expand(rangeproof_ctx, pubs, exp, rsizes, rings); + npub += rsizes[rings - 1]; + e0 = &proof[offset]; + offset += 32; + for (i = 0; i < npub; i++) { + secp256k1_scalar_set_b32(&s[i], &proof[offset], &overflow); + if (overflow) { + return 0; + } + offset += 32; + } + if (offset != plen) { + /*Extra data found, reject.*/ + return 0; + } + secp256k1_sha256_finalize(&sha256_m, m); + ret = secp256k1_borromean_verify(ecmult_ctx, nonce ? evalues : NULL, e0, s, pubs, rsizes, rings, m, 32); + if (ret && nonce) { + /* Given the nonce, try rewinding the witness to recover its initial state. */ + secp256k1_scalar_t blind; + unsigned char commitrec[33]; + uint64_t vv; + if (!ecmult_gen_ctx) { + return 0; + } + if (!secp256k1_rangeproof_rewind_inner(&blind, &vv, message_out, outlen, evalues, s, rsizes, rings, nonce, commit, proof, offset_post_header)) { + return 0; + } + /* Unwind apparently successful, see if the commitment can be reconstructed. */ + /* FIXME: should check vv is in the mantissa's range. */ + vv = (vv * scale) + *min_value; + secp256k1_pedersen_ecmult(ecmult_gen_ctx, pedersen_ctx, &accj, &blind, vv); + if (secp256k1_gej_is_infinity(&accj)) { + return 0; + } + secp256k1_ge_set_gej(&c, &accj); + i = 33; + secp256k1_eckey_pubkey_serialize(&c, commitrec, &i, 1); + if (memcmp(commitrec, commit, 33) != 0) { + return 0; + } + if (blindout) { + secp256k1_scalar_get_b32(blindout, &blind); + } + if (value_out) { + *value_out = vv; + } + } + return ret; +} + +#endif diff --git a/crypto777/secp256k1/modules/rangeproof/tests_impl.h b/crypto777/secp256k1/modules/rangeproof/tests_impl.h new file mode 100644 index 000000000..c900c909f --- /dev/null +++ b/crypto777/secp256k1/modules/rangeproof/tests_impl.h @@ -0,0 +1,279 @@ +/********************************************************************** + * Copyright (c) 2015 Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_MODULE_RANGEPROOF_TESTS +#define SECP256K1_MODULE_RANGEPROOF_TESTS + +void test_pedersen(void) { + unsigned char commits[33*19]; + const unsigned char *cptr[19]; + unsigned char blinds[32*19]; + const unsigned char *bptr[19]; + secp256k1_scalar_t s; + uint64_t values[19]; + int64_t totalv; + int i; + int inputs; + int outputs; + int total; + inputs = (secp256k1_rand32() & 7) + 1; + outputs = (secp256k1_rand32() & 7) + 2; + total = inputs + outputs; + for (i = 0; i < 19; i++) { + cptr[i] = &commits[i * 33]; + bptr[i] = &blinds[i * 32]; + } + totalv = 0; + for (i = 0; i < inputs; i++) { + values[i] = secp256k1_rands64(0, INT64_MAX - totalv); + totalv += values[i]; + } + if (secp256k1_rand32() & 1) { + for (i = 0; i < outputs; i++) { + int64_t max = INT64_MAX; + if (totalv < 0) { + max += totalv; + } + values[i + inputs] = secp256k1_rands64(0, max); + totalv -= values[i + inputs]; + } + } else { + for (i = 0; i < outputs - 1; i++) { + values[i + inputs] = secp256k1_rands64(0, totalv); + totalv -= values[i + inputs]; + } + values[total - 1] = totalv >> (secp256k1_rand32() & 1); + totalv -= values[total - 1]; + } + for (i = 0; i < total - 1; i++) { + random_scalar_order(&s); + secp256k1_scalar_get_b32(&blinds[i * 32], &s); + } + CHECK(secp256k1_pedersen_blind_sum(ctx, &blinds[(total - 1) * 32], bptr, total - 1, inputs)); + for (i = 0; i < total; i++) { + CHECK(secp256k1_pedersen_commit(ctx, &commits[i * 33], &blinds[i * 32], values[i])); + } + CHECK(secp256k1_pedersen_verify_tally(ctx, cptr, inputs, &cptr[inputs], outputs, totalv)); + CHECK(!secp256k1_pedersen_verify_tally(ctx, cptr, inputs, &cptr[inputs], outputs, totalv + 1)); + random_scalar_order(&s); + for (i = 0; i < 4; i++) { + secp256k1_scalar_get_b32(&blinds[i * 32], &s); + } + values[0] = INT64_MAX; + values[1] = 0; + values[2] = 1; + for (i = 0; i < 3; i++) { + CHECK(secp256k1_pedersen_commit(ctx, &commits[i * 33], &blinds[i * 32], values[i])); + } + CHECK(secp256k1_pedersen_verify_tally(ctx, &cptr[1], 1, &cptr[2], 1, -1)); + CHECK(secp256k1_pedersen_verify_tally(ctx, &cptr[2], 1, &cptr[1], 1, 1)); + CHECK(secp256k1_pedersen_verify_tally(ctx, &cptr[0], 1, &cptr[0], 1, 0)); + CHECK(secp256k1_pedersen_verify_tally(ctx, &cptr[0], 1, &cptr[1], 1, INT64_MAX)); + CHECK(secp256k1_pedersen_verify_tally(ctx, &cptr[1], 1, &cptr[1], 1, 0)); + CHECK(secp256k1_pedersen_verify_tally(ctx, &cptr[1], 1, &cptr[0], 1, -INT64_MAX)); +} + +void test_borromean(void) { + unsigned char e0[32]; + secp256k1_scalar_t s[64]; + secp256k1_gej_t pubs[64]; + secp256k1_scalar_t k[8]; + secp256k1_scalar_t sec[8]; + secp256k1_ge_t ge; + secp256k1_scalar_t one; + unsigned char m[32]; + int rsizes[8]; + int secidx[8]; + int nrings; + int i; + int j; + int c; + secp256k1_rand256_test(m); + nrings = 1 + (secp256k1_rand32()&7); + c = 0; + secp256k1_scalar_set_int(&one, 1); + if (secp256k1_rand32()&1) { + secp256k1_scalar_negate(&one, &one); + } + for (i = 0; i < nrings; i++) { + rsizes[i] = 1 + (secp256k1_rand32()&7); + secidx[i] = secp256k1_rand32() % rsizes[i]; + random_scalar_order(&sec[i]); + random_scalar_order(&k[i]); + if(secp256k1_rand32()&7) { + sec[i] = one; + } + if(secp256k1_rand32()&7) { + k[i] = one; + } + for (j = 0; j < rsizes[i]; j++) { + random_scalar_order(&s[c + j]); + if(secp256k1_rand32()&7) { + s[i] = one; + } + if (j == secidx[i]) { + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &pubs[c + j], &sec[i]); + } else { + random_group_element_test(&ge); + random_group_element_jacobian_test(&pubs[c + j],&ge); + } + } + c += rsizes[i]; + } + CHECK(secp256k1_borromean_sign(&ctx->ecmult_ctx, &ctx->ecmult_gen_ctx, e0, s, pubs, k, sec, rsizes, secidx, nrings, m, 32)); + CHECK(secp256k1_borromean_verify(&ctx->ecmult_ctx, NULL, e0, s, pubs, rsizes, nrings, m, 32)); + i = secp256k1_rand32() % c; + secp256k1_scalar_negate(&s[i],&s[i]); + CHECK(!secp256k1_borromean_verify(&ctx->ecmult_ctx, NULL, e0, s, pubs, rsizes, nrings, m, 32)); + secp256k1_scalar_negate(&s[i],&s[i]); + secp256k1_scalar_set_int(&one, 1); + for(j = 0; j < 4; j++) { + i = secp256k1_rand32() % c; + if (secp256k1_rand32() & 1) { + secp256k1_gej_double_var(&pubs[i],&pubs[i], NULL); + } else { + secp256k1_scalar_add(&s[i],&s[i],&one); + } + CHECK(!secp256k1_borromean_verify(&ctx->ecmult_ctx, NULL, e0, s, pubs, rsizes, nrings, m, 32)); + } +} + +void test_rangeproof(void) { + const uint64_t testvs[11] = {0, 1, 5, 11, 65535, 65537, INT32_MAX, UINT32_MAX, INT64_MAX - 1, INT64_MAX, UINT64_MAX}; + unsigned char commit[33]; + unsigned char commit2[33]; + unsigned char proof[5134]; + unsigned char blind[32]; + unsigned char blindout[32]; + unsigned char message[4096]; + int mlen; + uint64_t v; + uint64_t vout; + uint64_t vmin; + uint64_t minv; + uint64_t maxv; + int len; + int i; + int j; + int k; + secp256k1_rand256(blind); + for (i = 0; i < 11; i++) { + v = testvs[i]; + CHECK(secp256k1_pedersen_commit(ctx, commit, blind, v)); + for (vmin = 0; vmin < (i<9 && i > 0 ? 2 : 1); vmin++) { + len = 5134; + CHECK(secp256k1_rangeproof_sign(ctx, proof, &len, vmin, commit, blind, commit, 0, 0, v)); + CHECK(len <= 5134); + mlen = 4096; + CHECK(secp256k1_rangeproof_rewind(ctx, blindout, &vout, message, &mlen, commit, &minv, &maxv, commit, proof, len)); + for (j = 0; j < mlen; j++) { + CHECK(message[j] == 0); + } + CHECK(mlen <= 4096); + CHECK(memcmp(blindout, blind, 32) == 0); + CHECK(vout == v); + CHECK(minv <= v); + CHECK(maxv >= v); + len = 5134; + CHECK(secp256k1_rangeproof_sign(ctx, proof, &len, v, commit, blind, commit, -1, 64, v)); + CHECK(len <= 73); + CHECK(secp256k1_rangeproof_rewind(ctx, blindout, &vout, NULL, NULL, commit, &minv, &maxv, commit, proof, len)); + CHECK(memcmp(blindout, blind, 32) == 0); + CHECK(vout == v); + CHECK(minv == v); + CHECK(maxv == v); + } + } + secp256k1_rand256(blind); + v = INT64_MAX - 1; + CHECK(secp256k1_pedersen_commit(ctx, commit, blind, v)); + for (i = 0; i < 19; i++) { + len = 5134; + CHECK(secp256k1_rangeproof_sign(ctx, proof, &len, 0, commit, blind, commit, i, 0, v)); + CHECK(secp256k1_rangeproof_verify(ctx, &minv, &maxv, commit, proof, len)); + CHECK(len <= 5134); + CHECK(minv <= v); + CHECK(maxv >= v); + } + secp256k1_rand256(blind); + { + /*Malleability test.*/ + v = secp256k1_rands64(0, 255); + CHECK(secp256k1_pedersen_commit(ctx, commit, blind, v)); + len = 5134; + CHECK(secp256k1_rangeproof_sign(ctx, proof, &len, 0, commit, blind, commit, 0, 3, v)); + CHECK(len <= 5134); + for (i = 0; i < len*8; i++) { + proof[i >> 3] ^= 1 << (i & 7); + CHECK(!secp256k1_rangeproof_verify(ctx, &minv, &maxv, commit, proof, len)); + proof[i >> 3] ^= 1 << (i & 7); + } + CHECK(secp256k1_rangeproof_verify(ctx, &minv, &maxv, commit, proof, len)); + CHECK(minv <= v); + CHECK(maxv >= v); + } + memcpy(commit2, commit, 33); + for (i = 0; i < 10 * count; i++) { + int exp; + int min_bits; + v = secp256k1_rands64(0, UINT64_MAX >> (secp256k1_rand32()&63)); + vmin = 0; + if ((v < INT64_MAX) && (secp256k1_rand32()&1)) { + vmin = secp256k1_rands64(0, v); + } + secp256k1_rand256(blind); + CHECK(secp256k1_pedersen_commit(ctx, commit, blind, v)); + len = 5134; + exp = (int)secp256k1_rands64(0,18)-(int)secp256k1_rands64(0,18); + if (exp < 0) { + exp = -exp; + } + min_bits = (int)secp256k1_rands64(0,64)-(int)secp256k1_rands64(0,64); + if (min_bits < 0) { + min_bits = -min_bits; + } + CHECK(secp256k1_rangeproof_sign(ctx, proof, &len, vmin, commit, blind, commit, exp, min_bits, v)); + CHECK(len <= 5134); + mlen = 4096; + CHECK(secp256k1_rangeproof_rewind(ctx, blindout, &vout, message, &mlen, commit, &minv, &maxv, commit, proof, len)); + for (j = 0; j < mlen; j++) { + CHECK(message[j] == 0); + } + CHECK(mlen <= 4096); + CHECK(memcmp(blindout, blind, 32) == 0); + CHECK(vout == v); + CHECK(minv <= v); + CHECK(maxv >= v); + CHECK(secp256k1_rangeproof_rewind(ctx, blindout, &vout, NULL, NULL, commit, &minv, &maxv, commit, proof, len)); + memcpy(commit2, commit, 33); + } + for (j = 0; j < 10; j++) { + for (i = 0; i < 96; i++) { + secp256k1_rand256(&proof[i * 32]); + } + for (k = 0; k < 128; k++) { + len = k; + CHECK(!secp256k1_rangeproof_verify(ctx, &minv, &maxv, commit2, proof, len)); + } + len = secp256k1_rands64(0, 3072); + CHECK(!secp256k1_rangeproof_verify(ctx, &minv, &maxv, commit2, proof, len)); + } +} + +void run_rangeproof_tests(void) { + int i; + secp256k1_pedersen_context_initialize(ctx); + secp256k1_rangeproof_context_initialize(ctx); + for (i = 0; i < 10*count; i++) { + test_pedersen(); + } + for (i = 0; i < 10*count; i++) { + test_borromean(); + } + test_rangeproof(); +} + +#endif diff --git a/crypto777/secp256k1/modules/schnorr/Makefile.am.include b/crypto777/secp256k1/modules/schnorr/Makefile.am.include new file mode 100644 index 000000000..bad4cb7c5 --- /dev/null +++ b/crypto777/secp256k1/modules/schnorr/Makefile.am.include @@ -0,0 +1,11 @@ +include_HEADERS += include/secp256k1_schnorr.h +noinst_HEADERS += src/modules/schnorr/main_impl.h +noinst_HEADERS += src/modules/schnorr/schnorr.h +noinst_HEADERS += src/modules/schnorr/schnorr_impl.h +noinst_HEADERS += src/modules/schnorr/tests_impl.h +if USE_BENCHMARK +noinst_PROGRAMS += bench_schnorr_verify +bench_schnorr_verify_SOURCES = src/bench_schnorr_verify.c +bench_schnorr_verify_LDADD = libsecp256k1.la $(SECP_LIBS) +bench_schnorr_verify_LDFLAGS = -static +endif diff --git a/crypto777/secp256k1/modules/schnorr/main_impl.h b/crypto777/secp256k1/modules/schnorr/main_impl.h new file mode 100644 index 000000000..f5250bffd --- /dev/null +++ b/crypto777/secp256k1/modules/schnorr/main_impl.h @@ -0,0 +1,163 @@ +/********************************************************************** + * Copyright (c) 2014-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_MODULE_SCHNORR_MAIN +#define SECP256K1_MODULE_SCHNORR_MAIN + +#include "modules/schnorr/schnorr_impl.h" + +static void secp256k1_schnorr_msghash_sha256(unsigned char *h32, const unsigned char *r32, const unsigned char *msg32) { + secp256k1_sha256_t sha; + secp256k1_sha256_initialize(&sha); + secp256k1_sha256_write(&sha, r32, 32); + secp256k1_sha256_write(&sha, msg32, 32); + secp256k1_sha256_finalize(&sha, h32); +} + +static const unsigned char secp256k1_schnorr_algo16[16] = "Schnorr+SHA256 "; + +int secp256k1_schnorr_sign(const secp256k1_context_t* ctx, const unsigned char *msg32, unsigned char *sig64, const unsigned char *seckey, secp256k1_nonce_function_t noncefp, const void* noncedata) { + secp256k1_scalar_t sec, non; + int ret = 0; + int overflow = 0; + unsigned int count = 0; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(sig64 != NULL); + ARG_CHECK(seckey != NULL); + if (noncefp == NULL) { + noncefp = secp256k1_nonce_function_default; + } + + secp256k1_scalar_set_b32(&sec, seckey, NULL); + while (1) { + unsigned char nonce32[32]; + ret = noncefp(nonce32, msg32, seckey, secp256k1_schnorr_algo16, count, noncedata); + if (!ret) { + break; + } + secp256k1_scalar_set_b32(&non, nonce32, &overflow); + memset(nonce32, 0, 32); + if (!secp256k1_scalar_is_zero(&non) && !overflow) { + if (secp256k1_schnorr_sig_sign(&ctx->ecmult_gen_ctx, sig64, &sec, &non, NULL, secp256k1_schnorr_msghash_sha256, msg32)) { + break; + } + } + count++; + } + if (!ret) { + memset(sig64, 0, 64); + } + secp256k1_scalar_clear(&non); + secp256k1_scalar_clear(&sec); + return ret; +} + +int secp256k1_schnorr_verify(const secp256k1_context_t* ctx, const unsigned char *msg32, const unsigned char *sig64, const secp256k1_pubkey_t *pubkey) { + secp256k1_ge_t q; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(sig64 != NULL); + ARG_CHECK(pubkey != NULL); + + secp256k1_pubkey_load(ctx, &q, pubkey); + return secp256k1_schnorr_sig_verify(&ctx->ecmult_ctx, sig64, &q, secp256k1_schnorr_msghash_sha256, msg32); +} + +int secp256k1_schnorr_recover(const secp256k1_context_t* ctx, const unsigned char *msg32, const unsigned char *sig64, secp256k1_pubkey_t *pubkey) { + secp256k1_ge_t q; + + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(sig64 != NULL); + ARG_CHECK(pubkey != NULL); + + if (secp256k1_schnorr_sig_recover(&ctx->ecmult_ctx, sig64, &q, secp256k1_schnorr_msghash_sha256, msg32)) { + secp256k1_pubkey_save(pubkey, &q); + return 1; + } else { + memset(pubkey, 0, sizeof(*pubkey)); + return 0; + } +} + +int secp256k1_schnorr_generate_nonce_pair(const secp256k1_context_t* ctx, const unsigned char *msg32, const unsigned char *sec32, secp256k1_nonce_function_t noncefp, const void* noncedata, secp256k1_pubkey_t *pubnonce, unsigned char *privnonce32) { + int count = 0; + int ret = 1; + secp256k1_gej_t Qj; + secp256k1_ge_t Q; + secp256k1_scalar_t sec; + + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(sec32 != NULL); + ARG_CHECK(pubnonce != NULL); + ARG_CHECK(privnonce32 != NULL); + + if (noncefp == NULL) { + noncefp = secp256k1_nonce_function_default; + } + + do { + int overflow; + ret = noncefp(privnonce32, msg32, sec32, secp256k1_schnorr_algo16, count++, noncedata); + if (!ret) { + break; + } + secp256k1_scalar_set_b32(&sec, privnonce32, &overflow); + if (overflow || secp256k1_scalar_is_zero(&sec)) { + continue; + } + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &Qj, &sec); + secp256k1_ge_set_gej(&Q, &Qj); + + secp256k1_pubkey_save(pubnonce, &Q); + break; + } while(1); + + secp256k1_scalar_clear(&sec); + if (!ret) { + memset(pubnonce, 0, sizeof(*pubnonce)); + } + return ret; +} + +int secp256k1_schnorr_partial_sign(const secp256k1_context_t* ctx, const unsigned char *msg32, unsigned char *sig64, const unsigned char *sec32, const unsigned char *secnonce32, const secp256k1_pubkey_t *pubnonce_others) { + int overflow = 0; + secp256k1_scalar_t sec, non; + secp256k1_ge_t pubnon; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(sig64 != NULL); + ARG_CHECK(sec32 != NULL); + ARG_CHECK(secnonce32 != NULL); + ARG_CHECK(pubnonce_others != NULL); + + secp256k1_scalar_set_b32(&sec, sec32, &overflow); + if (overflow || secp256k1_scalar_is_zero(&sec)) { + return -1; + } + secp256k1_scalar_set_b32(&non, secnonce32, &overflow); + if (overflow || secp256k1_scalar_is_zero(&non)) { + return -1; + } + secp256k1_pubkey_load(ctx, &pubnon, pubnonce_others); + return secp256k1_schnorr_sig_sign(&ctx->ecmult_gen_ctx, sig64, &sec, &non, &pubnon, secp256k1_schnorr_msghash_sha256, msg32); +} + +int secp256k1_schnorr_partial_combine(const secp256k1_context_t* ctx, unsigned char *sig64, int n, const unsigned char * const *sig64sin) { + ARG_CHECK(sig64 != NULL); + ARG_CHECK(n >= 1); + ARG_CHECK(sig64sin != NULL); + return secp256k1_schnorr_sig_combine(sig64, n, sig64sin); +} + +#endif diff --git a/crypto777/secp256k1/modules/schnorr/schnorr.h b/crypto777/secp256k1/modules/schnorr/schnorr.h new file mode 100644 index 000000000..34311ab0b --- /dev/null +++ b/crypto777/secp256k1/modules/schnorr/schnorr.h @@ -0,0 +1,20 @@ +/*********************************************************************** + * Copyright (c) 2014-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php. * + ***********************************************************************/ + +#ifndef _SECP256K1_SCHNORR_ +#define _SECP256K1_SCHNORR_ + +#include "scalar.h" +#include "group.h" + +typedef void (*secp256k1_schnorr_msghash_t)(unsigned char *h32, const unsigned char *r32, const unsigned char *msg32); + +static int secp256k1_schnorr_sig_sign(const secp256k1_ecmult_gen_context_t* ctx, unsigned char *sig64, const secp256k1_scalar_t *key, const secp256k1_scalar_t *nonce, const secp256k1_ge_t *pubnonce, secp256k1_schnorr_msghash_t hash, const unsigned char *msg32); +static int secp256k1_schnorr_sig_verify(const secp256k1_ecmult_context_t* ctx, const unsigned char *sig64, const secp256k1_ge_t *pubkey, secp256k1_schnorr_msghash_t hash, const unsigned char *msg32); +static int secp256k1_schnorr_sig_recover(const secp256k1_ecmult_context_t* ctx, const unsigned char *sig64, secp256k1_ge_t *pubkey, secp256k1_schnorr_msghash_t hash, const unsigned char *msg32); +static int secp256k1_schnorr_sig_combine(unsigned char *sig64, int n, const unsigned char * const *sig64ins); + +#endif diff --git a/crypto777/secp256k1/modules/schnorr/schnorr_impl.h b/crypto777/secp256k1/modules/schnorr/schnorr_impl.h new file mode 100644 index 000000000..e8e971fa9 --- /dev/null +++ b/crypto777/secp256k1/modules/schnorr/schnorr_impl.h @@ -0,0 +1,207 @@ +/*********************************************************************** + * Copyright (c) 2014-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php. * + ***********************************************************************/ + +#ifndef _SECP256K1_SCHNORR_IMPL_H_ +#define _SECP256K1_SCHNORR_IMPL_H_ + +#include + +#include "schnorr.h" +#include "num.h" +#include "field.h" +#include "group.h" +#include "ecmult.h" +#include "ecmult_gen.h" + +/** + * Custom Schnorr-based signature scheme. They support multiparty signing, public key + * recovery and batch validation. + * + * Rationale for verifying R's y coordinate: + * In order to support batch validation and public key recovery, the full R point must + * be known to verifiers, rather than just its x coordinate. In order to not risk + * being more strict in batch validation than normal validation, validators must be + * required to reject signatures with incorrect y coordinate. This is only possible + * by including a (relatively slow) field inverse, or a field square root. However, + * batch validation offers potentially much higher benefits than this cost. + * + * Rationale for having an implicit y coordinate oddness: + * If we commit to having the full R point known to verifiers, there are two mechanism. + * Either include its oddness in the signature, or give it an implicit fixed value. + * As the R y coordinate can be flipped by a simple negation of the nonce, we choose the + * latter, as it comes with nearly zero impact on signing or validation performance, and + * saves a byte in the signature. + * + * Signing: + * Inputs: 32-byte message m, 32-byte scalar key x (!=0), 32-byte scalar nonce k (!=0) + * + * Compute point R = k * G. Reject nonce if R's y coordinate is odd (or negate nonce). + * Compute 32-byte r, the serialization of R's x coordinate. + * Compute scalar h = Hash(r || m). Reject nonce if h == 0 or h >= order. + * Compute scalar s = k - h * x. + * The signature is (r, s). + * + * + * Verification: + * Inputs: 32-byte message m, public key point Q, signature: (32-byte r, scalar s) + * + * Signature is invalid if s >= order. + * Signature is invalid if r >= p. + * Compute scalar h = Hash(r || m). Signature is invalid if h == 0 or h >= order. + * Option 1 (faster for single verification): + * Compute point R = h * Q + s * G. Signature is invalid if R is infinity or R's y coordinate is odd. + * Signature is valid if the serialization of R's x coordinate equals r. + * Option 2 (allows batch validation and pubkey recovery): + * Decompress x coordinate r into point R, with odd y coordinate. Fail if R is not on the curve. + * Signature is valid if R + h * Q + s * G == 0. + */ + +static int secp256k1_schnorr_sig_sign(const secp256k1_ecmult_gen_context_t* ctx, unsigned char *sig64, const secp256k1_scalar_t *key, const secp256k1_scalar_t *nonce, const secp256k1_ge_t *pubnonce, secp256k1_schnorr_msghash_t hash, const unsigned char *msg32) { + secp256k1_gej_t Rj; + secp256k1_ge_t Ra; + unsigned char h32[32]; + secp256k1_scalar_t h, s; + int overflow; + secp256k1_scalar_t n; + + if (secp256k1_scalar_is_zero(key) || secp256k1_scalar_is_zero(nonce)) { + return 0; + } + n = *nonce; + + secp256k1_ecmult_gen(ctx, &Rj, &n); + if (pubnonce) { + secp256k1_gej_add_ge(&Rj, &Rj, pubnonce); + } + secp256k1_ge_set_gej(&Ra, &Rj); + secp256k1_fe_normalize(&Ra.y); + if (secp256k1_fe_is_odd(&Ra.y)) { + /* R's y coordinate is odd, which is not allowed (see rationale above). + Force it to be even by negating the nonce. Note that this even works + for multiparty signing, as the R point is known to all participants, + which can all decide to flip the sign in unison, resulting in the + overall R point to be negated too. */ + secp256k1_scalar_negate(&n, &n); + } + secp256k1_fe_normalize(&Ra.x); + secp256k1_fe_get_b32(sig64, &Ra.x); + hash(h32, sig64, msg32); + overflow = 0; + secp256k1_scalar_set_b32(&h, h32, &overflow); + if (overflow || secp256k1_scalar_is_zero(&h)) { + secp256k1_scalar_clear(&n); + return 0; + } + secp256k1_scalar_mul(&s, &h, key); + secp256k1_scalar_negate(&s, &s); + secp256k1_scalar_add(&s, &s, &n); + secp256k1_scalar_clear(&n); + secp256k1_scalar_get_b32(sig64 + 32, &s); + return 1; +} + +static int secp256k1_schnorr_sig_verify(const secp256k1_ecmult_context_t* ctx, const unsigned char *sig64, const secp256k1_ge_t *pubkey, secp256k1_schnorr_msghash_t hash, const unsigned char *msg32) { + secp256k1_gej_t Qj, Rj; + secp256k1_ge_t Ra; + secp256k1_fe_t Rx; + secp256k1_scalar_t h, s; + unsigned char hh[32]; + int overflow; + + if (secp256k1_ge_is_infinity(pubkey)) { + return 0; + } + hash(hh, sig64, msg32); + overflow = 0; + secp256k1_scalar_set_b32(&h, hh, &overflow); + if (overflow || secp256k1_scalar_is_zero(&h)) { + return 0; + } + overflow = 0; + secp256k1_scalar_set_b32(&s, sig64 + 32, &overflow); + if (overflow) { + return 0; + } + if (!secp256k1_fe_set_b32(&Rx, sig64)) { + return 0; + } + secp256k1_gej_set_ge(&Qj, pubkey); + secp256k1_ecmult(ctx, &Rj, &Qj, &h, &s); + if (secp256k1_gej_is_infinity(&Rj)) { + return 0; + } + secp256k1_ge_set_gej_var(&Ra, &Rj); + secp256k1_fe_normalize_var(&Ra.y); + if (secp256k1_fe_is_odd(&Ra.y)) { + return 0; + } + return secp256k1_fe_equal_var(&Rx, &Ra.x); +} + +static int secp256k1_schnorr_sig_recover(const secp256k1_ecmult_context_t* ctx, const unsigned char *sig64, secp256k1_ge_t *pubkey, secp256k1_schnorr_msghash_t hash, const unsigned char *msg32) { + secp256k1_gej_t Qj, Rj; + secp256k1_ge_t Ra; + secp256k1_fe_t Rx; + secp256k1_scalar_t h, s; + unsigned char hh[32]; + int overflow; + + hash(hh, sig64, msg32); + overflow = 0; + secp256k1_scalar_set_b32(&h, hh, &overflow); + if (overflow || secp256k1_scalar_is_zero(&h)) { + return 0; + } + overflow = 0; + secp256k1_scalar_set_b32(&s, sig64 + 32, &overflow); + if (overflow) { + return 0; + } + if (!secp256k1_fe_set_b32(&Rx, sig64)) { + return 0; + } + if (!secp256k1_ge_set_xo_var(&Ra, &Rx, 0)) { + return 0; + } + secp256k1_gej_set_ge(&Rj, &Ra); + secp256k1_scalar_inverse_var(&h, &h); + secp256k1_scalar_negate(&s, &s); + secp256k1_scalar_mul(&s, &s, &h); + secp256k1_ecmult(ctx, &Qj, &Rj, &h, &s); + if (secp256k1_gej_is_infinity(&Qj)) { + return 0; + } + secp256k1_ge_set_gej(pubkey, &Qj); + return 1; +} + +static int secp256k1_schnorr_sig_combine(unsigned char *sig64, int n, const unsigned char * const *sig64ins) { + secp256k1_scalar_t s = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 0); + int i; + for (i = 0; i < n; i++) { + secp256k1_scalar_t si; + int overflow; + secp256k1_scalar_set_b32(&si, sig64ins[i] + 32, &overflow); + if (overflow) { + return -1; + } + if (i) { + if (memcmp(sig64ins[i - 1], sig64ins[i], 32) != 0) { + return -1; + } + } + secp256k1_scalar_add(&s, &s, &si); + } + if (secp256k1_scalar_is_zero(&s)) { + return 0; + } + memcpy(sig64, sig64ins[0], 32); + secp256k1_scalar_get_b32(sig64 + 32, &s); + secp256k1_scalar_clear(&s); + return 1; +} + +#endif diff --git a/crypto777/secp256k1/modules/schnorr/tests_impl.h b/crypto777/secp256k1/modules/schnorr/tests_impl.h new file mode 100644 index 000000000..402eb63b2 --- /dev/null +++ b/crypto777/secp256k1/modules/schnorr/tests_impl.h @@ -0,0 +1,173 @@ +/********************************************************************** + * Copyright (c) 2014-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_MODULE_SCHNORR_TESTS +#define SECP256K1_MODULE_SCHNORR_TESTS + +void test_schnorr_end_to_end(void) { + unsigned char privkey[32]; + unsigned char message[32]; + unsigned char schnorr_signature[64]; + secp256k1_pubkey_t pubkey, recpubkey; + + /* Generate a random key and message. */ + { + secp256k1_scalar_t key; + random_scalar_order_test(&key); + secp256k1_scalar_get_b32(privkey, &key); + secp256k1_rand256_test(message); + } + + /* Construct and verify corresponding public key. */ + CHECK(secp256k1_ec_seckey_verify(ctx, privkey) == 1); + CHECK(secp256k1_ec_pubkey_create(ctx, &pubkey, privkey) == 1); + + /* Schnorr sign. */ + CHECK(secp256k1_schnorr_sign(ctx, message, schnorr_signature, privkey, NULL, NULL) == 1); + CHECK(secp256k1_schnorr_verify(ctx, message, schnorr_signature, &pubkey) == 1); + CHECK(secp256k1_schnorr_recover(ctx, message, schnorr_signature, &recpubkey) == 1); + CHECK(memcmp(&pubkey, &recpubkey, sizeof(pubkey)) == 0); + /* Destroy signature and verify again. */ + schnorr_signature[secp256k1_rand32() % 64] += 1 + (secp256k1_rand32() % 255); + CHECK(secp256k1_schnorr_verify(ctx, message, schnorr_signature, &pubkey) == 0); + CHECK(secp256k1_schnorr_recover(ctx, message, schnorr_signature, &recpubkey) != 1 || + memcmp(&pubkey, &recpubkey, sizeof(pubkey)) != 0); +} + +/** Horribly broken hash function. Do not use for anything but tests. */ +void test_schnorr_hash(unsigned char *h32, const unsigned char *r32, const unsigned char *msg32) { + int i; + for (i = 0; i < 32; i++) { + h32[i] = r32[i] ^ msg32[i]; + } +} + +void test_schnorr_sign_verify(void) { + unsigned char msg32[32]; + unsigned char sig64[3][64]; + secp256k1_gej_t pubkeyj[3]; + secp256k1_ge_t pubkey[3]; + secp256k1_scalar_t nonce[3], key[3]; + int i = 0; + int k; + + secp256k1_rand256_test(msg32); + + for (k = 0; k < 3; k++) { + random_scalar_order_test(&key[k]); + + do { + random_scalar_order_test(&nonce[k]); + if (secp256k1_schnorr_sig_sign(&ctx->ecmult_gen_ctx, sig64[k], &key[k], &nonce[k], NULL, &test_schnorr_hash, msg32)) { + break; + } + } while(1); + + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &pubkeyj[k], &key[k]); + secp256k1_ge_set_gej_var(&pubkey[k], &pubkeyj[k]); + CHECK(secp256k1_schnorr_sig_verify(&ctx->ecmult_ctx, sig64[k], &pubkey[k], &test_schnorr_hash, msg32)); + + for (i = 0; i < 4; i++) { + int pos = secp256k1_rand32() % 64; + int mod = 1 + (secp256k1_rand32() % 255); + sig64[k][pos] ^= mod; + CHECK(secp256k1_schnorr_sig_verify(&ctx->ecmult_ctx, sig64[k], &pubkey[k], &test_schnorr_hash, msg32) == 0); + sig64[k][pos] ^= mod; + } + } +} + +void test_schnorr_threshold(void) { + unsigned char msg[32]; + unsigned char sec[5][32]; + secp256k1_pubkey_t pub[5]; + unsigned char nonce[5][32]; + secp256k1_pubkey_t pubnonce[5]; + unsigned char sig[5][64]; + const unsigned char* sigs[5]; + unsigned char allsig[64]; + const secp256k1_pubkey_t* pubs[5]; + secp256k1_pubkey_t allpub; + int n, i; + int damage; + int ret = 0; + + damage = (secp256k1_rand32() % 2) ? (1 + (secp256k1_rand32() % 4)) : 0; + secp256k1_rand256_test(msg); + n = 2 + (secp256k1_rand32() % 4); + for (i = 0; i < n; i++) { + do { + secp256k1_rand256_test(sec[i]); + } while (!secp256k1_ec_seckey_verify(ctx, sec[i])); + CHECK(secp256k1_ec_pubkey_create(ctx, &pub[i], sec[i])); + CHECK(secp256k1_schnorr_generate_nonce_pair(ctx, msg, sec[i], NULL, NULL, &pubnonce[i], nonce[i])); + pubs[i] = &pub[i]; + } + if (damage == 1) { + nonce[secp256k1_rand32() % n][secp256k1_rand32() % 32] ^= 1 + (secp256k1_rand32() % 255); + } else if (damage == 2) { + sec[secp256k1_rand32() % n][secp256k1_rand32() % 32] ^= 1 + (secp256k1_rand32() % 255); + } + for (i = 0; i < n; i++) { + secp256k1_pubkey_t allpubnonce; + const secp256k1_pubkey_t *pubnonces[4]; + int j; + for (j = 0; j < i; j++) { + pubnonces[j] = &pubnonce[j]; + } + for (j = i + 1; j < n; j++) { + pubnonces[j - 1] = &pubnonce[j]; + } + CHECK(secp256k1_ec_pubkey_combine(ctx, &allpubnonce, n - 1, pubnonces)); + ret |= (secp256k1_schnorr_partial_sign(ctx, msg, sig[i], sec[i], nonce[i], &allpubnonce) != 1) * 1; + sigs[i] = sig[i]; + } + if (damage == 3) { + sig[secp256k1_rand32() % n][secp256k1_rand32() % 64] ^= 1 + (secp256k1_rand32() % 255); + } + ret |= (secp256k1_ec_pubkey_combine(ctx, &allpub, n, pubs) != 1) * 2; + if ((ret & 1) == 0) { + ret |= (secp256k1_schnorr_partial_combine(ctx, allsig, n, sigs) != 1) * 4; + } + if (damage == 4) { + allsig[secp256k1_rand32() % 32] ^= 1 + (secp256k1_rand32() % 255); + } + if ((ret & 7) == 0) { + ret |= (secp256k1_schnorr_verify(ctx, msg, allsig, &allpub) != 1) * 8; + } + CHECK((ret == 0) == (damage == 0)); +} + +void test_schnorr_recovery(void) { + unsigned char msg32[32]; + unsigned char sig64[64]; + secp256k1_ge_t Q; + + secp256k1_rand256_test(msg32); + secp256k1_rand256_test(sig64); + secp256k1_rand256_test(sig64 + 32); + if (secp256k1_schnorr_sig_recover(&ctx->ecmult_ctx, sig64, &Q, &test_schnorr_hash, msg32) == 1) { + CHECK(secp256k1_schnorr_sig_verify(&ctx->ecmult_ctx, sig64, &Q, &test_schnorr_hash, msg32) == 1); + } +} + +void run_schnorr_tests(void) { + int i; + for (i = 0; i < 32*count; i++) { + test_schnorr_end_to_end(); + } + for (i = 0; i < 32 * count; i++) { + test_schnorr_sign_verify(); + } + for (i = 0; i < 16 * count; i++) { + test_schnorr_recovery(); + } + for (i = 0; i < 10 * count; i++) { + test_schnorr_threshold(); + } +} + +#endif diff --git a/crypto777/secp256k1/num.h b/crypto777/secp256k1/num.h new file mode 100644 index 000000000..849a657a7 --- /dev/null +++ b/crypto777/secp256k1/num.h @@ -0,0 +1,68 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_NUM_ +#define _SECP256K1_NUM_ + +#ifndef USE_NUM_GMP + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#if defined(USE_NUM_GMP) +#include "num_gmp.h" +#else +#error "Please select num implementation" +#endif + +/** Copy a number. */ +static void secp256k1_num_copy(secp256k1_num_t *r, const secp256k1_num_t *a); + +/** Convert a number's absolute value to a binary big-endian string. + * There must be enough place. */ +static void secp256k1_num_get_bin(unsigned char *r, unsigned int rlen, const secp256k1_num_t *a); + +/** Set a number to the value of a binary big-endian string. */ +static void secp256k1_num_set_bin(secp256k1_num_t *r, const unsigned char *a, unsigned int alen); + +/** Compute a modular inverse. The input must be less than the modulus. */ +static void secp256k1_num_mod_inverse(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *m); + +/** Compare the absolute value of two numbers. */ +static int secp256k1_num_cmp(const secp256k1_num_t *a, const secp256k1_num_t *b); + +/** Test whether two number are equal (including sign). */ +static int secp256k1_num_eq(const secp256k1_num_t *a, const secp256k1_num_t *b); + +/** Add two (signed) numbers. */ +static void secp256k1_num_add(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b); + +/** Subtract two (signed) numbers. */ +static void secp256k1_num_sub(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b); + +/** Multiply two (signed) numbers. */ +static void secp256k1_num_mul(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b); + +/** Replace a number by its remainder modulo m. M's sign is ignored. The result is a number between 0 and m-1, + even if r was negative. */ +static void secp256k1_num_mod(secp256k1_num_t *r, const secp256k1_num_t *m); + +/** Right-shift the passed number by bits bits. */ +static void secp256k1_num_shift(secp256k1_num_t *r, int bits); + +/** Check whether a number is zero. */ +static int secp256k1_num_is_zero(const secp256k1_num_t *a); + +/** Check whether a number is strictly negative. */ +static int secp256k1_num_is_neg(const secp256k1_num_t *a); + +/** Change a number's sign. */ +static void secp256k1_num_negate(secp256k1_num_t *r); + +#endif + +#endif diff --git a/crypto777/secp256k1/num_gmp.h b/crypto777/secp256k1/num_gmp.h new file mode 100644 index 000000000..65a4eaf24 --- /dev/null +++ b/crypto777/secp256k1/num_gmp.h @@ -0,0 +1,20 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_NUM_REPR_ +#define _SECP256K1_NUM_REPR_ + +#include "/usr/include/gmp.h" + +#define NUM_LIMBS ((256+GMP_NUMB_BITS-1)/GMP_NUMB_BITS) + +typedef struct { + mp_limb_t data[2*NUM_LIMBS]; + int neg; + int limbs; +} secp256k1_num_t; + +#endif diff --git a/crypto777/secp256k1/num_gmp_impl.h b/crypto777/secp256k1/num_gmp_impl.h new file mode 100644 index 000000000..4c1a7a5b6 --- /dev/null +++ b/crypto777/secp256k1/num_gmp_impl.h @@ -0,0 +1,260 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_NUM_REPR_IMPL_H_ +#define _SECP256K1_NUM_REPR_IMPL_H_ + +#include +#include +#include "/usr/include/gmp.h" + +#include "util.h" +#include "num.h" + +#ifdef VERIFY +static void secp256k1_num_sanity(const secp256k1_num_t *a) { + VERIFY_CHECK(a->limbs == 1 || (a->limbs > 1 && a->data[a->limbs-1] != 0)); +} +#else +#define secp256k1_num_sanity(a) do { } while(0) +#endif + +static void secp256k1_num_copy(secp256k1_num_t *r, const secp256k1_num_t *a) { + *r = *a; +} + +static void secp256k1_num_get_bin(unsigned char *r, unsigned int rlen, const secp256k1_num_t *a) { + unsigned char tmp[65]; + int len = 0; + int shift = 0; + if (a->limbs>1 || a->data[0] != 0) { + len = mpn_get_str(tmp, 256, (mp_limb_t*)a->data, a->limbs); + } + while (shift < len && tmp[shift] == 0) shift++; + VERIFY_CHECK(len-shift <= (int)rlen); + memset(r, 0, rlen - len + shift); + if (len > shift) { + memcpy(r + rlen - len + shift, tmp + shift, len - shift); + } + memset(tmp, 0, sizeof(tmp)); +} + +static void secp256k1_num_set_bin(secp256k1_num_t *r, const unsigned char *a, unsigned int alen) { + int len; + VERIFY_CHECK(alen > 0); + VERIFY_CHECK(alen <= 64); + len = mpn_set_str(r->data, a, alen, 256); + if (len == 0) { + r->data[0] = 0; + len = 1; + } + VERIFY_CHECK(len <= NUM_LIMBS*2); + r->limbs = len; + r->neg = 0; + while (r->limbs > 1 && r->data[r->limbs-1]==0) { + r->limbs--; + } +} + +static void secp256k1_num_add_abs(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b) { + mp_limb_t c = mpn_add(r->data, a->data, a->limbs, b->data, b->limbs); + r->limbs = a->limbs; + if (c != 0) { + VERIFY_CHECK(r->limbs < 2*NUM_LIMBS); + r->data[r->limbs++] = c; + } +} + +static void secp256k1_num_sub_abs(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b) { + mp_limb_t c = mpn_sub(r->data, a->data, a->limbs, b->data, b->limbs); + VERIFY_CHECK(c == 0); + r->limbs = a->limbs; + while (r->limbs > 1 && r->data[r->limbs-1]==0) { + r->limbs--; + } +} + +static void secp256k1_num_mod(secp256k1_num_t *r, const secp256k1_num_t *m) { + secp256k1_num_sanity(r); + secp256k1_num_sanity(m); + + if (r->limbs >= m->limbs) { + mp_limb_t t[2*NUM_LIMBS]; + mpn_tdiv_qr(t, r->data, 0, r->data, r->limbs, m->data, m->limbs); + memset(t, 0, sizeof(t)); + r->limbs = m->limbs; + while (r->limbs > 1 && r->data[r->limbs-1]==0) { + r->limbs--; + } + } + + if (r->neg && (r->limbs > 1 || r->data[0] != 0)) { + secp256k1_num_sub_abs(r, m, r); + r->neg = 0; + } +} + +static void secp256k1_num_mod_inverse(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *m) { + int i; + mp_limb_t g[NUM_LIMBS+1]; + mp_limb_t u[NUM_LIMBS+1]; + mp_limb_t v[NUM_LIMBS+1]; + mp_size_t sn; + mp_size_t gn; + secp256k1_num_sanity(a); + secp256k1_num_sanity(m); + + /** mpn_gcdext computes: (G,S) = gcdext(U,V), where + * * G = gcd(U,V) + * * G = U*S + V*T + * * U has equal or more limbs than V, and V has no padding + * If we set U to be (a padded version of) a, and V = m: + * G = a*S + m*T + * G = a*S mod m + * Assuming G=1: + * S = 1/a mod m + */ + VERIFY_CHECK(m->limbs <= NUM_LIMBS); + VERIFY_CHECK(m->data[m->limbs-1] != 0); + for (i = 0; i < m->limbs; i++) { + u[i] = (i < a->limbs) ? a->data[i] : 0; + v[i] = m->data[i]; + } + sn = NUM_LIMBS+1; + gn = mpn_gcdext(g, r->data, &sn, u, m->limbs, v, m->limbs); + VERIFY_CHECK(gn == 1); + VERIFY_CHECK(g[0] == 1); + r->neg = a->neg ^ m->neg; + if (sn < 0) { + mpn_sub(r->data, m->data, m->limbs, r->data, -sn); + r->limbs = m->limbs; + while (r->limbs > 1 && r->data[r->limbs-1]==0) { + r->limbs--; + } + } else { + r->limbs = sn; + } + memset(g, 0, sizeof(g)); + memset(u, 0, sizeof(u)); + memset(v, 0, sizeof(v)); +} + +static int secp256k1_num_is_zero(const secp256k1_num_t *a) { + return (a->limbs == 1 && a->data[0] == 0); +} + +static int secp256k1_num_is_neg(const secp256k1_num_t *a) { + return (a->limbs > 1 || a->data[0] != 0) && a->neg; +} + +static int secp256k1_num_cmp(const secp256k1_num_t *a, const secp256k1_num_t *b) { + if (a->limbs > b->limbs) { + return 1; + } + if (a->limbs < b->limbs) { + return -1; + } + return mpn_cmp(a->data, b->data, a->limbs); +} + +static int secp256k1_num_eq(const secp256k1_num_t *a, const secp256k1_num_t *b) { + if (a->limbs > b->limbs) { + return 0; + } + if (a->limbs < b->limbs) { + return 0; + } + if ((a->neg && !secp256k1_num_is_zero(a)) != (b->neg && !secp256k1_num_is_zero(b))) { + return 0; + } + return mpn_cmp(a->data, b->data, a->limbs) == 0; +} + +static void secp256k1_num_subadd(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b, int bneg) { + if (!(b->neg ^ bneg ^ a->neg)) { /* a and b have the same sign */ + r->neg = a->neg; + if (a->limbs >= b->limbs) { + secp256k1_num_add_abs(r, a, b); + } else { + secp256k1_num_add_abs(r, b, a); + } + } else { + if (secp256k1_num_cmp(a, b) > 0) { + r->neg = a->neg; + secp256k1_num_sub_abs(r, a, b); + } else { + r->neg = b->neg ^ bneg; + secp256k1_num_sub_abs(r, b, a); + } + } +} + +static void secp256k1_num_add(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b) { + secp256k1_num_sanity(a); + secp256k1_num_sanity(b); + secp256k1_num_subadd(r, a, b, 0); +} + +static void secp256k1_num_sub(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b) { + secp256k1_num_sanity(a); + secp256k1_num_sanity(b); + secp256k1_num_subadd(r, a, b, 1); +} + +static void secp256k1_num_mul(secp256k1_num_t *r, const secp256k1_num_t *a, const secp256k1_num_t *b) { + mp_limb_t tmp[2*NUM_LIMBS+1]; + secp256k1_num_sanity(a); + secp256k1_num_sanity(b); + + VERIFY_CHECK(a->limbs + b->limbs <= 2*NUM_LIMBS+1); + if ((a->limbs==1 && a->data[0]==0) || (b->limbs==1 && b->data[0]==0)) { + r->limbs = 1; + r->neg = 0; + r->data[0] = 0; + return; + } + if (a->limbs >= b->limbs) { + mpn_mul(tmp, a->data, a->limbs, b->data, b->limbs); + } else { + mpn_mul(tmp, b->data, b->limbs, a->data, a->limbs); + } + r->limbs = a->limbs + b->limbs; + if (r->limbs > 1 && tmp[r->limbs - 1]==0) { + r->limbs--; + } + VERIFY_CHECK(r->limbs <= 2*NUM_LIMBS); + mpn_copyi(r->data, tmp, r->limbs); + r->neg = a->neg ^ b->neg; + memset(tmp, 0, sizeof(tmp)); +} + +static void secp256k1_num_shift(secp256k1_num_t *r, int bits) { + int i; + if (bits % GMP_NUMB_BITS) { + /* Shift within limbs. */ + mpn_rshift(r->data, r->data, r->limbs, bits % GMP_NUMB_BITS); + } + if (bits >= GMP_NUMB_BITS) { + /* Shift full limbs. */ + for (i = 0; i < r->limbs; i++) { + int index = i + (bits / GMP_NUMB_BITS); + if (index < r->limbs && index < 2*NUM_LIMBS) { + r->data[i] = r->data[index]; + } else { + r->data[i] = 0; + } + } + } + while (r->limbs>1 && r->data[r->limbs-1]==0) { + r->limbs--; + } +} + +static void secp256k1_num_negate(secp256k1_num_t *r) { + r->neg ^= 1; +} + +#endif diff --git a/crypto777/secp256k1/num_impl.h b/crypto777/secp256k1/num_impl.h new file mode 100644 index 000000000..0b0e3a072 --- /dev/null +++ b/crypto777/secp256k1/num_impl.h @@ -0,0 +1,24 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_NUM_IMPL_H_ +#define _SECP256K1_NUM_IMPL_H_ + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include "num.h" + +#if defined(USE_NUM_GMP) +#include "num_gmp_impl.h" +#elif defined(USE_NUM_NONE) +/* Nothing. */ +#else +#error "Please select num implementation" +#endif + +#endif diff --git a/crypto777/secp256k1/org_bitcoin_NativeSecp256k1.c b/crypto777/secp256k1/org_bitcoin_NativeSecp256k1.c new file mode 100644 index 000000000..bb4cd7072 --- /dev/null +++ b/crypto777/secp256k1/org_bitcoin_NativeSecp256k1.c @@ -0,0 +1,23 @@ +#include "org_bitcoin_NativeSecp256k1.h" +#include "include/secp256k1.h" + +JNIEXPORT jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdsa_1verify + (JNIEnv* env, jclass classObject, jobject byteBufferObject) +{ + unsigned char* data = (unsigned char*) (*env)->GetDirectBufferAddress(env, byteBufferObject); + int sigLen = *((int*)(data + 32)); + int pubLen = *((int*)(data + 32 + 4)); + + return secp256k1_ecdsa_verify(data, 32, data+32+8, sigLen, data+32+8+sigLen, pubLen); +} + +static void __javasecp256k1_attach(void) __attribute__((constructor)); +static void __javasecp256k1_detach(void) __attribute__((destructor)); + +static void __javasecp256k1_attach(void) { + secp256k1_start(SECP256K1_START_VERIFY); +} + +static void __javasecp256k1_detach(void) { + secp256k1_stop(); +} diff --git a/crypto777/secp256k1/org_bitcoin_NativeSecp256k1.h b/crypto777/secp256k1/org_bitcoin_NativeSecp256k1.h new file mode 100644 index 000000000..d7fb004fa --- /dev/null +++ b/crypto777/secp256k1/org_bitcoin_NativeSecp256k1.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class org_bitcoin_NativeSecp256k1 */ + +#ifndef _Included_org_bitcoin_NativeSecp256k1 +#define _Included_org_bitcoin_NativeSecp256k1 +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_bitcoin_NativeSecp256k1 + * Method: secp256k1_ecdsa_verify + * Signature: (Ljava/nio/ByteBuffer;)I + */ +JNIEXPORT jint JNICALL Java_org_bitcoin_NativeSecp256k1_secp256k1_1ecdsa_1verify + (JNIEnv *, jclass, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/crypto777/secp256k1/scalar.h b/crypto777/secp256k1/scalar.h new file mode 100644 index 000000000..b16df1550 --- /dev/null +++ b/crypto777/secp256k1/scalar.h @@ -0,0 +1,105 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_SCALAR_ +#define _SECP256K1_SCALAR_ + +#define USE_SCALAR_8X32 1 +#include "num.h" + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#if defined(USE_SCALAR_4X64) +#include "scalar_4x64.h" +#elif defined(USE_SCALAR_8X32) +#include "scalar_8x32.h" +#else +#error "Please select scalar implementation" +#endif + +/** Clear a scalar to prevent the leak of sensitive data. */ +static void secp256k1_scalar_clear(secp256k1_scalar_t *r); + +/** Access bits from a scalar. All requested bits must belong to the same 32-bit limb. */ +static unsigned int secp256k1_scalar_get_bits(const secp256k1_scalar_t *a, unsigned int offset, unsigned int count); + +/** Access bits from a scalar. Not constant time. */ +static unsigned int secp256k1_scalar_get_bits_var(const secp256k1_scalar_t *a, unsigned int offset, unsigned int count); + +/** Set a scalar from a big endian byte array. */ +static void secp256k1_scalar_set_b32(secp256k1_scalar_t *r, const unsigned char *bin, int *overflow); + +/** Set a scalar to an unsigned integer. */ +static void secp256k1_scalar_set_int(secp256k1_scalar_t *r, unsigned int v); + +/** Convert a scalar to a byte array. */ +static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar_t* a); + +/** Add two scalars together (modulo the group order). Returns whether it overflowed. */ +static int secp256k1_scalar_add(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b); + +/** Conditionally add a power of two to a scalar. The result is not allowed to overflow. */ +static void secp256k1_scalar_cadd_bit(secp256k1_scalar_t *r, unsigned int bit, int flag); + +/** Multiply two scalars (modulo the group order). */ +static void secp256k1_scalar_mul(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b); + +/** Shift a scalar right by some amount strictly between 0 and 16, returning + * the low bits that were shifted off */ +static int secp256k1_scalar_shr_int(secp256k1_scalar_t *r, int n); + +/** Compute the square of a scalar (modulo the group order). */ +static void secp256k1_scalar_sqr(secp256k1_scalar_t *r, const secp256k1_scalar_t *a); + +/** Compute the inverse of a scalar (modulo the group order). */ +static void secp256k1_scalar_inverse(secp256k1_scalar_t *r, const secp256k1_scalar_t *a); + +/** Compute the inverse of a scalar (modulo the group order), without constant-time guarantee. */ +static void secp256k1_scalar_inverse_var(secp256k1_scalar_t *r, const secp256k1_scalar_t *a); + +/** Compute the complement of a scalar (modulo the group order). */ +static void secp256k1_scalar_negate(secp256k1_scalar_t *r, const secp256k1_scalar_t *a); + +/** Check whether a scalar equals zero. */ +static int secp256k1_scalar_is_zero(const secp256k1_scalar_t *a); + +/** Check whether a scalar equals one. */ +static int secp256k1_scalar_is_one(const secp256k1_scalar_t *a); + +/** Check whether a scalar, considered as an nonnegative integer, is even. */ +static int secp256k1_scalar_is_even(const secp256k1_scalar_t *a); + +/** Check whether a scalar is higher than the group order divided by 2. */ +static int secp256k1_scalar_is_high(const secp256k1_scalar_t *a); + +/** Conditionally negate a number, in constant time. + * Returns -1 if the number was negated, 1 otherwise */ +static int secp256k1_scalar_cond_negate(secp256k1_scalar_t *a, int flag); + +#ifndef USE_NUM_NONE +/** Convert a scalar to a number. */ +static void secp256k1_scalar_get_num(secp256k1_num_t *r, const secp256k1_scalar_t *a); + +/** Get the order of the group as a number. */ +static void secp256k1_scalar_order_get_num(secp256k1_num_t *r); +#endif + +/** Compare two scalars. */ +static int secp256k1_scalar_eq(const secp256k1_scalar_t *a, const secp256k1_scalar_t *b); + +#ifdef USE_ENDOMORPHISM +/** Find r1 and r2 such that r1+r2*2^128 = a. */ +static void secp256k1_scalar_split_128(secp256k1_scalar_t *r1, secp256k1_scalar_t *r2, const secp256k1_scalar_t *a); +/** Find r1 and r2 such that r1+r2*lambda = a, and r1 and r2 are maximum 128 bits long (see secp256k1_gej_mul_lambda). */ +static void secp256k1_scalar_split_lambda(secp256k1_scalar_t *r1, secp256k1_scalar_t *r2, const secp256k1_scalar_t *a); +#endif + +/** Multiply a and b (without taking the modulus!), divide by 2**shift, and round to the nearest integer. Shift must be at least 256. */ +static void secp256k1_scalar_mul_shift_var(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b, unsigned int shift); + +#endif diff --git a/crypto777/secp256k1/scalar_4x64.h b/crypto777/secp256k1/scalar_4x64.h new file mode 100644 index 000000000..82899aa7b --- /dev/null +++ b/crypto777/secp256k1/scalar_4x64.h @@ -0,0 +1,19 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_SCALAR_REPR_ +#define _SECP256K1_SCALAR_REPR_ + +#include + +/** A scalar modulo the group order of the secp256k1 curve. */ +typedef struct { + uint64_t d[4]; +} secp256k1_scalar_t; + +#define SECP256K1_SCALAR_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{((uint64_t)(d1)) << 32 | (d0), ((uint64_t)(d3)) << 32 | (d2), ((uint64_t)(d5)) << 32 | (d4), ((uint64_t)(d7)) << 32 | (d6)}} + +#endif diff --git a/crypto777/secp256k1/scalar_4x64_impl.h b/crypto777/secp256k1/scalar_4x64_impl.h new file mode 100644 index 000000000..09431e0df --- /dev/null +++ b/crypto777/secp256k1/scalar_4x64_impl.h @@ -0,0 +1,947 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_SCALAR_REPR_IMPL_H_ +#define _SECP256K1_SCALAR_REPR_IMPL_H_ + +/* Limbs of the secp256k1 order. */ +#define SECP256K1_N_0 ((uint64_t)0xBFD25E8CD0364141ULL) +#define SECP256K1_N_1 ((uint64_t)0xBAAEDCE6AF48A03BULL) +#define SECP256K1_N_2 ((uint64_t)0xFFFFFFFFFFFFFFFEULL) +#define SECP256K1_N_3 ((uint64_t)0xFFFFFFFFFFFFFFFFULL) + +/* Limbs of 2^256 minus the secp256k1 order. */ +#define SECP256K1_N_C_0 (~SECP256K1_N_0 + 1) +#define SECP256K1_N_C_1 (~SECP256K1_N_1) +#define SECP256K1_N_C_2 (1) + +/* Limbs of half the secp256k1 order. */ +#define SECP256K1_N_H_0 ((uint64_t)0xDFE92F46681B20A0ULL) +#define SECP256K1_N_H_1 ((uint64_t)0x5D576E7357A4501DULL) +#define SECP256K1_N_H_2 ((uint64_t)0xFFFFFFFFFFFFFFFFULL) +#define SECP256K1_N_H_3 ((uint64_t)0x7FFFFFFFFFFFFFFFULL) + +SECP256K1_INLINE static void secp256k1_scalar_clear(secp256k1_scalar_t *r) { + r->d[0] = 0; + r->d[1] = 0; + r->d[2] = 0; + r->d[3] = 0; +} + +SECP256K1_INLINE static void secp256k1_scalar_set_int(secp256k1_scalar_t *r, unsigned int v) { + r->d[0] = v; + r->d[1] = 0; + r->d[2] = 0; + r->d[3] = 0; +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits(const secp256k1_scalar_t *a, unsigned int offset, unsigned int count) { + VERIFY_CHECK((offset + count - 1) >> 6 == offset >> 6); + return (a->d[offset >> 6] >> (offset & 0x3F)) & ((((uint64_t)1) << count) - 1); +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits_var(const secp256k1_scalar_t *a, unsigned int offset, unsigned int count) { + VERIFY_CHECK(count < 32); + VERIFY_CHECK(offset + count <= 256); + if ((offset + count - 1) >> 6 == offset >> 6) { + return secp256k1_scalar_get_bits(a, offset, count); + } else { + VERIFY_CHECK((offset >> 6) + 1 < 4); + return ((a->d[offset >> 6] >> (offset & 0x3F)) | (a->d[(offset >> 6) + 1] << (64 - (offset & 0x3F)))) & ((((uint64_t)1) << count) - 1); + } +} + +SECP256K1_INLINE static int secp256k1_scalar_check_overflow(const secp256k1_scalar_t *a) { + int yes = 0; + int no = 0; + no |= (a->d[3] < SECP256K1_N_3); /* No need for a > check. */ + no |= (a->d[2] < SECP256K1_N_2); + yes |= (a->d[2] > SECP256K1_N_2) & ~no; + no |= (a->d[1] < SECP256K1_N_1); + yes |= (a->d[1] > SECP256K1_N_1) & ~no; + yes |= (a->d[0] >= SECP256K1_N_0) & ~no; + return yes; +} + +SECP256K1_INLINE static int secp256k1_scalar_reduce(secp256k1_scalar_t *r, unsigned int overflow) { + uint128_t t; + VERIFY_CHECK(overflow <= 1); + t = (uint128_t)r->d[0] + overflow * SECP256K1_N_C_0; + r->d[0] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[1] + overflow * SECP256K1_N_C_1; + r->d[1] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[2] + overflow * SECP256K1_N_C_2; + r->d[2] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint64_t)r->d[3]; + r->d[3] = t & 0xFFFFFFFFFFFFFFFFULL; + return overflow; +} + +static int secp256k1_scalar_add(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b) { + int overflow; + uint128_t t = (uint128_t)a->d[0] + b->d[0]; + r->d[0] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)a->d[1] + b->d[1]; + r->d[1] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)a->d[2] + b->d[2]; + r->d[2] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)a->d[3] + b->d[3]; + r->d[3] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + overflow = t + secp256k1_scalar_check_overflow(r); + VERIFY_CHECK(overflow == 0 || overflow == 1); + secp256k1_scalar_reduce(r, overflow); + return overflow; +} + +static void secp256k1_scalar_cadd_bit(secp256k1_scalar_t *r, unsigned int bit, int flag) { + uint128_t t; + VERIFY_CHECK(bit < 256); + bit += ((uint32_t) flag - 1) & 0x100; /* forcing (bit >> 6) > 3 makes this a noop */ + t = (uint128_t)r->d[0] + (((uint64_t)((bit >> 6) == 0)) << (bit & 0x3F)); + r->d[0] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[1] + (((uint64_t)((bit >> 6) == 1)) << (bit & 0x3F)); + r->d[1] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[2] + (((uint64_t)((bit >> 6) == 2)) << (bit & 0x3F)); + r->d[2] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[3] + (((uint64_t)((bit >> 6) == 3)) << (bit & 0x3F)); + r->d[3] = t & 0xFFFFFFFFFFFFFFFFULL; +#ifdef VERIFY + VERIFY_CHECK((t >> 64) == 0); + VERIFY_CHECK(secp256k1_scalar_check_overflow(r) == 0); +#endif +} + +static void secp256k1_scalar_set_b32(secp256k1_scalar_t *r, const unsigned char *b32, int *overflow) { + int over; + r->d[0] = (uint64_t)b32[31] | (uint64_t)b32[30] << 8 | (uint64_t)b32[29] << 16 | (uint64_t)b32[28] << 24 | (uint64_t)b32[27] << 32 | (uint64_t)b32[26] << 40 | (uint64_t)b32[25] << 48 | (uint64_t)b32[24] << 56; + r->d[1] = (uint64_t)b32[23] | (uint64_t)b32[22] << 8 | (uint64_t)b32[21] << 16 | (uint64_t)b32[20] << 24 | (uint64_t)b32[19] << 32 | (uint64_t)b32[18] << 40 | (uint64_t)b32[17] << 48 | (uint64_t)b32[16] << 56; + r->d[2] = (uint64_t)b32[15] | (uint64_t)b32[14] << 8 | (uint64_t)b32[13] << 16 | (uint64_t)b32[12] << 24 | (uint64_t)b32[11] << 32 | (uint64_t)b32[10] << 40 | (uint64_t)b32[9] << 48 | (uint64_t)b32[8] << 56; + r->d[3] = (uint64_t)b32[7] | (uint64_t)b32[6] << 8 | (uint64_t)b32[5] << 16 | (uint64_t)b32[4] << 24 | (uint64_t)b32[3] << 32 | (uint64_t)b32[2] << 40 | (uint64_t)b32[1] << 48 | (uint64_t)b32[0] << 56; + over = secp256k1_scalar_reduce(r, secp256k1_scalar_check_overflow(r)); + if (overflow) { + *overflow = over; + } +} + +static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar_t* a) { + bin[0] = a->d[3] >> 56; bin[1] = a->d[3] >> 48; bin[2] = a->d[3] >> 40; bin[3] = a->d[3] >> 32; bin[4] = a->d[3] >> 24; bin[5] = a->d[3] >> 16; bin[6] = a->d[3] >> 8; bin[7] = a->d[3]; + bin[8] = a->d[2] >> 56; bin[9] = a->d[2] >> 48; bin[10] = a->d[2] >> 40; bin[11] = a->d[2] >> 32; bin[12] = a->d[2] >> 24; bin[13] = a->d[2] >> 16; bin[14] = a->d[2] >> 8; bin[15] = a->d[2]; + bin[16] = a->d[1] >> 56; bin[17] = a->d[1] >> 48; bin[18] = a->d[1] >> 40; bin[19] = a->d[1] >> 32; bin[20] = a->d[1] >> 24; bin[21] = a->d[1] >> 16; bin[22] = a->d[1] >> 8; bin[23] = a->d[1]; + bin[24] = a->d[0] >> 56; bin[25] = a->d[0] >> 48; bin[26] = a->d[0] >> 40; bin[27] = a->d[0] >> 32; bin[28] = a->d[0] >> 24; bin[29] = a->d[0] >> 16; bin[30] = a->d[0] >> 8; bin[31] = a->d[0]; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_zero(const secp256k1_scalar_t *a) { + return (a->d[0] | a->d[1] | a->d[2] | a->d[3]) == 0; +} + +static void secp256k1_scalar_negate(secp256k1_scalar_t *r, const secp256k1_scalar_t *a) { + uint64_t nonzero = 0xFFFFFFFFFFFFFFFFULL * (secp256k1_scalar_is_zero(a) == 0); + uint128_t t = (uint128_t)(~a->d[0]) + SECP256K1_N_0 + 1; + r->d[0] = t & nonzero; t >>= 64; + t += (uint128_t)(~a->d[1]) + SECP256K1_N_1; + r->d[1] = t & nonzero; t >>= 64; + t += (uint128_t)(~a->d[2]) + SECP256K1_N_2; + r->d[2] = t & nonzero; t >>= 64; + t += (uint128_t)(~a->d[3]) + SECP256K1_N_3; + r->d[3] = t & nonzero; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_one(const secp256k1_scalar_t *a) { + return ((a->d[0] ^ 1) | a->d[1] | a->d[2] | a->d[3]) == 0; +} + +static int secp256k1_scalar_is_high(const secp256k1_scalar_t *a) { + int yes = 0; + int no = 0; + no |= (a->d[3] < SECP256K1_N_H_3); + yes |= (a->d[3] > SECP256K1_N_H_3) & ~no; + no |= (a->d[2] < SECP256K1_N_H_2) & ~yes; /* No need for a > check. */ + no |= (a->d[1] < SECP256K1_N_H_1) & ~yes; + yes |= (a->d[1] > SECP256K1_N_H_1) & ~no; + yes |= (a->d[0] > SECP256K1_N_H_0) & ~no; + return yes; +} + +static int secp256k1_scalar_cond_negate(secp256k1_scalar_t *r, int flag) { + /* If we are flag = 0, mask = 00...00 and this is a no-op; + * if we are flag = 1, mask = 11...11 and this is identical to secp256k1_scalar_negate */ + uint64_t mask = !flag - 1; + uint64_t nonzero = (secp256k1_scalar_is_zero(r) != 0) - 1; + uint128_t t = (uint128_t)(r->d[0] ^ mask) + ((SECP256K1_N_0 + 1) & mask); + r->d[0] = t & nonzero; t >>= 64; + t += (uint128_t)(r->d[1] ^ mask) + (SECP256K1_N_1 & mask); + r->d[1] = t & nonzero; t >>= 64; + t += (uint128_t)(r->d[2] ^ mask) + (SECP256K1_N_2 & mask); + r->d[2] = t & nonzero; t >>= 64; + t += (uint128_t)(r->d[3] ^ mask) + (SECP256K1_N_3 & mask); + r->d[3] = t & nonzero; + return 2 * (mask == 0) - 1; +} + +/* Inspired by the macros in OpenSSL's crypto/bn/asm/x86_64-gcc.c. */ + +/** Add a*b to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define muladd(a,b) { \ + uint64_t tl, th; \ + { \ + uint128_t t = (uint128_t)a * b; \ + th = t >> 64; /* at most 0xFFFFFFFFFFFFFFFE */ \ + tl = t; \ + } \ + c0 += tl; /* overflow is handled on the next line */ \ + th += (c0 < tl) ? 1 : 0; /* at most 0xFFFFFFFFFFFFFFFF */ \ + c1 += th; /* overflow is handled on the next line */ \ + c2 += (c1 < th) ? 1 : 0; /* never overflows by contract (verified in the next line) */ \ + VERIFY_CHECK((c1 >= th) || (c2 != 0)); \ +} + +/** Add a*b to the number defined by (c0,c1). c1 must never overflow. */ +#define muladd_fast(a,b) { \ + uint64_t tl, th; \ + { \ + uint128_t t = (uint128_t)a * b; \ + th = t >> 64; /* at most 0xFFFFFFFFFFFFFFFE */ \ + tl = t; \ + } \ + c0 += tl; /* overflow is handled on the next line */ \ + th += (c0 < tl) ? 1 : 0; /* at most 0xFFFFFFFFFFFFFFFF */ \ + c1 += th; /* never overflows by contract (verified in the next line) */ \ + VERIFY_CHECK(c1 >= th); \ +} + +/** Add 2*a*b to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define muladd2(a,b) { \ + uint64_t tl, th, th2, tl2; \ + { \ + uint128_t t = (uint128_t)a * b; \ + th = t >> 64; /* at most 0xFFFFFFFFFFFFFFFE */ \ + tl = t; \ + } \ + th2 = th + th; /* at most 0xFFFFFFFFFFFFFFFE (in case th was 0x7FFFFFFFFFFFFFFF) */ \ + c2 += (th2 < th) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((th2 >= th) || (c2 != 0)); \ + tl2 = tl + tl; /* at most 0xFFFFFFFFFFFFFFFE (in case the lowest 63 bits of tl were 0x7FFFFFFFFFFFFFFF) */ \ + th2 += (tl2 < tl) ? 1 : 0; /* at most 0xFFFFFFFFFFFFFFFF */ \ + c0 += tl2; /* overflow is handled on the next line */ \ + th2 += (c0 < tl2) ? 1 : 0; /* second overflow is handled on the next line */ \ + c2 += (c0 < tl2) & (th2 == 0); /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c0 >= tl2) || (th2 != 0) || (c2 != 0)); \ + c1 += th2; /* overflow is handled on the next line */ \ + c2 += (c1 < th2) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c1 >= th2) || (c2 != 0)); \ +} + +/** Add a to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define sumadd(a) { \ + unsigned int over; \ + c0 += (a); /* overflow is handled on the next line */ \ + over = (c0 < (a)) ? 1 : 0; \ + c1 += over; /* overflow is handled on the next line */ \ + c2 += (c1 < over) ? 1 : 0; /* never overflows by contract */ \ +} + +/** Add a to the number defined by (c0,c1). c1 must never overflow, c2 must be zero. */ +#define sumadd_fast(a) { \ + c0 += (a); /* overflow is handled on the next line */ \ + c1 += (c0 < (a)) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c1 != 0) | (c0 >= (a))); \ + VERIFY_CHECK(c2 == 0); \ +} + +/** Extract the lowest 64 bits of (c0,c1,c2) into n, and left shift the number 64 bits. */ +#define extract(n) { \ + (n) = c0; \ + c0 = c1; \ + c1 = c2; \ + c2 = 0; \ +} + +/** Extract the lowest 64 bits of (c0,c1,c2) into n, and left shift the number 64 bits. c2 is required to be zero. */ +#define extract_fast(n) { \ + (n) = c0; \ + c0 = c1; \ + c1 = 0; \ + VERIFY_CHECK(c2 == 0); \ +} + +static void secp256k1_scalar_reduce_512(secp256k1_scalar_t *r, const uint64_t *l) { +#ifdef USE_ASM_X86_64 + /* Reduce 512 bits into 385. */ + uint64_t m0, m1, m2, m3, m4, m5, m6; + uint64_t p0, p1, p2, p3, p4; + uint64_t c; + + __asm__ __volatile__( + /* Preload. */ + "movq 32(%%rsi), %%r11\n" + "movq 40(%%rsi), %%r12\n" + "movq 48(%%rsi), %%r13\n" + "movq 56(%%rsi), %%r14\n" + /* Initialize r8,r9,r10 */ + "movq 0(%%rsi), %%r8\n" + "movq $0, %%r9\n" + "movq $0, %%r10\n" + /* (r8,r9) += n0 * c0 */ + "movq %8, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + /* extract m0 */ + "movq %%r8, %q0\n" + "movq $0, %%r8\n" + /* (r9,r10) += l1 */ + "addq 8(%%rsi), %%r9\n" + "adcq $0, %%r10\n" + /* (r9,r10,r8) += n1 * c0 */ + "movq %8, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += n0 * c1 */ + "movq %9, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* extract m1 */ + "movq %%r9, %q1\n" + "movq $0, %%r9\n" + /* (r10,r8,r9) += l2 */ + "addq 16(%%rsi), %%r10\n" + "adcq $0, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += n2 * c0 */ + "movq %8, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += n1 * c1 */ + "movq %9, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += n0 */ + "addq %%r11, %%r10\n" + "adcq $0, %%r8\n" + "adcq $0, %%r9\n" + /* extract m2 */ + "movq %%r10, %q2\n" + "movq $0, %%r10\n" + /* (r8,r9,r10) += l3 */ + "addq 24(%%rsi), %%r8\n" + "adcq $0, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += n3 * c0 */ + "movq %8, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += n2 * c1 */ + "movq %9, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += n1 */ + "addq %%r12, %%r8\n" + "adcq $0, %%r9\n" + "adcq $0, %%r10\n" + /* extract m3 */ + "movq %%r8, %q3\n" + "movq $0, %%r8\n" + /* (r9,r10,r8) += n3 * c1 */ + "movq %9, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += n2 */ + "addq %%r13, %%r9\n" + "adcq $0, %%r10\n" + "adcq $0, %%r8\n" + /* extract m4 */ + "movq %%r9, %q4\n" + /* (r10,r8) += n3 */ + "addq %%r14, %%r10\n" + "adcq $0, %%r8\n" + /* extract m5 */ + "movq %%r10, %q5\n" + /* extract m6 */ + "movq %%r8, %q6\n" + : "=g"(m0), "=g"(m1), "=g"(m2), "=g"(m3), "=g"(m4), "=g"(m5), "=g"(m6) + : "S"(l), "n"(SECP256K1_N_C_0), "n"(SECP256K1_N_C_1) + : "rax", "rdx", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "cc"); + + /* Reduce 385 bits into 258. */ + __asm__ __volatile__( + /* Preload */ + "movq %q9, %%r11\n" + "movq %q10, %%r12\n" + "movq %q11, %%r13\n" + /* Initialize (r8,r9,r10) */ + "movq %q5, %%r8\n" + "movq $0, %%r9\n" + "movq $0, %%r10\n" + /* (r8,r9) += m4 * c0 */ + "movq %12, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + /* extract p0 */ + "movq %%r8, %q0\n" + "movq $0, %%r8\n" + /* (r9,r10) += m1 */ + "addq %q6, %%r9\n" + "adcq $0, %%r10\n" + /* (r9,r10,r8) += m5 * c0 */ + "movq %12, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += m4 * c1 */ + "movq %13, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* extract p1 */ + "movq %%r9, %q1\n" + "movq $0, %%r9\n" + /* (r10,r8,r9) += m2 */ + "addq %q7, %%r10\n" + "adcq $0, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += m6 * c0 */ + "movq %12, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += m5 * c1 */ + "movq %13, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += m4 */ + "addq %%r11, %%r10\n" + "adcq $0, %%r8\n" + "adcq $0, %%r9\n" + /* extract p2 */ + "movq %%r10, %q2\n" + /* (r8,r9) += m3 */ + "addq %q8, %%r8\n" + "adcq $0, %%r9\n" + /* (r8,r9) += m6 * c1 */ + "movq %13, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + /* (r8,r9) += m5 */ + "addq %%r12, %%r8\n" + "adcq $0, %%r9\n" + /* extract p3 */ + "movq %%r8, %q3\n" + /* (r9) += m6 */ + "addq %%r13, %%r9\n" + /* extract p4 */ + "movq %%r9, %q4\n" + : "=&g"(p0), "=&g"(p1), "=&g"(p2), "=g"(p3), "=g"(p4) + : "g"(m0), "g"(m1), "g"(m2), "g"(m3), "g"(m4), "g"(m5), "g"(m6), "n"(SECP256K1_N_C_0), "n"(SECP256K1_N_C_1) + : "rax", "rdx", "r8", "r9", "r10", "r11", "r12", "r13", "cc"); + + /* Reduce 258 bits into 256. */ + __asm__ __volatile__( + /* Preload */ + "movq %q5, %%r10\n" + /* (rax,rdx) = p4 * c0 */ + "movq %7, %%rax\n" + "mulq %%r10\n" + /* (rax,rdx) += p0 */ + "addq %q1, %%rax\n" + "adcq $0, %%rdx\n" + /* extract r0 */ + "movq %%rax, 0(%q6)\n" + /* Move to (r8,r9) */ + "movq %%rdx, %%r8\n" + "movq $0, %%r9\n" + /* (r8,r9) += p1 */ + "addq %q2, %%r8\n" + "adcq $0, %%r9\n" + /* (r8,r9) += p4 * c1 */ + "movq %8, %%rax\n" + "mulq %%r10\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + /* Extract r1 */ + "movq %%r8, 8(%q6)\n" + "movq $0, %%r8\n" + /* (r9,r8) += p4 */ + "addq %%r10, %%r9\n" + "adcq $0, %%r8\n" + /* (r9,r8) += p2 */ + "addq %q3, %%r9\n" + "adcq $0, %%r8\n" + /* Extract r2 */ + "movq %%r9, 16(%q6)\n" + "movq $0, %%r9\n" + /* (r8,r9) += p3 */ + "addq %q4, %%r8\n" + "adcq $0, %%r9\n" + /* Extract r3 */ + "movq %%r8, 24(%q6)\n" + /* Extract c */ + "movq %%r9, %q0\n" + : "=g"(c) + : "g"(p0), "g"(p1), "g"(p2), "g"(p3), "g"(p4), "D"(r), "n"(SECP256K1_N_C_0), "n"(SECP256K1_N_C_1) + : "rax", "rdx", "r8", "r9", "r10", "cc", "memory"); +#else + uint128_t c; + uint64_t c0, c1, c2; + uint64_t n0 = l[4], n1 = l[5], n2 = l[6], n3 = l[7]; + uint64_t m0, m1, m2, m3, m4, m5; + uint32_t m6; + uint64_t p0, p1, p2, p3; + uint32_t p4; + + /* Reduce 512 bits into 385. */ + /* m[0..6] = l[0..3] + n[0..3] * SECP256K1_N_C. */ + c0 = l[0]; c1 = 0; c2 = 0; + muladd_fast(n0, SECP256K1_N_C_0); + extract_fast(m0); + sumadd_fast(l[1]); + muladd(n1, SECP256K1_N_C_0); + muladd(n0, SECP256K1_N_C_1); + extract(m1); + sumadd(l[2]); + muladd(n2, SECP256K1_N_C_0); + muladd(n1, SECP256K1_N_C_1); + sumadd(n0); + extract(m2); + sumadd(l[3]); + muladd(n3, SECP256K1_N_C_0); + muladd(n2, SECP256K1_N_C_1); + sumadd(n1); + extract(m3); + muladd(n3, SECP256K1_N_C_1); + sumadd(n2); + extract(m4); + sumadd_fast(n3); + extract_fast(m5); + VERIFY_CHECK(c0 <= 1); + m6 = c0; + + /* Reduce 385 bits into 258. */ + /* p[0..4] = m[0..3] + m[4..6] * SECP256K1_N_C. */ + c0 = m0; c1 = 0; c2 = 0; + muladd_fast(m4, SECP256K1_N_C_0); + extract_fast(p0); + sumadd_fast(m1); + muladd(m5, SECP256K1_N_C_0); + muladd(m4, SECP256K1_N_C_1); + extract(p1); + sumadd(m2); + muladd(m6, SECP256K1_N_C_0); + muladd(m5, SECP256K1_N_C_1); + sumadd(m4); + extract(p2); + sumadd_fast(m3); + muladd_fast(m6, SECP256K1_N_C_1); + sumadd_fast(m5); + extract_fast(p3); + p4 = c0 + m6; + VERIFY_CHECK(p4 <= 2); + + /* Reduce 258 bits into 256. */ + /* r[0..3] = p[0..3] + p[4] * SECP256K1_N_C. */ + c = p0 + (uint128_t)SECP256K1_N_C_0 * p4; + r->d[0] = c & 0xFFFFFFFFFFFFFFFFULL; c >>= 64; + c += p1 + (uint128_t)SECP256K1_N_C_1 * p4; + r->d[1] = c & 0xFFFFFFFFFFFFFFFFULL; c >>= 64; + c += p2 + (uint128_t)p4; + r->d[2] = c & 0xFFFFFFFFFFFFFFFFULL; c >>= 64; + c += p3; + r->d[3] = c & 0xFFFFFFFFFFFFFFFFULL; c >>= 64; +#endif + + /* Final reduction of r. */ + secp256k1_scalar_reduce(r, c + secp256k1_scalar_check_overflow(r)); +} + +static void secp256k1_scalar_mul_512(uint64_t l[8], const secp256k1_scalar_t *a, const secp256k1_scalar_t *b) { +#ifdef USE_ASM_X86_64 + const uint64_t *pb = b->d; + __asm__ __volatile__( + /* Preload */ + "movq 0(%%rdi), %%r15\n" + "movq 8(%%rdi), %%rbx\n" + "movq 16(%%rdi), %%rcx\n" + "movq 0(%%rdx), %%r11\n" + "movq 8(%%rdx), %%r12\n" + "movq 16(%%rdx), %%r13\n" + "movq 24(%%rdx), %%r14\n" + /* (rax,rdx) = a0 * b0 */ + "movq %%r15, %%rax\n" + "mulq %%r11\n" + /* Extract l0 */ + "movq %%rax, 0(%%rsi)\n" + /* (r8,r9,r10) = (rdx) */ + "movq %%rdx, %%r8\n" + "xorq %%r9, %%r9\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += a0 * b1 */ + "movq %%r15, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += a1 * b0 */ + "movq %%rbx, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* Extract l1 */ + "movq %%r8, 8(%%rsi)\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += a0 * b2 */ + "movq %%r15, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += a1 * b1 */ + "movq %%rbx, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += a2 * b0 */ + "movq %%rcx, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* Extract l2 */ + "movq %%r9, 16(%%rsi)\n" + "xorq %%r9, %%r9\n" + /* (r10,r8,r9) += a0 * b3 */ + "movq %%r15, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* Preload a3 */ + "movq 24(%%rdi), %%r15\n" + /* (r10,r8,r9) += a1 * b2 */ + "movq %%rbx, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += a2 * b1 */ + "movq %%rcx, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += a3 * b0 */ + "movq %%r15, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* Extract l3 */ + "movq %%r10, 24(%%rsi)\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += a1 * b3 */ + "movq %%rbx, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += a2 * b2 */ + "movq %%rcx, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += a3 * b1 */ + "movq %%r15, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* Extract l4 */ + "movq %%r8, 32(%%rsi)\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += a2 * b3 */ + "movq %%rcx, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += a3 * b2 */ + "movq %%r15, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* Extract l5 */ + "movq %%r9, 40(%%rsi)\n" + /* (r10,r8) += a3 * b3 */ + "movq %%r15, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + /* Extract l6 */ + "movq %%r10, 48(%%rsi)\n" + /* Extract l7 */ + "movq %%r8, 56(%%rsi)\n" + : "+d"(pb) + : "S"(l), "D"(a->d) + : "rax", "rbx", "rcx", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "cc", "memory"); +#else + /* 160 bit accumulator. */ + uint64_t c0 = 0, c1 = 0; + uint32_t c2 = 0; + + /* l[0..7] = a[0..3] * b[0..3]. */ + muladd_fast(a->d[0], b->d[0]); + extract_fast(l[0]); + muladd(a->d[0], b->d[1]); + muladd(a->d[1], b->d[0]); + extract(l[1]); + muladd(a->d[0], b->d[2]); + muladd(a->d[1], b->d[1]); + muladd(a->d[2], b->d[0]); + extract(l[2]); + muladd(a->d[0], b->d[3]); + muladd(a->d[1], b->d[2]); + muladd(a->d[2], b->d[1]); + muladd(a->d[3], b->d[0]); + extract(l[3]); + muladd(a->d[1], b->d[3]); + muladd(a->d[2], b->d[2]); + muladd(a->d[3], b->d[1]); + extract(l[4]); + muladd(a->d[2], b->d[3]); + muladd(a->d[3], b->d[2]); + extract(l[5]); + muladd_fast(a->d[3], b->d[3]); + extract_fast(l[6]); + VERIFY_CHECK(c1 <= 0); + l[7] = c0; +#endif +} + +static void secp256k1_scalar_sqr_512(uint64_t l[8], const secp256k1_scalar_t *a) { +#ifdef USE_ASM_X86_64 + __asm__ __volatile__( + /* Preload */ + "movq 0(%%rdi), %%r11\n" + "movq 8(%%rdi), %%r12\n" + "movq 16(%%rdi), %%r13\n" + "movq 24(%%rdi), %%r14\n" + /* (rax,rdx) = a0 * a0 */ + "movq %%r11, %%rax\n" + "mulq %%r11\n" + /* Extract l0 */ + "movq %%rax, 0(%%rsi)\n" + /* (r8,r9,r10) = (rdx,0) */ + "movq %%rdx, %%r8\n" + "xorq %%r9, %%r9\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += 2 * a0 * a1 */ + "movq %%r11, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* Extract l1 */ + "movq %%r8, 8(%%rsi)\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += 2 * a0 * a2 */ + "movq %%r11, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += a1 * a1 */ + "movq %%r12, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* Extract l2 */ + "movq %%r9, 16(%%rsi)\n" + "xorq %%r9, %%r9\n" + /* (r10,r8,r9) += 2 * a0 * a3 */ + "movq %%r11, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += 2 * a1 * a2 */ + "movq %%r12, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* Extract l3 */ + "movq %%r10, 24(%%rsi)\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += 2 * a1 * a3 */ + "movq %%r12, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += a2 * a2 */ + "movq %%r13, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* Extract l4 */ + "movq %%r8, 32(%%rsi)\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += 2 * a2 * a3 */ + "movq %%r13, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* Extract l5 */ + "movq %%r9, 40(%%rsi)\n" + /* (r10,r8) += a3 * a3 */ + "movq %%r14, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + /* Extract l6 */ + "movq %%r10, 48(%%rsi)\n" + /* Extract l7 */ + "movq %%r8, 56(%%rsi)\n" + : + : "S"(l), "D"(a->d) + : "rax", "rdx", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "cc", "memory"); +#else + /* 160 bit accumulator. */ + uint64_t c0 = 0, c1 = 0; + uint32_t c2 = 0; + + /* l[0..7] = a[0..3] * b[0..3]. */ + muladd_fast(a->d[0], a->d[0]); + extract_fast(l[0]); + muladd2(a->d[0], a->d[1]); + extract(l[1]); + muladd2(a->d[0], a->d[2]); + muladd(a->d[1], a->d[1]); + extract(l[2]); + muladd2(a->d[0], a->d[3]); + muladd2(a->d[1], a->d[2]); + extract(l[3]); + muladd2(a->d[1], a->d[3]); + muladd(a->d[2], a->d[2]); + extract(l[4]); + muladd2(a->d[2], a->d[3]); + extract(l[5]); + muladd_fast(a->d[3], a->d[3]); + extract_fast(l[6]); + VERIFY_CHECK(c1 == 0); + l[7] = c0; +#endif +} + +#undef sumadd +#undef sumadd_fast +#undef muladd +#undef muladd_fast +#undef muladd2 +#undef extract +#undef extract_fast + +static void secp256k1_scalar_mul(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b) { + uint64_t l[8]; + secp256k1_scalar_mul_512(l, a, b); + secp256k1_scalar_reduce_512(r, l); +} + +static int secp256k1_scalar_shr_int(secp256k1_scalar_t *r, int n) { + int ret; + VERIFY_CHECK(n > 0); + VERIFY_CHECK(n < 16); + ret = r->d[0] & ((1 << n) - 1); + r->d[0] = (r->d[0] >> n) + (r->d[1] << (64 - n)); + r->d[1] = (r->d[1] >> n) + (r->d[2] << (64 - n)); + r->d[2] = (r->d[2] >> n) + (r->d[3] << (64 - n)); + r->d[3] = (r->d[3] >> n); + return ret; +} + +static void secp256k1_scalar_sqr(secp256k1_scalar_t *r, const secp256k1_scalar_t *a) { + uint64_t l[8]; + secp256k1_scalar_sqr_512(l, a); + secp256k1_scalar_reduce_512(r, l); +} + +static void secp256k1_scalar_split_128(secp256k1_scalar_t *r1, secp256k1_scalar_t *r2, const secp256k1_scalar_t *a) { + r1->d[0] = a->d[0]; + r1->d[1] = a->d[1]; + r1->d[2] = 0; + r1->d[3] = 0; + r2->d[0] = a->d[2]; + r2->d[1] = a->d[3]; + r2->d[2] = 0; + r2->d[3] = 0; +} + +SECP256K1_INLINE static int secp256k1_scalar_eq(const secp256k1_scalar_t *a, const secp256k1_scalar_t *b) { + return ((a->d[0] ^ b->d[0]) | (a->d[1] ^ b->d[1]) | (a->d[2] ^ b->d[2]) | (a->d[3] ^ b->d[3])) == 0; +} + +SECP256K1_INLINE static void secp256k1_scalar_mul_shift_var(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b, unsigned int shift) { + uint64_t l[8]; + unsigned int shiftlimbs; + unsigned int shiftlow; + unsigned int shifthigh; + VERIFY_CHECK(shift >= 256); + secp256k1_scalar_mul_512(l, a, b); + shiftlimbs = shift >> 6; + shiftlow = shift & 0x3F; + shifthigh = 64 - shiftlow; + r->d[0] = shift < 512 ? (l[0 + shiftlimbs] >> shiftlow | (shift < 448 && shiftlow ? (l[1 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[1] = shift < 448 ? (l[1 + shiftlimbs] >> shiftlow | (shift < 384 && shiftlow ? (l[2 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[2] = shift < 384 ? (l[2 + shiftlimbs] >> shiftlow | (shift < 320 && shiftlow ? (l[3 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[3] = shift < 320 ? (l[3 + shiftlimbs] >> shiftlow) : 0; + secp256k1_scalar_cadd_bit(r, 0, (l[(shift - 1) >> 6] >> ((shift - 1) & 0x3f)) & 1); +} + +#endif diff --git a/crypto777/secp256k1/scalar_8x32.h b/crypto777/secp256k1/scalar_8x32.h new file mode 100644 index 000000000..f17017e24 --- /dev/null +++ b/crypto777/secp256k1/scalar_8x32.h @@ -0,0 +1,19 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_SCALAR_REPR_ +#define _SECP256K1_SCALAR_REPR_ + +#include + +/** A scalar modulo the group order of the secp256k1 curve. */ +typedef struct { + uint32_t d[8]; +} secp256k1_scalar_t; + +#define SECP256K1_SCALAR_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{(d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7)}} + +#endif diff --git a/crypto777/secp256k1/scalar_8x32_impl.h b/crypto777/secp256k1/scalar_8x32_impl.h new file mode 100644 index 000000000..54923eb45 --- /dev/null +++ b/crypto777/secp256k1/scalar_8x32_impl.h @@ -0,0 +1,721 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_SCALAR_REPR_IMPL_H_ +#define _SECP256K1_SCALAR_REPR_IMPL_H_ + +/* Limbs of the secp256k1 order. */ +#define SECP256K1_N_0 ((uint32_t)0xD0364141UL) +#define SECP256K1_N_1 ((uint32_t)0xBFD25E8CUL) +#define SECP256K1_N_2 ((uint32_t)0xAF48A03BUL) +#define SECP256K1_N_3 ((uint32_t)0xBAAEDCE6UL) +#define SECP256K1_N_4 ((uint32_t)0xFFFFFFFEUL) +#define SECP256K1_N_5 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_6 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_7 ((uint32_t)0xFFFFFFFFUL) + +/* Limbs of 2^256 minus the secp256k1 order. */ +#define SECP256K1_N_C_0 (~SECP256K1_N_0 + 1) +#define SECP256K1_N_C_1 (~SECP256K1_N_1) +#define SECP256K1_N_C_2 (~SECP256K1_N_2) +#define SECP256K1_N_C_3 (~SECP256K1_N_3) +#define SECP256K1_N_C_4 (1) + +/* Limbs of half the secp256k1 order. */ +#define SECP256K1_N_H_0 ((uint32_t)0x681B20A0UL) +#define SECP256K1_N_H_1 ((uint32_t)0xDFE92F46UL) +#define SECP256K1_N_H_2 ((uint32_t)0x57A4501DUL) +#define SECP256K1_N_H_3 ((uint32_t)0x5D576E73UL) +#define SECP256K1_N_H_4 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_H_5 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_H_6 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_H_7 ((uint32_t)0x7FFFFFFFUL) + +SECP256K1_INLINE static void secp256k1_scalar_clear(secp256k1_scalar_t *r) { + r->d[0] = 0; + r->d[1] = 0; + r->d[2] = 0; + r->d[3] = 0; + r->d[4] = 0; + r->d[5] = 0; + r->d[6] = 0; + r->d[7] = 0; +} + +SECP256K1_INLINE static void secp256k1_scalar_set_int(secp256k1_scalar_t *r, unsigned int v) { + r->d[0] = v; + r->d[1] = 0; + r->d[2] = 0; + r->d[3] = 0; + r->d[4] = 0; + r->d[5] = 0; + r->d[6] = 0; + r->d[7] = 0; +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits(const secp256k1_scalar_t *a, unsigned int offset, unsigned int count) { + VERIFY_CHECK((offset + count - 1) >> 5 == offset >> 5); + return (a->d[offset >> 5] >> (offset & 0x1F)) & ((1 << count) - 1); +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits_var(const secp256k1_scalar_t *a, unsigned int offset, unsigned int count) { + VERIFY_CHECK(count < 32); + VERIFY_CHECK(offset + count <= 256); + if ((offset + count - 1) >> 5 == offset >> 5) { + return secp256k1_scalar_get_bits(a, offset, count); + } else { + VERIFY_CHECK((offset >> 5) + 1 < 8); + return ((a->d[offset >> 5] >> (offset & 0x1F)) | (a->d[(offset >> 5) + 1] << (32 - (offset & 0x1F)))) & ((((uint32_t)1) << count) - 1); + } +} + +SECP256K1_INLINE static int secp256k1_scalar_check_overflow(const secp256k1_scalar_t *a) { + int yes = 0; + int no = 0; + no |= (a->d[7] < SECP256K1_N_7); /* No need for a > check. */ + no |= (a->d[6] < SECP256K1_N_6); /* No need for a > check. */ + no |= (a->d[5] < SECP256K1_N_5); /* No need for a > check. */ + no |= (a->d[4] < SECP256K1_N_4); + yes |= (a->d[4] > SECP256K1_N_4) & ~no; + no |= (a->d[3] < SECP256K1_N_3) & ~yes; + yes |= (a->d[3] > SECP256K1_N_3) & ~no; + no |= (a->d[2] < SECP256K1_N_2) & ~yes; + yes |= (a->d[2] > SECP256K1_N_2) & ~no; + no |= (a->d[1] < SECP256K1_N_1) & ~yes; + yes |= (a->d[1] > SECP256K1_N_1) & ~no; + yes |= (a->d[0] >= SECP256K1_N_0) & ~no; + return yes; +} + +SECP256K1_INLINE static int secp256k1_scalar_reduce(secp256k1_scalar_t *r, uint32_t overflow) { + uint64_t t; + VERIFY_CHECK(overflow <= 1); + t = (uint64_t)r->d[0] + overflow * SECP256K1_N_C_0; + r->d[0] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[1] + overflow * SECP256K1_N_C_1; + r->d[1] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[2] + overflow * SECP256K1_N_C_2; + r->d[2] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[3] + overflow * SECP256K1_N_C_3; + r->d[3] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[4] + overflow * SECP256K1_N_C_4; + r->d[4] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[5]; + r->d[5] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[6]; + r->d[6] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[7]; + r->d[7] = t & 0xFFFFFFFFUL; + return overflow; +} + +static int secp256k1_scalar_add(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b) { + int overflow; + uint64_t t = (uint64_t)a->d[0] + b->d[0]; + r->d[0] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[1] + b->d[1]; + r->d[1] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[2] + b->d[2]; + r->d[2] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[3] + b->d[3]; + r->d[3] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[4] + b->d[4]; + r->d[4] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[5] + b->d[5]; + r->d[5] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[6] + b->d[6]; + r->d[6] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[7] + b->d[7]; + r->d[7] = t & 0xFFFFFFFFULL; t >>= 32; + overflow = t + secp256k1_scalar_check_overflow(r); + VERIFY_CHECK(overflow == 0 || overflow == 1); + secp256k1_scalar_reduce(r, overflow); + return overflow; +} + +static void secp256k1_scalar_cadd_bit(secp256k1_scalar_t *r, unsigned int bit, int flag) { + uint64_t t; + VERIFY_CHECK(bit < 256); + bit += ((uint32_t) flag - 1) & 0x100; /* forcing (bit >> 5) > 7 makes this a noop */ + t = (uint64_t)r->d[0] + (((uint32_t)((bit >> 5) == 0)) << (bit & 0x1F)); + r->d[0] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[1] + (((uint32_t)((bit >> 5) == 1)) << (bit & 0x1F)); + r->d[1] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[2] + (((uint32_t)((bit >> 5) == 2)) << (bit & 0x1F)); + r->d[2] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[3] + (((uint32_t)((bit >> 5) == 3)) << (bit & 0x1F)); + r->d[3] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[4] + (((uint32_t)((bit >> 5) == 4)) << (bit & 0x1F)); + r->d[4] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[5] + (((uint32_t)((bit >> 5) == 5)) << (bit & 0x1F)); + r->d[5] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[6] + (((uint32_t)((bit >> 5) == 6)) << (bit & 0x1F)); + r->d[6] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[7] + (((uint32_t)((bit >> 5) == 7)) << (bit & 0x1F)); + r->d[7] = t & 0xFFFFFFFFULL; +#ifdef VERIFY + VERIFY_CHECK((t >> 32) == 0); + VERIFY_CHECK(secp256k1_scalar_check_overflow(r) == 0); +#endif +} + +static void secp256k1_scalar_set_b32(secp256k1_scalar_t *r, const unsigned char *b32, int *overflow) { + int over; + r->d[0] = (uint32_t)b32[31] | (uint32_t)b32[30] << 8 | (uint32_t)b32[29] << 16 | (uint32_t)b32[28] << 24; + r->d[1] = (uint32_t)b32[27] | (uint32_t)b32[26] << 8 | (uint32_t)b32[25] << 16 | (uint32_t)b32[24] << 24; + r->d[2] = (uint32_t)b32[23] | (uint32_t)b32[22] << 8 | (uint32_t)b32[21] << 16 | (uint32_t)b32[20] << 24; + r->d[3] = (uint32_t)b32[19] | (uint32_t)b32[18] << 8 | (uint32_t)b32[17] << 16 | (uint32_t)b32[16] << 24; + r->d[4] = (uint32_t)b32[15] | (uint32_t)b32[14] << 8 | (uint32_t)b32[13] << 16 | (uint32_t)b32[12] << 24; + r->d[5] = (uint32_t)b32[11] | (uint32_t)b32[10] << 8 | (uint32_t)b32[9] << 16 | (uint32_t)b32[8] << 24; + r->d[6] = (uint32_t)b32[7] | (uint32_t)b32[6] << 8 | (uint32_t)b32[5] << 16 | (uint32_t)b32[4] << 24; + r->d[7] = (uint32_t)b32[3] | (uint32_t)b32[2] << 8 | (uint32_t)b32[1] << 16 | (uint32_t)b32[0] << 24; + over = secp256k1_scalar_reduce(r, secp256k1_scalar_check_overflow(r)); + if (overflow) { + *overflow = over; + } +} + +static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar_t* a) { + bin[0] = a->d[7] >> 24; bin[1] = a->d[7] >> 16; bin[2] = a->d[7] >> 8; bin[3] = a->d[7]; + bin[4] = a->d[6] >> 24; bin[5] = a->d[6] >> 16; bin[6] = a->d[6] >> 8; bin[7] = a->d[6]; + bin[8] = a->d[5] >> 24; bin[9] = a->d[5] >> 16; bin[10] = a->d[5] >> 8; bin[11] = a->d[5]; + bin[12] = a->d[4] >> 24; bin[13] = a->d[4] >> 16; bin[14] = a->d[4] >> 8; bin[15] = a->d[4]; + bin[16] = a->d[3] >> 24; bin[17] = a->d[3] >> 16; bin[18] = a->d[3] >> 8; bin[19] = a->d[3]; + bin[20] = a->d[2] >> 24; bin[21] = a->d[2] >> 16; bin[22] = a->d[2] >> 8; bin[23] = a->d[2]; + bin[24] = a->d[1] >> 24; bin[25] = a->d[1] >> 16; bin[26] = a->d[1] >> 8; bin[27] = a->d[1]; + bin[28] = a->d[0] >> 24; bin[29] = a->d[0] >> 16; bin[30] = a->d[0] >> 8; bin[31] = a->d[0]; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_zero(const secp256k1_scalar_t *a) { + return (a->d[0] | a->d[1] | a->d[2] | a->d[3] | a->d[4] | a->d[5] | a->d[6] | a->d[7]) == 0; +} + +static void secp256k1_scalar_negate(secp256k1_scalar_t *r, const secp256k1_scalar_t *a) { + uint32_t nonzero = 0xFFFFFFFFUL * (secp256k1_scalar_is_zero(a) == 0); + uint64_t t = (uint64_t)(~a->d[0]) + SECP256K1_N_0 + 1; + r->d[0] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[1]) + SECP256K1_N_1; + r->d[1] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[2]) + SECP256K1_N_2; + r->d[2] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[3]) + SECP256K1_N_3; + r->d[3] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[4]) + SECP256K1_N_4; + r->d[4] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[5]) + SECP256K1_N_5; + r->d[5] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[6]) + SECP256K1_N_6; + r->d[6] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[7]) + SECP256K1_N_7; + r->d[7] = t & nonzero; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_one(const secp256k1_scalar_t *a) { + return ((a->d[0] ^ 1) | a->d[1] | a->d[2] | a->d[3] | a->d[4] | a->d[5] | a->d[6] | a->d[7]) == 0; +} + +static int secp256k1_scalar_is_high(const secp256k1_scalar_t *a) { + int yes = 0; + int no = 0; + no |= (a->d[7] < SECP256K1_N_H_7); + yes |= (a->d[7] > SECP256K1_N_H_7) & ~no; + no |= (a->d[6] < SECP256K1_N_H_6) & ~yes; /* No need for a > check. */ + no |= (a->d[5] < SECP256K1_N_H_5) & ~yes; /* No need for a > check. */ + no |= (a->d[4] < SECP256K1_N_H_4) & ~yes; /* No need for a > check. */ + no |= (a->d[3] < SECP256K1_N_H_3) & ~yes; + yes |= (a->d[3] > SECP256K1_N_H_3) & ~no; + no |= (a->d[2] < SECP256K1_N_H_2) & ~yes; + yes |= (a->d[2] > SECP256K1_N_H_2) & ~no; + no |= (a->d[1] < SECP256K1_N_H_1) & ~yes; + yes |= (a->d[1] > SECP256K1_N_H_1) & ~no; + yes |= (a->d[0] > SECP256K1_N_H_0) & ~no; + return yes; +} + +static int secp256k1_scalar_cond_negate(secp256k1_scalar_t *r, int flag) { + /* If we are flag = 0, mask = 00...00 and this is a no-op; + * if we are flag = 1, mask = 11...11 and this is identical to secp256k1_scalar_negate */ + uint32_t mask = !flag - 1; + uint32_t nonzero = 0xFFFFFFFFUL * (secp256k1_scalar_is_zero(r) == 0); + uint64_t t = (uint64_t)(r->d[0] ^ mask) + ((SECP256K1_N_0 + 1) & mask); + r->d[0] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[1] ^ mask) + (SECP256K1_N_1 & mask); + r->d[1] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[2] ^ mask) + (SECP256K1_N_2 & mask); + r->d[2] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[3] ^ mask) + (SECP256K1_N_3 & mask); + r->d[3] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[4] ^ mask) + (SECP256K1_N_4 & mask); + r->d[4] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[5] ^ mask) + (SECP256K1_N_5 & mask); + r->d[5] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[6] ^ mask) + (SECP256K1_N_6 & mask); + r->d[6] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[7] ^ mask) + (SECP256K1_N_7 & mask); + r->d[7] = t & nonzero; + return 2 * (mask == 0) - 1; +} + + +/* Inspired by the macros in OpenSSL's crypto/bn/asm/x86_64-gcc.c. */ + +/** Add a*b to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define muladd(a,b) { \ + uint32_t tl, th; \ + { \ + uint64_t t = (uint64_t)a * b; \ + th = t >> 32; /* at most 0xFFFFFFFE */ \ + tl = t; \ + } \ + c0 += tl; /* overflow is handled on the next line */ \ + th += (c0 < tl) ? 1 : 0; /* at most 0xFFFFFFFF */ \ + c1 += th; /* overflow is handled on the next line */ \ + c2 += (c1 < th) ? 1 : 0; /* never overflows by contract (verified in the next line) */ \ + VERIFY_CHECK((c1 >= th) || (c2 != 0)); \ +} + +/** Add a*b to the number defined by (c0,c1). c1 must never overflow. */ +#define muladd_fast(a,b) { \ + uint32_t tl, th; \ + { \ + uint64_t t = (uint64_t)a * b; \ + th = t >> 32; /* at most 0xFFFFFFFE */ \ + tl = t; \ + } \ + c0 += tl; /* overflow is handled on the next line */ \ + th += (c0 < tl) ? 1 : 0; /* at most 0xFFFFFFFF */ \ + c1 += th; /* never overflows by contract (verified in the next line) */ \ + VERIFY_CHECK(c1 >= th); \ +} + +/** Add 2*a*b to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define muladd2(a,b) { \ + uint32_t tl, th, th2, tl2; \ + { \ + uint64_t t = (uint64_t)a * b; \ + th = t >> 32; /* at most 0xFFFFFFFE */ \ + tl = t; \ + } \ + th2 = th + th; /* at most 0xFFFFFFFE (in case th was 0x7FFFFFFF) */ \ + c2 += (th2 < th) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((th2 >= th) || (c2 != 0)); \ + tl2 = tl + tl; /* at most 0xFFFFFFFE (in case the lowest 63 bits of tl were 0x7FFFFFFF) */ \ + th2 += (tl2 < tl) ? 1 : 0; /* at most 0xFFFFFFFF */ \ + c0 += tl2; /* overflow is handled on the next line */ \ + th2 += (c0 < tl2) ? 1 : 0; /* second overflow is handled on the next line */ \ + c2 += (c0 < tl2) & (th2 == 0); /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c0 >= tl2) || (th2 != 0) || (c2 != 0)); \ + c1 += th2; /* overflow is handled on the next line */ \ + c2 += (c1 < th2) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c1 >= th2) || (c2 != 0)); \ +} + +/** Add a to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define sumadd(a) { \ + unsigned int over; \ + c0 += (a); /* overflow is handled on the next line */ \ + over = (c0 < (a)) ? 1 : 0; \ + c1 += over; /* overflow is handled on the next line */ \ + c2 += (c1 < over) ? 1 : 0; /* never overflows by contract */ \ +} + +/** Add a to the number defined by (c0,c1). c1 must never overflow, c2 must be zero. */ +#define sumadd_fast(a) { \ + c0 += (a); /* overflow is handled on the next line */ \ + c1 += (c0 < (a)) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c1 != 0) | (c0 >= (a))); \ + VERIFY_CHECK(c2 == 0); \ +} + +/** Extract the lowest 32 bits of (c0,c1,c2) into n, and left shift the number 32 bits. */ +#define extract(n) { \ + (n) = c0; \ + c0 = c1; \ + c1 = c2; \ + c2 = 0; \ +} + +/** Extract the lowest 32 bits of (c0,c1,c2) into n, and left shift the number 32 bits. c2 is required to be zero. */ +#define extract_fast(n) { \ + (n) = c0; \ + c0 = c1; \ + c1 = 0; \ + VERIFY_CHECK(c2 == 0); \ +} + +static void secp256k1_scalar_reduce_512(secp256k1_scalar_t *r, const uint32_t *l) { + uint64_t c; + uint32_t n0 = l[8], n1 = l[9], n2 = l[10], n3 = l[11], n4 = l[12], n5 = l[13], n6 = l[14], n7 = l[15]; + uint32_t m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12; + uint32_t p0, p1, p2, p3, p4, p5, p6, p7, p8; + + /* 96 bit accumulator. */ + uint32_t c0, c1, c2; + + /* Reduce 512 bits into 385. */ + /* m[0..12] = l[0..7] + n[0..7] * SECP256K1_N_C. */ + c0 = l[0]; c1 = 0; c2 = 0; + muladd_fast(n0, SECP256K1_N_C_0); + extract_fast(m0); + sumadd_fast(l[1]); + muladd(n1, SECP256K1_N_C_0); + muladd(n0, SECP256K1_N_C_1); + extract(m1); + sumadd(l[2]); + muladd(n2, SECP256K1_N_C_0); + muladd(n1, SECP256K1_N_C_1); + muladd(n0, SECP256K1_N_C_2); + extract(m2); + sumadd(l[3]); + muladd(n3, SECP256K1_N_C_0); + muladd(n2, SECP256K1_N_C_1); + muladd(n1, SECP256K1_N_C_2); + muladd(n0, SECP256K1_N_C_3); + extract(m3); + sumadd(l[4]); + muladd(n4, SECP256K1_N_C_0); + muladd(n3, SECP256K1_N_C_1); + muladd(n2, SECP256K1_N_C_2); + muladd(n1, SECP256K1_N_C_3); + sumadd(n0); + extract(m4); + sumadd(l[5]); + muladd(n5, SECP256K1_N_C_0); + muladd(n4, SECP256K1_N_C_1); + muladd(n3, SECP256K1_N_C_2); + muladd(n2, SECP256K1_N_C_3); + sumadd(n1); + extract(m5); + sumadd(l[6]); + muladd(n6, SECP256K1_N_C_0); + muladd(n5, SECP256K1_N_C_1); + muladd(n4, SECP256K1_N_C_2); + muladd(n3, SECP256K1_N_C_3); + sumadd(n2); + extract(m6); + sumadd(l[7]); + muladd(n7, SECP256K1_N_C_0); + muladd(n6, SECP256K1_N_C_1); + muladd(n5, SECP256K1_N_C_2); + muladd(n4, SECP256K1_N_C_3); + sumadd(n3); + extract(m7); + muladd(n7, SECP256K1_N_C_1); + muladd(n6, SECP256K1_N_C_2); + muladd(n5, SECP256K1_N_C_3); + sumadd(n4); + extract(m8); + muladd(n7, SECP256K1_N_C_2); + muladd(n6, SECP256K1_N_C_3); + sumadd(n5); + extract(m9); + muladd(n7, SECP256K1_N_C_3); + sumadd(n6); + extract(m10); + sumadd_fast(n7); + extract_fast(m11); + VERIFY_CHECK(c0 <= 1); + m12 = c0; + + /* Reduce 385 bits into 258. */ + /* p[0..8] = m[0..7] + m[8..12] * SECP256K1_N_C. */ + c0 = m0; c1 = 0; c2 = 0; + muladd_fast(m8, SECP256K1_N_C_0); + extract_fast(p0); + sumadd_fast(m1); + muladd(m9, SECP256K1_N_C_0); + muladd(m8, SECP256K1_N_C_1); + extract(p1); + sumadd(m2); + muladd(m10, SECP256K1_N_C_0); + muladd(m9, SECP256K1_N_C_1); + muladd(m8, SECP256K1_N_C_2); + extract(p2); + sumadd(m3); + muladd(m11, SECP256K1_N_C_0); + muladd(m10, SECP256K1_N_C_1); + muladd(m9, SECP256K1_N_C_2); + muladd(m8, SECP256K1_N_C_3); + extract(p3); + sumadd(m4); + muladd(m12, SECP256K1_N_C_0); + muladd(m11, SECP256K1_N_C_1); + muladd(m10, SECP256K1_N_C_2); + muladd(m9, SECP256K1_N_C_3); + sumadd(m8); + extract(p4); + sumadd(m5); + muladd(m12, SECP256K1_N_C_1); + muladd(m11, SECP256K1_N_C_2); + muladd(m10, SECP256K1_N_C_3); + sumadd(m9); + extract(p5); + sumadd(m6); + muladd(m12, SECP256K1_N_C_2); + muladd(m11, SECP256K1_N_C_3); + sumadd(m10); + extract(p6); + sumadd_fast(m7); + muladd_fast(m12, SECP256K1_N_C_3); + sumadd_fast(m11); + extract_fast(p7); + p8 = c0 + m12; + VERIFY_CHECK(p8 <= 2); + + /* Reduce 258 bits into 256. */ + /* r[0..7] = p[0..7] + p[8] * SECP256K1_N_C. */ + c = p0 + (uint64_t)SECP256K1_N_C_0 * p8; + r->d[0] = c & 0xFFFFFFFFUL; c >>= 32; + c += p1 + (uint64_t)SECP256K1_N_C_1 * p8; + r->d[1] = c & 0xFFFFFFFFUL; c >>= 32; + c += p2 + (uint64_t)SECP256K1_N_C_2 * p8; + r->d[2] = c & 0xFFFFFFFFUL; c >>= 32; + c += p3 + (uint64_t)SECP256K1_N_C_3 * p8; + r->d[3] = c & 0xFFFFFFFFUL; c >>= 32; + c += p4 + (uint64_t)p8; + r->d[4] = c & 0xFFFFFFFFUL; c >>= 32; + c += p5; + r->d[5] = c & 0xFFFFFFFFUL; c >>= 32; + c += p6; + r->d[6] = c & 0xFFFFFFFFUL; c >>= 32; + c += p7; + r->d[7] = c & 0xFFFFFFFFUL; c >>= 32; + + /* Final reduction of r. */ + secp256k1_scalar_reduce(r, c + secp256k1_scalar_check_overflow(r)); +} + +static void secp256k1_scalar_mul_512(uint32_t *l, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b) { + /* 96 bit accumulator. */ + uint32_t c0 = 0, c1 = 0, c2 = 0; + + /* l[0..15] = a[0..7] * b[0..7]. */ + muladd_fast(a->d[0], b->d[0]); + extract_fast(l[0]); + muladd(a->d[0], b->d[1]); + muladd(a->d[1], b->d[0]); + extract(l[1]); + muladd(a->d[0], b->d[2]); + muladd(a->d[1], b->d[1]); + muladd(a->d[2], b->d[0]); + extract(l[2]); + muladd(a->d[0], b->d[3]); + muladd(a->d[1], b->d[2]); + muladd(a->d[2], b->d[1]); + muladd(a->d[3], b->d[0]); + extract(l[3]); + muladd(a->d[0], b->d[4]); + muladd(a->d[1], b->d[3]); + muladd(a->d[2], b->d[2]); + muladd(a->d[3], b->d[1]); + muladd(a->d[4], b->d[0]); + extract(l[4]); + muladd(a->d[0], b->d[5]); + muladd(a->d[1], b->d[4]); + muladd(a->d[2], b->d[3]); + muladd(a->d[3], b->d[2]); + muladd(a->d[4], b->d[1]); + muladd(a->d[5], b->d[0]); + extract(l[5]); + muladd(a->d[0], b->d[6]); + muladd(a->d[1], b->d[5]); + muladd(a->d[2], b->d[4]); + muladd(a->d[3], b->d[3]); + muladd(a->d[4], b->d[2]); + muladd(a->d[5], b->d[1]); + muladd(a->d[6], b->d[0]); + extract(l[6]); + muladd(a->d[0], b->d[7]); + muladd(a->d[1], b->d[6]); + muladd(a->d[2], b->d[5]); + muladd(a->d[3], b->d[4]); + muladd(a->d[4], b->d[3]); + muladd(a->d[5], b->d[2]); + muladd(a->d[6], b->d[1]); + muladd(a->d[7], b->d[0]); + extract(l[7]); + muladd(a->d[1], b->d[7]); + muladd(a->d[2], b->d[6]); + muladd(a->d[3], b->d[5]); + muladd(a->d[4], b->d[4]); + muladd(a->d[5], b->d[3]); + muladd(a->d[6], b->d[2]); + muladd(a->d[7], b->d[1]); + extract(l[8]); + muladd(a->d[2], b->d[7]); + muladd(a->d[3], b->d[6]); + muladd(a->d[4], b->d[5]); + muladd(a->d[5], b->d[4]); + muladd(a->d[6], b->d[3]); + muladd(a->d[7], b->d[2]); + extract(l[9]); + muladd(a->d[3], b->d[7]); + muladd(a->d[4], b->d[6]); + muladd(a->d[5], b->d[5]); + muladd(a->d[6], b->d[4]); + muladd(a->d[7], b->d[3]); + extract(l[10]); + muladd(a->d[4], b->d[7]); + muladd(a->d[5], b->d[6]); + muladd(a->d[6], b->d[5]); + muladd(a->d[7], b->d[4]); + extract(l[11]); + muladd(a->d[5], b->d[7]); + muladd(a->d[6], b->d[6]); + muladd(a->d[7], b->d[5]); + extract(l[12]); + muladd(a->d[6], b->d[7]); + muladd(a->d[7], b->d[6]); + extract(l[13]); + muladd_fast(a->d[7], b->d[7]); + extract_fast(l[14]); + VERIFY_CHECK(c1 == 0); + l[15] = c0; +} + +static void secp256k1_scalar_sqr_512(uint32_t *l, const secp256k1_scalar_t *a) { + /* 96 bit accumulator. */ + uint32_t c0 = 0, c1 = 0, c2 = 0; + + /* l[0..15] = a[0..7]^2. */ + muladd_fast(a->d[0], a->d[0]); + extract_fast(l[0]); + muladd2(a->d[0], a->d[1]); + extract(l[1]); + muladd2(a->d[0], a->d[2]); + muladd(a->d[1], a->d[1]); + extract(l[2]); + muladd2(a->d[0], a->d[3]); + muladd2(a->d[1], a->d[2]); + extract(l[3]); + muladd2(a->d[0], a->d[4]); + muladd2(a->d[1], a->d[3]); + muladd(a->d[2], a->d[2]); + extract(l[4]); + muladd2(a->d[0], a->d[5]); + muladd2(a->d[1], a->d[4]); + muladd2(a->d[2], a->d[3]); + extract(l[5]); + muladd2(a->d[0], a->d[6]); + muladd2(a->d[1], a->d[5]); + muladd2(a->d[2], a->d[4]); + muladd(a->d[3], a->d[3]); + extract(l[6]); + muladd2(a->d[0], a->d[7]); + muladd2(a->d[1], a->d[6]); + muladd2(a->d[2], a->d[5]); + muladd2(a->d[3], a->d[4]); + extract(l[7]); + muladd2(a->d[1], a->d[7]); + muladd2(a->d[2], a->d[6]); + muladd2(a->d[3], a->d[5]); + muladd(a->d[4], a->d[4]); + extract(l[8]); + muladd2(a->d[2], a->d[7]); + muladd2(a->d[3], a->d[6]); + muladd2(a->d[4], a->d[5]); + extract(l[9]); + muladd2(a->d[3], a->d[7]); + muladd2(a->d[4], a->d[6]); + muladd(a->d[5], a->d[5]); + extract(l[10]); + muladd2(a->d[4], a->d[7]); + muladd2(a->d[5], a->d[6]); + extract(l[11]); + muladd2(a->d[5], a->d[7]); + muladd(a->d[6], a->d[6]); + extract(l[12]); + muladd2(a->d[6], a->d[7]); + extract(l[13]); + muladd_fast(a->d[7], a->d[7]); + extract_fast(l[14]); + VERIFY_CHECK(c1 == 0); + l[15] = c0; +} + +#undef sumadd +#undef sumadd_fast +#undef muladd +#undef muladd_fast +#undef muladd2 +#undef extract +#undef extract_fast + +static void secp256k1_scalar_mul(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b) { + uint32_t l[16]; + secp256k1_scalar_mul_512(l, a, b); + secp256k1_scalar_reduce_512(r, l); +} + +static int secp256k1_scalar_shr_int(secp256k1_scalar_t *r, int n) { + int ret; + VERIFY_CHECK(n > 0); + VERIFY_CHECK(n < 16); + ret = r->d[0] & ((1 << n) - 1); + r->d[0] = (r->d[0] >> n) + (r->d[1] << (32 - n)); + r->d[1] = (r->d[1] >> n) + (r->d[2] << (32 - n)); + r->d[2] = (r->d[2] >> n) + (r->d[3] << (32 - n)); + r->d[3] = (r->d[3] >> n) + (r->d[4] << (32 - n)); + r->d[4] = (r->d[4] >> n) + (r->d[5] << (32 - n)); + r->d[5] = (r->d[5] >> n) + (r->d[6] << (32 - n)); + r->d[6] = (r->d[6] >> n) + (r->d[7] << (32 - n)); + r->d[7] = (r->d[7] >> n); + return ret; +} + +static void secp256k1_scalar_sqr(secp256k1_scalar_t *r, const secp256k1_scalar_t *a) { + uint32_t l[16]; + secp256k1_scalar_sqr_512(l, a); + secp256k1_scalar_reduce_512(r, l); +} + +#ifdef USE_ENDOMORPHISM +static void secp256k1_scalar_split_128(secp256k1_scalar_t *r1, secp256k1_scalar_t *r2, const secp256k1_scalar_t *a) { + r1->d[0] = a->d[0]; + r1->d[1] = a->d[1]; + r1->d[2] = a->d[2]; + r1->d[3] = a->d[3]; + r1->d[4] = 0; + r1->d[5] = 0; + r1->d[6] = 0; + r1->d[7] = 0; + r2->d[0] = a->d[4]; + r2->d[1] = a->d[5]; + r2->d[2] = a->d[6]; + r2->d[3] = a->d[7]; + r2->d[4] = 0; + r2->d[5] = 0; + r2->d[6] = 0; + r2->d[7] = 0; +} +#endif + +SECP256K1_INLINE static int secp256k1_scalar_eq(const secp256k1_scalar_t *a, const secp256k1_scalar_t *b) { + return ((a->d[0] ^ b->d[0]) | (a->d[1] ^ b->d[1]) | (a->d[2] ^ b->d[2]) | (a->d[3] ^ b->d[3]) | (a->d[4] ^ b->d[4]) | (a->d[5] ^ b->d[5]) | (a->d[6] ^ b->d[6]) | (a->d[7] ^ b->d[7])) == 0; +} + +SECP256K1_INLINE static void secp256k1_scalar_mul_shift_var(secp256k1_scalar_t *r, const secp256k1_scalar_t *a, const secp256k1_scalar_t *b, unsigned int shift) { + uint32_t l[16]; + unsigned int shiftlimbs; + unsigned int shiftlow; + unsigned int shifthigh; + VERIFY_CHECK(shift >= 256); + secp256k1_scalar_mul_512(l, a, b); + shiftlimbs = shift >> 5; + shiftlow = shift & 0x1F; + shifthigh = 32 - shiftlow; + r->d[0] = shift < 512 ? (l[0 + shiftlimbs] >> shiftlow | (shift < 480 && shiftlow ? (l[1 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[1] = shift < 480 ? (l[1 + shiftlimbs] >> shiftlow | (shift < 448 && shiftlow ? (l[2 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[2] = shift < 448 ? (l[2 + shiftlimbs] >> shiftlow | (shift < 416 && shiftlow ? (l[3 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[3] = shift < 416 ? (l[3 + shiftlimbs] >> shiftlow | (shift < 384 && shiftlow ? (l[4 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[4] = shift < 384 ? (l[4 + shiftlimbs] >> shiftlow | (shift < 352 && shiftlow ? (l[5 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[5] = shift < 352 ? (l[5 + shiftlimbs] >> shiftlow | (shift < 320 && shiftlow ? (l[6 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[6] = shift < 320 ? (l[6 + shiftlimbs] >> shiftlow | (shift < 288 && shiftlow ? (l[7 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[7] = shift < 288 ? (l[7 + shiftlimbs] >> shiftlow) : 0; + secp256k1_scalar_cadd_bit(r, 0, (l[(shift - 1) >> 5] >> ((shift - 1) & 0x1f)) & 1); +} + +#endif diff --git a/crypto777/secp256k1/scalar_impl.h b/crypto777/secp256k1/scalar_impl.h new file mode 100644 index 000000000..425c0bfbd --- /dev/null +++ b/crypto777/secp256k1/scalar_impl.h @@ -0,0 +1,337 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_SCALAR_IMPL_H_ +#define _SECP256K1_SCALAR_IMPL_H_ + +#include + +#include "group.h" +#include "scalar.h" + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#if defined(USE_SCALAR_4X64) +#include "scalar_4x64_impl.h" +#elif defined(USE_SCALAR_8X32) +#include "scalar_8x32_impl.h" +#else +#error "Please select scalar implementation" +#endif + +#ifndef USE_NUM_NONE +static void secp256k1_scalar_get_num(secp256k1_num_t *r, const secp256k1_scalar_t *a) { + unsigned char c[32]; + secp256k1_scalar_get_b32(c, a); + secp256k1_num_set_bin(r, c, 32); +} + +/** secp256k1 curve order, see secp256k1_ecdsa_const_order_as_fe in ecdsa_impl.h */ +static void secp256k1_scalar_order_get_num(secp256k1_num_t *r) { + static const unsigned char order[32] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE, + 0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B, + 0xBF,0xD2,0x5E,0x8C,0xD0,0x36,0x41,0x41 + }; + secp256k1_num_set_bin(r, order, 32); +} +#endif + +static void secp256k1_scalar_inverse(secp256k1_scalar_t *r, const secp256k1_scalar_t *x) { + secp256k1_scalar_t *t; + int i; + /* First compute x ^ (2^N - 1) for some values of N. */ + secp256k1_scalar_t x2, x3, x4, x6, x7, x8, x15, x30, x60, x120, x127; + + secp256k1_scalar_sqr(&x2, x); + secp256k1_scalar_mul(&x2, &x2, x); + + secp256k1_scalar_sqr(&x3, &x2); + secp256k1_scalar_mul(&x3, &x3, x); + + secp256k1_scalar_sqr(&x4, &x3); + secp256k1_scalar_mul(&x4, &x4, x); + + secp256k1_scalar_sqr(&x6, &x4); + secp256k1_scalar_sqr(&x6, &x6); + secp256k1_scalar_mul(&x6, &x6, &x2); + + secp256k1_scalar_sqr(&x7, &x6); + secp256k1_scalar_mul(&x7, &x7, x); + + secp256k1_scalar_sqr(&x8, &x7); + secp256k1_scalar_mul(&x8, &x8, x); + + secp256k1_scalar_sqr(&x15, &x8); + for (i = 0; i < 6; i++) { + secp256k1_scalar_sqr(&x15, &x15); + } + secp256k1_scalar_mul(&x15, &x15, &x7); + + secp256k1_scalar_sqr(&x30, &x15); + for (i = 0; i < 14; i++) { + secp256k1_scalar_sqr(&x30, &x30); + } + secp256k1_scalar_mul(&x30, &x30, &x15); + + secp256k1_scalar_sqr(&x60, &x30); + for (i = 0; i < 29; i++) { + secp256k1_scalar_sqr(&x60, &x60); + } + secp256k1_scalar_mul(&x60, &x60, &x30); + + secp256k1_scalar_sqr(&x120, &x60); + for (i = 0; i < 59; i++) { + secp256k1_scalar_sqr(&x120, &x120); + } + secp256k1_scalar_mul(&x120, &x120, &x60); + + secp256k1_scalar_sqr(&x127, &x120); + for (i = 0; i < 6; i++) { + secp256k1_scalar_sqr(&x127, &x127); + } + secp256k1_scalar_mul(&x127, &x127, &x7); + + /* Then accumulate the final result (t starts at x127). */ + t = &x127; + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 3; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x2); /* 11 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 5; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 4; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x2); /* 11 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 5; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x4); /* 1111 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 3; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 4; i++) { /* 000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 10; i++) { /* 0000000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 9; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x8); /* 11111111 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 3; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 3; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 5; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x4); /* 1111 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 5; i++) { /* 000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x2); /* 11 */ + for (i = 0; i < 4; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x2); /* 11 */ + for (i = 0; i < 2; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 8; i++) { /* 000000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x2); /* 11 */ + for (i = 0; i < 3; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x2); /* 11 */ + for (i = 0; i < 3; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 6; i++) { /* 00000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 8; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(r, t, &x6); /* 111111 */ +} + +SECP256K1_INLINE static int secp256k1_scalar_is_even(const secp256k1_scalar_t *a) { + /* d[0] is present and is the lowest word for all representations */ + return !(a->d[0] & 1); +} + +static void secp256k1_scalar_inverse_var(secp256k1_scalar_t *r, const secp256k1_scalar_t *x) { +#if defined(USE_SCALAR_INV_BUILTIN) + secp256k1_scalar_inverse(r, x); +#elif defined(USE_SCALAR_INV_NUM) + unsigned char b[32]; + secp256k1_num_t n, m; + secp256k1_scalar_t t = *x; + secp256k1_scalar_get_b32(b, &t); + secp256k1_num_set_bin(&n, b, 32); + secp256k1_scalar_order_get_num(&m); + secp256k1_num_mod_inverse(&n, &n, &m); + secp256k1_num_get_bin(b, 32, &n); + secp256k1_scalar_set_b32(r, b, NULL); + /* Verify that the inverse was computed correctly, without GMP code. */ + secp256k1_scalar_mul(&t, &t, r); + CHECK(secp256k1_scalar_is_one(&t)); +#else +#error "Please select scalar inverse implementation" +#endif +} + +#ifdef USE_ENDOMORPHISM +/** + * The Secp256k1 curve has an endomorphism, where lambda * (x, y) = (beta * x, y), where + * lambda is {0x53,0x63,0xad,0x4c,0xc0,0x5c,0x30,0xe0,0xa5,0x26,0x1c,0x02,0x88,0x12,0x64,0x5a, + * 0x12,0x2e,0x22,0xea,0x20,0x81,0x66,0x78,0xdf,0x02,0x96,0x7c,0x1b,0x23,0xbd,0x72} + * + * "Guide to Elliptic Curve Cryptography" (Hankerson, Menezes, Vanstone) gives an algorithm + * (algorithm 3.74) to find k1 and k2 given k, such that k1 + k2 * lambda == k mod n, and k1 + * and k2 have a small size. + * It relies on constants a1, b1, a2, b2. These constants for the value of lambda above are: + * + * - a1 = {0x30,0x86,0xd2,0x21,0xa7,0xd4,0x6b,0xcd,0xe8,0x6c,0x90,0xe4,0x92,0x84,0xeb,0x15} + * - b1 = -{0xe4,0x43,0x7e,0xd6,0x01,0x0e,0x88,0x28,0x6f,0x54,0x7f,0xa9,0x0a,0xbf,0xe4,0xc3} + * - a2 = {0x01,0x14,0xca,0x50,0xf7,0xa8,0xe2,0xf3,0xf6,0x57,0xc1,0x10,0x8d,0x9d,0x44,0xcf,0xd8} + * - b2 = {0x30,0x86,0xd2,0x21,0xa7,0xd4,0x6b,0xcd,0xe8,0x6c,0x90,0xe4,0x92,0x84,0xeb,0x15} + * + * The algorithm then computes c1 = round(b1 * k / n) and c2 = round(b2 * k / n), and gives + * k1 = k - (c1*a1 + c2*a2) and k2 = -(c1*b1 + c2*b2). Instead, we use modular arithmetic, and + * compute k1 as k - k2 * lambda, avoiding the need for constants a1 and a2. + * + * g1, g2 are precomputed constants used to replace division with a rounded multiplication + * when decomposing the scalar for an endomorphism-based point multiplication. + * + * The possibility of using precomputed estimates is mentioned in "Guide to Elliptic Curve + * Cryptography" (Hankerson, Menezes, Vanstone) in section 3.5. + * + * The derivation is described in the paper "Efficient Software Implementation of Public-Key + * Cryptography on Sensor Networks Using the MSP430X Microcontroller" (Gouvea, Oliveira, Lopez), + * Section 4.3 (here we use a somewhat higher-precision estimate): + * d = a1*b2 - b1*a2 + * g1 = round((2^272)*b2/d) + * g2 = round((2^272)*b1/d) + * + * (Note that 'd' is also equal to the curve order here because [a1,b1] and [a2,b2] are found + * as outputs of the Extended Euclidean Algorithm on inputs 'order' and 'lambda'). + * + * The function below splits a in r1 and r2, such that r1 + lambda * r2 == a (mod order). + */ + +static void secp256k1_scalar_split_lambda(secp256k1_scalar_t *r1, secp256k1_scalar_t *r2, const secp256k1_scalar_t *a) { + secp256k1_scalar_t c1, c2; + static const secp256k1_scalar_t minus_lambda = SECP256K1_SCALAR_CONST( + 0xAC9C52B3UL, 0x3FA3CF1FUL, 0x5AD9E3FDUL, 0x77ED9BA4UL, + 0xA880B9FCUL, 0x8EC739C2UL, 0xE0CFC810UL, 0xB51283CFUL + ); + static const secp256k1_scalar_t minus_b1 = SECP256K1_SCALAR_CONST( + 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, + 0xE4437ED6UL, 0x010E8828UL, 0x6F547FA9UL, 0x0ABFE4C3UL + ); + static const secp256k1_scalar_t minus_b2 = SECP256K1_SCALAR_CONST( + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, + 0x8A280AC5UL, 0x0774346DUL, 0xD765CDA8UL, 0x3DB1562CUL + ); + static const secp256k1_scalar_t g1 = SECP256K1_SCALAR_CONST( + 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00003086UL, + 0xD221A7D4UL, 0x6BCDE86CUL, 0x90E49284UL, 0xEB153DABUL + ); + static const secp256k1_scalar_t g2 = SECP256K1_SCALAR_CONST( + 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0000E443UL, + 0x7ED6010EUL, 0x88286F54UL, 0x7FA90ABFUL, 0xE4C42212UL + ); + VERIFY_CHECK(r1 != a); + VERIFY_CHECK(r2 != a); + /* these _var calls are constant time since the shift amount is constant */ + secp256k1_scalar_mul_shift_var(&c1, a, &g1, 272); + secp256k1_scalar_mul_shift_var(&c2, a, &g2, 272); + secp256k1_scalar_mul(&c1, &c1, &minus_b1); + secp256k1_scalar_mul(&c2, &c2, &minus_b2); + secp256k1_scalar_add(r2, &c1, &c2); + secp256k1_scalar_mul(r1, r2, &minus_lambda); + secp256k1_scalar_add(r1, r1, a); +} +#endif + +#endif diff --git a/crypto777/secp256k1/secp256k1.c b/crypto777/secp256k1/secp256k1.c new file mode 100644 index 000000000..ea0b406d3 --- /dev/null +++ b/crypto777/secp256k1/secp256k1.c @@ -0,0 +1,594 @@ +/********************************************************************** + * Copyright (c) 2013-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#define SECP256K1_BUILD (1) + +#include "secp256k1.h" + +#include "util.h" +#include "num_impl.h" +#include "field_impl.h" +#include "scalar_impl.h" +#include "group_impl.h" +#include "ecmult_impl.h" +#include "ecmult_const_impl.h" +#include "ecmult_gen_impl.h" +#include "ecdsa_impl.h" +#include "eckey_impl.h" +#include "hash_impl.h" + +#ifdef ENABLE_MODULE_RANGEPROOF +# include "modules/rangeproof/pedersen.h" +# include "modules/rangeproof/rangeproof.h" +#endif + +#define ARG_CHECK(cond) do { \ + if (EXPECT(!(cond), 0)) { \ + ctx->illegal_callback.fn(#cond, ctx->illegal_callback.data); \ + return 0; \ + } \ +} while(0) + +static void default_illegal_callback_fn(const char* str, void* data) { + (void)data; + fprintf(stderr, "[libsecp256k1] illegal argument: %s\n", str); + abort(); +} + +static const callback_t default_illegal_callback = { + default_illegal_callback_fn, + NULL +}; + +static void default_error_callback_fn(const char* str, void* data) { + (void)data; + fprintf(stderr, "[libsecp256k1] internal consistency check failed: %s\n", str); + abort(); +} + +static const callback_t default_error_callback = { + default_error_callback_fn, + NULL +}; + + +struct secp256k1_context_struct { + secp256k1_ecmult_context_t ecmult_ctx; + secp256k1_ecmult_gen_context_t ecmult_gen_ctx; +#ifdef ENABLE_MODULE_RANGEPROOF + secp256k1_pedersen_context_t pedersen_ctx; + secp256k1_rangeproof_context_t rangeproof_ctx; +#endif + callback_t illegal_callback; + callback_t error_callback; +}; + +secp256k1_context_t* secp256k1_context_create(int flags) { + secp256k1_context_t* ret = (secp256k1_context_t*)checked_malloc(&default_error_callback, sizeof(secp256k1_context_t)); + ret->illegal_callback = default_illegal_callback; + ret->error_callback = default_error_callback; + + secp256k1_ecmult_context_init(&ret->ecmult_ctx); + secp256k1_ecmult_gen_context_init(&ret->ecmult_gen_ctx); +#ifdef ENABLE_MODULE_RANGEPROOF + secp256k1_pedersen_context_init(&ret->pedersen_ctx); + secp256k1_rangeproof_context_init(&ret->rangeproof_ctx); +#endif + + if (flags & SECP256K1_CONTEXT_SIGN) { + secp256k1_ecmult_gen_context_build(&ret->ecmult_gen_ctx, &ret->error_callback); + } + if (flags & SECP256K1_CONTEXT_VERIFY) { + secp256k1_ecmult_context_build(&ret->ecmult_ctx, &ret->error_callback); + } + + return ret; +} + +secp256k1_context_t* secp256k1_context_clone(const secp256k1_context_t* ctx) { + secp256k1_context_t* ret = (secp256k1_context_t*)checked_malloc(&ctx->error_callback, sizeof(secp256k1_context_t)); + ret->illegal_callback = ctx->illegal_callback; + ret->error_callback = ctx->error_callback; + secp256k1_ecmult_context_clone(&ret->ecmult_ctx, &ctx->ecmult_ctx, &ctx->error_callback); + secp256k1_ecmult_gen_context_clone(&ret->ecmult_gen_ctx, &ctx->ecmult_gen_ctx, &ctx->error_callback); +#ifdef ENABLE_MODULE_RANGEPROOF + secp256k1_pedersen_context_clone(&ret->pedersen_ctx, &ctx->pedersen_ctx, &ctx->error_callback); + secp256k1_rangeproof_context_clone(&ret->rangeproof_ctx, &ctx->rangeproof_ctx, &ctx->error_callback); +#endif + return ret; +} + +void secp256k1_context_destroy(secp256k1_context_t* ctx) { + secp256k1_ecmult_context_clear(&ctx->ecmult_ctx); + secp256k1_ecmult_gen_context_clear(&ctx->ecmult_gen_ctx); +#ifdef ENABLE_MODULE_RANGEPROOF + secp256k1_pedersen_context_clear(&ctx->pedersen_ctx); + secp256k1_rangeproof_context_clear(&ctx->rangeproof_ctx); +#endif + + free(ctx); +} + +void secp256k1_context_set_illegal_callback(secp256k1_context_t* ctx, void (*fun)(const char* message, void* data), void* data) { + ctx->illegal_callback.fn = fun; + ctx->illegal_callback.data = data; +} + +void secp256k1_context_set_error_callback(secp256k1_context_t* ctx, void (*fun)(const char* message, void* data), void* data) { + ctx->error_callback.fn = fun; + ctx->error_callback.data = data; +} + +static int secp256k1_pubkey_load(const secp256k1_context_t* ctx, secp256k1_ge_t* ge, const secp256k1_pubkey_t* pubkey) { + if (sizeof(secp256k1_ge_storage_t) == 64) { + /* When the secp256k1_ge_storage_t type is exactly 64 byte, use its + * representation inside secp256k1_pubkey_t, as conversion is very fast. + * Note that secp256k1_pubkey_save must use the same representation. */ + secp256k1_ge_storage_t s; + memcpy(&s, &pubkey->data[0], 64); + secp256k1_ge_from_storage(ge, &s); + } else { + /* Otherwise, fall back to 32-byte big endian for X and Y. */ + secp256k1_fe_t x, y; + secp256k1_fe_set_b32(&x, pubkey->data); + secp256k1_fe_set_b32(&y, pubkey->data + 32); + secp256k1_ge_set_xy(ge, &x, &y); + } + ARG_CHECK(!secp256k1_fe_is_zero(&ge->x)); + return 1; +} + +static void secp256k1_pubkey_save(secp256k1_pubkey_t* pubkey, secp256k1_ge_t* ge) { + if (sizeof(secp256k1_ge_storage_t) == 64) { + secp256k1_ge_storage_t s; + secp256k1_ge_to_storage(&s, ge); + memcpy(&pubkey->data[0], &s, 64); + } else { + VERIFY_CHECK(!secp256k1_ge_is_infinity(ge)); + secp256k1_fe_normalize_var(&ge->x); + secp256k1_fe_normalize_var(&ge->y); + secp256k1_fe_get_b32(pubkey->data, &ge->x); + secp256k1_fe_get_b32(pubkey->data + 32, &ge->y); + } +} + +int secp256k1_ec_pubkey_parse(const secp256k1_context_t* ctx, secp256k1_pubkey_t* pubkey, const unsigned char *input, int inputlen) { + secp256k1_ge_t Q; + + (void)ctx; + if (!secp256k1_eckey_pubkey_parse(&Q, input, inputlen)) { + memset(pubkey, 0, sizeof(*pubkey)); + return 0; + } + secp256k1_pubkey_save(pubkey, &Q); + secp256k1_ge_clear(&Q); + return 1; +} + +int secp256k1_ec_pubkey_serialize(const secp256k1_context_t* ctx, unsigned char *output, int *outputlen, const secp256k1_pubkey_t* pubkey, int compressed) { + secp256k1_ge_t Q; + + (void)ctx; + return (secp256k1_pubkey_load(ctx, &Q, pubkey) && + secp256k1_eckey_pubkey_serialize(&Q, output, outputlen, compressed)); +} + +static void secp256k1_ecdsa_signature_load(const secp256k1_context_t* ctx, secp256k1_scalar_t* r, secp256k1_scalar_t* s, int* recid, const secp256k1_ecdsa_signature_t* sig) { + (void)ctx; + if (sizeof(secp256k1_scalar_t) == 32) { + /* When the secp256k1_scalar_t type is exactly 32 byte, use its + * representation inside secp256k1_ecdsa_signature_t, as conversion is very fast. + * Note that secp256k1_ecdsa_signature_save must use the same representation. */ + memcpy(r, &sig->data[0], 32); + memcpy(s, &sig->data[32], 32); + } else { + secp256k1_scalar_set_b32(r, &sig->data[0], NULL); + secp256k1_scalar_set_b32(s, &sig->data[32], NULL); + } + if (recid) { + *recid = sig->data[64]; + } +} + +static void secp256k1_ecdsa_signature_save(secp256k1_ecdsa_signature_t* sig, const secp256k1_scalar_t* r, const secp256k1_scalar_t* s, int recid) { + if (sizeof(secp256k1_scalar_t) == 32) { + memcpy(&sig->data[0], r, 32); + memcpy(&sig->data[32], s, 32); + } else { + secp256k1_scalar_get_b32(&sig->data[0], r); + secp256k1_scalar_get_b32(&sig->data[32], s); + } + sig->data[64] = recid; +} + +int secp256k1_ecdsa_signature_parse_der(const secp256k1_context_t* ctx, secp256k1_ecdsa_signature_t* sig, const unsigned char *input, int inputlen) { + secp256k1_scalar_t r, s; + + (void)ctx; + ARG_CHECK(sig != NULL); + ARG_CHECK(input != NULL); + + if (secp256k1_ecdsa_sig_parse(&r, &s, input, inputlen)) { + secp256k1_ecdsa_signature_save(sig, &r, &s, -1); + return 1; + } else { + memset(sig, 0, sizeof(*sig)); + return 0; + } +} + +int secp256k1_ecdsa_signature_parse_compact(const secp256k1_context_t* ctx, secp256k1_ecdsa_signature_t* sig, const unsigned char *input64, int recid) { + secp256k1_scalar_t r, s; + int ret = 1; + int overflow = 0; + + (void)ctx; + ARG_CHECK(sig != NULL); + ARG_CHECK(input64 != NULL); + + secp256k1_scalar_set_b32(&r, &input64[0], &overflow); + ret &= !overflow; + secp256k1_scalar_set_b32(&s, &input64[32], &overflow); + ret &= !overflow; + ret &= (recid == -1 || (recid >= 0 && recid < 4)); + if (ret) { + secp256k1_ecdsa_signature_save(sig, &r, &s, recid); + } else { + memset(sig, 0, sizeof(*sig)); + } + return ret; +} + +int secp256k1_ecdsa_signature_serialize_der(const secp256k1_context_t* ctx, unsigned char *output, int *outputlen, const secp256k1_ecdsa_signature_t* sig) { + secp256k1_scalar_t r, s; + + (void)ctx; + ARG_CHECK(output != NULL); + ARG_CHECK(outputlen != NULL); + ARG_CHECK(sig != NULL); + + secp256k1_ecdsa_signature_load(ctx, &r, &s, NULL, sig); + return secp256k1_ecdsa_sig_serialize(output, outputlen, &r, &s); +} + +int secp256k1_ecdsa_signature_serialize_compact(const secp256k1_context_t* ctx, unsigned char *output64, int *recid, const secp256k1_ecdsa_signature_t* sig) { + secp256k1_scalar_t r, s; + int rec; + + (void)ctx; + ARG_CHECK(output64 != NULL); + ARG_CHECK(sig != NULL); + + secp256k1_ecdsa_signature_load(ctx, &r, &s, &rec, sig); + secp256k1_scalar_get_b32(&output64[0], &r); + secp256k1_scalar_get_b32(&output64[32], &s); + if (recid) { + ARG_CHECK(rec >= 0 && rec < 4); + *recid = rec; + } + return 1; +} + +int secp256k1_ecdsa_verify(const secp256k1_context_t* ctx, const unsigned char *msg32, const secp256k1_ecdsa_signature_t *sig, const secp256k1_pubkey_t *pubkey) { + secp256k1_ge_t q; + secp256k1_scalar_t r, s; + secp256k1_scalar_t m; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(sig != NULL); + ARG_CHECK(pubkey != NULL); + + secp256k1_scalar_set_b32(&m, msg32, NULL); + secp256k1_ecdsa_signature_load(ctx, &r, &s, NULL, sig); + return (secp256k1_pubkey_load(ctx, &q, pubkey) && + secp256k1_ecdsa_sig_verify(&ctx->ecmult_ctx, &r, &s, &q, &m)); +} + +static int nonce_function_rfc6979(unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32, const unsigned char *algo16, unsigned int counter, const void *data) { + unsigned char keydata[112]; + int keylen = 64; + secp256k1_rfc6979_hmac_sha256_t rng; + unsigned int i; + /* We feed a byte array to the PRNG as input, consisting of: + * - the private key (32 bytes) and message (32 bytes), see RFC 6979 3.2d. + * - optionally 32 extra bytes of data, see RFC 6979 3.6 Additional Data. + * - optionally 16 extra bytes with the algorithm name (the extra data bytes + * are set to zeroes when not present, while the algorithm name is). + */ + memcpy(keydata, key32, 32); + memcpy(keydata + 32, msg32, 32); + if (data != NULL) { + memcpy(keydata + 64, data, 32); + keylen = 96; + } + if (algo16 != NULL) { + memset(keydata + keylen, 0, 96 - keylen); + memcpy(keydata + 96, algo16, 16); + keylen = 112; + } + secp256k1_rfc6979_hmac_sha256_initialize(&rng, keydata, keylen); + memset(keydata, 0, sizeof(keydata)); + for (i = 0; i <= counter; i++) { + secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32); + } + secp256k1_rfc6979_hmac_sha256_finalize(&rng); + return 1; +} + +const secp256k1_nonce_function_t secp256k1_nonce_function_rfc6979 = nonce_function_rfc6979; +const secp256k1_nonce_function_t secp256k1_nonce_function_default = nonce_function_rfc6979; + +int secp256k1_ecdsa_sign(const secp256k1_context_t* ctx, const unsigned char *msg32, secp256k1_ecdsa_signature_t *signature, const unsigned char *seckey, secp256k1_nonce_function_t noncefp, const void* noncedata) { + secp256k1_scalar_t r, s; + secp256k1_scalar_t sec, non, msg; + int recid; + int ret = 0; + int overflow = 0; + unsigned int count = 0; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(signature != NULL); + ARG_CHECK(seckey != NULL); + if (noncefp == NULL) { + noncefp = secp256k1_nonce_function_default; + } + + secp256k1_scalar_set_b32(&sec, seckey, &overflow); + /* Fail if the secret key is invalid. */ + if (!overflow && !secp256k1_scalar_is_zero(&sec)) { + secp256k1_scalar_set_b32(&msg, msg32, NULL); + while (1) { + unsigned char nonce32[32]; + ret = noncefp(nonce32, msg32, seckey, NULL, count, noncedata); + if (!ret) { + break; + } + secp256k1_scalar_set_b32(&non, nonce32, &overflow); + memset(nonce32, 0, 32); + if (!secp256k1_scalar_is_zero(&non) && !overflow) { + if (secp256k1_ecdsa_sig_sign(&ctx->ecmult_gen_ctx, &r, &s, &sec, &msg, &non, &recid)) { + break; + } + } + count++; + } + secp256k1_scalar_clear(&msg); + secp256k1_scalar_clear(&non); + secp256k1_scalar_clear(&sec); + } + if (ret) { + secp256k1_ecdsa_signature_save(signature, &r, &s, recid); + } else { + memset(signature, 0, sizeof(*signature)); + } + return ret; +} + +int secp256k1_ecdsa_recover(const secp256k1_context_t* ctx, const unsigned char *msg32, const secp256k1_ecdsa_signature_t *signature, secp256k1_pubkey_t *pubkey) { + secp256k1_ge_t q; + secp256k1_scalar_t r, s; + secp256k1_scalar_t m; + int recid; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(signature != NULL); + ARG_CHECK(pubkey != NULL); + + secp256k1_ecdsa_signature_load(ctx, &r, &s, &recid, signature); + ARG_CHECK(recid >= 0 && recid < 4); + secp256k1_scalar_set_b32(&m, msg32, NULL); + if (secp256k1_ecdsa_sig_recover(&ctx->ecmult_ctx, &r, &s, &q, &m, recid)) { + secp256k1_pubkey_save(pubkey, &q); + return 1; + } else { + memset(pubkey, 0, sizeof(*pubkey)); + return 0; + } +} + +int secp256k1_ec_seckey_verify(const secp256k1_context_t* ctx, const unsigned char *seckey) { + secp256k1_scalar_t sec; + int ret; + int overflow; + ARG_CHECK(ctx != NULL); + ARG_CHECK(seckey != NULL); + (void)ctx; + + secp256k1_scalar_set_b32(&sec, seckey, &overflow); + ret = !secp256k1_scalar_is_zero(&sec) && !overflow; + secp256k1_scalar_clear(&sec); + return ret; +} + +int secp256k1_ec_pubkey_create(const secp256k1_context_t* ctx, secp256k1_pubkey_t *pubkey, const unsigned char *seckey) { + secp256k1_gej_t pj; + secp256k1_ge_t p; + secp256k1_scalar_t sec; + int overflow; + int ret = 0; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(pubkey != NULL); + ARG_CHECK(seckey != NULL); + + secp256k1_scalar_set_b32(&sec, seckey, &overflow); + ret = !overflow & !secp256k1_scalar_is_zero(&sec); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &pj, &sec); + secp256k1_ge_set_gej(&p, &pj); + secp256k1_pubkey_save(pubkey, &p); + secp256k1_scalar_clear(&sec); + if (!ret) { + memset(pubkey, 0, sizeof(*pubkey)); + } + return ret; +} + +int secp256k1_ec_privkey_tweak_add(const secp256k1_context_t* ctx, unsigned char *seckey, const unsigned char *tweak) { + secp256k1_scalar_t term; + secp256k1_scalar_t sec; + int ret = 0; + int overflow = 0; + ARG_CHECK(ctx != NULL); + ARG_CHECK(seckey != NULL); + ARG_CHECK(tweak != NULL); + (void)ctx; + + secp256k1_scalar_set_b32(&term, tweak, &overflow); + secp256k1_scalar_set_b32(&sec, seckey, NULL); + + ret = secp256k1_eckey_privkey_tweak_add(&sec, &term) && !overflow; + if (ret) { + secp256k1_scalar_get_b32(seckey, &sec); + } + + secp256k1_scalar_clear(&sec); + secp256k1_scalar_clear(&term); + return ret; +} + +int secp256k1_ec_pubkey_tweak_add(const secp256k1_context_t* ctx, secp256k1_pubkey_t *pubkey, const unsigned char *tweak) { + secp256k1_ge_t p; + secp256k1_scalar_t term; + int ret = 0; + int overflow = 0; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(pubkey != NULL); + ARG_CHECK(tweak != NULL); + + secp256k1_scalar_set_b32(&term, tweak, &overflow); + if (!overflow && secp256k1_pubkey_load(ctx, &p, pubkey)) { + ret = secp256k1_eckey_pubkey_tweak_add(&ctx->ecmult_ctx, &p, &term); + if (ret) { + secp256k1_pubkey_save(pubkey, &p); + } else { + memset(pubkey, 0, sizeof(*pubkey)); + } + } + + return ret; +} + +int secp256k1_ec_privkey_tweak_mul(const secp256k1_context_t* ctx, unsigned char *seckey, const unsigned char *tweak) { + secp256k1_scalar_t factor; + secp256k1_scalar_t sec; + int ret = 0; + int overflow = 0; + ARG_CHECK(ctx != NULL); + ARG_CHECK(seckey != NULL); + ARG_CHECK(tweak != NULL); + (void)ctx; + + secp256k1_scalar_set_b32(&factor, tweak, &overflow); + secp256k1_scalar_set_b32(&sec, seckey, NULL); + ret = secp256k1_eckey_privkey_tweak_mul(&sec, &factor) && !overflow; + if (ret) { + secp256k1_scalar_get_b32(seckey, &sec); + } + + secp256k1_scalar_clear(&sec); + secp256k1_scalar_clear(&factor); + return ret; +} + +int secp256k1_ec_pubkey_tweak_mul(const secp256k1_context_t* ctx, secp256k1_pubkey_t *pubkey, const unsigned char *tweak) { + secp256k1_ge_t p; + secp256k1_scalar_t factor; + int ret = 0; + int overflow = 0; + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(pubkey != NULL); + ARG_CHECK(tweak != NULL); + + secp256k1_scalar_set_b32(&factor, tweak, &overflow); + if (!overflow && secp256k1_pubkey_load(ctx, &p, pubkey)) { + ret = secp256k1_eckey_pubkey_tweak_mul(&ctx->ecmult_ctx, &p, &factor); + if (ret) { + secp256k1_pubkey_save(pubkey, &p); + } else { + memset(pubkey, 0, sizeof(*pubkey)); + } + } + + return ret; +} + +int secp256k1_ec_privkey_export(const secp256k1_context_t* ctx, const unsigned char *seckey, unsigned char *privkey, int *privkeylen, int compressed) { + secp256k1_scalar_t key; + int ret = 0; + ARG_CHECK(seckey != NULL); + ARG_CHECK(privkey != NULL); + ARG_CHECK(privkeylen != NULL); + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + + secp256k1_scalar_set_b32(&key, seckey, NULL); + ret = secp256k1_eckey_privkey_serialize(&ctx->ecmult_gen_ctx, privkey, privkeylen, &key, compressed); + secp256k1_scalar_clear(&key); + return ret; +} + +int secp256k1_ec_privkey_import(const secp256k1_context_t* ctx, unsigned char *seckey, const unsigned char *privkey, int privkeylen) { + secp256k1_scalar_t key; + int ret = 0; + ARG_CHECK(seckey != NULL); + ARG_CHECK(privkey != NULL); + (void)ctx; + + ret = secp256k1_eckey_privkey_parse(&key, privkey, privkeylen); + if (ret) { + secp256k1_scalar_get_b32(seckey, &key); + } + secp256k1_scalar_clear(&key); + return ret; +} + +int secp256k1_context_randomize(secp256k1_context_t* ctx, const unsigned char *seed32) { + ARG_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + secp256k1_ecmult_gen_blind(&ctx->ecmult_gen_ctx, seed32); + return 1; +} + +int secp256k1_ec_pubkey_combine(const secp256k1_context_t* ctx, secp256k1_pubkey_t *pubnonce, int n, const secp256k1_pubkey_t * const *pubnonces) { + int i; + secp256k1_gej_t Qj; + secp256k1_ge_t Q; + + ARG_CHECK(pubnonce != NULL); + ARG_CHECK(n >= 1); + ARG_CHECK(pubnonces != NULL); + + secp256k1_gej_set_infinity(&Qj); + + for (i = 0; i < n; i++) { + secp256k1_pubkey_load(ctx, &Q, pubnonces[i]); + secp256k1_gej_add_ge(&Qj, &Qj, &Q); + } + if (secp256k1_gej_is_infinity(&Qj)) { + memset(pubnonce, 0, sizeof(*pubnonce)); + return 0; + } + secp256k1_ge_set_gej(&Q, &Qj); + secp256k1_pubkey_save(pubnonce, &Q); + return 1; +} + +#ifdef ENABLE_MODULE_ECDH +# include "modules/ecdh/main_impl.h" +#endif + +#ifdef ENABLE_MODULE_SCHNORR +# include "modules/schnorr/main_impl.h" +#endif + +#ifdef ENABLE_MODULE_RANGEPROOF +# include "modules/rangeproof/main_impl.h" +#endif diff --git a/crypto777/secp256k1/secp256k1.h b/crypto777/secp256k1/secp256k1.h new file mode 100644 index 000000000..1b8361e00 --- /dev/null +++ b/crypto777/secp256k1/secp256k1.h @@ -0,0 +1,453 @@ +#ifndef _SECP256K1_ +# define _SECP256K1_ + +# ifdef __cplusplus +extern "C" { +# endif + +# if !defined(SECP256K1_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define SECP256K1_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define SECP256K1_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +# if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if SECP256K1_GNUC_PREREQ(2,7) +# define SECP256K1_INLINE __inline__ +# elif (defined(_MSC_VER)) +# define SECP256K1_INLINE __inline +# else +# define SECP256K1_INLINE +# endif +# else +# define SECP256K1_INLINE inline +# endif + +/**Warning attributes + * NONNULL is not used if SECP256K1_BUILD is set to avoid the compiler optimizing out + * some paranoid null checks. */ +# if defined(__GNUC__) && SECP256K1_GNUC_PREREQ(3, 4) +# define SECP256K1_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) +# else +# define SECP256K1_WARN_UNUSED_RESULT +# endif +# if !defined(SECP256K1_BUILD) && defined(__GNUC__) && SECP256K1_GNUC_PREREQ(3, 4) +# define SECP256K1_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x))) +# else +# define SECP256K1_ARG_NONNULL(_x) +# endif + +/** Opaque data structure that holds context information (precomputed tables etc.). + * Only functions that take a pointer to a non-const context require exclusive + * access to it. Multiple functions that take a pointer to a const context may + * run simultaneously. + */ +typedef struct secp256k1_context_struct secp256k1_context_t; + +/** Flags to pass to secp256k1_context_create. */ +# define SECP256K1_CONTEXT_VERIFY (1 << 0) +# define SECP256K1_CONTEXT_SIGN (1 << 1) + +/** Create a secp256k1 context object. + * Returns: a newly created context object. + * In: flags: which parts of the context to initialize. + */ +secp256k1_context_t* secp256k1_context_create( + int flags +) SECP256K1_WARN_UNUSED_RESULT; + +/** Copies a secp256k1 context object. + * Returns: a newly created context object. + * In: ctx: an existing context to copy + */ +secp256k1_context_t* secp256k1_context_clone( + const secp256k1_context_t* ctx +) SECP256K1_WARN_UNUSED_RESULT; + +/** Destroy a secp256k1 context object. + * The context pointer may not be used afterwards. + */ +void secp256k1_context_destroy( + secp256k1_context_t* ctx +) SECP256K1_ARG_NONNULL(1); + +/** Set a callback function to be called when an illegal argument is passed to + * an API call. The philosophy is that these shouldn't be dealt with through a + * specific return value, as calling code should not have branches to deal with + * the case that this code itself is broken. + * On the other hand, during debug stage, one would want to be informed about + * such mistakes, and the default (crashing) may be inadvisable. + * When this callback is triggered, the API function called is guaranteed not + * to cause a crash, though its return value and output arguments are + * undefined. + */ +void secp256k1_context_set_illegal_callback( + secp256k1_context_t* ctx, + void (*fun)(const char* message, void* data), + void* data +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Set a callback function to be called when an internal consistency check + * fails. The default is crashing. + * This can only trigger in case of a hardware failure, miscompilation, + * memory corruption, serious bug in the library, or other error would can + * otherwise result in undefined behaviour. It will not trigger due to mere + * incorrect usage of the API (see secp256k1_context_set_illegal_callback + * for that). After this callback returns, anything may happen, including + * crashing. + */ +void secp256k1_context_set_error_callback( + secp256k1_context_t* ctx, + void (*fun)(const char* message, void* data), + void* data +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Data type to hold a parsed and valid public key. + This data type should be considered opaque to the user, and only created + through API functions. It is not guaranteed to be compatible between + different implementations. If you need to convert to a format suitable + for storage or transmission, use secp256k1_ec_pubkey_serialize and + secp256k1_ec_pubkey_parse. + */ +typedef struct { + unsigned char data[64]; +} secp256k1_pubkey_t; + +/** Parse a variable-length public key into the pubkey object. + * Returns: 1 if the public key was fully valid. + * 0 if the public key could not be parsed or is invalid. + * In: ctx: a secp256k1 context object. + * input: pointer to a serialized public key + * inputlen: length of the array pointed to by input + * Out: pubkey: pointer to a pubkey object. If 1 is returned, it is set to a + * parsed version of input. If not, its value is undefined. + * This function supports parsing compressed (33 bytes, header byte 0x02 or + * 0x03), uncompressed (65 bytes, header byte 0x04), or hybrid (65 bytes, header + * byte 0x06 or 0x07) format public keys. + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_parse( + const secp256k1_context_t* ctx, + secp256k1_pubkey_t* pubkey, + const unsigned char *input, + int inputlen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Serialize a pubkey object into a serialized byte sequence. + * Returns: 1 always. + * In: ctx: a secp256k1 context object. + * pubkey: a pointer to a secp256k1_pubkey_t containing an initialized + * public key. + * compressed: whether to serialize in compressed format. + * Out: output: a pointer to a 65-byte (if compressed==0) or 33-byte (if + * compressed==1) byte array to place the serialized key in. + * outputlen: a pointer to an integer which will contain the serialized + * size. + */ +int secp256k1_ec_pubkey_serialize( + const secp256k1_context_t* ctx, + unsigned char *output, + int *outputlen, + const secp256k1_pubkey_t* pubkey, + int compressed +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Data type to hold a parsed ECDSA signature, optionally supporting pubkey + * recovery. + This data type should be considered opaque to the user, and only created + through API functions. It is not guaranteed to be compatible between + different implementations. If you need to convert to a format suitable + for storage or transmission, use secp256k1_ecdsa_signature_serialize_* and + secp256k1_ecdsa_signature_parse_* functions. */ +typedef struct { + unsigned char data[65]; +} secp256k1_ecdsa_signature_t; + +/** Parse a DER ECDSA signature. + * Returns: 1 when the signature could be parsed, 0 otherwise. + * In: ctx: a secp256k1 context object + * input: a pointer to the signature to be parsed + * inputlen: the length of the array pointed to be input + * Out: sig: a pointer to a signature object + * + * Note that this function also supports some violations of DER. + * + * The resulting signature object will not support pubkey recovery. + */ +int secp256k1_ecdsa_signature_parse_der( + const secp256k1_context_t* ctx, + secp256k1_ecdsa_signature_t* sig, + const unsigned char *input, + int inputlen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Parse a compact ECDSA signature (64 bytes + recovery id). + * Returns: 1 when the signature could be parsed, 0 otherwise + * In: ctx: a secp256k1 context object + * input64: a pointer to a 64-byte compact signature + * recid: the recovery id (0, 1, 2 or 3, or -1 for unknown) + * Out: sig: a pointer to a signature object + * + * If recid is not -1, the resulting signature object will support pubkey + * recovery. + */ +int secp256k1_ecdsa_signature_parse_compact( + const secp256k1_context_t* ctx, + secp256k1_ecdsa_signature_t* sig, + const unsigned char *input64, + int recid +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Serialize an ECDSA signature in DER format. + * Returns: 1 if enough space was available to serialize, 0 otherwise + * In: ctx: a secp256k1 context object + * sig: a pointer to an initialized signature object + * Out: output: a pointer to an array to store the DER serialization + * In/Out: outputlen: a pointer to a length integer. Initially, this integer + * should be set to the length of output. After the call + * it will be set to the length of the serialization (even + * if 0 was returned). + */ +int secp256k1_ecdsa_signature_serialize_der( + const secp256k1_context_t* ctx, + unsigned char *output, + int *outputlen, + const secp256k1_ecdsa_signature_t* sig +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Serialize an ECDSA signature in compact format (64 bytes + recovery id). + * Returns: 1 + * In: ctx: a secp256k1 context object + * sig: a pointer to an initialized signature object (cannot be NULL) + * Out: output64: a pointer to a 64-byte array of the compact signature (cannot be NULL) + * recid: a pointer to an integer to hold the recovery id (can be NULL). + * + * If recid is not NULL, the signature must support pubkey recovery. + */ +int secp256k1_ecdsa_signature_serialize_compact( + const secp256k1_context_t* ctx, + unsigned char *output64, + int *recid, + const secp256k1_ecdsa_signature_t* sig +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4); + +/** Verify an ECDSA signature. + * Returns: 1: correct signature + * 0: incorrect or unparseable signature + * In: ctx: a secp256k1 context object, initialized for verification. + * msg32: the 32-byte message hash being verified (cannot be NULL) + * sig: the signature being verified (cannot be NULL) + * pubkey: pointer to an initialized public key to verify with (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_verify( + const secp256k1_context_t* ctx, + const unsigned char *msg32, + const secp256k1_ecdsa_signature_t *sig, + const secp256k1_pubkey_t *pubkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** A pointer to a function to deterministically generate a nonce. + * Returns: 1 if a nonce was successfully generated. 0 will cause signing to fail. + * In: msg32: the 32-byte message hash being verified (will not be NULL) + * key32: pointer to a 32-byte secret key (will not be NULL) + * algo16: pointer to a 16-byte array describing the signature + * algorithm (will be NULL for ECDSA for compatibility). + * attempt: how many iterations we have tried to find a nonce. + * This will almost always be 0, but different attempt values + * are required to result in a different nonce. + * data: Arbitrary data pointer that is passed through. + * Out: nonce32: pointer to a 32-byte array to be filled by the function. + * Except for test cases, this function should compute some cryptographic hash of + * the message, the key and the attempt. + */ +typedef int (*secp256k1_nonce_function_t)( + unsigned char *nonce32, + const unsigned char *msg32, + const unsigned char *key32, + const unsigned char *algo16, + unsigned int attempt, + const void *data +); + +/** An implementation of RFC6979 (using HMAC-SHA256) as nonce generation function. + * If a data pointer is passed, it is assumed to be a pointer to 32 bytes of + * extra entropy. + */ +extern const secp256k1_nonce_function_t secp256k1_nonce_function_rfc6979; + +/** A default safe nonce generation function (currently equal to secp256k1_nonce_function_rfc6979). */ +extern const secp256k1_nonce_function_t secp256k1_nonce_function_default; + +/** Create an ECDSA signature. + * Returns: 1: signature created + * 0: the nonce generation function failed, or the private key was invalid. + * In: ctx: pointer to a context object, initialized for signing (cannot be NULL) + * msg32: the 32-byte message hash being signed (cannot be NULL) + * seckey: pointer to a 32-byte secret key (cannot be NULL) + * noncefp:pointer to a nonce generation function. If NULL, secp256k1_nonce_function_default is used + * ndata: pointer to arbitrary data used by the nonce generation function (can be NULL) + * Out: sig: pointer to an array where the signature will be placed (cannot be NULL) + * + * The resulting signature will support pubkey recovery. + * + * The sig always has an s value in the lower half of the range (From 0x1 + * to 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, + * inclusive), unlike many other implementations. + * With ECDSA a third-party can can forge a second distinct signature + * of the same message given a single initial signature without knowing + * the key by setting s to its additive inverse mod-order, 'flipping' the + * sign of the random point R which is not included in the signature. + * Since the forgery is of the same message this isn't universally + * problematic, but in systems where message malleability or uniqueness + * of signatures is important this can cause issues. This forgery can be + * blocked by all verifiers forcing signers to use a canonical form. The + * lower-S form reduces the size of signatures slightly on average when + * variable length encodings (such as DER) are used and is cheap to + * verify, making it a good choice. Security of always using lower-S is + * assured because anyone can trivially modify a signature after the + * fact to enforce this property. Adjusting it inside the signing + * function avoids the need to re-serialize or have curve specific + * constants outside of the library. By always using a canonical form + * even in applications where it isn't needed it becomes possible to + * impose a requirement later if a need is discovered. + * No other forms of ECDSA malleability are known and none seem likely, + * but there is no formal proof that ECDSA, even with this additional + * restriction, is free of other malleability. Commonly used serialization + * schemes will also accept various non-unique encodings, so care should + * be taken when this property is required for an application. + */ +int secp256k1_ecdsa_sign( + const secp256k1_context_t* ctx, + const unsigned char *msg32, + secp256k1_ecdsa_signature_t *sig, + const unsigned char *seckey, + secp256k1_nonce_function_t noncefp, + const void *ndata +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Recover an ECDSA public key from a signature. + * Returns: 1: public key successfully recovered (which guarantees a correct signature). + * 0: otherwise. + * In: ctx: pointer to a context object, initialized for verification (cannot be NULL) + * msg32: the 32-byte message hash assumed to be signed (cannot be NULL) + * sig64: pointer to initialized signature that supports pubkey recovery (cannot be NULL) + * Out: pubkey: pointer to the recoved public key (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_recover( + const secp256k1_context_t* ctx, + const unsigned char *msg32, + const secp256k1_ecdsa_signature_t *sig, + secp256k1_pubkey_t *pubkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Verify an ECDSA secret key. + * Returns: 1: secret key is valid + * 0: secret key is invalid + * In: ctx: pointer to a context object (cannot be NULL) + * seckey: pointer to a 32-byte secret key (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_seckey_verify( + const secp256k1_context_t* ctx, + const unsigned char *seckey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Compute the public key for a secret key. + * In: ctx: pointer to a context object, initialized for signing (cannot be NULL) + * seckey: pointer to a 32-byte private key (cannot be NULL) + * Out: pubkey: pointer to the created public key (cannot be NULL) + * Returns: 1: secret was valid, public key stores + * 0: secret was invalid, try again + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_create( + const secp256k1_context_t* ctx, + secp256k1_pubkey_t *pubkey, + const unsigned char *seckey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Export a private key in DER format. + * In: ctx: pointer to a context object, initialized for signing (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_export( + const secp256k1_context_t* ctx, + const unsigned char *seckey, + unsigned char *privkey, + int *privkeylen, + int compressed +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Import a private key in DER format. */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_import( + const secp256k1_context_t* ctx, + unsigned char *seckey, + const unsigned char *privkey, + int privkeylen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a private key by adding tweak to it. */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_tweak_add( + const secp256k1_context_t* ctx, + unsigned char *seckey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a public key by adding tweak times the generator to it. + * In: ctx: pointer to a context object, initialized for verification (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_tweak_add( + const secp256k1_context_t* ctx, + secp256k1_pubkey_t *pubkey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a private key by multiplying it with tweak. */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_tweak_mul( + const secp256k1_context_t* ctx, + unsigned char *seckey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a public key by multiplying it with tweak. + * In: ctx: pointer to a context object, initialized for verification (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_tweak_mul( + const secp256k1_context_t* ctx, + secp256k1_pubkey_t *pubkey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Updates the context randomization. + * Returns: 1: randomization successfully updated + * 0: error + * In: ctx: pointer to a context object (cannot be NULL) + * seed32: pointer to a 32-byte random seed (NULL resets to initial state) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_context_randomize( + secp256k1_context_t* ctx, + const unsigned char *seed32 +) SECP256K1_ARG_NONNULL(1); + +/** Add a number of public keys together. + * Returns: 1: the sum of the public keys is valid. + * 0: the sum of the public keys is not valid. + * In: ctx: pointer to a context object + * out: pointer to pubkey for placing the resulting public key + * (cannot be NULL) + * n: the number of public keys to add together (must be at least 1) + * ins: pointer to array of pointers to public keys (cannot be NULL) + * Use secp256k1_ec_pubkey_compress and secp256k1_ec_pubkey_decompress if the + * uncompressed format is needed. + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_combine( + const secp256k1_context_t* ctx, + secp256k1_pubkey_t *out, + int n, + const secp256k1_pubkey_t * const * ins +) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/crypto777/secp256k1/secp256k1_ecdh.h b/crypto777/secp256k1/secp256k1_ecdh.h new file mode 100644 index 000000000..671c393fa --- /dev/null +++ b/crypto777/secp256k1/secp256k1_ecdh.h @@ -0,0 +1,30 @@ +#ifndef _SECP256K1_ECDH_ +# define _SECP256K1_ECDH_ + +# include "secp256k1.h" + +# ifdef __cplusplus +extern "C" { +# endif + +/** Compute an EC Diffie-Hellman secret in constant time + * Returns: 1: exponentiation was successful + * 0: scalar was invalid (zero or overflow) + * In: ctx: pointer to a context object (cannot be NULL) + * point: pointer to a public point + * scalar: a 32-byte scalar with which to multiply the point + * Out: result: a 32-byte array which will be populated by an ECDH + * secret computed from the point and scalar + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdh( + const secp256k1_context_t* ctx, + unsigned char *result, + const secp256k1_pubkey_t *point, + const unsigned char *scalar +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/crypto777/secp256k1/secp256k1_rangeproof.h b/crypto777/secp256k1/secp256k1_rangeproof.h new file mode 100644 index 000000000..02d66fcc1 --- /dev/null +++ b/crypto777/secp256k1/secp256k1_rangeproof.h @@ -0,0 +1,186 @@ +#ifndef _SECP256K1_RANGEPROOF_ +# define _SECP256K1_RANGEPROOF_ + +# include "secp256k1.h" + +# ifdef __cplusplus +extern "C" { +# endif + +#include + +/** Initialize a context for usage with Pedersen commitments. */ +int secp256k1_pedersen_context_initialize(secp256k1_context_t* ctx); + +/** Generate a pedersen commitment. + * Returns 1: commitment successfully created. + * 0: error + * In: ctx: pointer to a context object, initialized for signing and Pedersen commitment (cannot be NULL) + * blind: pointer to a 32-byte blinding factor (cannot be NULL) + * value: unsigned 64-bit integer value to commit to. + * Out: commit: pointer to a 33-byte array for the commitment (cannot be NULL) + * + * Blinding factors can be generated and verified in the same way as secp256k1 private keys for ECDSA. + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_pedersen_commit( + const secp256k1_context_t* ctx, + unsigned char *commit, + unsigned char *blind, + uint64_t value +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Computes the sum of multiple positive and negative blinding factors. + * Returns 1: sum successfully computed. + * 0: error + * In: ctx: pointer to a context object (cannot be NULL) + * blinds: pointer to pointers to 32-byte character arrays for blinding factors. (cannot be NULL) + * n: number of factors pointed to by blinds. + * nneg: how many of the initial factors should be treated with a positive sign. + * Out: blind_out: pointer to a 32-byte array for the sum (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_pedersen_blind_sum( + const secp256k1_context_t* ctx, + unsigned char *blind_out, + const unsigned char * const *blinds, + int n, + int npositive +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Verify a tally of pedersen commitments + * Returns 1: commitments successfully sum to zero. + * 0: Commitments do not sum to zero or other error. + * In: ctx: pointer to a context object, initialized for Pedersen commitment (cannot be NULL) + * commits: pointer to pointers to 33-byte character arrays for the commitments. (cannot be NULL if pcnt is non-zero) + * pcnt: number of commitments pointed to by commits. + * ncommits: pointer to pointers to 33-byte character arrays for negative commitments. (cannot be NULL if ncnt is non-zero) + * ncnt: number of commitments pointed to by ncommits. + * excess: signed 64bit amount to add to the total to bring it to zero, can be negative. + * + * This computes sum(commit[0..pcnt)) - sum(ncommit[0..ncnt)) - excess*H == 0. + * + * A pedersen commitment is xG + vH where G and H are generators for the secp256k1 group and x is a blinding factor, + * while v is the committed value. For a collection of commitments to sum to zero both their blinding factors and + * values must sum to zero. + * + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_pedersen_verify_tally( + const secp256k1_context_t* ctx, + const unsigned char * const *commits, + int pcnt, + const unsigned char * const *ncommits, + int ncnt, + int64_t excess +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4); + +/** Initialize a context for usage with Pedersen commitments. */ +int secp256k1_rangeproof_context_initialize(secp256k1_context_t* ctx); + +/** Verify a proof that a committed value is within a range. + * Returns 1: Value is within the range [0..2^64), the specifically proven range is in the min/max value outputs. + * 0: Proof failed or other error. + * In: ctx: pointer to a context object, initialized for range-proof and commitment (cannot be NULL) + * commit: the 33-byte commitment being proved. (cannot be NULL) + * proof: pointer to character array with the proof. (cannot be NULL) + * plen: length of proof in bytes. + * Out: min_value: pointer to a unsigned int64 which will be updated with the minimum value that commit could have. (cannot be NULL) + * max_value: pointer to a unsigned int64 which will be updated with the maximum value that commit could have. (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_rangeproof_verify( + const secp256k1_context_t* ctx, + uint64_t *min_value, + uint64_t *max_value, + const unsigned char *commit, + const unsigned char *proof, + int plen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5); + +/** Verify a range proof proof and rewind the proof to recover information sent by its author. + * Returns 1: Value is within the range [0..2^64), the specifically proven range is in the min/max value outputs, and the value and blinding were recovered. + * 0: Proof failed, rewind failed, or other error. + * In: ctx: pointer to a context object, initialized for range-proof and Pedersen commitment (cannot be NULL) + * commit: the 33-byte commitment being proved. (cannot be NULL) + * proof: pointer to character array with the proof. (cannot be NULL) + * plen: length of proof in bytes. + * nonce: 32-byte secret nonce used by the prover (cannot be NULL) + * In/Out: blind_out: storage for the 32-byte blinding factor used for the commitment + * value_out: pointer to an unsigned int64 which has the exact value of the commitment. + * message_out: pointer to a 4096 byte character array to receive message data from the proof author. + * outlen: length of message data written to message_out. + * min_value: pointer to an unsigned int64 which will be updated with the minimum value that commit could have. (cannot be NULL) + * max_value: pointer to an unsigned int64 which will be updated with the maximum value that commit could have. (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_rangeproof_rewind( + const secp256k1_context_t* ctx, + unsigned char *blind_out, + uint64_t *value_out, + unsigned char *message_out, + int *outlen, + const unsigned char *nonce, + uint64_t *min_value, + uint64_t *max_value, + const unsigned char *commit, + const unsigned char *proof, + int plen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(6) SECP256K1_ARG_NONNULL(7) SECP256K1_ARG_NONNULL(8) SECP256K1_ARG_NONNULL(9) SECP256K1_ARG_NONNULL(10); + +/** Author a proof that a committed value is within a range. + * Returns 1: Proof successfully created. + * 0: Error + * In: ctx: pointer to a context object, initialized for range-proof, signing, and Pedersen commitment (cannot be NULL) + * proof: pointer to array to receive the proof, can be up to 5134 bytes. (cannot be NULL) + * min_value: constructs a proof where the verifer can tell the minimum value is at least the specified amount. + * commit: 33-byte array with the commitment being proved. + * blind: 32-byte blinding factor used by commit. + * nonce: 32-byte secret nonce used to initialize the proof (value can be reverse-engineered out of the proof if this secret is known.) + * exp: Base-10 exponent. Digits below above will be made public, but the proof will be made smaller. Allowed range is -1 to 18. + * (-1 is a special case that makes the value public. 0 is the most private.) + * min_bits: Number of bits of the value to keep private. (0 = auto/minimal, - 64). + * value: Actual value of the commitment. + * In/out: plen: point to an integer with the size of the proof buffer and the size of the constructed proof. + * + * If min_value or exp is non-zero then the value must be on the range [0, 2^63) to prevent the proof range from spanning past 2^64. + * + * If exp is -1 the value is revealed by the proof (e.g. it proves that the proof is a blinding of a specific value, without revealing the blinding key.) + * + * This can randomly fail with probability around one in 2^100. If this happens, buy a lottery ticket and retry with a different nonce or blinding. + * + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_rangeproof_sign( + const secp256k1_context_t* ctx, + unsigned char *proof, + int *plen, + uint64_t min_value, + const unsigned char *commit, + const unsigned char *blind, + const unsigned char *nonce, + int exp, + int min_bits, + uint64_t value +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(5) SECP256K1_ARG_NONNULL(6) SECP256K1_ARG_NONNULL(7); + +/** Extract some basic information from a range-proof. + * Returns 1: Information successfully extracted. + * 0: Decode failed. + * In: ctx: pointer to a context object + * proof: pointer to character array with the proof. + * plen: length of proof in bytes. + * Out: exp: Exponent used in the proof (-1 means the value isn't private). + * mantissa: Number of bits covered by the proof. + * min_value: pointer to an unsigned int64 which will be updated with the minimum value that commit could have. (cannot be NULL) + * max_value: pointer to an unsigned int64 which will be updated with the maximum value that commit could have. (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_rangeproof_info( + const secp256k1_context_t* ctx, + int *exp, + int *mantissa, + uint64_t *min_value, + uint64_t *max_value, + const unsigned char *proof, + int plen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/crypto777/secp256k1/secp256k1_schnorr.h b/crypto777/secp256k1/secp256k1_schnorr.h new file mode 100644 index 000000000..ff7b977f4 --- /dev/null +++ b/crypto777/secp256k1/secp256k1_schnorr.h @@ -0,0 +1,173 @@ +#ifndef _SECP256K1_SCHNORR_ +# define _SECP256K1_SCHNORR_ + +# include "secp256k1.h" + +# ifdef __cplusplus +extern "C" { +# endif + +/** Create a signature using a custom EC-Schnorr-SHA256 construction. It + * produces non-malleable 64-byte signatures which support public key recovery + * batch validation, and multiparty signing. + * Returns: 1: signature created + * 0: the nonce generation function failed, or the private key was + * invalid. + * In: ctx: pointer to a context object, initialized for signing + * (cannot be NULL) + * msg32: the 32-byte message hash being signed (cannot be NULL) + * seckey: pointer to a 32-byte secret key (cannot be NULL) + * noncefp:pointer to a nonce generation function. If NULL, + * secp256k1_nonce_function_default is used + * ndata: pointer to arbitrary data used by the nonce generation + * function (can be NULL) + * Out: sig64: pointer to a 64-byte array where the signature will be + * placed (cannot be NULL) + */ +int secp256k1_schnorr_sign( + const secp256k1_context_t* ctx, + const unsigned char *msg32, + unsigned char *sig64, + const unsigned char *seckey, + secp256k1_nonce_function_t noncefp, + const void *ndata +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Verify a signature created by secp256k1_schnorr_sign. + * Returns: 1: correct signature + * 0: incorrect signature + * In: ctx: a secp256k1 context object, initialized for verification. + * msg32: the 32-byte message hash being verified (cannot be NULL) + * sig64: the 64-byte signature being verified (cannot be NULL) + * pubkey: the public key to verify with (cannot be NULL) + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_schnorr_verify( + const secp256k1_context_t* ctx, + const unsigned char *msg32, + const unsigned char *sig64, + const secp256k1_pubkey_t *pubkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Recover an EC public key from a Schnorr signature created using + * secp256k1_schnorr_sign. + * Returns: 1: public key successfully recovered (which guarantees a correct + * signature). + * 0: otherwise. + * In: ctx: pointer to a context object, initialized for + * verification (cannot be NULL) + * msg32: the 32-byte message hash assumed to be signed (cannot + * be NULL) + * sig64: signature as 64 byte array (cannot be NULL) + * Out: pubkey: pointer to a pubkey to set to the recovered public key + * (cannot be NULL). + */ +int secp256k1_schnorr_recover( + const secp256k1_context_t* ctx, + const unsigned char *msg32, + const unsigned char *sig64, + secp256k1_pubkey_t *pubkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Generate a nonce pair deterministically for use with + * secp256k1_schnorr_partial_sign. + * Returns: 1: valid nonce pair was generated. + * 0: otherwise (nonce generation function failed) + * In: ctx: pointer to a context object, initialized for signing + * (cannot be NULL) + * msg32: the 32-byte message hash assumed to be signed (cannot + * be NULL) + * sec32: the 32-byte private key (cannot be NULL) + * noncefp: pointer to a nonce generation function. If NULL, + * secp256k1_nonce_function_default is used + * noncedata: pointer to arbitrary data used by the nonce generation + * function (can be NULL) + * Out: pubnonce: public side of the nonce (cannot be NULL) + * privnonce32: private side of the nonce (32 byte) (cannot be NULL) + * + * Do not use the output as a private/public key pair for signing/validation. + */ +int secp256k1_schnorr_generate_nonce_pair( + const secp256k1_context_t* ctx, + const unsigned char *msg32, + const unsigned char *sec32, + secp256k1_nonce_function_t noncefp, + const void* noncedata, + secp256k1_pubkey_t *pubnonce, + unsigned char *privnonce32 +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(6) SECP256K1_ARG_NONNULL(7); + +/** Produce a partial Schnorr signature, which can be combined using + * secp256k1_schnorr_partial_combine, to end up with a full signature that is + * verifiable using secp256k1_schnorr_verify. + * Returns: 1: signature created succesfully. + * 0: no valid signature exists with this combination of keys, nonces + * and message (chance around 1 in 2^128) + * -1: invalid private key, nonce, or public nonces. + * In: ctx: pointer to context object, initialized for signing (cannot + * be NULL) + * msg32: pointer to 32-byte message to sign + * sec32: pointer to 32-byte private key + * secnonce32: pointer to 32-byte array containing our nonce + * pubnonce_others: pointer to pubkey containing the sum of the other's + * nonces (see secp256k1_ec_pubkey_combine) + * Out: sig64: pointer to 64-byte array to put partial signature in + * + * The intended procedure for creating a multiparty signature is: + * - Each signer S[i] with private key x[i] and public key Q[i] runs + * secp256k1_schnorr_generate_nonce_pair to produce a pair (k[i],R[i]) of + * private/public nonces. + * - All signers communicate their public nonces to each other (revealing your + * private nonce can lead to discovery of your private key, so it should be + * considered secret). + * - All signers combine all the public nonces they received (excluding their + * own) using secp256k1_ec_pubkey_combine to obtain an + * Rall[i] = sum(R[0..i-1,i+1..n]). + * - All signers produce a partial signature using + * secp256k1_schnorr_partial_sign, passing in their own private key x[i], + * their own private nonce k[i], and the sum of the others' public nonces + * Rall[i]. + * - All signers communicate their partial signatures to each other. + * - Someone combines all partial signatures using + * secp256k1_schnorr_partial_combine, to obtain a full signature. + * - The resulting signature is validatable using secp256k1_schnorr_verify, with + * public key equal to the result of secp256k1_ec_pubkey_combine of the + * signers' public keys (sum(Q[0..n])). + * + * Note that secp256k1_schnorr_partial_combine and secp256k1_ec_pubkey_combine + * function take their arguments in any order, and it is possible to + * pre-combine several inputs already with one call, and add more inputs later + * by calling the function again (they are commutative and associative). + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_schnorr_partial_sign( + const secp256k1_context_t* ctx, + const unsigned char *msg32, + unsigned char *sig64, + const unsigned char *sec32, + const unsigned char *secnonce32, + const secp256k1_pubkey_t *pubnonce_others +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5) SECP256K1_ARG_NONNULL(6); + +/** Combine multiple Schnorr partial signatures. + * Returns: 1: the passed signatures were succesfully combined. + * 0: the resulting signature is not valid (chance of 1 in 2^256) + * -1: some inputs were invalid, or the signatures were not created + * using the same set of nonces + * In: ctx: pointer to a context object + * sig64: pointer to a 64-byte array to place the combined signature + * (cannot be NULL) + * n: the number of signatures to combine (at least 1) + * Out: sig64sin: pointer to an array of n pointers to 64-byte input + * signatures + */ +SECP256K1_WARN_UNUSED_RESULT int secp256k1_schnorr_partial_combine( + const secp256k1_context_t* ctx, + unsigned char *sig64, + int n, + const unsigned char * const * sig64sin +) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/crypto777/secp256k1/testrand.h b/crypto777/secp256k1/testrand.h new file mode 100644 index 000000000..a3d73dce7 --- /dev/null +++ b/crypto777/secp256k1/testrand.h @@ -0,0 +1,31 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_TESTRAND_H_ +#define _SECP256K1_TESTRAND_H_ + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +/* A non-cryptographic RNG used only for test infrastructure. */ + +/** Seed the pseudorandom number generator for testing. */ +SECP256K1_INLINE static void secp256k1_rand_seed(const unsigned char *seed16); + +/** Generate a pseudorandom 32-bit number. */ +static uint32_t secp256k1_rand32(void); + +/** Generate a pseudorandom 32-byte array. */ +static void secp256k1_rand256(unsigned char *b32); + +/** Generate a pseudorandom 32-byte array with long sequences of zero and one bits. */ +static void secp256k1_rand256_test(unsigned char *b32); + +/** Generate a pseudorandom 64-bit integer in the range min..max, inclusive. */ +static int64_t secp256k1_rands64(uint64_t min, uint64_t max); + +#endif diff --git a/crypto777/secp256k1/testrand_impl.h b/crypto777/secp256k1/testrand_impl.h new file mode 100644 index 000000000..af70471cd --- /dev/null +++ b/crypto777/secp256k1/testrand_impl.h @@ -0,0 +1,77 @@ +/********************************************************************** + * Copyright (c) 2013-2015 Pieter Wuille, Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_TESTRAND_IMPL_H_ +#define _SECP256K1_TESTRAND_IMPL_H_ + +#include +#include + +#include "testrand.h" +#include "hash.h" + +static secp256k1_rfc6979_hmac_sha256_t secp256k1_test_rng; +static uint32_t secp256k1_test_rng_precomputed[8]; +static int secp256k1_test_rng_precomputed_used = 8; + +SECP256K1_INLINE static void secp256k1_rand_seed(const unsigned char *seed16) { + secp256k1_rfc6979_hmac_sha256_initialize(&secp256k1_test_rng, seed16, 16); +} + +SECP256K1_INLINE static uint32_t secp256k1_rand32(void) { + if (secp256k1_test_rng_precomputed_used == 8) { + secp256k1_rfc6979_hmac_sha256_generate(&secp256k1_test_rng, (unsigned char*)(&secp256k1_test_rng_precomputed[0]), sizeof(secp256k1_test_rng_precomputed)); + secp256k1_test_rng_precomputed_used = 0; + } + return secp256k1_test_rng_precomputed[secp256k1_test_rng_precomputed_used++]; +} + +static void secp256k1_rand256(unsigned char *b32) { + secp256k1_rfc6979_hmac_sha256_generate(&secp256k1_test_rng, b32, 32); +} + +static void secp256k1_rand256_test(unsigned char *b32) { + int bits=0; + uint64_t ent = 0; + int entleft = 0; + memset(b32, 0, 32); + while (bits < 256) { + int now; + uint32_t val; + if (entleft < 12) { + ent |= ((uint64_t)secp256k1_rand32()) << entleft; + entleft += 32; + } + now = 1 + ((ent % 64)*((ent >> 6) % 32)+16)/31; + val = 1 & (ent >> 11); + ent >>= 12; + entleft -= 12; + while (now > 0 && bits < 256) { + b32[bits / 8] |= val << (bits % 8); + now--; + bits++; + } + } +} + +SECP256K1_INLINE static int64_t secp256k1_rands64(uint64_t min, uint64_t max) { + uint64_t range; + uint64_t r; + uint64_t clz; + VERIFY_CHECK(max >= min); + if (max == min) { + return min; + } + range = max - min; + clz = secp256k1_clz64_var(range); + do { + r = ((uint64_t)secp256k1_rand32() << 32) | secp256k1_rand32(); + r >>= clz; + } while (r > range); + return min + (int64_t)r; +} + +#endif diff --git a/crypto777/secp256k1/tests.c b/crypto777/secp256k1/tests.c new file mode 100644 index 000000000..2d5f7c146 --- /dev/null +++ b/crypto777/secp256k1/tests.c @@ -0,0 +1,2588 @@ +/********************************************************************** + * Copyright (c) 2013-2015 Pieter Wuille, Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include +#include + +#include + +#include "include/secp256k1.h" +#include "secp256k1.c" +#include "testrand_impl.h" + +#ifdef ENABLE_OPENSSL_TESTS +#include "openssl/bn.h" +#include "openssl/ec.h" +#include "openssl/ecdsa.h" +#include "openssl/obj_mac.h" +#endif + +static int count = 64; +static secp256k1_context_t *ctx = NULL; + +void random_field_element_test(secp256k1_fe_t *fe) { + do { + unsigned char b32[32]; + secp256k1_rand256_test(b32); + if (secp256k1_fe_set_b32(fe, b32)) { + break; + } + } while(1); +} + +void random_field_element_magnitude(secp256k1_fe_t *fe) { + secp256k1_fe_t zero; + int n = secp256k1_rand32() % 9; + secp256k1_fe_normalize(fe); + if (n == 0) { + return; + } + secp256k1_fe_clear(&zero); + secp256k1_fe_negate(&zero, &zero, 0); + secp256k1_fe_mul_int(&zero, n - 1); + secp256k1_fe_add(fe, &zero); + VERIFY_CHECK(fe->magnitude == n); +} + +void random_group_element_test(secp256k1_ge_t *ge) { + secp256k1_fe_t fe; + do { + random_field_element_test(&fe); + if (secp256k1_ge_set_xo_var(ge, &fe, secp256k1_rand32() & 1)) { + secp256k1_fe_normalize(&ge->y); + break; + } + } while(1); +} + +void random_group_element_jacobian_test(secp256k1_gej_t *gej, const secp256k1_ge_t *ge) { + secp256k1_fe_t z2, z3; + do { + random_field_element_test(&gej->z); + if (!secp256k1_fe_is_zero(&gej->z)) { + break; + } + } while(1); + secp256k1_fe_sqr(&z2, &gej->z); + secp256k1_fe_mul(&z3, &z2, &gej->z); + secp256k1_fe_mul(&gej->x, &ge->x, &z2); + secp256k1_fe_mul(&gej->y, &ge->y, &z3); + gej->infinity = ge->infinity; +} + +void random_scalar_order_test(secp256k1_scalar_t *num) { + do { + unsigned char b32[32]; + int overflow = 0; + secp256k1_rand256_test(b32); + secp256k1_scalar_set_b32(num, b32, &overflow); + if (overflow || secp256k1_scalar_is_zero(num)) { + continue; + } + break; + } while(1); +} + +void random_scalar_order(secp256k1_scalar_t *num) { + do { + unsigned char b32[32]; + int overflow = 0; + secp256k1_rand256(b32); + secp256k1_scalar_set_b32(num, b32, &overflow); + if (overflow || secp256k1_scalar_is_zero(num)) { + continue; + } + break; + } while(1); +} + +void run_util_tests(void) { + int i; + uint64_t r; + uint64_t r2; + uint64_t r3; + int64_t s; + CHECK(secp256k1_clz64_var(0) == 64); + CHECK(secp256k1_clz64_var(1) == 63); + CHECK(secp256k1_clz64_var(2) == 62); + CHECK(secp256k1_clz64_var(3) == 62); + CHECK(secp256k1_clz64_var(~0ULL) == 0); + CHECK(secp256k1_clz64_var((~0ULL) - 1) == 0); + CHECK(secp256k1_clz64_var((~0ULL) >> 1) == 1); + CHECK(secp256k1_clz64_var((~0ULL) >> 2) == 2); + CHECK(secp256k1_sign_and_abs64(&r, INT64_MAX) == 0); + CHECK(r == INT64_MAX); + CHECK(secp256k1_sign_and_abs64(&r, INT64_MAX - 1) == 0); + CHECK(r == INT64_MAX - 1); + CHECK(secp256k1_sign_and_abs64(&r, INT64_MIN) == 1); + CHECK(r == (uint64_t)INT64_MAX + 1); + CHECK(secp256k1_sign_and_abs64(&r, INT64_MIN + 1) == 1); + CHECK(r == (uint64_t)INT64_MAX); + CHECK(secp256k1_sign_and_abs64(&r, 0) == 0); + CHECK(r == 0); + CHECK(secp256k1_sign_and_abs64(&r, 1) == 0); + CHECK(r == 1); + CHECK(secp256k1_sign_and_abs64(&r, -1) == 1); + CHECK(r == 1); + CHECK(secp256k1_sign_and_abs64(&r, 2) == 0); + CHECK(r == 2); + CHECK(secp256k1_sign_and_abs64(&r, -2) == 1); + CHECK(r == 2); + for (i = 0; i < 10; i++) { + CHECK(secp256k1_clz64_var((~0ULL) - secp256k1_rand32()) == 0); + r = ((uint64_t)secp256k1_rand32() << 32) | secp256k1_rand32(); + r2 = secp256k1_rands64(0, r); + CHECK(r2 <= r); + r3 = secp256k1_rands64(r2, r); + CHECK((r3 >= r2) && (r3 <= r)); + r = secp256k1_rands64(0, INT64_MAX); + s = (int64_t)r * (secp256k1_rand32()&1?-1:1); + CHECK(secp256k1_sign_and_abs64(&r2, s) == (s < 0)); + CHECK(r2 == r); + } +} + +void run_context_tests(void) { + secp256k1_context_t *none = secp256k1_context_create(0); + secp256k1_context_t *sign = secp256k1_context_create(SECP256K1_CONTEXT_SIGN); + secp256k1_context_t *vrfy = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY); + secp256k1_context_t *both = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); + + secp256k1_gej_t pubj; + secp256k1_ge_t pub; + secp256k1_scalar_t msg, key, nonce; + secp256k1_scalar_t sigr, sigs; + + /*** clone and destroy all of them to make sure cloning was complete ***/ + { + secp256k1_context_t *ctx_tmp; + + ctx_tmp = none; none = secp256k1_context_clone(none); secp256k1_context_destroy(ctx_tmp); + ctx_tmp = sign; sign = secp256k1_context_clone(sign); secp256k1_context_destroy(ctx_tmp); + ctx_tmp = vrfy; vrfy = secp256k1_context_clone(vrfy); secp256k1_context_destroy(ctx_tmp); + ctx_tmp = both; both = secp256k1_context_clone(both); secp256k1_context_destroy(ctx_tmp); + } + + /*** attempt to use them ***/ + random_scalar_order_test(&msg); + random_scalar_order_test(&key); + secp256k1_ecmult_gen(&both->ecmult_gen_ctx, &pubj, &key); + secp256k1_ge_set_gej(&pub, &pubj); + + /* obtain a working nonce */ + do { + random_scalar_order_test(&nonce); + } while(!secp256k1_ecdsa_sig_sign(&both->ecmult_gen_ctx, &sigr, &sigs, &key, &msg, &nonce, NULL)); + + /* try signing */ + CHECK(secp256k1_ecdsa_sig_sign(&sign->ecmult_gen_ctx, &sigr, &sigs, &key, &msg, &nonce, NULL)); + CHECK(secp256k1_ecdsa_sig_sign(&both->ecmult_gen_ctx, &sigr, &sigs, &key, &msg, &nonce, NULL)); + + /* try verifying */ + CHECK(secp256k1_ecdsa_sig_verify(&vrfy->ecmult_ctx, &sigr, &sigs, &pub, &msg)); + CHECK(secp256k1_ecdsa_sig_verify(&both->ecmult_ctx, &sigr, &sigs, &pub, &msg)); + + /* cleanup */ + secp256k1_context_destroy(none); + secp256k1_context_destroy(sign); + secp256k1_context_destroy(vrfy); + secp256k1_context_destroy(both); +} + +/***** HASH TESTS *****/ + +void run_sha256_tests(void) { + static const char *inputs[8] = { + "", "abc", "message digest", "secure hash algorithm", "SHA256 is considered to be safe", + "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "For this sample, this 63-byte string will be used as input data", + "This is exactly 64 bytes long, not counting the terminating byte" + }; + static const unsigned char outputs[8][32] = { + {0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}, + {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad}, + {0xf7, 0x84, 0x6f, 0x55, 0xcf, 0x23, 0xe1, 0x4e, 0xeb, 0xea, 0xb5, 0xb4, 0xe1, 0x55, 0x0c, 0xad, 0x5b, 0x50, 0x9e, 0x33, 0x48, 0xfb, 0xc4, 0xef, 0xa3, 0xa1, 0x41, 0x3d, 0x39, 0x3c, 0xb6, 0x50}, + {0xf3, 0x0c, 0xeb, 0x2b, 0xb2, 0x82, 0x9e, 0x79, 0xe4, 0xca, 0x97, 0x53, 0xd3, 0x5a, 0x8e, 0xcc, 0x00, 0x26, 0x2d, 0x16, 0x4c, 0xc0, 0x77, 0x08, 0x02, 0x95, 0x38, 0x1c, 0xbd, 0x64, 0x3f, 0x0d}, + {0x68, 0x19, 0xd9, 0x15, 0xc7, 0x3f, 0x4d, 0x1e, 0x77, 0xe4, 0xe1, 0xb5, 0x2d, 0x1f, 0xa0, 0xf9, 0xcf, 0x9b, 0xea, 0xea, 0xd3, 0x93, 0x9f, 0x15, 0x87, 0x4b, 0xd9, 0x88, 0xe2, 0xa2, 0x36, 0x30}, + {0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8, 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39, 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67, 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1}, + {0xf0, 0x8a, 0x78, 0xcb, 0xba, 0xee, 0x08, 0x2b, 0x05, 0x2a, 0xe0, 0x70, 0x8f, 0x32, 0xfa, 0x1e, 0x50, 0xc5, 0xc4, 0x21, 0xaa, 0x77, 0x2b, 0xa5, 0xdb, 0xb4, 0x06, 0xa2, 0xea, 0x6b, 0xe3, 0x42}, + {0xab, 0x64, 0xef, 0xf7, 0xe8, 0x8e, 0x2e, 0x46, 0x16, 0x5e, 0x29, 0xf2, 0xbc, 0xe4, 0x18, 0x26, 0xbd, 0x4c, 0x7b, 0x35, 0x52, 0xf6, 0xb3, 0x82, 0xa9, 0xe7, 0xd3, 0xaf, 0x47, 0xc2, 0x45, 0xf8} + }; + int i; + for (i = 0; i < 8; i++) { + unsigned char out[32]; + secp256k1_sha256_t hasher; + secp256k1_sha256_initialize(&hasher); + secp256k1_sha256_write(&hasher, (const unsigned char*)(inputs[i]), strlen(inputs[i])); + secp256k1_sha256_finalize(&hasher, out); + CHECK(memcmp(out, outputs[i], 32) == 0); + if (strlen(inputs[i]) > 0) { + int split = secp256k1_rand32() % strlen(inputs[i]); + secp256k1_sha256_initialize(&hasher); + secp256k1_sha256_write(&hasher, (const unsigned char*)(inputs[i]), split); + secp256k1_sha256_write(&hasher, (const unsigned char*)(inputs[i] + split), strlen(inputs[i]) - split); + secp256k1_sha256_finalize(&hasher, out); + CHECK(memcmp(out, outputs[i], 32) == 0); + } + } +} + +void run_hmac_sha256_tests(void) { + static const char *keys[6] = { + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", + "\x4a\x65\x66\x65", + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", + "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19", + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + }; + static const char *inputs[6] = { + "\x48\x69\x20\x54\x68\x65\x72\x65", + "\x77\x68\x61\x74\x20\x64\x6f\x20\x79\x61\x20\x77\x61\x6e\x74\x20\x66\x6f\x72\x20\x6e\x6f\x74\x68\x69\x6e\x67\x3f", + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd", + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd", + "\x54\x65\x73\x74\x20\x55\x73\x69\x6e\x67\x20\x4c\x61\x72\x67\x65\x72\x20\x54\x68\x61\x6e\x20\x42\x6c\x6f\x63\x6b\x2d\x53\x69\x7a\x65\x20\x4b\x65\x79\x20\x2d\x20\x48\x61\x73\x68\x20\x4b\x65\x79\x20\x46\x69\x72\x73\x74", + "\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x74\x65\x73\x74\x20\x75\x73\x69\x6e\x67\x20\x61\x20\x6c\x61\x72\x67\x65\x72\x20\x74\x68\x61\x6e\x20\x62\x6c\x6f\x63\x6b\x2d\x73\x69\x7a\x65\x20\x6b\x65\x79\x20\x61\x6e\x64\x20\x61\x20\x6c\x61\x72\x67\x65\x72\x20\x74\x68\x61\x6e\x20\x62\x6c\x6f\x63\x6b\x2d\x73\x69\x7a\x65\x20\x64\x61\x74\x61\x2e\x20\x54\x68\x65\x20\x6b\x65\x79\x20\x6e\x65\x65\x64\x73\x20\x74\x6f\x20\x62\x65\x20\x68\x61\x73\x68\x65\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x62\x65\x69\x6e\x67\x20\x75\x73\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x48\x4d\x41\x43\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d\x2e" + }; + static const unsigned char outputs[6][32] = { + {0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53, 0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b, 0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7, 0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7}, + {0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e, 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7, 0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83, 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43}, + {0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46, 0x85, 0x4d, 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7, 0x29, 0x59, 0x09, 0x8b, 0x3e, 0xf8, 0xc1, 0x22, 0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5, 0x65, 0xfe}, + {0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e, 0xa4, 0xcc, 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a, 0x85, 0xf0, 0xfa, 0xa3, 0xe5, 0x78, 0xf8, 0x07, 0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29, 0x66, 0x5b}, + {0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f, 0x0d, 0x8a, 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f, 0x8e, 0x0b, 0xc6, 0x21, 0x37, 0x28, 0xc5, 0x14, 0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3, 0x7f, 0x54}, + {0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb, 0x27, 0x63, 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44, 0xbf, 0xdc, 0x63, 0x64, 0x4f, 0x07, 0x13, 0x93, 0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a, 0x35, 0xe2} + }; + int i; + for (i = 0; i < 6; i++) { + secp256k1_hmac_sha256_t hasher; + unsigned char out[32]; + secp256k1_hmac_sha256_initialize(&hasher, (const unsigned char*)(keys[i]), strlen(keys[i])); + secp256k1_hmac_sha256_write(&hasher, (const unsigned char*)(inputs[i]), strlen(inputs[i])); + secp256k1_hmac_sha256_finalize(&hasher, out); + CHECK(memcmp(out, outputs[i], 32) == 0); + if (strlen(inputs[i]) > 0) { + int split = secp256k1_rand32() % strlen(inputs[i]); + secp256k1_hmac_sha256_initialize(&hasher, (const unsigned char*)(keys[i]), strlen(keys[i])); + secp256k1_hmac_sha256_write(&hasher, (const unsigned char*)(inputs[i]), split); + secp256k1_hmac_sha256_write(&hasher, (const unsigned char*)(inputs[i] + split), strlen(inputs[i]) - split); + secp256k1_hmac_sha256_finalize(&hasher, out); + CHECK(memcmp(out, outputs[i], 32) == 0); + } + } +} + +void run_rfc6979_hmac_sha256_tests(void) { + static const unsigned char key1[65] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x00, 0x4b, 0xf5, 0x12, 0x2f, 0x34, 0x45, 0x54, 0xc5, 0x3b, 0xde, 0x2e, 0xbb, 0x8c, 0xd2, 0xb7, 0xe3, 0xd1, 0x60, 0x0a, 0xd6, 0x31, 0xc3, 0x85, 0xa5, 0xd7, 0xcc, 0xe2, 0x3c, 0x77, 0x85, 0x45, 0x9a, 0}; + static const unsigned char out1[3][32] = { + {0x4f, 0xe2, 0x95, 0x25, 0xb2, 0x08, 0x68, 0x09, 0x15, 0x9a, 0xcd, 0xf0, 0x50, 0x6e, 0xfb, 0x86, 0xb0, 0xec, 0x93, 0x2c, 0x7b, 0xa4, 0x42, 0x56, 0xab, 0x32, 0x1e, 0x42, 0x1e, 0x67, 0xe9, 0xfb}, + {0x2b, 0xf0, 0xff, 0xf1, 0xd3, 0xc3, 0x78, 0xa2, 0x2d, 0xc5, 0xde, 0x1d, 0x85, 0x65, 0x22, 0x32, 0x5c, 0x65, 0xb5, 0x04, 0x49, 0x1a, 0x0c, 0xbd, 0x01, 0xcb, 0x8f, 0x3a, 0xa6, 0x7f, 0xfd, 0x4a}, + {0xf5, 0x28, 0xb4, 0x10, 0xcb, 0x54, 0x1f, 0x77, 0x00, 0x0d, 0x7a, 0xfb, 0x6c, 0x5b, 0x53, 0xc5, 0xc4, 0x71, 0xea, 0xb4, 0x3e, 0x46, 0x6d, 0x9a, 0xc5, 0x19, 0x0c, 0x39, 0xc8, 0x2f, 0xd8, 0x2e} + }; + + static const unsigned char key2[64] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}; + static const unsigned char out2[3][32] = { + {0x9c, 0x23, 0x6c, 0x16, 0x5b, 0x82, 0xae, 0x0c, 0xd5, 0x90, 0x65, 0x9e, 0x10, 0x0b, 0x6b, 0xab, 0x30, 0x36, 0xe7, 0xba, 0x8b, 0x06, 0x74, 0x9b, 0xaf, 0x69, 0x81, 0xe1, 0x6f, 0x1a, 0x2b, 0x95}, + {0xdf, 0x47, 0x10, 0x61, 0x62, 0x5b, 0xc0, 0xea, 0x14, 0xb6, 0x82, 0xfe, 0xee, 0x2c, 0x9c, 0x02, 0xf2, 0x35, 0xda, 0x04, 0x20, 0x4c, 0x1d, 0x62, 0xa1, 0x53, 0x6c, 0x6e, 0x17, 0xae, 0xd7, 0xa9}, + {0x75, 0x97, 0x88, 0x7c, 0xbd, 0x76, 0x32, 0x1f, 0x32, 0xe3, 0x04, 0x40, 0x67, 0x9a, 0x22, 0xcf, 0x7f, 0x8d, 0x9d, 0x2e, 0xac, 0x39, 0x0e, 0x58, 0x1f, 0xea, 0x09, 0x1c, 0xe2, 0x02, 0xba, 0x94} + }; + + secp256k1_rfc6979_hmac_sha256_t rng; + unsigned char out[32]; + int i; + + secp256k1_rfc6979_hmac_sha256_initialize(&rng, key1, 64); + for (i = 0; i < 3; i++) { + secp256k1_rfc6979_hmac_sha256_generate(&rng, out, 32); + CHECK(memcmp(out, out1[i], 32) == 0); + } + secp256k1_rfc6979_hmac_sha256_finalize(&rng); + + secp256k1_rfc6979_hmac_sha256_initialize(&rng, key1, 65); + for (i = 0; i < 3; i++) { + secp256k1_rfc6979_hmac_sha256_generate(&rng, out, 32); + CHECK(memcmp(out, out1[i], 32) != 0); + } + secp256k1_rfc6979_hmac_sha256_finalize(&rng); + + secp256k1_rfc6979_hmac_sha256_initialize(&rng, key2, 64); + for (i = 0; i < 3; i++) { + secp256k1_rfc6979_hmac_sha256_generate(&rng, out, 32); + CHECK(memcmp(out, out2[i], 32) == 0); + } + secp256k1_rfc6979_hmac_sha256_finalize(&rng); +} + +/***** NUM TESTS *****/ + +#ifndef USE_NUM_NONE +void random_num_negate(secp256k1_num_t *num) { + if (secp256k1_rand32() & 1) { + secp256k1_num_negate(num); + } +} + +void random_num_order_test(secp256k1_num_t *num) { + secp256k1_scalar_t sc; + random_scalar_order_test(&sc); + secp256k1_scalar_get_num(num, &sc); +} + +void random_num_order(secp256k1_num_t *num) { + secp256k1_scalar_t sc; + random_scalar_order(&sc); + secp256k1_scalar_get_num(num, &sc); +} + +void test_num_negate(void) { + secp256k1_num_t n1; + secp256k1_num_t n2; + random_num_order_test(&n1); /* n1 = R */ + random_num_negate(&n1); + secp256k1_num_copy(&n2, &n1); /* n2 = R */ + secp256k1_num_sub(&n1, &n2, &n1); /* n1 = n2-n1 = 0 */ + CHECK(secp256k1_num_is_zero(&n1)); + secp256k1_num_copy(&n1, &n2); /* n1 = R */ + secp256k1_num_negate(&n1); /* n1 = -R */ + CHECK(!secp256k1_num_is_zero(&n1)); + secp256k1_num_add(&n1, &n2, &n1); /* n1 = n2+n1 = 0 */ + CHECK(secp256k1_num_is_zero(&n1)); + secp256k1_num_copy(&n1, &n2); /* n1 = R */ + secp256k1_num_negate(&n1); /* n1 = -R */ + CHECK(secp256k1_num_is_neg(&n1) != secp256k1_num_is_neg(&n2)); + secp256k1_num_negate(&n1); /* n1 = R */ + CHECK(secp256k1_num_eq(&n1, &n2)); +} + +void test_num_add_sub(void) { + secp256k1_num_t n1; + secp256k1_num_t n2; + secp256k1_num_t n1p2, n2p1, n1m2, n2m1; + int r = secp256k1_rand32(); + random_num_order_test(&n1); /* n1 = R1 */ + if (r & 1) { + random_num_negate(&n1); + } + random_num_order_test(&n2); /* n2 = R2 */ + if (r & 2) { + random_num_negate(&n2); + } + secp256k1_num_add(&n1p2, &n1, &n2); /* n1p2 = R1 + R2 */ + secp256k1_num_add(&n2p1, &n2, &n1); /* n2p1 = R2 + R1 */ + secp256k1_num_sub(&n1m2, &n1, &n2); /* n1m2 = R1 - R2 */ + secp256k1_num_sub(&n2m1, &n2, &n1); /* n2m1 = R2 - R1 */ + CHECK(secp256k1_num_eq(&n1p2, &n2p1)); + CHECK(!secp256k1_num_eq(&n1p2, &n1m2)); + secp256k1_num_negate(&n2m1); /* n2m1 = -R2 + R1 */ + CHECK(secp256k1_num_eq(&n2m1, &n1m2)); + CHECK(!secp256k1_num_eq(&n2m1, &n1)); + secp256k1_num_add(&n2m1, &n2m1, &n2); /* n2m1 = -R2 + R1 + R2 = R1 */ + CHECK(secp256k1_num_eq(&n2m1, &n1)); + CHECK(!secp256k1_num_eq(&n2p1, &n1)); + secp256k1_num_sub(&n2p1, &n2p1, &n2); /* n2p1 = R2 + R1 - R2 = R1 */ + CHECK(secp256k1_num_eq(&n2p1, &n1)); +} + +void run_num_smalltests(void) { + int i; + for (i = 0; i < 100*count; i++) { + test_num_negate(); + test_num_add_sub(); + } +} +#endif + +/***** SCALAR TESTS *****/ + +void scalar_test(void) { + secp256k1_scalar_t s; + secp256k1_scalar_t s1; + secp256k1_scalar_t s2; +#ifndef USE_NUM_NONE + secp256k1_num_t snum, s1num, s2num; + secp256k1_num_t order, half_order; +#endif + unsigned char c[32]; + + /* Set 's' to a random scalar, with value 'snum'. */ + random_scalar_order_test(&s); + + /* Set 's1' to a random scalar, with value 's1num'. */ + random_scalar_order_test(&s1); + + /* Set 's2' to a random scalar, with value 'snum2', and byte array representation 'c'. */ + random_scalar_order_test(&s2); + secp256k1_scalar_get_b32(c, &s2); + +#ifndef USE_NUM_NONE + secp256k1_scalar_get_num(&snum, &s); + secp256k1_scalar_get_num(&s1num, &s1); + secp256k1_scalar_get_num(&s2num, &s2); + + secp256k1_scalar_order_get_num(&order); + half_order = order; + secp256k1_num_shift(&half_order, 1); +#endif + + { + int i; + /* Test that fetching groups of 4 bits from a scalar and recursing n(i)=16*n(i-1)+p(i) reconstructs it. */ + secp256k1_scalar_t n; + secp256k1_scalar_set_int(&n, 0); + for (i = 0; i < 256; i += 4) { + secp256k1_scalar_t t; + int j; + secp256k1_scalar_set_int(&t, secp256k1_scalar_get_bits(&s, 256 - 4 - i, 4)); + for (j = 0; j < 4; j++) { + secp256k1_scalar_add(&n, &n, &n); + } + secp256k1_scalar_add(&n, &n, &t); + } + CHECK(secp256k1_scalar_eq(&n, &s)); + } + + { + /* Test that fetching groups of randomly-sized bits from a scalar and recursing n(i)=b*n(i-1)+p(i) reconstructs it. */ + secp256k1_scalar_t n; + int i = 0; + secp256k1_scalar_set_int(&n, 0); + while (i < 256) { + secp256k1_scalar_t t; + int j; + int now = (secp256k1_rand32() % 15) + 1; + if (now + i > 256) { + now = 256 - i; + } + secp256k1_scalar_set_int(&t, secp256k1_scalar_get_bits_var(&s, 256 - now - i, now)); + for (j = 0; j < now; j++) { + secp256k1_scalar_add(&n, &n, &n); + } + secp256k1_scalar_add(&n, &n, &t); + i += now; + } + CHECK(secp256k1_scalar_eq(&n, &s)); + } + +#ifndef USE_NUM_NONE + { + /* Test that adding the scalars together is equal to adding their numbers together modulo the order. */ + secp256k1_num_t rnum; + secp256k1_num_t r2num; + secp256k1_scalar_t r; + secp256k1_num_add(&rnum, &snum, &s2num); + secp256k1_num_mod(&rnum, &order); + secp256k1_scalar_add(&r, &s, &s2); + secp256k1_scalar_get_num(&r2num, &r); + CHECK(secp256k1_num_eq(&rnum, &r2num)); + } + + { + /* Test that multipying the scalars is equal to multiplying their numbers modulo the order. */ + secp256k1_scalar_t r; + secp256k1_num_t r2num; + secp256k1_num_t rnum; + secp256k1_num_mul(&rnum, &snum, &s2num); + secp256k1_num_mod(&rnum, &order); + secp256k1_scalar_mul(&r, &s, &s2); + secp256k1_scalar_get_num(&r2num, &r); + CHECK(secp256k1_num_eq(&rnum, &r2num)); + /* The result can only be zero if at least one of the factors was zero. */ + CHECK(secp256k1_scalar_is_zero(&r) == (secp256k1_scalar_is_zero(&s) || secp256k1_scalar_is_zero(&s2))); + /* The results can only be equal to one of the factors if that factor was zero, or the other factor was one. */ + CHECK(secp256k1_num_eq(&rnum, &snum) == (secp256k1_scalar_is_zero(&s) || secp256k1_scalar_is_one(&s2))); + CHECK(secp256k1_num_eq(&rnum, &s2num) == (secp256k1_scalar_is_zero(&s2) || secp256k1_scalar_is_one(&s))); + } + + { + secp256k1_scalar_t neg; + secp256k1_num_t negnum; + secp256k1_num_t negnum2; + /* Check that comparison with zero matches comparison with zero on the number. */ + CHECK(secp256k1_num_is_zero(&snum) == secp256k1_scalar_is_zero(&s)); + /* Check that comparison with the half order is equal to testing for high scalar. */ + CHECK(secp256k1_scalar_is_high(&s) == (secp256k1_num_cmp(&snum, &half_order) > 0)); + secp256k1_scalar_negate(&neg, &s); + secp256k1_num_sub(&negnum, &order, &snum); + secp256k1_num_mod(&negnum, &order); + /* Check that comparison with the half order is equal to testing for high scalar after negation. */ + CHECK(secp256k1_scalar_is_high(&neg) == (secp256k1_num_cmp(&negnum, &half_order) > 0)); + /* Negating should change the high property, unless the value was already zero. */ + CHECK((secp256k1_scalar_is_high(&s) == secp256k1_scalar_is_high(&neg)) == secp256k1_scalar_is_zero(&s)); + secp256k1_scalar_get_num(&negnum2, &neg); + /* Negating a scalar should be equal to (order - n) mod order on the number. */ + CHECK(secp256k1_num_eq(&negnum, &negnum2)); + secp256k1_scalar_add(&neg, &neg, &s); + /* Adding a number to its negation should result in zero. */ + CHECK(secp256k1_scalar_is_zero(&neg)); + secp256k1_scalar_negate(&neg, &neg); + /* Negating zero should still result in zero. */ + CHECK(secp256k1_scalar_is_zero(&neg)); + } + + { + /* Test secp256k1_scalar_mul_shift_var. */ + secp256k1_scalar_t r; + secp256k1_num_t one; + secp256k1_num_t rnum; + secp256k1_num_t rnum2; + unsigned char cone[1] = {0x01}; + unsigned int shift = 256 + (secp256k1_rand32() % 257); + secp256k1_scalar_mul_shift_var(&r, &s1, &s2, shift); + secp256k1_num_mul(&rnum, &s1num, &s2num); + secp256k1_num_shift(&rnum, shift - 1); + secp256k1_num_set_bin(&one, cone, 1); + secp256k1_num_add(&rnum, &rnum, &one); + secp256k1_num_shift(&rnum, 1); + secp256k1_scalar_get_num(&rnum2, &r); + CHECK(secp256k1_num_eq(&rnum, &rnum2)); + } + + { + /* test secp256k1_scalar_shr_int */ + secp256k1_scalar_t r; + int i; + int low; + random_scalar_order_test(&r); + for (i = 0; i < 100; ++i) { + int shift = 1 + (secp256k1_rand32() % 15); + int expected = r.d[0] % (1 << shift); + low = secp256k1_scalar_shr_int(&r, shift); + CHECK(expected == low); + } + } +#endif + + { + /* Test that scalar inverses are equal to the inverse of their number modulo the order. */ + if (!secp256k1_scalar_is_zero(&s)) { + secp256k1_scalar_t inv; +#ifndef USE_NUM_NONE + secp256k1_num_t invnum; + secp256k1_num_t invnum2; +#endif + secp256k1_scalar_inverse(&inv, &s); +#ifndef USE_NUM_NONE + secp256k1_num_mod_inverse(&invnum, &snum, &order); + secp256k1_scalar_get_num(&invnum2, &inv); + CHECK(secp256k1_num_eq(&invnum, &invnum2)); +#endif + secp256k1_scalar_mul(&inv, &inv, &s); + /* Multiplying a scalar with its inverse must result in one. */ + CHECK(secp256k1_scalar_is_one(&inv)); + secp256k1_scalar_inverse(&inv, &inv); + /* Inverting one must result in one. */ + CHECK(secp256k1_scalar_is_one(&inv)); + } + } + + { + /* Test commutativity of add. */ + secp256k1_scalar_t r1, r2; + secp256k1_scalar_add(&r1, &s1, &s2); + secp256k1_scalar_add(&r2, &s2, &s1); + CHECK(secp256k1_scalar_eq(&r1, &r2)); + } + + { + secp256k1_scalar_t r1, r2; + secp256k1_scalar_t b; + int i; + /* Test add_bit. */ + int bit = secp256k1_rand32() % 256; + secp256k1_scalar_set_int(&b, 1); + CHECK(secp256k1_scalar_is_one(&b)); + for (i = 0; i < bit; i++) { + secp256k1_scalar_add(&b, &b, &b); + } + r1 = s1; + r2 = s1; + if (!secp256k1_scalar_add(&r1, &r1, &b)) { + /* No overflow happened. */ + secp256k1_scalar_cadd_bit(&r2, bit, 1); + CHECK(secp256k1_scalar_eq(&r1, &r2)); + /* cadd is a noop when flag is zero */ + secp256k1_scalar_cadd_bit(&r2, bit, 0); + CHECK(secp256k1_scalar_eq(&r1, &r2)); + } + } + + { + /* Test commutativity of mul. */ + secp256k1_scalar_t r1, r2; + secp256k1_scalar_mul(&r1, &s1, &s2); + secp256k1_scalar_mul(&r2, &s2, &s1); + CHECK(secp256k1_scalar_eq(&r1, &r2)); + } + + { + /* Test associativity of add. */ + secp256k1_scalar_t r1, r2; + secp256k1_scalar_add(&r1, &s1, &s2); + secp256k1_scalar_add(&r1, &r1, &s); + secp256k1_scalar_add(&r2, &s2, &s); + secp256k1_scalar_add(&r2, &s1, &r2); + CHECK(secp256k1_scalar_eq(&r1, &r2)); + } + + { + /* Test associativity of mul. */ + secp256k1_scalar_t r1, r2; + secp256k1_scalar_mul(&r1, &s1, &s2); + secp256k1_scalar_mul(&r1, &r1, &s); + secp256k1_scalar_mul(&r2, &s2, &s); + secp256k1_scalar_mul(&r2, &s1, &r2); + CHECK(secp256k1_scalar_eq(&r1, &r2)); + } + + { + /* Test distributitivity of mul over add. */ + secp256k1_scalar_t r1, r2, t; + secp256k1_scalar_add(&r1, &s1, &s2); + secp256k1_scalar_mul(&r1, &r1, &s); + secp256k1_scalar_mul(&r2, &s1, &s); + secp256k1_scalar_mul(&t, &s2, &s); + secp256k1_scalar_add(&r2, &r2, &t); + CHECK(secp256k1_scalar_eq(&r1, &r2)); + } + + { + /* Test square. */ + secp256k1_scalar_t r1, r2; + secp256k1_scalar_sqr(&r1, &s1); + secp256k1_scalar_mul(&r2, &s1, &s1); + CHECK(secp256k1_scalar_eq(&r1, &r2)); + } + + { + /* Test multiplicative identity. */ + secp256k1_scalar_t r1, v1; + secp256k1_scalar_set_int(&v1,1); + secp256k1_scalar_mul(&r1, &s1, &v1); + CHECK(secp256k1_scalar_eq(&r1, &s1)); + } + + { + /* Test additive identity. */ + secp256k1_scalar_t r1, v0; + secp256k1_scalar_set_int(&v0,0); + secp256k1_scalar_add(&r1, &s1, &v0); + CHECK(secp256k1_scalar_eq(&r1, &s1)); + } + + { + /* Test zero product property. */ + secp256k1_scalar_t r1, v0; + secp256k1_scalar_set_int(&v0,0); + secp256k1_scalar_mul(&r1, &s1, &v0); + CHECK(secp256k1_scalar_eq(&r1, &v0)); + } + +} + +void run_scalar_tests(void) { + int i; + for (i = 0; i < 128 * count; i++) { + scalar_test(); + } + + { + /* (-1)+1 should be zero. */ + secp256k1_scalar_t s, o; + secp256k1_scalar_set_int(&s, 1); + CHECK(secp256k1_scalar_is_one(&s)); + secp256k1_scalar_negate(&o, &s); + secp256k1_scalar_add(&o, &o, &s); + CHECK(secp256k1_scalar_is_zero(&o)); + secp256k1_scalar_negate(&o, &o); + CHECK(secp256k1_scalar_is_zero(&o)); + } + +#ifndef USE_NUM_NONE + { + /* A scalar with value of the curve order should be 0. */ + secp256k1_num_t order; + secp256k1_scalar_t zero; + unsigned char bin[32]; + int overflow = 0; + secp256k1_scalar_order_get_num(&order); + secp256k1_num_get_bin(bin, 32, &order); + secp256k1_scalar_set_b32(&zero, bin, &overflow); + CHECK(overflow == 1); + CHECK(secp256k1_scalar_is_zero(&zero)); + } +#endif +} + +/***** FIELD TESTS *****/ + +void random_fe(secp256k1_fe_t *x) { + unsigned char bin[32]; + do { + secp256k1_rand256(bin); + if (secp256k1_fe_set_b32(x, bin)) { + return; + } + } while(1); +} + +void random_fe_non_zero(secp256k1_fe_t *nz) { + int tries = 10; + while (--tries >= 0) { + random_fe(nz); + secp256k1_fe_normalize(nz); + if (!secp256k1_fe_is_zero(nz)) { + break; + } + } + /* Infinitesimal probability of spurious failure here */ + CHECK(tries >= 0); +} + +void random_fe_non_square(secp256k1_fe_t *ns) { + secp256k1_fe_t r; + random_fe_non_zero(ns); + if (secp256k1_fe_sqrt_var(&r, ns)) { + secp256k1_fe_negate(ns, ns, 1); + } +} + +int check_fe_equal(const secp256k1_fe_t *a, const secp256k1_fe_t *b) { + secp256k1_fe_t an = *a; + secp256k1_fe_t bn = *b; + secp256k1_fe_normalize_weak(&an); + secp256k1_fe_normalize_var(&bn); + return secp256k1_fe_equal_var(&an, &bn); +} + +int check_fe_inverse(const secp256k1_fe_t *a, const secp256k1_fe_t *ai) { + secp256k1_fe_t x; + secp256k1_fe_t one = SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1); + secp256k1_fe_mul(&x, a, ai); + return check_fe_equal(&x, &one); +} + +void run_field_convert(void) { + static const unsigned char b32[32] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40 + }; + static const secp256k1_fe_storage_t fes = SECP256K1_FE_STORAGE_CONST( + 0x00010203UL, 0x04050607UL, 0x11121314UL, 0x15161718UL, + 0x22232425UL, 0x26272829UL, 0x33343536UL, 0x37383940UL + ); + static const secp256k1_fe_t fe = SECP256K1_FE_CONST( + 0x00010203UL, 0x04050607UL, 0x11121314UL, 0x15161718UL, + 0x22232425UL, 0x26272829UL, 0x33343536UL, 0x37383940UL + ); + secp256k1_fe_t fe2; + unsigned char b322[32]; + secp256k1_fe_storage_t fes2; + /* Check conversions to fe. */ + CHECK(secp256k1_fe_set_b32(&fe2, b32)); + CHECK(secp256k1_fe_equal_var(&fe, &fe2)); + secp256k1_fe_from_storage(&fe2, &fes); + CHECK(secp256k1_fe_equal_var(&fe, &fe2)); + /* Check conversion from fe. */ + secp256k1_fe_get_b32(b322, &fe); + CHECK(memcmp(b322, b32, 32) == 0); + secp256k1_fe_to_storage(&fes2, &fe); + CHECK(memcmp(&fes2, &fes, sizeof(fes)) == 0); +} + +int fe_memcmp(const secp256k1_fe_t *a, const secp256k1_fe_t *b) { + secp256k1_fe_t t = *b; +#ifdef VERIFY + t.magnitude = a->magnitude; + t.normalized = a->normalized; +#endif + return memcmp(a, &t, sizeof(secp256k1_fe_t)); +} + +void run_field_misc(void) { + secp256k1_fe_t x; + secp256k1_fe_t y; + secp256k1_fe_t z; + secp256k1_fe_t q; + secp256k1_fe_t fe5 = SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 5); + int i, j; + for (i = 0; i < 5*count; i++) { + secp256k1_fe_storage_t xs, ys, zs; + random_fe(&x); + random_fe_non_zero(&y); + /* Test the fe equality and comparison operations. */ + CHECK(secp256k1_fe_cmp_var(&x, &x) == 0); + CHECK(secp256k1_fe_equal_var(&x, &x)); + z = x; + secp256k1_fe_add(&z,&y); + /* Test fe conditional move; z is not normalized here. */ + q = x; + secp256k1_fe_cmov(&x, &z, 0); + VERIFY_CHECK(!x.normalized && x.magnitude == z.magnitude); + secp256k1_fe_cmov(&x, &x, 1); + CHECK(fe_memcmp(&x, &z) != 0); + CHECK(fe_memcmp(&x, &q) == 0); + secp256k1_fe_cmov(&q, &z, 1); + VERIFY_CHECK(!q.normalized && q.magnitude == z.magnitude); + CHECK(fe_memcmp(&q, &z) == 0); + secp256k1_fe_normalize_var(&x); + secp256k1_fe_normalize_var(&z); + CHECK(!secp256k1_fe_equal_var(&x, &z)); + secp256k1_fe_normalize_var(&q); + secp256k1_fe_cmov(&q, &z, (i&1)); + VERIFY_CHECK(q.normalized && q.magnitude == 1); + for (j = 0; j < 6; j++) { + secp256k1_fe_negate(&z, &z, j+1); + secp256k1_fe_normalize_var(&q); + secp256k1_fe_cmov(&q, &z, (j&1)); + VERIFY_CHECK(!q.normalized && q.magnitude == (j+2)); + } + secp256k1_fe_normalize_var(&z); + /* Test storage conversion and conditional moves. */ + secp256k1_fe_to_storage(&xs, &x); + secp256k1_fe_to_storage(&ys, &y); + secp256k1_fe_to_storage(&zs, &z); + secp256k1_fe_storage_cmov(&zs, &xs, 0); + secp256k1_fe_storage_cmov(&zs, &zs, 1); + CHECK(memcmp(&xs, &zs, sizeof(xs)) != 0); + secp256k1_fe_storage_cmov(&ys, &xs, 1); + CHECK(memcmp(&xs, &ys, sizeof(xs)) == 0); + secp256k1_fe_from_storage(&x, &xs); + secp256k1_fe_from_storage(&y, &ys); + secp256k1_fe_from_storage(&z, &zs); + /* Test that mul_int, mul, and add agree. */ + secp256k1_fe_add(&y, &x); + secp256k1_fe_add(&y, &x); + z = x; + secp256k1_fe_mul_int(&z, 3); + CHECK(check_fe_equal(&y, &z)); + secp256k1_fe_add(&y, &x); + secp256k1_fe_add(&z, &x); + CHECK(check_fe_equal(&z, &y)); + z = x; + secp256k1_fe_mul_int(&z, 5); + secp256k1_fe_mul(&q, &x, &fe5); + CHECK(check_fe_equal(&z, &q)); + secp256k1_fe_negate(&x, &x, 1); + secp256k1_fe_add(&z, &x); + secp256k1_fe_add(&q, &x); + CHECK(check_fe_equal(&y, &z)); + CHECK(check_fe_equal(&q, &y)); + } +} + +void run_field_inv(void) { + secp256k1_fe_t x, xi, xii; + int i; + for (i = 0; i < 10*count; i++) { + random_fe_non_zero(&x); + secp256k1_fe_inv(&xi, &x); + CHECK(check_fe_inverse(&x, &xi)); + secp256k1_fe_inv(&xii, &xi); + CHECK(check_fe_equal(&x, &xii)); + } +} + +void run_field_inv_var(void) { + secp256k1_fe_t x, xi, xii; + int i; + for (i = 0; i < 10*count; i++) { + random_fe_non_zero(&x); + secp256k1_fe_inv_var(&xi, &x); + CHECK(check_fe_inverse(&x, &xi)); + secp256k1_fe_inv_var(&xii, &xi); + CHECK(check_fe_equal(&x, &xii)); + } +} + +void run_field_inv_all_var(void) { + secp256k1_fe_t x[16], xi[16], xii[16]; + int i; + /* Check it's safe to call for 0 elements */ + secp256k1_fe_inv_all_var(0, xi, x); + for (i = 0; i < count; i++) { + size_t j; + size_t len = (secp256k1_rand32() & 15) + 1; + for (j = 0; j < len; j++) { + random_fe_non_zero(&x[j]); + } + secp256k1_fe_inv_all_var(len, xi, x); + for (j = 0; j < len; j++) { + CHECK(check_fe_inverse(&x[j], &xi[j])); + } + secp256k1_fe_inv_all_var(len, xii, xi); + for (j = 0; j < len; j++) { + CHECK(check_fe_equal(&x[j], &xii[j])); + } + } +} + +void run_sqr(void) { + secp256k1_fe_t x, s; + + { + int i; + secp256k1_fe_set_int(&x, 1); + secp256k1_fe_negate(&x, &x, 1); + + for (i = 1; i <= 512; ++i) { + secp256k1_fe_mul_int(&x, 2); + secp256k1_fe_normalize(&x); + secp256k1_fe_sqr(&s, &x); + } + } +} + +void test_sqrt(const secp256k1_fe_t *a, const secp256k1_fe_t *k) { + secp256k1_fe_t r1, r2; + int v = secp256k1_fe_sqrt_var(&r1, a); + CHECK((v == 0) == (k == NULL)); + + if (k != NULL) { + /* Check that the returned root is +/- the given known answer */ + secp256k1_fe_negate(&r2, &r1, 1); + secp256k1_fe_add(&r1, k); secp256k1_fe_add(&r2, k); + secp256k1_fe_normalize(&r1); secp256k1_fe_normalize(&r2); + CHECK(secp256k1_fe_is_zero(&r1) || secp256k1_fe_is_zero(&r2)); + } +} + +void run_sqrt(void) { + secp256k1_fe_t ns, x, s, t; + int i; + + /* Check sqrt(0) is 0 */ + secp256k1_fe_set_int(&x, 0); + secp256k1_fe_sqr(&s, &x); + test_sqrt(&s, &x); + + /* Check sqrt of small squares (and their negatives) */ + for (i = 1; i <= 100; i++) { + secp256k1_fe_set_int(&x, i); + secp256k1_fe_sqr(&s, &x); + test_sqrt(&s, &x); + secp256k1_fe_negate(&t, &s, 1); + test_sqrt(&t, NULL); + } + + /* Consistency checks for large random values */ + for (i = 0; i < 10; i++) { + int j; + random_fe_non_square(&ns); + for (j = 0; j < count; j++) { + random_fe(&x); + secp256k1_fe_sqr(&s, &x); + test_sqrt(&s, &x); + secp256k1_fe_negate(&t, &s, 1); + test_sqrt(&t, NULL); + secp256k1_fe_mul(&t, &s, &ns); + test_sqrt(&t, NULL); + } + } +} + +/***** GROUP TESTS *****/ + +void ge_equals_ge(const secp256k1_ge_t *a, const secp256k1_ge_t *b) { + CHECK(a->infinity == b->infinity); + if (a->infinity) { + return; + } + CHECK(secp256k1_fe_equal_var(&a->x, &b->x)); + CHECK(secp256k1_fe_equal_var(&a->y, &b->y)); +} + +/* This compares jacobian points including their Z, not just their geometric meaning. */ +int gej_xyz_equals_gej(const secp256k1_gej_t *a, const secp256k1_gej_t *b) { + secp256k1_gej_t a2; + secp256k1_gej_t b2; + int ret = 1; + ret &= a->infinity == b->infinity; + if (ret && !a->infinity) { + a2 = *a; + b2 = *b; + secp256k1_fe_normalize(&a2.x); + secp256k1_fe_normalize(&a2.y); + secp256k1_fe_normalize(&a2.z); + secp256k1_fe_normalize(&b2.x); + secp256k1_fe_normalize(&b2.y); + secp256k1_fe_normalize(&b2.z); + ret &= secp256k1_fe_cmp_var(&a2.x, &b2.x) == 0; + ret &= secp256k1_fe_cmp_var(&a2.y, &b2.y) == 0; + ret &= secp256k1_fe_cmp_var(&a2.z, &b2.z) == 0; + } + return ret; +} + +void ge_equals_gej(const secp256k1_ge_t *a, const secp256k1_gej_t *b) { + secp256k1_fe_t z2s; + secp256k1_fe_t u1, u2, s1, s2; + CHECK(a->infinity == b->infinity); + if (a->infinity) { + return; + } + /* Check a.x * b.z^2 == b.x && a.y * b.z^3 == b.y, to avoid inverses. */ + secp256k1_fe_sqr(&z2s, &b->z); + secp256k1_fe_mul(&u1, &a->x, &z2s); + u2 = b->x; secp256k1_fe_normalize_weak(&u2); + secp256k1_fe_mul(&s1, &a->y, &z2s); secp256k1_fe_mul(&s1, &s1, &b->z); + s2 = b->y; secp256k1_fe_normalize_weak(&s2); + CHECK(secp256k1_fe_equal_var(&u1, &u2)); + CHECK(secp256k1_fe_equal_var(&s1, &s2)); +} + +void test_ge(void) { + int i, i1; +#ifdef USE_ENDOMORPHISM + int runs = 6; +#else + int runs = 4; +#endif + /* Points: (infinity, p1, p1, -p1, -p1, p2, p2, -p2, -p2, p3, p3, -p3, -p3, p4, p4, -p4, -p4). + * The second in each pair of identical points uses a random Z coordinate in the Jacobian form. + * All magnitudes are randomized. + * All 17*17 combinations of points are added to eachother, using all applicable methods. + * + * When the endomorphism code is compiled in, p5 = lambda*p1 and p6 = lambda^2*p1 are added as well. + */ + secp256k1_ge_t *ge = (secp256k1_ge_t *)malloc(sizeof(secp256k1_ge_t) * (1 + 4 * runs)); + secp256k1_gej_t *gej = (secp256k1_gej_t *)malloc(sizeof(secp256k1_gej_t) * (1 + 4 * runs)); + secp256k1_fe_t *zinv = (secp256k1_fe_t *)malloc(sizeof(secp256k1_fe_t) * (1 + 4 * runs)); + secp256k1_fe_t zf; + secp256k1_fe_t zfi2, zfi3; + + secp256k1_gej_set_infinity(&gej[0]); + secp256k1_ge_clear(&ge[0]); + secp256k1_ge_set_gej_var(&ge[0], &gej[0]); + for (i = 0; i < runs; i++) { + int j; + secp256k1_ge_t g; + random_group_element_test(&g); +#ifdef USE_ENDOMORPHISM + if (i >= runs - 2) { + secp256k1_ge_mul_lambda(&g, &ge[1]); + } + if (i >= runs - 1) { + secp256k1_ge_mul_lambda(&g, &g); + } +#endif + ge[1 + 4 * i] = g; + ge[2 + 4 * i] = g; + secp256k1_ge_neg(&ge[3 + 4 * i], &g); + secp256k1_ge_neg(&ge[4 + 4 * i], &g); + secp256k1_gej_set_ge(&gej[1 + 4 * i], &ge[1 + 4 * i]); + random_group_element_jacobian_test(&gej[2 + 4 * i], &ge[2 + 4 * i]); + secp256k1_gej_set_ge(&gej[3 + 4 * i], &ge[3 + 4 * i]); + random_group_element_jacobian_test(&gej[4 + 4 * i], &ge[4 + 4 * i]); + for (j = 0; j < 4; j++) { + random_field_element_magnitude(&ge[1 + j + 4 * i].x); + random_field_element_magnitude(&ge[1 + j + 4 * i].y); + random_field_element_magnitude(&gej[1 + j + 4 * i].x); + random_field_element_magnitude(&gej[1 + j + 4 * i].y); + random_field_element_magnitude(&gej[1 + j + 4 * i].z); + } + } + + /* Compute z inverses. */ + { + secp256k1_fe_t *zs = malloc(sizeof(secp256k1_fe_t) * (1 + 4 * runs)); + for (i = 0; i < 4 * runs + 1; i++) { + if (i == 0) { + /* The point at infinity does not have a meaningful z inverse. Any should do. */ + do { + random_field_element_test(&zs[i]); + } while(secp256k1_fe_is_zero(&zs[i])); + } else { + zs[i] = gej[i].z; + } + } + secp256k1_fe_inv_all_var(4 * runs + 1, zinv, zs); + free(zs); + } + + /* Generate random zf, and zfi2 = 1/zf^2, zfi3 = 1/zf^3 */ + do { + random_field_element_test(&zf); + } while(secp256k1_fe_is_zero(&zf)); + random_field_element_magnitude(&zf); + secp256k1_fe_inv_var(&zfi3, &zf); + secp256k1_fe_sqr(&zfi2, &zfi3); + secp256k1_fe_mul(&zfi3, &zfi3, &zfi2); + + for (i1 = 0; i1 < 1 + 4 * runs; i1++) { + int i2; + for (i2 = 0; i2 < 1 + 4 * runs; i2++) { + /* Compute reference result using gej + gej (var). */ + secp256k1_gej_t refj, resj; + secp256k1_ge_t ref; + secp256k1_fe_t zr; + secp256k1_gej_add_var(&refj, &gej[i1], &gej[i2], secp256k1_gej_is_infinity(&gej[i1]) ? NULL : &zr); + /* Check Z ratio. */ + if (!secp256k1_gej_is_infinity(&gej[i1]) && !secp256k1_gej_is_infinity(&refj)) { + secp256k1_fe_t zrz; secp256k1_fe_mul(&zrz, &zr, &gej[i1].z); + CHECK(secp256k1_fe_equal_var(&zrz, &refj.z)); + } + secp256k1_ge_set_gej_var(&ref, &refj); + + /* Test gej + ge with Z ratio result (var). */ + secp256k1_gej_add_ge_var(&resj, &gej[i1], &ge[i2], secp256k1_gej_is_infinity(&gej[i1]) ? NULL : &zr); + ge_equals_gej(&ref, &resj); + if (!secp256k1_gej_is_infinity(&gej[i1]) && !secp256k1_gej_is_infinity(&resj)) { + secp256k1_fe_t zrz; secp256k1_fe_mul(&zrz, &zr, &gej[i1].z); + CHECK(secp256k1_fe_equal_var(&zrz, &resj.z)); + } + + /* Test gej + ge (var, with additional Z factor). */ + { + secp256k1_ge_t ge2_zfi = ge[i2]; /* the second term with x and y rescaled for z = 1/zf */ + secp256k1_fe_mul(&ge2_zfi.x, &ge2_zfi.x, &zfi2); + secp256k1_fe_mul(&ge2_zfi.y, &ge2_zfi.y, &zfi3); + random_field_element_magnitude(&ge2_zfi.x); + random_field_element_magnitude(&ge2_zfi.y); + secp256k1_gej_add_zinv_var(&resj, &gej[i1], &ge2_zfi, &zf); + ge_equals_gej(&ref, &resj); + } + + /* Test gej + ge (const). */ + if (i2 != 0) { + /* secp256k1_gej_add_ge does not support its second argument being infinity. */ + secp256k1_gej_add_ge(&resj, &gej[i1], &ge[i2]); + ge_equals_gej(&ref, &resj); + } + + /* Test doubling (var). */ + if ((i1 == 0 && i2 == 0) || ((i1 + 3)/4 == (i2 + 3)/4 && ((i1 + 3)%4)/2 == ((i2 + 3)%4)/2)) { + secp256k1_fe_t zr2; + /* Normal doubling with Z ratio result. */ + secp256k1_gej_double_var(&resj, &gej[i1], &zr2); + ge_equals_gej(&ref, &resj); + /* Check Z ratio. */ + secp256k1_fe_mul(&zr2, &zr2, &gej[i1].z); + CHECK(secp256k1_fe_equal_var(&zr2, &resj.z)); + /* Normal doubling. */ + secp256k1_gej_double_var(&resj, &gej[i2], NULL); + ge_equals_gej(&ref, &resj); + } + + /* Test adding opposites. */ + if ((i1 == 0 && i2 == 0) || ((i1 + 3)/4 == (i2 + 3)/4 && ((i1 + 3)%4)/2 != ((i2 + 3)%4)/2)) { + CHECK(secp256k1_ge_is_infinity(&ref)); + } + + /* Test adding infinity. */ + if (i1 == 0) { + CHECK(secp256k1_ge_is_infinity(&ge[i1])); + CHECK(secp256k1_gej_is_infinity(&gej[i1])); + ge_equals_gej(&ref, &gej[i2]); + } + if (i2 == 0) { + CHECK(secp256k1_ge_is_infinity(&ge[i2])); + CHECK(secp256k1_gej_is_infinity(&gej[i2])); + ge_equals_gej(&ref, &gej[i1]); + } + } + } + + /* Test adding all points together in random order equals infinity. */ + { + secp256k1_gej_t sum = SECP256K1_GEJ_CONST_INFINITY; + secp256k1_gej_t *gej_shuffled = (secp256k1_gej_t *)malloc((4 * runs + 1) * sizeof(secp256k1_gej_t)); + for (i = 0; i < 4 * runs + 1; i++) { + gej_shuffled[i] = gej[i]; + } + for (i = 0; i < 4 * runs + 1; i++) { + int swap = i + secp256k1_rand32() % (4 * runs + 1 - i); + if (swap != i) { + secp256k1_gej_t t = gej_shuffled[i]; + gej_shuffled[i] = gej_shuffled[swap]; + gej_shuffled[swap] = t; + } + } + for (i = 0; i < 4 * runs + 1; i++) { + secp256k1_gej_add_var(&sum, &sum, &gej_shuffled[i], NULL); + } + CHECK(secp256k1_gej_is_infinity(&sum)); + free(gej_shuffled); + } + + /* Test batch gej -> ge conversion with and without known z ratios. */ + { + secp256k1_fe_t *zr = (secp256k1_fe_t *)malloc((4 * runs + 1) * sizeof(secp256k1_fe_t)); + secp256k1_ge_t *ge_set_table = (secp256k1_ge_t *)malloc((4 * runs + 1) * sizeof(secp256k1_ge_t)); + secp256k1_ge_t *ge_set_all = (secp256k1_ge_t *)malloc((4 * runs + 1) * sizeof(secp256k1_ge_t)); + for (i = 0; i < 4 * runs + 1; i++) { + /* Compute gej[i + 1].z / gez[i].z (with gej[n].z taken to be 1). */ + if (i < 4 * runs) { + secp256k1_fe_mul(&zr[i + 1], &zinv[i], &gej[i + 1].z); + } + } + secp256k1_ge_set_table_gej_var(4 * runs + 1, ge_set_table, gej, zr); + secp256k1_ge_set_all_gej_var(4 * runs + 1, ge_set_all, gej, &ctx->error_callback); + for (i = 0; i < 4 * runs + 1; i++) { + secp256k1_fe_t s; + random_fe_non_zero(&s); + secp256k1_gej_rescale(&gej[i], &s); + ge_equals_gej(&ge_set_table[i], &gej[i]); + ge_equals_gej(&ge_set_all[i], &gej[i]); + } + free(ge_set_table); + free(ge_set_all); + free(zr); + } + + free(ge); + free(gej); + free(zinv); +} + +void test_add_neg_y_diff_x(void) { + /* The point of this test is to check that we can add two points + * whose y-coordinates are negatives of each other but whose x + * coordinates differ. If the x-coordinates were the same, these + * points would be negatives of each other and their sum is + * infinity. This is cool because it "covers up" any degeneracy + * in the addition algorithm that would cause the xy coordinates + * of the sum to be wrong (since infinity has no xy coordinates). + * HOWEVER, if the x-coordinates are different, infinity is the + * wrong answer, and such degeneracies are exposed. This is the + * root of https://github.com/bitcoin/secp256k1/issues/257 which + * this test is a regression test for. + * + * These points were generated in sage as + * # secp256k1 params + * F = FiniteField (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F) + * C = EllipticCurve ([F (0), F (7)]) + * G = C.lift_x(0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798) + * N = FiniteField(G.order()) + * + * # endomorphism values (lambda is 1^{1/3} in N, beta is 1^{1/3} in F) + * x = polygen(N) + * lam = (1 - x^3).roots()[1][0] + * + * # random "bad pair" + * P = C.random_element() + * Q = -int(lam) * P + * print " P: %x %x" % P.xy() + * print " Q: %x %x" % Q.xy() + * print "P + Q: %x %x" % (P + Q).xy() + */ + secp256k1_gej_t aj = SECP256K1_GEJ_CONST( + 0x8d24cd95, 0x0a355af1, 0x3c543505, 0x44238d30, + 0x0643d79f, 0x05a59614, 0x2f8ec030, 0xd58977cb, + 0x001e337a, 0x38093dcd, 0x6c0f386d, 0x0b1293a8, + 0x4d72c879, 0xd7681924, 0x44e6d2f3, 0x9190117d + ); + secp256k1_gej_t bj = SECP256K1_GEJ_CONST( + 0xc7b74206, 0x1f788cd9, 0xabd0937d, 0x164a0d86, + 0x95f6ff75, 0xf19a4ce9, 0xd013bd7b, 0xbf92d2a7, + 0xffe1cc85, 0xc7f6c232, 0x93f0c792, 0xf4ed6c57, + 0xb28d3786, 0x2897e6db, 0xbb192d0b, 0x6e6feab2 + ); + secp256k1_gej_t sumj = SECP256K1_GEJ_CONST( + 0x671a63c0, 0x3efdad4c, 0x389a7798, 0x24356027, + 0xb3d69010, 0x278625c3, 0x5c86d390, 0x184a8f7a, + 0x5f6409c2, 0x2ce01f2b, 0x511fd375, 0x25071d08, + 0xda651801, 0x70e95caf, 0x8f0d893c, 0xbed8fbbe + ); + secp256k1_ge_t b; + secp256k1_gej_t resj; + secp256k1_ge_t res; + secp256k1_ge_set_gej(&b, &bj); + + secp256k1_gej_add_var(&resj, &aj, &bj, NULL); + secp256k1_ge_set_gej(&res, &resj); + ge_equals_gej(&res, &sumj); + + secp256k1_gej_add_ge(&resj, &aj, &b); + secp256k1_ge_set_gej(&res, &resj); + ge_equals_gej(&res, &sumj); + + secp256k1_gej_add_ge_var(&resj, &aj, &b, NULL); + secp256k1_ge_set_gej(&res, &resj); + ge_equals_gej(&res, &sumj); +} + +void run_ge(void) { + int i; + for (i = 0; i < count * 32; i++) { + test_ge(); + } + test_add_neg_y_diff_x(); +} + +void test_ec_combine(void) { + secp256k1_scalar_t sum = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 0); + secp256k1_pubkey_t data[6]; + const secp256k1_pubkey_t* d[6]; + secp256k1_pubkey_t sd; + secp256k1_pubkey_t sd2; + secp256k1_gej_t Qj; + secp256k1_ge_t Q; + int i; + for (i = 1; i <= 6; i++) { + secp256k1_scalar_t s; + random_scalar_order_test(&s); + secp256k1_scalar_add(&sum, &sum, &s); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &Qj, &s); + secp256k1_ge_set_gej(&Q, &Qj); + secp256k1_pubkey_save(&data[i - 1], &Q); + d[i - 1] = &data[i - 1]; + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &Qj, &sum); + secp256k1_ge_set_gej(&Q, &Qj); + secp256k1_pubkey_save(&sd, &Q); + CHECK(secp256k1_ec_pubkey_combine(ctx, &sd2, i, d) == 1); + CHECK(memcmp(&sd, &sd2, sizeof(sd)) == 0); + } +} + +void run_ec_combine(void) { + int i; + for (i = 0; i < count * 8; i++) { + test_ec_combine(); + } +} + +/***** ECMULT TESTS *****/ + +void run_ecmult_chain(void) { + /* random starting point A (on the curve) */ + secp256k1_gej_t a = SECP256K1_GEJ_CONST( + 0x8b30bbe9, 0xae2a9906, 0x96b22f67, 0x0709dff3, + 0x727fd8bc, 0x04d3362c, 0x6c7bf458, 0xe2846004, + 0xa357ae91, 0x5c4a6528, 0x1309edf2, 0x0504740f, + 0x0eb33439, 0x90216b4f, 0x81063cb6, 0x5f2f7e0f + ); + /* two random initial factors xn and gn */ + secp256k1_scalar_t xn = SECP256K1_SCALAR_CONST( + 0x84cc5452, 0xf7fde1ed, 0xb4d38a8c, 0xe9b1b84c, + 0xcef31f14, 0x6e569be9, 0x705d357a, 0x42985407 + ); + secp256k1_scalar_t gn = SECP256K1_SCALAR_CONST( + 0xa1e58d22, 0x553dcd42, 0xb2398062, 0x5d4c57a9, + 0x6e9323d4, 0x2b3152e5, 0xca2c3990, 0xedc7c9de + ); + /* two small multipliers to be applied to xn and gn in every iteration: */ + static const secp256k1_scalar_t xf = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 0x1337); + static const secp256k1_scalar_t gf = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 0x7113); + /* accumulators with the resulting coefficients to A and G */ + secp256k1_scalar_t ae = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1); + secp256k1_scalar_t ge = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 0); + /* actual points */ + secp256k1_gej_t x = a; + secp256k1_gej_t x2; + int i; + + /* the point being computed */ + x = a; + for (i = 0; i < 200*count; i++) { + /* in each iteration, compute X = xn*X + gn*G; */ + secp256k1_ecmult(&ctx->ecmult_ctx, &x, &x, &xn, &gn); + /* also compute ae and ge: the actual accumulated factors for A and G */ + /* if X was (ae*A+ge*G), xn*X + gn*G results in (xn*ae*A + (xn*ge+gn)*G) */ + secp256k1_scalar_mul(&ae, &ae, &xn); + secp256k1_scalar_mul(&ge, &ge, &xn); + secp256k1_scalar_add(&ge, &ge, &gn); + /* modify xn and gn */ + secp256k1_scalar_mul(&xn, &xn, &xf); + secp256k1_scalar_mul(&gn, &gn, &gf); + + /* verify */ + if (i == 19999) { + /* expected result after 19999 iterations */ + secp256k1_gej_t rp = SECP256K1_GEJ_CONST( + 0xD6E96687, 0xF9B10D09, 0x2A6F3543, 0x9D86CEBE, + 0xA4535D0D, 0x409F5358, 0x6440BD74, 0xB933E830, + 0xB95CBCA2, 0xC77DA786, 0x539BE8FD, 0x53354D2D, + 0x3B4F566A, 0xE6580454, 0x07ED6015, 0xEE1B2A88 + ); + + secp256k1_gej_neg(&rp, &rp); + secp256k1_gej_add_var(&rp, &rp, &x, NULL); + CHECK(secp256k1_gej_is_infinity(&rp)); + } + } + /* redo the computation, but directly with the resulting ae and ge coefficients: */ + secp256k1_ecmult(&ctx->ecmult_ctx, &x2, &a, &ae, &ge); + secp256k1_gej_neg(&x2, &x2); + secp256k1_gej_add_var(&x2, &x2, &x, NULL); + CHECK(secp256k1_gej_is_infinity(&x2)); +} + +void test_point_times_order(const secp256k1_gej_t *point) { + /* X * (point + G) + (order-X) * (pointer + G) = 0 */ + secp256k1_scalar_t x; + secp256k1_scalar_t nx; + secp256k1_scalar_t zero = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 0); + secp256k1_scalar_t one = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1); + secp256k1_gej_t res1, res2; + secp256k1_ge_t res3; + unsigned char pub[65]; + int psize = 65; + random_scalar_order_test(&x); + secp256k1_scalar_negate(&nx, &x); + secp256k1_ecmult(&ctx->ecmult_ctx, &res1, point, &x, &x); /* calc res1 = x * point + x * G; */ + secp256k1_ecmult(&ctx->ecmult_ctx, &res2, point, &nx, &nx); /* calc res2 = (order - x) * point + (order - x) * G; */ + secp256k1_gej_add_var(&res1, &res1, &res2, NULL); + CHECK(secp256k1_gej_is_infinity(&res1)); + CHECK(secp256k1_gej_is_valid_var(&res1) == 0); + secp256k1_ge_set_gej(&res3, &res1); + CHECK(secp256k1_ge_is_infinity(&res3)); + CHECK(secp256k1_ge_is_valid_var(&res3) == 0); + CHECK(secp256k1_eckey_pubkey_serialize(&res3, pub, &psize, 0) == 0); + psize = 65; + CHECK(secp256k1_eckey_pubkey_serialize(&res3, pub, &psize, 1) == 0); + /* check zero/one edge cases */ + secp256k1_ecmult(&ctx->ecmult_ctx, &res1, point, &zero, &zero); + secp256k1_ge_set_gej(&res3, &res1); + CHECK(secp256k1_ge_is_infinity(&res3)); + secp256k1_ecmult(&ctx->ecmult_ctx, &res1, point, &one, &zero); + secp256k1_ge_set_gej(&res3, &res1); + ge_equals_gej(&res3, point); + secp256k1_ecmult(&ctx->ecmult_ctx, &res1, point, &zero, &one); + secp256k1_ge_set_gej(&res3, &res1); + ge_equals_ge(&res3, &secp256k1_ge_const_g); +} + +void run_point_times_order(void) { + int i; + secp256k1_fe_t x = SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 2); + static const secp256k1_fe_t xr = SECP256K1_FE_CONST( + 0x7603CB59, 0xB0EF6C63, 0xFE608479, 0x2A0C378C, + 0xDB3233A8, 0x0F8A9A09, 0xA877DEAD, 0x31B38C45 + ); + for (i = 0; i < 500; i++) { + secp256k1_ge_t p; + if (secp256k1_ge_set_xo_var(&p, &x, 1)) { + secp256k1_gej_t j; + CHECK(secp256k1_ge_is_valid_var(&p)); + secp256k1_gej_set_ge(&j, &p); + CHECK(secp256k1_gej_is_valid_var(&j)); + test_point_times_order(&j); + } + secp256k1_fe_sqr(&x, &x); + } + secp256k1_fe_normalize_var(&x); + CHECK(secp256k1_fe_equal_var(&x, &xr)); +} + +void ecmult_const_random_mult(void) { + /* random starting point A (on the curve) */ + secp256k1_ge_t a = SECP256K1_GE_CONST( + 0x6d986544, 0x57ff52b8, 0xcf1b8126, 0x5b802a5b, + 0xa97f9263, 0xb1e88044, 0x93351325, 0x91bc450a, + 0x535c59f7, 0x325e5d2b, 0xc391fbe8, 0x3c12787c, + 0x337e4a98, 0xe82a9011, 0x0123ba37, 0xdd769c7d + ); + /* random initial factor xn */ + secp256k1_scalar_t xn = SECP256K1_SCALAR_CONST( + 0x649d4f77, 0xc4242df7, 0x7f2079c9, 0x14530327, + 0xa31b876a, 0xd2d8ce2a, 0x2236d5c6, 0xd7b2029b + ); + /* expected xn * A (from sage) */ + secp256k1_ge_t expected_b = SECP256K1_GE_CONST( + 0x23773684, 0x4d209dc7, 0x098a786f, 0x20d06fcd, + 0x070a38bf, 0xc11ac651, 0x03004319, 0x1e2a8786, + 0xed8c3b8e, 0xc06dd57b, 0xd06ea66e, 0x45492b0f, + 0xb84e4e1b, 0xfb77e21f, 0x96baae2a, 0x63dec956 + ); + secp256k1_gej_t b; + secp256k1_ecmult_const(&b, &a, &xn); + + CHECK(secp256k1_ge_is_valid_var(&a)); + ge_equals_gej(&expected_b, &b); +} + +void ecmult_const_commutativity(void) { + secp256k1_scalar_t a; + secp256k1_scalar_t b; + secp256k1_gej_t res1; + secp256k1_gej_t res2; + secp256k1_ge_t mid1; + secp256k1_ge_t mid2; + random_scalar_order_test(&a); + random_scalar_order_test(&b); + + secp256k1_ecmult_const(&res1, &secp256k1_ge_const_g, &a); + secp256k1_ecmult_const(&res2, &secp256k1_ge_const_g, &b); + secp256k1_ge_set_gej(&mid1, &res1); + secp256k1_ge_set_gej(&mid2, &res2); + secp256k1_ecmult_const(&res1, &mid1, &b); + secp256k1_ecmult_const(&res2, &mid2, &a); + secp256k1_ge_set_gej(&mid1, &res1); + secp256k1_ge_set_gej(&mid2, &res2); + ge_equals_ge(&mid1, &mid2); +} + +void ecmult_const_mult_zero_one(void) { + secp256k1_scalar_t zero = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 0); + secp256k1_scalar_t one = SECP256K1_SCALAR_CONST(0, 0, 0, 0, 0, 0, 0, 1); + secp256k1_scalar_t negone; + secp256k1_gej_t res1; + secp256k1_ge_t res2; + secp256k1_ge_t point; + secp256k1_scalar_negate(&negone, &one); + + random_group_element_test(&point); + secp256k1_ecmult_const(&res1, &point, &zero); + secp256k1_ge_set_gej(&res2, &res1); + CHECK(secp256k1_ge_is_infinity(&res2)); + secp256k1_ecmult_const(&res1, &point, &one); + secp256k1_ge_set_gej(&res2, &res1); + ge_equals_ge(&res2, &point); + secp256k1_ecmult_const(&res1, &point, &negone); + secp256k1_gej_neg(&res1, &res1); + secp256k1_ge_set_gej(&res2, &res1); + ge_equals_ge(&res2, &point); +} + +void ecmult_const_chain_multiply(void) { + /* Check known result (randomly generated test problem from sage) */ + const secp256k1_scalar_t scalar = SECP256K1_SCALAR_CONST( + 0x4968d524, 0x2abf9b7a, 0x466abbcf, 0x34b11b6d, + 0xcd83d307, 0x827bed62, 0x05fad0ce, 0x18fae63b + ); + const secp256k1_gej_t expected_point = SECP256K1_GEJ_CONST( + 0x5494c15d, 0x32099706, 0xc2395f94, 0x348745fd, + 0x757ce30e, 0x4e8c90fb, 0xa2bad184, 0xf883c69f, + 0x5d195d20, 0xe191bf7f, 0x1be3e55f, 0x56a80196, + 0x6071ad01, 0xf1462f66, 0xc997fa94, 0xdb858435 + ); + secp256k1_gej_t point; + secp256k1_ge_t res; + int i; + + secp256k1_gej_set_ge(&point, &secp256k1_ge_const_g); + for (i = 0; i < 100; ++i) { + secp256k1_ge_t tmp; + secp256k1_ge_set_gej(&tmp, &point); + secp256k1_ecmult_const(&point, &tmp, &scalar); + } + secp256k1_ge_set_gej(&res, &point); + ge_equals_gej(&res, &expected_point); +} + +void run_ecmult_const_tests(void) { + ecmult_const_mult_zero_one(); + ecmult_const_random_mult(); + ecmult_const_commutativity(); + ecmult_const_chain_multiply(); +} + +void test_wnaf(const secp256k1_scalar_t *number, int w) { + secp256k1_scalar_t x, two, t; + int wnaf[256]; + int zeroes = -1; + int i; + int bits; + secp256k1_scalar_set_int(&x, 0); + secp256k1_scalar_set_int(&two, 2); + bits = secp256k1_ecmult_wnaf(wnaf, 256, number, w); + CHECK(bits <= 256); + for (i = bits-1; i >= 0; i--) { + int v = wnaf[i]; + secp256k1_scalar_mul(&x, &x, &two); + if (v) { + CHECK(zeroes == -1 || zeroes >= w-1); /* check that distance between non-zero elements is at least w-1 */ + zeroes=0; + CHECK((v & 1) == 1); /* check non-zero elements are odd */ + CHECK(v <= (1 << (w-1)) - 1); /* check range below */ + CHECK(v >= -(1 << (w-1)) - 1); /* check range above */ + } else { + CHECK(zeroes != -1); /* check that no unnecessary zero padding exists */ + zeroes++; + } + if (v >= 0) { + secp256k1_scalar_set_int(&t, v); + } else { + secp256k1_scalar_set_int(&t, -v); + secp256k1_scalar_negate(&t, &t); + } + secp256k1_scalar_add(&x, &x, &t); + } + CHECK(secp256k1_scalar_eq(&x, number)); /* check that wnaf represents number */ +} + +void test_constant_wnaf_negate(const secp256k1_scalar_t *number) { + secp256k1_scalar_t neg1 = *number; + secp256k1_scalar_t neg2 = *number; + int sign1 = 1; + int sign2 = 1; + + if (!secp256k1_scalar_get_bits(&neg1, 0, 1)) { + secp256k1_scalar_negate(&neg1, &neg1); + sign1 = -1; + } + sign2 = secp256k1_scalar_cond_negate(&neg2, secp256k1_scalar_is_even(&neg2)); + CHECK(sign1 == sign2); + CHECK(secp256k1_scalar_eq(&neg1, &neg2)); +} + +void test_constant_wnaf(const secp256k1_scalar_t *number, int w) { + secp256k1_scalar_t x, shift; + int wnaf[256] = {0}; + int i; +#ifdef USE_ENDOMORPHISM + int skew; +#endif + secp256k1_scalar_t num = *number; + + secp256k1_scalar_set_int(&x, 0); + secp256k1_scalar_set_int(&shift, 1 << w); + /* With USE_ENDOMORPHISM on we only consider 128-bit numbers */ +#ifdef USE_ENDOMORPHISM + for (i = 0; i < 16; ++i) + secp256k1_scalar_shr_int(&num, 8); + skew = secp256k1_wnaf_const(wnaf, num, w); +#else + secp256k1_wnaf_const(wnaf, num, w); +#endif + + for (i = WNAF_SIZE(w); i >= 0; --i) { + secp256k1_scalar_t t; + int v = wnaf[i]; + CHECK(v != 0); /* check nonzero */ + CHECK(v & 1); /* check parity */ + CHECK(v > -(1 << w)); /* check range above */ + CHECK(v < (1 << w)); /* check range below */ + + secp256k1_scalar_mul(&x, &x, &shift); + if (v >= 0) { + secp256k1_scalar_set_int(&t, v); + } else { + secp256k1_scalar_set_int(&t, -v); + secp256k1_scalar_negate(&t, &t); + } + secp256k1_scalar_add(&x, &x, &t); + } +#ifdef USE_ENDOMORPHISM + /* Skew num because when encoding 128-bit numbers as odd we use an offset */ + secp256k1_scalar_cadd_bit(&num, skew == 2, 1); +#endif + CHECK(secp256k1_scalar_eq(&x, &num)); +} + +void run_wnaf(void) { + int i; + secp256k1_scalar_t n = {{0}}; + + /* Sanity check: 1 and 2 are the smallest odd and even numbers and should + * have easier-to-diagnose failure modes */ + n.d[0] = 1; + test_constant_wnaf(&n, 4); + n.d[0] = 2; + test_constant_wnaf(&n, 4); + /* Random tests */ + for (i = 0; i < count; i++) { + random_scalar_order(&n); + test_wnaf(&n, 4+(i%10)); + test_constant_wnaf_negate(&n); + test_constant_wnaf(&n, 4 + (i % 10)); + } +} + +void test_ecmult_constants(void) { + /* Test ecmult_gen() for [0..36) and [order-36..0). */ + secp256k1_scalar_t x; + secp256k1_gej_t r; + secp256k1_ge_t ng; + int i; + int j; + secp256k1_ge_neg(&ng, &secp256k1_ge_const_g); + for (i = 0; i < 36; i++ ) { + secp256k1_scalar_set_int(&x, i); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &r, &x); + for (j = 0; j < i; j++) { + if (j == i - 1) { + ge_equals_gej(&secp256k1_ge_const_g, &r); + } + secp256k1_gej_add_ge(&r, &r, &ng); + } + CHECK(secp256k1_gej_is_infinity(&r)); + } + for (i = 1; i <= 36; i++ ) { + secp256k1_scalar_set_int(&x, i); + secp256k1_scalar_negate(&x, &x); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &r, &x); + for (j = 0; j < i; j++) { + if (j == i - 1) { + ge_equals_gej(&ng, &r); + } + secp256k1_gej_add_ge(&r, &r, &secp256k1_ge_const_g); + } + CHECK(secp256k1_gej_is_infinity(&r)); + } +} + +void run_ecmult_constants(void) { + test_ecmult_constants(); +} + +void test_ecmult_gen_blind(void) { + /* Test ecmult_gen() blinding and confirm that the blinding changes, the affline points match, and the z's don't match. */ + secp256k1_scalar_t key; + secp256k1_scalar_t b; + unsigned char seed32[32]; + secp256k1_gej_t pgej; + secp256k1_gej_t pgej2; + secp256k1_gej_t i; + secp256k1_ge_t pge; + random_scalar_order_test(&key); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &pgej, &key); + secp256k1_rand256(seed32); + b = ctx->ecmult_gen_ctx.blind; + i = ctx->ecmult_gen_ctx.initial; + secp256k1_ecmult_gen_blind(&ctx->ecmult_gen_ctx, seed32); + CHECK(!secp256k1_scalar_eq(&b, &ctx->ecmult_gen_ctx.blind)); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &pgej2, &key); + CHECK(!gej_xyz_equals_gej(&pgej, &pgej2)); + CHECK(!gej_xyz_equals_gej(&i, &ctx->ecmult_gen_ctx.initial)); + secp256k1_ge_set_gej(&pge, &pgej); + ge_equals_gej(&pge, &pgej2); +} + +void test_ecmult_gen_blind_reset(void) { + /* Test ecmult_gen() blinding reset and confirm that the blinding is consistent. */ + secp256k1_scalar_t b; + secp256k1_gej_t initial; + secp256k1_ecmult_gen_blind(&ctx->ecmult_gen_ctx, 0); + b = ctx->ecmult_gen_ctx.blind; + initial = ctx->ecmult_gen_ctx.initial; + secp256k1_ecmult_gen_blind(&ctx->ecmult_gen_ctx, 0); + CHECK(secp256k1_scalar_eq(&b, &ctx->ecmult_gen_ctx.blind)); + CHECK(gej_xyz_equals_gej(&initial, &ctx->ecmult_gen_ctx.initial)); +} + +void run_ecmult_gen_blind(void) { + int i; + test_ecmult_gen_blind_reset(); + for (i = 0; i < 10; i++) { + test_ecmult_gen_blind(); + } +} + +#ifdef USE_ENDOMORPHISM +/***** ENDOMORPHISH TESTS *****/ +void test_scalar_split(void) { + secp256k1_scalar_t full; + secp256k1_scalar_t s1, slam; + const unsigned char zero[32] = {0}; + unsigned char tmp[32]; + + random_scalar_order_test(&full); + secp256k1_scalar_split_lambda(&s1, &slam, &full); + + /* check that both are <= 128 bits in size */ + if (secp256k1_scalar_is_high(&s1)) + secp256k1_scalar_negate(&s1, &s1); + if (secp256k1_scalar_is_high(&slam)) + secp256k1_scalar_negate(&slam, &slam); + + secp256k1_scalar_get_b32(tmp, &s1); + CHECK(memcmp(zero, tmp, 16) == 0); + secp256k1_scalar_get_b32(tmp, &slam); + CHECK(memcmp(zero, tmp, 16) == 0); +} + +void run_endomorphism_tests(void) { + test_scalar_split(); +} +#endif + +void random_sign(secp256k1_scalar_t *sigr, secp256k1_scalar_t *sigs, const secp256k1_scalar_t *key, const secp256k1_scalar_t *msg, int *recid) { + secp256k1_scalar_t nonce; + do { + random_scalar_order_test(&nonce); + } while(!secp256k1_ecdsa_sig_sign(&ctx->ecmult_gen_ctx, sigr, sigs, key, msg, &nonce, recid)); +} + +void test_ecdsa_sign_verify(void) { + secp256k1_gej_t pubj; + secp256k1_ge_t pub; + secp256k1_scalar_t one; + secp256k1_scalar_t msg, key; + secp256k1_scalar_t sigr, sigs; + int recid; + int getrec; + random_scalar_order_test(&msg); + random_scalar_order_test(&key); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &pubj, &key); + secp256k1_ge_set_gej(&pub, &pubj); + getrec = secp256k1_rand32()&1; + random_sign(&sigr, &sigs, &key, &msg, getrec?&recid:NULL); + if (getrec) { + CHECK(recid >= 0 && recid < 4); + } + CHECK(secp256k1_ecdsa_sig_verify(&ctx->ecmult_ctx, &sigr, &sigs, &pub, &msg)); + secp256k1_scalar_set_int(&one, 1); + secp256k1_scalar_add(&msg, &msg, &one); + CHECK(!secp256k1_ecdsa_sig_verify(&ctx->ecmult_ctx, &sigr, &sigs, &pub, &msg)); +} + +void run_ecdsa_sign_verify(void) { + int i; + for (i = 0; i < 10*count; i++) { + test_ecdsa_sign_verify(); + } +} + +/** Dummy nonce generation function that just uses a precomputed nonce, and fails if it is not accepted. Use only for testing. */ +static int precomputed_nonce_function(unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32, const unsigned char *algo16, unsigned int counter, const void *data) { + (void)msg32; + (void)key32; + (void)algo16; + memcpy(nonce32, data, 32); + return (counter == 0); +} + +static int nonce_function_test_fail(unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32, const unsigned char *algo16, unsigned int counter, const void *data) { + /* Dummy nonce generator that has a fatal error on the first counter value. */ + if (counter == 0) { + return 0; + } + return nonce_function_rfc6979(nonce32, msg32, key32, algo16, counter - 1, data); +} + +static int nonce_function_test_retry(unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32, const unsigned char *algo16, unsigned int counter, const void *data) { + /* Dummy nonce generator that produces unacceptable nonces for the first several counter values. */ + if (counter < 3) { + memset(nonce32, counter==0 ? 0 : 255, 32); + if (counter == 2) { + nonce32[31]--; + } + return 1; + } + if (counter < 5) { + static const unsigned char order[] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE, + 0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B, + 0xBF,0xD2,0x5E,0x8C,0xD0,0x36,0x41,0x41 + }; + memcpy(nonce32, order, 32); + if (counter == 4) { + nonce32[31]++; + } + return 1; + } + /* Retry rate of 6979 is negligible esp. as we only call this in determinstic tests. */ + /* If someone does fine a case where it retries for secp256k1, we'd like to know. */ + if (counter > 5) { + return 0; + } + return nonce_function_rfc6979(nonce32, msg32, key32, algo16, counter - 5, data); +} + +int is_empty_signature(const secp256k1_ecdsa_signature_t *sig) { + static const unsigned char res[sizeof(secp256k1_ecdsa_signature_t)] = {0}; + return memcmp(sig, res, sizeof(secp256k1_ecdsa_signature_t)) == 0; +} + +void test_ecdsa_end_to_end(void) { + unsigned char extra[32] = {0x00}; + unsigned char privkey[32]; + unsigned char message[32]; + unsigned char privkey2[32]; + secp256k1_ecdsa_signature_t signature[5]; + unsigned char sig[74]; + int siglen = 74; + unsigned char pubkeyc[65]; + int pubkeyclen = 65; + secp256k1_pubkey_t pubkey; + secp256k1_pubkey_t recpubkey; + unsigned char seckey[300]; + int recid = 0; + int seckeylen = 300; + + /* Generate a random key and message. */ + { + secp256k1_scalar_t msg, key; + random_scalar_order_test(&msg); + random_scalar_order_test(&key); + secp256k1_scalar_get_b32(privkey, &key); + secp256k1_scalar_get_b32(message, &msg); + } + + /* Construct and verify corresponding public key. */ + CHECK(secp256k1_ec_seckey_verify(ctx, privkey) == 1); + CHECK(secp256k1_ec_pubkey_create(ctx, &pubkey, privkey) == 1); + + /* Verify exporting and importing public key. */ + CHECK(secp256k1_ec_pubkey_serialize(ctx, pubkeyc, &pubkeyclen, &pubkey, secp256k1_rand32() % 2) == 1); + memset(&pubkey, 0, sizeof(pubkey)); + CHECK(secp256k1_ec_pubkey_parse(ctx, &pubkey, pubkeyc, pubkeyclen) == 1); + + /* Verify private key import and export. */ + CHECK(secp256k1_ec_privkey_export(ctx, privkey, seckey, &seckeylen, secp256k1_rand32() % 2) == 1); + CHECK(secp256k1_ec_privkey_import(ctx, privkey2, seckey, seckeylen) == 1); + CHECK(memcmp(privkey, privkey2, 32) == 0); + + /* Optionally tweak the keys using addition. */ + if (secp256k1_rand32() % 3 == 0) { + int ret1; + int ret2; + unsigned char rnd[32]; + secp256k1_pubkey_t pubkey2; + secp256k1_rand256_test(rnd); + ret1 = secp256k1_ec_privkey_tweak_add(ctx, privkey, rnd); + ret2 = secp256k1_ec_pubkey_tweak_add(ctx, &pubkey, rnd); + CHECK(ret1 == ret2); + if (ret1 == 0) { + return; + } + CHECK(secp256k1_ec_pubkey_create(ctx, &pubkey2, privkey) == 1); + CHECK(memcmp(&pubkey, &pubkey2, sizeof(pubkey)) == 0); + } + + /* Optionally tweak the keys using multiplication. */ + if (secp256k1_rand32() % 3 == 0) { + int ret1; + int ret2; + unsigned char rnd[32]; + secp256k1_pubkey_t pubkey2; + secp256k1_rand256_test(rnd); + ret1 = secp256k1_ec_privkey_tweak_mul(ctx, privkey, rnd); + ret2 = secp256k1_ec_pubkey_tweak_mul(ctx, &pubkey, rnd); + CHECK(ret1 == ret2); + if (ret1 == 0) { + return; + } + CHECK(secp256k1_ec_pubkey_create(ctx, &pubkey2, privkey) == 1); + CHECK(memcmp(&pubkey, &pubkey2, sizeof(pubkey)) == 0); + } + + /* Sign. */ + CHECK(secp256k1_ecdsa_sign(ctx, message, &signature[0], privkey, NULL, NULL) == 1); + CHECK(secp256k1_ecdsa_sign(ctx, message, &signature[4], privkey, NULL, NULL) == 1); + CHECK(secp256k1_ecdsa_sign(ctx, message, &signature[1], privkey, NULL, extra) == 1); + extra[31] = 1; + CHECK(secp256k1_ecdsa_sign(ctx, message, &signature[2], privkey, NULL, extra) == 1); + extra[31] = 0; + extra[0] = 1; + CHECK(secp256k1_ecdsa_sign(ctx, message, &signature[3], privkey, NULL, extra) == 1); + CHECK(memcmp(&signature[0], &signature[4], sizeof(signature[0])) == 0); + CHECK(memcmp(&signature[0], &signature[1], sizeof(signature[0])) != 0); + CHECK(memcmp(&signature[0], &signature[2], sizeof(signature[0])) != 0); + CHECK(memcmp(&signature[0], &signature[3], sizeof(signature[0])) != 0); + CHECK(memcmp(&signature[1], &signature[2], sizeof(signature[0])) != 0); + CHECK(memcmp(&signature[1], &signature[3], sizeof(signature[0])) != 0); + CHECK(memcmp(&signature[2], &signature[3], sizeof(signature[0])) != 0); + /* Verify. */ + CHECK(secp256k1_ecdsa_verify(ctx, message, &signature[0], &pubkey) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, message, &signature[1], &pubkey) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, message, &signature[2], &pubkey) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, message, &signature[3], &pubkey) == 1); + + /* Serialize/parse DER and verify again */ + CHECK(secp256k1_ecdsa_signature_serialize_der(ctx, sig, &siglen, &signature[0]) == 1); + memset(&signature[0], 0, sizeof(signature[0])); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &signature[0], sig, siglen) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, message, &signature[0], &pubkey) == 1); + /* Serialize/destroy/parse DER and verify again. */ + CHECK(secp256k1_ecdsa_signature_serialize_der(ctx, sig, &siglen, &signature[0]) == 1); + sig[secp256k1_rand32() % siglen] += 1 + (secp256k1_rand32() % 255); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &signature[0], sig, siglen) == 0 || + secp256k1_ecdsa_verify(ctx, message, &signature[0], &pubkey) == 0); + + /* Serialize/parse compact (without recovery id) and verify again. */ + CHECK(secp256k1_ecdsa_signature_serialize_compact(ctx, sig, &recid, &signature[4]) == 1); + CHECK(secp256k1_ecdsa_signature_serialize_compact(ctx, sig, NULL, &signature[4]) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, message, &signature[4], &pubkey) == 1); + memset(&signature[4], 0, sizeof(signature[4])); + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &signature[4], sig, -1) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, message, &signature[4], &pubkey) == 1); + /* Parse compact (with recovery id) and recover. */ + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &signature[4], sig, recid) == 1); + CHECK(secp256k1_ecdsa_recover(ctx, message, &signature[4], &recpubkey) == 1); + CHECK(memcmp(&pubkey, &recpubkey, sizeof(pubkey)) == 0); + /* Serialize/destroy/parse signature and verify again. */ + CHECK(secp256k1_ecdsa_signature_serialize_compact(ctx, sig, &recid, &signature[4]) == 1); + sig[secp256k1_rand32() % 64] += 1 + (secp256k1_rand32() % 255); + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &signature[4], sig, recid) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, message, &signature[4], &pubkey) == 0); + /* Recover again */ + CHECK(secp256k1_ecdsa_recover(ctx, message, &signature[4], &recpubkey) == 0 || + memcmp(&pubkey, &recpubkey, sizeof(pubkey)) != 0); +} + +void test_random_pubkeys(void) { + secp256k1_ge_t elem; + secp256k1_ge_t elem2; + unsigned char in[65]; + /* Generate some randomly sized pubkeys. */ + uint32_t r = secp256k1_rand32(); + int len = (r & 3) == 0 ? 65 : 33; + r>>=2; + if ((r & 3) == 0) { + len = (r & 252) >> 3; + } + r>>=8; + if (len == 65) { + in[0] = (r & 2) ? 4 : (r & 1? 6 : 7); + } else { + in[0] = (r & 1) ? 2 : 3; + } + r>>=2; + if ((r & 7) == 0) { + in[0] = (r & 2040) >> 3; + } + r>>=11; + if (len > 1) { + secp256k1_rand256(&in[1]); + } + if (len > 33) { + secp256k1_rand256(&in[33]); + } + if (secp256k1_eckey_pubkey_parse(&elem, in, len)) { + unsigned char out[65]; + unsigned char firstb; + int res; + int size = len; + firstb = in[0]; + /* If the pubkey can be parsed, it should round-trip... */ + CHECK(secp256k1_eckey_pubkey_serialize(&elem, out, &size, len == 33)); + CHECK(size == len); + CHECK(memcmp(&in[1], &out[1], len-1) == 0); + /* ... except for the type of hybrid inputs. */ + if ((in[0] != 6) && (in[0] != 7)) { + CHECK(in[0] == out[0]); + } + size = 65; + CHECK(secp256k1_eckey_pubkey_serialize(&elem, in, &size, 0)); + CHECK(size == 65); + CHECK(secp256k1_eckey_pubkey_parse(&elem2, in, size)); + ge_equals_ge(&elem,&elem2); + /* Check that the X9.62 hybrid type is checked. */ + in[0] = (r & 1) ? 6 : 7; + res = secp256k1_eckey_pubkey_parse(&elem2, in, size); + if (firstb == 2 || firstb == 3) { + if (in[0] == firstb + 4) { + CHECK(res); + } else { + CHECK(!res); + } + } + if (res) { + ge_equals_ge(&elem,&elem2); + CHECK(secp256k1_eckey_pubkey_serialize(&elem, out, &size, 0)); + CHECK(memcmp(&in[1], &out[1], 64) == 0); + } + } +} + +void run_random_pubkeys(void) { + int i; + for (i = 0; i < 10*count; i++) { + test_random_pubkeys(); + } +} + +void run_ecdsa_end_to_end(void) { + int i; + for (i = 0; i < 64*count; i++) { + test_ecdsa_end_to_end(); + } +} + +/* Tests several edge cases. */ +void test_ecdsa_edge_cases(void) { + const unsigned char msg32[32] = { + 'T', 'h', 'i', 's', ' ', 'i', 's', ' ', + 'a', ' ', 'v', 'e', 'r', 'y', ' ', 's', + 'e', 'c', 'r', 'e', 't', ' ', 'm', 'e', + 's', 's', 'a', 'g', 'e', '.', '.', '.' + }; + const unsigned char sig64[64] = { + /* Generated by signing the above message with nonce 'This is the nonce we will use...' + * and secret key 0 (which is not valid), resulting in recid 0. */ + 0x67, 0xCB, 0x28, 0x5F, 0x9C, 0xD1, 0x94, 0xE8, + 0x40, 0xD6, 0x29, 0x39, 0x7A, 0xF5, 0x56, 0x96, + 0x62, 0xFD, 0xE4, 0x46, 0x49, 0x99, 0x59, 0x63, + 0x17, 0x9A, 0x7D, 0xD1, 0x7B, 0xD2, 0x35, 0x32, + 0x4B, 0x1B, 0x7D, 0xF3, 0x4C, 0xE1, 0xF6, 0x8E, + 0x69, 0x4F, 0xF6, 0xF1, 0x1A, 0xC7, 0x51, 0xDD, + 0x7D, 0xD7, 0x3E, 0x38, 0x7E, 0xE4, 0xFC, 0x86, + 0x6E, 0x1B, 0xE8, 0xEC, 0xC7, 0xDD, 0x95, 0x57 + }; + secp256k1_pubkey_t pubkey; + int t; + /* signature (r,s) = (4,4), which can be recovered with all 4 recids. */ + const unsigned char sigb64[64] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + }; + secp256k1_pubkey_t pubkeyb; + secp256k1_ecdsa_signature_t sig; + int recid; + + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sig64, 0)); + CHECK(!secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkey)); + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sig64, 1)); + CHECK(secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkey)); + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sig64, 2)); + CHECK(!secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkey)); + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sig64, 3)); + CHECK(!secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkey)); + + for (recid = 0; recid < 4; recid++) { + int i; + int recid2; + /* (4,4) encoded in DER. */ + unsigned char sigbder[8] = {0x30, 0x06, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04}; + unsigned char sigcder_zr[7] = {0x30, 0x05, 0x02, 0x00, 0x02, 0x01, 0x01}; + unsigned char sigcder_zs[7] = {0x30, 0x05, 0x02, 0x01, 0x01, 0x02, 0x00}; + unsigned char sigbderalt1[39] = { + 0x30, 0x25, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x04, + }; + unsigned char sigbderalt2[39] = { + 0x30, 0x25, 0x02, 0x01, 0x04, 0x02, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + }; + unsigned char sigbderalt3[40] = { + 0x30, 0x26, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x04, + }; + unsigned char sigbderalt4[40] = { + 0x30, 0x26, 0x02, 0x01, 0x04, 0x02, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + }; + /* (order + r,4) encoded in DER. */ + unsigned char sigbderlong[40] = { + 0x30, 0x26, 0x02, 0x21, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBA, 0xAE, 0xDC, + 0xE6, 0xAF, 0x48, 0xA0, 0x3B, 0xBF, 0xD2, 0x5E, + 0x8C, 0xD0, 0x36, 0x41, 0x45, 0x02, 0x01, 0x04 + }; + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sigb64, recid) == 1); + CHECK(secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkeyb) == 1); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbder, sizeof(sigbder)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyb) == 1); + for (recid2 = 0; recid2 < 4; recid2++) { + secp256k1_pubkey_t pubkey2b; + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sigb64, recid2) == 1); + CHECK(secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkey2b) == 1); + /* Verifying with (order + r,4) should always fail. */ + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbderlong, sizeof(sigbderlong)) == 0); + } + /* DER parsing tests. */ + /* Zero length r/s. */ + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigcder_zr, sizeof(sigcder_zr)) == 0); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigcder_zs, sizeof(sigcder_zs)) == 0); + /* Leading zeros. */ + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbderalt1, sizeof(sigbderalt1)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyb) == 1); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbderalt2, sizeof(sigbderalt2)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyb) == 1); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbderalt3, sizeof(sigbderalt3)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyb) == 1); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbderalt4, sizeof(sigbderalt4)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyb) == 1); + sigbderalt3[4] = 1; + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbderalt3, sizeof(sigbderalt3)) == 0); + sigbderalt4[7] = 1; + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbderalt4, sizeof(sigbderalt4)) == 0); + /* Damage signature. */ + sigbder[7]++; + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbder, sizeof(sigbder)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyb) == 0); + sigbder[7]--; + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbder, 6) == 0); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbder, sizeof(sigbder) - 1) == 0); + for(i = 0; i < 8; i++) { + int c; + unsigned char orig = sigbder[i]; + /*Try every single-byte change.*/ + for (c = 0; c < 256; c++) { + if (c == orig ) { + continue; + } + sigbder[i] = c; + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigbder, sizeof(sigbder)) == 0 || secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyb) == 0); + } + sigbder[i] = orig; + } + } + + /* Test the case where ECDSA recomputes a point that is infinity. */ + { + secp256k1_gej_t keyj; + secp256k1_ge_t key; + secp256k1_scalar_t msg; + secp256k1_scalar_t sr, ss; + secp256k1_scalar_set_int(&ss, 1); + secp256k1_scalar_negate(&ss, &ss); + secp256k1_scalar_inverse(&ss, &ss); + secp256k1_scalar_set_int(&sr, 1); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &keyj, &sr); + secp256k1_ge_set_gej(&key, &keyj); + msg = ss; + CHECK(secp256k1_ecdsa_sig_verify(&ctx->ecmult_ctx, &sr, &ss, &key, &msg) == 0); + } + + /* Test r/s equal to zero */ + { + /* (1,1) encoded in DER. */ + unsigned char sigcder[8] = {0x30, 0x06, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01}; + unsigned char sigc64[64] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + }; + secp256k1_pubkey_t pubkeyc; + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sigc64, 0) == 1); + CHECK(secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkeyc) == 1); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigcder, sizeof(sigcder)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyc) == 1); + sigcder[4] = 0; + sigc64[31] = 0; + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sigc64, 0) == 1); + CHECK(secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkeyb) == 0); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigcder, sizeof(sigcder)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyc) == 0); + sigcder[4] = 1; + sigcder[7] = 0; + sigc64[31] = 1; + sigc64[63] = 0; + CHECK(secp256k1_ecdsa_signature_parse_compact(ctx, &sig, sigc64, 0) == 1); + CHECK(secp256k1_ecdsa_recover(ctx, msg32, &sig, &pubkeyb) == 0); + CHECK(secp256k1_ecdsa_signature_parse_der(ctx, &sig, sigcder, sizeof(sigcder)) == 1); + CHECK(secp256k1_ecdsa_verify(ctx, msg32, &sig, &pubkeyc) == 0); + } + + /*Signature where s would be zero.*/ + { + unsigned char signature[72]; + int siglen; + const unsigned char nonce[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + }; + static const unsigned char nonce2[32] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE, + 0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B, + 0xBF,0xD2,0x5E,0x8C,0xD0,0x36,0x41,0x40 + }; + const unsigned char key[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + }; + unsigned char msg[32] = { + 0x86, 0x41, 0x99, 0x81, 0x06, 0x23, 0x44, 0x53, + 0xaa, 0x5f, 0x9d, 0x6a, 0x31, 0x78, 0xf4, 0xf7, + 0xb8, 0x12, 0xe0, 0x0b, 0x81, 0x7a, 0x77, 0x62, + 0x65, 0xdf, 0xdd, 0x31, 0xb9, 0x3e, 0x29, 0xa9, + }; + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig, key, precomputed_nonce_function, nonce) == 0); + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig, key, precomputed_nonce_function, nonce2) == 0); + msg[31] = 0xaa; + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig, key, precomputed_nonce_function, nonce) == 1); + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig, key, precomputed_nonce_function, nonce2) == 1); + siglen = 72; + CHECK(secp256k1_ecdsa_signature_serialize_der(ctx, signature, &siglen, &sig) == 1); + siglen = 10; + CHECK(secp256k1_ecdsa_signature_serialize_der(ctx, signature, &siglen, &sig) == 0); + } + + /* Nonce function corner cases. */ + for (t = 0; t < 2; t++) { + static const unsigned char zero[32] = {0x00}; + int i; + unsigned char key[32]; + unsigned char msg[32]; + secp256k1_ecdsa_signature_t sig2; + secp256k1_scalar_t sr[512], ss; + const unsigned char *extra; + extra = t == 0 ? NULL : zero; + memset(msg, 0, 32); + msg[31] = 1; + /* High key results in signature failure. */ + memset(key, 0xFF, 32); + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig, key, NULL, extra) == 0); + CHECK(is_empty_signature(&sig)); + /* Zero key results in signature failure. */ + memset(key, 0, 32); + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig, key, NULL, extra) == 0); + CHECK(is_empty_signature(&sig)); + /* Nonce function failure results in signature failure. */ + key[31] = 1; + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig, key, nonce_function_test_fail, extra) == 0); + CHECK(is_empty_signature(&sig)); + /* The retry loop successfully makes its way to the first good value. */ + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig, key, nonce_function_test_retry, extra) == 1); + CHECK(!is_empty_signature(&sig)); + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig2, key, nonce_function_rfc6979, extra) == 1); + CHECK(!is_empty_signature(&sig2)); + CHECK(memcmp(&sig, &sig2, sizeof(sig)) == 0); + /* The default nonce function is determinstic. */ + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig2, key, NULL, extra) == 1); + CHECK(!is_empty_signature(&sig2)); + CHECK(memcmp(&sig, &sig2, sizeof(sig)) == 0); + /* The default nonce function changes output with different messages. */ + for(i = 0; i < 256; i++) { + int j; + msg[0] = i; + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig2, key, NULL, extra) == 1); + CHECK(!is_empty_signature(&sig2)); + secp256k1_ecdsa_signature_load(ctx, &sr[i], &ss, NULL, &sig2); + for (j = 0; j < i; j++) { + CHECK(!secp256k1_scalar_eq(&sr[i], &sr[j])); + } + } + msg[0] = 0; + msg[31] = 2; + /* The default nonce function changes output with different keys. */ + for(i = 256; i < 512; i++) { + int j; + key[0] = i - 256; + CHECK(secp256k1_ecdsa_sign(ctx, msg, &sig2, key, NULL, extra) == 1); + CHECK(!is_empty_signature(&sig2)); + secp256k1_ecdsa_signature_load(ctx, &sr[i], &ss, NULL, &sig2); + for (j = 0; j < i; j++) { + CHECK(!secp256k1_scalar_eq(&sr[i], &sr[j])); + } + } + key[0] = 0; + } + + /* Privkey export where pubkey is the point at infinity. */ + { + unsigned char privkey[300]; + unsigned char seckey[32] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, + 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, + }; + int outlen = 300; + CHECK(!secp256k1_ec_privkey_export(ctx, seckey, privkey, &outlen, 0)); + CHECK(!secp256k1_ec_privkey_export(ctx, seckey, privkey, &outlen, 1)); + } +} + +void run_ecdsa_edge_cases(void) { + test_ecdsa_edge_cases(); +} + +#ifdef ENABLE_OPENSSL_TESTS +EC_KEY *get_openssl_key(const secp256k1_scalar_t *key) { + unsigned char privkey[300]; + int privkeylen; + const unsigned char* pbegin = privkey; + int compr = secp256k1_rand32() & 1; + EC_KEY *ec_key = EC_KEY_new_by_curve_name(NID_secp256k1); + CHECK(secp256k1_eckey_privkey_serialize(&ctx->ecmult_gen_ctx, privkey, &privkeylen, key, compr)); + CHECK(d2i_ECPrivateKey(&ec_key, &pbegin, privkeylen)); + CHECK(EC_KEY_check_key(ec_key)); + return ec_key; +} + +void test_ecdsa_openssl(void) { + secp256k1_gej_t qj; + secp256k1_ge_t q; + secp256k1_scalar_t sigr, sigs; + secp256k1_scalar_t one; + secp256k1_scalar_t msg2; + secp256k1_scalar_t key, msg; + EC_KEY *ec_key; + unsigned int sigsize = 80; + int secp_sigsize = 80; + unsigned char message[32]; + unsigned char signature[80]; + secp256k1_rand256_test(message); + secp256k1_scalar_set_b32(&msg, message, NULL); + random_scalar_order_test(&key); + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &qj, &key); + secp256k1_ge_set_gej(&q, &qj); + ec_key = get_openssl_key(&key); + CHECK(ec_key); + CHECK(ECDSA_sign(0, message, sizeof(message), signature, &sigsize, ec_key)); + CHECK(secp256k1_ecdsa_sig_parse(&sigr, &sigs, signature, sigsize)); + CHECK(secp256k1_ecdsa_sig_verify(&ctx->ecmult_ctx, &sigr, &sigs, &q, &msg)); + secp256k1_scalar_set_int(&one, 1); + secp256k1_scalar_add(&msg2, &msg, &one); + CHECK(!secp256k1_ecdsa_sig_verify(&ctx->ecmult_ctx, &sigr, &sigs, &q, &msg2)); + + random_sign(&sigr, &sigs, &key, &msg, NULL); + CHECK(secp256k1_ecdsa_sig_serialize(signature, &secp_sigsize, &sigr, &sigs)); + CHECK(ECDSA_verify(0, message, sizeof(message), signature, secp_sigsize, ec_key) == 1); + + EC_KEY_free(ec_key); +} + +void run_ecdsa_openssl(void) { + int i; + for (i = 0; i < 10*count; i++) { + test_ecdsa_openssl(); + } +} +#endif + +#ifdef ENABLE_MODULE_ECDH +# include "modules/ecdh/tests_impl.h" +#endif + +#ifdef ENABLE_MODULE_SCHNORR +# include "modules/schnorr/tests_impl.h" +#endif + +#ifdef ENABLE_MODULE_RANGEPROOF +# include "modules/rangeproof/tests_impl.h" +#endif + +int main(int argc, char **argv) { + unsigned char seed16[16] = {0}; + unsigned char run32[32] = {0}; + /* find iteration count */ + if (argc > 1) { + count = strtol(argv[1], NULL, 0); + } + + /* find random seed */ + if (argc > 2) { + int pos = 0; + const char* ch = argv[2]; + while (pos < 16 && ch[0] != 0 && ch[1] != 0) { + unsigned short sh; + if (sscanf(ch, "%2hx", &sh)) { + seed16[pos] = sh; + } else { + break; + } + ch += 2; + pos++; + } + } else { + FILE *frand = fopen("/dev/urandom", "r"); + if (!frand || !fread(&seed16, sizeof(seed16), 1, frand)) { + uint64_t t = time(NULL) * (uint64_t)1337; + seed16[0] ^= t; + seed16[1] ^= t >> 8; + seed16[2] ^= t >> 16; + seed16[3] ^= t >> 24; + seed16[4] ^= t >> 32; + seed16[5] ^= t >> 40; + seed16[6] ^= t >> 48; + seed16[7] ^= t >> 56; + } + fclose(frand); + } + secp256k1_rand_seed(seed16); + + printf("test count = %i\n", count); + printf("random seed = %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", seed16[0], seed16[1], seed16[2], seed16[3], seed16[4], seed16[5], seed16[6], seed16[7], seed16[8], seed16[9], seed16[10], seed16[11], seed16[12], seed16[13], seed16[14], seed16[15]); + + /* initialize */ + run_context_tests(); + ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); + + if (secp256k1_rand32() & 1) { + secp256k1_rand256(run32); + CHECK(secp256k1_context_randomize(ctx, secp256k1_rand32() & 1 ? run32 : NULL)); + } + + run_util_tests(); + + run_sha256_tests(); + run_hmac_sha256_tests(); + run_rfc6979_hmac_sha256_tests(); + +#ifndef USE_NUM_NONE + /* num tests */ + run_num_smalltests(); +#endif + + /* scalar tests */ + run_scalar_tests(); + + /* field tests */ + run_field_inv(); + run_field_inv_var(); + run_field_inv_all_var(); + run_field_misc(); + run_field_convert(); + run_sqr(); + run_sqrt(); + + /* group tests */ + run_ge(); + + /* ecmult tests */ + run_wnaf(); + run_point_times_order(); + run_ecmult_chain(); + run_ecmult_constants(); + run_ecmult_gen_blind(); + run_ecmult_const_tests(); + run_ec_combine(); + + /* endomorphism tests */ +#ifdef USE_ENDOMORPHISM + run_endomorphism_tests(); +#endif + +#ifdef ENABLE_MODULE_ECDH + /* ecdh tests */ + run_ecdh_tests(); +#endif + + /* ecdsa tests */ + run_random_pubkeys(); + run_ecdsa_sign_verify(); + run_ecdsa_end_to_end(); + run_ecdsa_edge_cases(); +#ifdef ENABLE_OPENSSL_TESTS + run_ecdsa_openssl(); +#endif + +#ifdef ENABLE_MODULE_SCHNORR + /* Schnorr tests */ + run_schnorr_tests(); +#endif + +#ifdef ENABLE_MODULE_RANGEPROOF + run_rangeproof_tests(); +#endif + + secp256k1_rand256(run32); + printf("random run = %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", run32[0], run32[1], run32[2], run32[3], run32[4], run32[5], run32[6], run32[7], run32[8], run32[9], run32[10], run32[11], run32[12], run32[13], run32[14], run32[15]); + + /* shutdown */ + secp256k1_context_destroy(ctx); + return 0; +} diff --git a/crypto777/secp256k1/util.h b/crypto777/secp256k1/util.h new file mode 100644 index 000000000..7e7581f17 --- /dev/null +++ b/crypto777/secp256k1/util.h @@ -0,0 +1,133 @@ +/********************************************************************** + * Copyright (c) 2013-2015 Pieter Wuille, Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_UTIL_H_ +#define _SECP256K1_UTIL_H_ + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include +#include +#include + +typedef struct { + void (*fn)(const char *text, void* data); + void* data; +} callback_t; + +#ifdef DETERMINISTIC +#define TEST_FAILURE(msg) do { \ + fprintf(stderr, "%s\n", msg); \ + abort(); \ +} while(0); +#else +#define TEST_FAILURE(msg) do { \ + fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, msg); \ + abort(); \ +} while(0) +#endif + +#ifdef HAVE_BUILTIN_EXPECT +#define EXPECT(x,c) __builtin_expect((x),(c)) +#else +#define EXPECT(x,c) (x) +#endif + +#ifdef DETERMINISTIC +#define CHECK(cond) do { \ + if (EXPECT(!(cond), 0)) { \ + TEST_FAILURE("test condition failed"); \ + } \ +} while(0) +#else +#define CHECK(cond) do { \ + if (EXPECT(!(cond), 0)) { \ + TEST_FAILURE("test condition failed: " #cond); \ + } \ +} while(0) +#endif + +/* Like assert(), but when VERIFY is defined, and side-effect safe. */ +#ifdef VERIFY +#define VERIFY_CHECK CHECK +#define VERIFY_SETUP(stmt) do { stmt; } while(0) +#else +#define VERIFY_CHECK(cond) do { (void)(cond); } while(0) +#define VERIFY_SETUP(stmt) +#endif + +static SECP256K1_INLINE void *checked_malloc(const callback_t* cb, size_t size) { + void *ret = malloc(size); + if (ret == NULL) { + cb->fn("Out of memory", cb->data); + } + return ret; +} + +/* Extract the sign of an int64, take the abs and return a uint64, constant time. */ +SECP256K1_INLINE static int secp256k1_sign_and_abs64(uint64_t *out, int64_t in) { + uint64_t mask0, mask1; + int ret; + ret = in < 0; + mask0 = ret + ~((uint64_t)0); + mask1 = ~mask0; + *out = (uint64_t)in; + *out = (*out & mask0) | ((~*out + 1) & mask1); + return ret; +} + +SECP256K1_INLINE static int secp256k1_clz64_var(uint64_t x) { + int ret; + if (!x) { + return 64; + } +# if defined(HAVE_BUILTIN_CLZLL) + ret = __builtin_clzll(x); +# else + /*FIXME: debruijn fallback. */ + for (ret = 0; ((x & (1ULL << 63)) == 0); x <<= 1, ret++); +# endif + return ret; + +} + +/* Macro for restrict, when available and not in a VERIFY build. */ +#if defined(SECP256K1_BUILD) && defined(VERIFY) +# define SECP256K1_RESTRICT +#else +# if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if SECP256K1_GNUC_PREREQ(3,0) +# define SECP256K1_RESTRICT __restrict__ +# elif (defined(_MSC_VER) && _MSC_VER >= 1400) +# define SECP256K1_RESTRICT __restrict +# else +# define SECP256K1_RESTRICT +# endif +# else +# define SECP256K1_RESTRICT restrict +# endif +#endif + +#if defined(_WIN32) +# define I64FORMAT "I64d" +# define I64uFORMAT "I64u" +#else +# define I64FORMAT "lld" +# define I64uFORMAT "llu" +#endif + +#if defined(HAVE___INT128) +# if defined(__GNUC__) +# define SECP256K1_GNUC_EXT __extension__ +# else +# define SECP256K1_GNUC_EXT +# endif +SECP256K1_GNUC_EXT typedef unsigned __int128 uint128_t; +#endif + +#endif diff --git a/crypto777/tools/common.mk b/crypto777/tools/common.mk index 1aa7ab4e6..114a49256 100644 --- a/crypto777/tools/common.mk +++ b/crypto777/tools/common.mk @@ -32,12 +32,9 @@ TOP_MAKE := $(word 1,$(MAKEFILE_LIST)) # # Figure out which OS we are running on. # -#GETOS := python $(NACL_SDK_ROOT)/tools/getos.py -#NACL_CONFIG := python $(NACL_SDK_ROOT)/tools/nacl_config.py -#FIXDEPS := python $(NACL_SDK_ROOT)/tools/fix_deps.py -c -GETOS := python tools/getos.py -NACL_CONFIG := python tools/nacl_config.py -FIXDEPS := python tools/fix_deps.py -c +GETOS := python $(NACL_SDK_ROOT)/tools/getos.py +NACL_CONFIG := python $(NACL_SDK_ROOT)/tools/nacl_config.py +FIXDEPS := python $(NACL_SDK_ROOT)/tools/fix_deps.py -c OSNAME := $(shell $(GETOS)) diff --git a/iguana/favicon.ico b/iguana/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..d249e41feb0fd2bb0d0ab942a9c84f304586164a GIT binary patch literal 2550 zcmaKu4OCQR8pr=?scEZHaoWvVF*b7Z6H|1_KvPS@RR%+Z@FTEAMU4?rKs1mKg^`hA zMqygi1%gn=BeR2?G(<#LQJ0T#MRpO$_(sd+ltK#f-)DwZThG=#=b7Q&dH>J7m;2t| z?*#^6AV!UXd=JIirvV4xzx#Gr`xKy-W8*Bxr0k?D<9=xy;Jf^0W;_b9jOiwL?%b`lRW>msC-He%;SK*p@4U50HfO#30u;j=^ zDALcvGrI&Uq!d{f;dQhOo;elpJYEi;6H>Y5n44+FyII#T|5!cVIbH`JlUb?;9~c|3 zBJZF07~J7Mlv{u=&&# zgcjD|eNz(_n;Nm?WGfW%?J1?mYsS(q+u(b;5xxbD@F{GAqM!py3%-T-R~_&K(fxzMhgcsMtr|33T6?Y=w+zkX2wIJ|ZGXhK6;9qhJYtDa*)g`yFp|k^=<@b=% z7AP;aV9TXe1Yd5))`|{nueyaW^KFD)y^DxzcMyH_G~&LhM8fHEL|te=blDBWUur@^ zc@xxsZ-VM_GgK8VNUm%_qPZQqs#c^_-$d%QThQ138*#NiAgZj-ams3|E3F8Zh4oUNt|?V+7ps zB7!g$Nf?h@IH3}=(TRnijSuJ;1S;Y{Wg4jYD`+eO&0qf{Zzp*t$uE+;pX5U&ua^Ah zk~c}dQ1TZfFXzdij_pAhNv?Vx6F_8LnUwd57
&NeSIdbJk`}Pf$5i^rN9A~rZH!;sm^il^8K)7nF$NLBL zyAP!PaYCT(S9b5}Hmq2+N&oy5fBooLTGzpU(0MKY_!IrFU)h=R+NAiPfzCQluVqX0 zifH|qiEnQU8ni$+XVxq?{RoGo?Jggv7e5oG+xW(eD7|}xev$8Lt*t%$l7Iig)VTSv z(^s!aP|2iOsM_|s;h&D$_13CwI@?gWz-b8@pLbrL?VYG~eARjb@BK-mO-|N^yky<8 zd@P(l*=b(?Uhf#0XL4UfG6y3E^w* zzp*{-{J4lioi8i3Juj_GXntYU&SUlg(QZGNT%k7(oD!8DwkYG=_wueYsrdnuTS;we zALU)8kFkQbfr%X99hyHQL~Z-iK5NqQ20471c|>?2Jfpa&?-l<@7l)|q z_?YWm6s}QNOW`qvF%-5?IK_;nZXRjtp|F|G=~Wa~GD+@HTqW1AeXU z6sJ*`N?{(wUlczv@?TvHDr@H8W!vs8J%0Iz@*Z;i;s=U9taT#6^?Zz!WUgW_HKo^7W%jM3M-DZZdhK*GJ(*T>ph=D-xyiR{?AZtkqP zL-9OiJwb60WevgP%2tY>`Qe$H6mL<}W;ypM4qqM`WyxB$2@wZJ&PdL$h>_m$H+m^f zrFfgNPLStRL-8!dO;k5MpsWcv+;>Ojf~eGi{ptQsr(NkblXn}Ai(h3PKVV{W9}{JK zfAvw^Nv9;!cXk_8o805lgb4qCn-ZBmcWS&L(=ENYVNv#l9=Fd+zI#h!Dsl+@bI|y$ h`z=ea|Jgc68s-!YGR%n_&|iRI&M(!&ah8lF`yZ|pi&Ovr literal 0 HcmV?d00001 diff --git a/iguana/help/mime.json b/iguana/help/mime.json new file mode 100644 index 000000000..391a6da8c --- /dev/null +++ b/iguana/help/mime.json @@ -0,0 +1,1020 @@ +{ + "3dml": "text\/vnd.in3d.3dml", + "3ds": "image\/x-3ds", + "3g2": "video\/3gpp2", + "3gp": "video\/3gpp", + "7z": "application\/x-7z-compressed", + "aab": "application\/x-authorware-bin", + "aac": "audio\/x-aac", + "aam": "application\/x-authorware-map", + "aas": "application\/x-authorware-seg", + "abw": "application\/x-abiword", + "ac": "application\/pkix-attr-cert", + "acc": "application\/vnd.americandynamics.acc", + "ace": "application\/x-ace-compressed", + "acu": "application\/vnd.acucobol", + "acutc": "application\/vnd.acucorp", + "adp": "audio\/adpcm", + "aep": "application\/vnd.audiograph", + "afm": "application\/x-font-type1", + "afp": "application\/vnd.ibm.modcap", + "ahead": "application\/vnd.ahead.space", + "ai": "application\/postscript", + "aif": "audio\/x-aiff", + "aifc": "audio\/x-aiff", + "aiff": "audio\/x-aiff", + "air": "application\/vnd.adobe.air-application-installer-package+zip", + "ait": "application\/vnd.dvb.ait", + "ami": "application\/vnd.amiga.ami", + "apk": "application\/vnd.android.package-archive", + "appcache": "text\/cache-manifest", + "application": "application\/x-ms-application", + "apr": "application\/vnd.lotus-approach", + "arc": "application\/x-freearc", + "asa": "text\/plain", + "asax": "application\/octet-stream", + "asc": "application\/pgp-signature", + "ascx": "text\/plain", + "asf": "video\/x-ms-asf", + "ashx": "text\/plain", + "asm": "text\/x-asm", + "asmx": "text\/plain", + "aso": "application\/vnd.accpac.simply.aso", + "asp": "text\/plain", + "aspx": "text\/plain", + "asx": "video\/x-ms-asf", + "atc": "application\/vnd.acucorp", + "atom": "application\/atom+xml", + "atomcat": "application\/atomcat+xml", + "atomsvc": "application\/atomsvc+xml", + "atx": "application\/vnd.antix.game-component", + "au": "audio\/basic", + "avi": "video\/x-msvideo", + "aw": "application\/applixware", + "axd": "text\/plain", + "azf": "application\/vnd.airzip.filesecure.azf", + "azs": "application\/vnd.airzip.filesecure.azs", + "azw": "application\/vnd.amazon.ebook", + "bat": "application\/x-msdownload", + "bcpio": "application\/x-bcpio", + "bdf": "application\/x-font-bdf", + "bdm": "application\/vnd.syncml.dm+wbxml", + "bed": "application\/vnd.realvnc.bed", + "bh2": "application\/vnd.fujitsu.oasysprs", + "bin": "application\/octet-stream", + "blb": "application\/x-blorb", + "blorb": "application\/x-blorb", + "bmi": "application\/vnd.bmi", + "bmp": "image\/bmp", + "book": "application\/vnd.framemaker", + "box": "application\/vnd.previewsystems.box", + "boz": "application\/x-bzip2", + "bpk": "application\/octet-stream", + "btif": "image\/prs.btif", + "bz": "application\/x-bzip", + "bz2": "application\/x-bzip2", + "c": "text\/x-c", + "c11amc": "application\/vnd.cluetrust.cartomobile-config", + "c11amz": "application\/vnd.cluetrust.cartomobile-config-pkg", + "c4d": "application\/vnd.clonk.c4group", + "c4f": "application\/vnd.clonk.c4group", + "c4g": "application\/vnd.clonk.c4group", + "c4p": "application\/vnd.clonk.c4group", + "c4u": "application\/vnd.clonk.c4group", + "cab": "application\/vnd.ms-cab-compressed", + "caf": "audio\/x-caf", + "cap": "application\/vnd.tcpdump.pcap", + "car": "application\/vnd.curl.car", + "cat": "application\/vnd.ms-pki.seccat", + "cb7": "application\/x-cbr", + "cba": "application\/x-cbr", + "cbr": "application\/x-cbr", + "cbt": "application\/x-cbr", + "cbz": "application\/x-cbr", + "cc": "text\/x-c", + "cct": "application\/x-director", + "ccxml": "application\/ccxml+xml", + "cdbcmsg": "application\/vnd.contact.cmsg", + "cdf": "application\/x-netcdf", + "cdkey": "application\/vnd.mediastation.cdkey", + "cdmia": "application\/cdmi-capability", + "cdmic": "application\/cdmi-container", + "cdmid": "application\/cdmi-domain", + "cdmio": "application\/cdmi-object", + "cdmiq": "application\/cdmi-queue", + "cdx": "chemical\/x-cdx", + "cdxml": "application\/vnd.chemdraw+xml", + "cdy": "application\/vnd.cinderella", + "cer": "application\/pkix-cert", + "cfc": "application\/x-coldfusion", + "cfm": "application\/x-coldfusion", + "cfs": "application\/x-cfs-compressed", + "cgm": "image\/cgm", + "chat": "application\/x-chat", + "chm": "application\/vnd.ms-htmlhelp", + "chrt": "application\/vnd.kde.kchart", + "cif": "chemical\/x-cif", + "cii": "application\/vnd.anser-web-certificate-issue-initiation", + "cil": "application\/vnd.ms-artgalry", + "cla": "application\/vnd.claymore", + "class": "application\/java-vm", + "clkk": "application\/vnd.crick.clicker.keyboard", + "clkp": "application\/vnd.crick.clicker.palette", + "clkt": "application\/vnd.crick.clicker.template", + "clkw": "application\/vnd.crick.clicker.wordbank", + "clkx": "application\/vnd.crick.clicker", + "clp": "application\/x-msclip", + "cmc": "application\/vnd.cosmocaller", + "cmdf": "chemical\/x-cmdf", + "cml": "chemical\/x-cml", + "cmp": "application\/vnd.yellowriver-custom-menu", + "cmx": "image\/x-cmx", + "cod": "application\/vnd.rim.cod", + "com": "application\/x-msdownload", + "conf": "text\/plain", + "cpio": "application\/x-cpio", + "cpp": "text\/x-c", + "cpt": "application\/mac-compactpro", + "crd": "application\/x-mscardfile", + "crl": "application\/pkix-crl", + "crt": "application\/x-x509-ca-cert", + "crx": "application\/octet-stream", + "cryptonote": "application\/vnd.rig.cryptonote", + "cs": "text\/plain", + "csh": "application\/x-csh", + "csml": "chemical\/x-csml", + "csp": "application\/vnd.commonspace", + "css": "text\/css", + "cst": "application\/x-director", + "csv": "text\/csv", + "cu": "application\/cu-seeme", + "curl": "text\/vnd.curl", + "cww": "application\/prs.cww", + "cxt": "application\/x-director", + "cxx": "text\/x-c", + "dae": "model\/vnd.collada+xml", + "daf": "application\/vnd.mobius.daf", + "dart": "application\/vnd.dart", + "dataless": "application\/vnd.fdsn.seed", + "davmount": "application\/davmount+xml", + "dbk": "application\/docbook+xml", + "dcr": "application\/x-director", + "dcurl": "text\/vnd.curl.dcurl", + "dd2": "application\/vnd.oma.dd2+xml", + "ddd": "application\/vnd.fujixerox.ddd", + "deb": "application\/x-debian-package", + "def": "text\/plain", + "deploy": "application\/octet-stream", + "der": "application\/x-x509-ca-cert", + "dfac": "application\/vnd.dreamfactory", + "dgc": "application\/x-dgc-compressed", + "dic": "text\/x-c", + "dir": "application\/x-director", + "dis": "application\/vnd.mobius.dis", + "dist": "application\/octet-stream", + "distz": "application\/octet-stream", + "djv": "image\/vnd.djvu", + "djvu": "image\/vnd.djvu", + "dll": "application\/x-msdownload", + "dmg": "application\/x-apple-diskimage", + "dmp": "application\/vnd.tcpdump.pcap", + "dms": "application\/octet-stream", + "dna": "application\/vnd.dna", + "doc": "application\/msword", + "docm": "application\/vnd.ms-word.document.macroenabled.12", + "docx": "application\/vnd.openxmlformats-officedocument.wordprocessingml.document", + "dot": "application\/msword", + "dotm": "application\/vnd.ms-word.template.macroenabled.12", + "dotx": "application\/vnd.openxmlformats-officedocument.wordprocessingml.template", + "dp": "application\/vnd.osgi.dp", + "dpg": "application\/vnd.dpgraph", + "dra": "audio\/vnd.dra", + "dsc": "text\/prs.lines.tag", + "dssc": "application\/dssc+der", + "dtb": "application\/x-dtbook+xml", + "dtd": "application\/xml-dtd", + "dts": "audio\/vnd.dts", + "dtshd": "audio\/vnd.dts.hd", + "dump": "application\/octet-stream", + "dvb": "video\/vnd.dvb.file", + "dvi": "application\/x-dvi", + "dwf": "model\/vnd.dwf", + "dwg": "image\/vnd.dwg", + "dxf": "image\/vnd.dxf", + "dxp": "application\/vnd.spotfire.dxp", + "dxr": "application\/x-director", + "ecelp4800": "audio\/vnd.nuera.ecelp4800", + "ecelp7470": "audio\/vnd.nuera.ecelp7470", + "ecelp9600": "audio\/vnd.nuera.ecelp9600", + "ecma": "application\/ecmascript", + "edm": "application\/vnd.novadigm.edm", + "edx": "application\/vnd.novadigm.edx", + "efif": "application\/vnd.picsel", + "ei6": "application\/vnd.pg.osasli", + "elc": "application\/octet-stream", + "emf": "application\/x-msmetafile", + "eml": "message\/rfc822", + "emma": "application\/emma+xml", + "emz": "application\/x-msmetafile", + "eol": "audio\/vnd.digital-winds", + "eot": "application\/vnd.ms-fontobject", + "eps": "application\/postscript", + "epub": "application\/epub+zip", + "es3": "application\/vnd.eszigno3+xml", + "esa": "application\/vnd.osgi.subsystem", + "esf": "application\/vnd.epson.esf", + "et3": "application\/vnd.eszigno3+xml", + "etx": "text\/x-setext", + "eva": "application\/x-eva", + "evy": "application\/x-envoy", + "exe": "application\/x-msdownload", + "exi": "application\/exi", + "ext": "application\/vnd.novadigm.ext", + "ez": "application\/andrew-inset", + "ez2": "application\/vnd.ezpix-album", + "ez3": "application\/vnd.ezpix-package", + "f": "text\/x-fortran", + "f4v": "video\/x-f4v", + "f77": "text\/x-fortran", + "f90": "text\/x-fortran", + "fbs": "image\/vnd.fastbidsheet", + "fcdt": "application\/vnd.adobe.formscentral.fcdt", + "fcs": "application\/vnd.isac.fcs", + "fdf": "application\/vnd.fdf", + "fe_launch": "application\/vnd.denovo.fcselayout-link", + "fg5": "application\/vnd.fujitsu.oasysgp", + "fgd": "application\/x-director", + "fh": "image\/x-freehand", + "fh4": "image\/x-freehand", + "fh5": "image\/x-freehand", + "fh7": "image\/x-freehand", + "fhc": "image\/x-freehand", + "fig": "application\/x-xfig", + "flac": "audio\/x-flac", + "fli": "video\/x-fli", + "flo": "application\/vnd.micrografx.flo", + "flv": "video\/x-flv", + "flw": "application\/vnd.kde.kivio", + "flx": "text\/vnd.fmi.flexstor", + "fly": "text\/vnd.fly", + "fm": "application\/vnd.framemaker", + "fnc": "application\/vnd.frogans.fnc", + "for": "text\/x-fortran", + "fpx": "image\/vnd.fpx", + "frame": "application\/vnd.framemaker", + "fsc": "application\/vnd.fsc.weblaunch", + "fst": "image\/vnd.fst", + "ftc": "application\/vnd.fluxtime.clip", + "fti": "application\/vnd.anser-web-funds-transfer-initiation", + "fvt": "video\/vnd.fvt", + "fxp": "application\/vnd.adobe.fxp", + "fxpl": "application\/vnd.adobe.fxp", + "fzs": "application\/vnd.fuzzysheet", + "g2w": "application\/vnd.geoplan", + "g3": "image\/g3fax", + "g3w": "application\/vnd.geospace", + "gac": "application\/vnd.groove-account", + "gam": "application\/x-tads", + "gbr": "application\/rpki-ghostbusters", + "gca": "application\/x-gca-compressed", + "gdl": "model\/vnd.gdl", + "geo": "application\/vnd.dynageo", + "gex": "application\/vnd.geometry-explorer", + "ggb": "application\/vnd.geogebra.file", + "ggt": "application\/vnd.geogebra.tool", + "ghf": "application\/vnd.groove-help", + "gif": "image\/gif", + "gim": "application\/vnd.groove-identity-message", + "gml": "application\/gml+xml", + "gmx": "application\/vnd.gmx", + "gnumeric": "application\/x-gnumeric", + "gph": "application\/vnd.flographit", + "gpx": "application\/gpx+xml", + "gqf": "application\/vnd.grafeq", + "gqs": "application\/vnd.grafeq", + "gram": "application\/srgs", + "gramps": "application\/x-gramps-xml", + "gre": "application\/vnd.geometry-explorer", + "grv": "application\/vnd.groove-injector", + "grxml": "application\/srgs+xml", + "gsf": "application\/x-font-ghostscript", + "gtar": "application\/x-gtar", + "gtm": "application\/vnd.groove-tool-message", + "gtw": "model\/vnd.gtw", + "gv": "text\/vnd.graphviz", + "gxf": "application\/gxf", + "gxt": "application\/vnd.geonext", + "gz": "application\/x-gzip", + "h": "text\/x-c", + "h261": "video\/h261", + "h263": "video\/h263", + "h264": "video\/h264", + "hal": "application\/vnd.hal+xml", + "hbci": "application\/vnd.hbci", + "hdf": "application\/x-hdf", + "hh": "text\/x-c", + "hlp": "application\/winhlp", + "hpgl": "application\/vnd.hp-hpgl", + "hpid": "application\/vnd.hp-hpid", + "hps": "application\/vnd.hp-hps", + "hqx": "application\/mac-binhex40", + "hta": "application\/octet-stream", + "htc": "text\/html", + "htke": "application\/vnd.kenameaapp", + "htm": "text\/html", + "html": "text\/html", + "hvd": "application\/vnd.yamaha.hv-dic", + "hvp": "application\/vnd.yamaha.hv-voice", + "hvs": "application\/vnd.yamaha.hv-script", + "i2g": "application\/vnd.intergeo", + "icc": "application\/vnd.iccprofile", + "ice": "x-conference\/x-cooltalk", + "icm": "application\/vnd.iccprofile", + "ico": "image\/x-icon", + "ics": "text\/calendar", + "ief": "image\/ief", + "ifb": "text\/calendar", + "ifm": "application\/vnd.shana.informed.formdata", + "iges": "model\/iges", + "igl": "application\/vnd.igloader", + "igm": "application\/vnd.insors.igm", + "igs": "model\/iges", + "igx": "application\/vnd.micrografx.igx", + "iif": "application\/vnd.shana.informed.interchange", + "imp": "application\/vnd.accpac.simply.imp", + "ims": "application\/vnd.ms-ims", + "in": "text\/plain", + "ini": "text\/plain", + "ink": "application\/inkml+xml", + "inkml": "application\/inkml+xml", + "install": "application\/x-install-instructions", + "iota": "application\/vnd.astraea-software.iota", + "ipa": "application\/octet-stream", + "ipfix": "application\/ipfix", + "ipk": "application\/vnd.shana.informed.package", + "irm": "application\/vnd.ibm.rights-management", + "irp": "application\/vnd.irepository.package+xml", + "iso": "application\/x-iso9660-image", + "itp": "application\/vnd.shana.informed.formtemplate", + "ivp": "application\/vnd.immervision-ivp", + "ivu": "application\/vnd.immervision-ivu", + "jad": "text\/vnd.sun.j2me.app-descriptor", + "jam": "application\/vnd.jam", + "jar": "application\/java-archive", + "java": "text\/x-java-source", + "jisp": "application\/vnd.jisp", + "jlt": "application\/vnd.hp-jlyt", + "jnlp": "application\/x-java-jnlp-file", + "joda": "application\/vnd.joost.joda-archive", + "jpe": "image\/jpeg", + "jpeg": "image\/jpeg", + "jpg": "image\/jpeg", + "jpgm": "video\/jpm", + "jpgv": "video\/jpeg", + "jpm": "video\/jpm", + "js": "text\/javascript", + "json": "application\/json", + "jsonml": "application\/jsonml+json", + "kar": "audio\/midi", + "karbon": "application\/vnd.kde.karbon", + "kfo": "application\/vnd.kde.kformula", + "kia": "application\/vnd.kidspiration", + "kml": "application\/vnd.google-earth.kml+xml", + "kmz": "application\/vnd.google-earth.kmz", + "kne": "application\/vnd.kinar", + "knp": "application\/vnd.kinar", + "kon": "application\/vnd.kde.kontour", + "kpr": "application\/vnd.kde.kpresenter", + "kpt": "application\/vnd.kde.kpresenter", + "kpxx": "application\/vnd.ds-keypoint", + "ksp": "application\/vnd.kde.kspread", + "ktr": "application\/vnd.kahootz", + "ktx": "image\/ktx", + "ktz": "application\/vnd.kahootz", + "kwd": "application\/vnd.kde.kword", + "kwt": "application\/vnd.kde.kword", + "lasxml": "application\/vnd.las.las+xml", + "latex": "application\/x-latex", + "lbd": "application\/vnd.llamagraphics.life-balance.desktop", + "lbe": "application\/vnd.llamagraphics.life-balance.exchange+xml", + "les": "application\/vnd.hhe.lesson-player", + "lha": "application\/x-lzh-compressed", + "link66": "application\/vnd.route66.link66+xml", + "list": "text\/plain", + "list3820": "application\/vnd.ibm.modcap", + "listafp": "application\/vnd.ibm.modcap", + "lnk": "application\/x-ms-shortcut", + "log": "text\/plain", + "lostxml": "application\/lost+xml", + "lrf": "application\/octet-stream", + "lrm": "application\/vnd.ms-lrm", + "ltf": "application\/vnd.frogans.ltf", + "lvp": "audio\/vnd.lucent.voice", + "lwp": "application\/vnd.lotus-wordpro", + "lz": "application\/x-lzip", + "lzh": "application\/x-lzh-compressed", + "lzma": "application\/x-lzma", + "lzo": "application\/x-lzop", + "m13": "application\/x-msmediaview", + "m14": "application\/x-msmediaview", + "m1v": "video\/mpeg", + "m21": "application\/mp21", + "m2a": "audio\/mpeg", + "m2v": "video\/mpeg", + "m3a": "audio\/mpeg", + "m3u": "audio\/x-mpegurl", + "m3u8": "application\/vnd.apple.mpegurl", + "m4a": "audio\/mp4", + "m4u": "video\/vnd.mpegurl", + "m4v": "video\/mp4", + "ma": "application\/mathematica", + "mads": "application\/mads+xml", + "mag": "application\/vnd.ecowin.chart", + "maker": "application\/vnd.framemaker", + "man": "text\/troff", + "mar": "application\/octet-stream", + "mathml": "application\/mathml+xml", + "mb": "application\/mathematica", + "mbk": "application\/vnd.mobius.mbk", + "mbox": "application\/mbox", + "mc1": "application\/vnd.medcalcdata", + "mcd": "application\/vnd.mcd", + "mcurl": "text\/vnd.curl.mcurl", + "mdb": "application\/x-msaccess", + "mdi": "image\/vnd.ms-modi", + "me": "text\/troff", + "mesh": "model\/mesh", + "meta4": "application\/metalink4+xml", + "metalink": "application\/metalink+xml", + "mets": "application\/mets+xml", + "mfm": "application\/vnd.mfmp", + "mft": "application\/rpki-manifest", + "mgp": "application\/vnd.osgeo.mapguide.package", + "mgz": "application\/vnd.proteus.magazine", + "mid": "audio\/midi", + "midi": "audio\/midi", + "mie": "application\/x-mie", + "mif": "application\/vnd.mif", + "mime": "message\/rfc822", + "mj2": "video\/mj2", + "mjp2": "video\/mj2", + "mk3d": "video\/x-matroska", + "mka": "audio\/x-matroska", + "mks": "video\/x-matroska", + "mkv": "video\/x-matroska", + "mlp": "application\/vnd.dolby.mlp", + "mmd": "application\/vnd.chipnuts.karaoke-mmd", + "mmf": "application\/vnd.smaf", + "mmr": "image\/vnd.fujixerox.edmics-mmr", + "mng": "video\/x-mng", + "mny": "application\/x-msmoney", + "mobi": "application\/x-mobipocket-ebook", + "mods": "application\/mods+xml", + "mov": "video\/quicktime", + "movie": "video\/x-sgi-movie", + "mp2": "audio\/mpeg", + "mp21": "application\/mp21", + "mp2a": "audio\/mpeg", + "mp3": "audio\/mpeg", + "mp4": "video\/mp4", + "mp4a": "audio\/mp4", + "mp4s": "application\/mp4", + "mp4v": "video\/mp4", + "mpc": "application\/vnd.mophun.certificate", + "mpe": "video\/mpeg", + "mpeg": "video\/mpeg", + "mpg": "video\/mpeg", + "mpg4": "video\/mp4", + "mpga": "audio\/mpeg", + "mpkg": "application\/vnd.apple.installer+xml", + "mpm": "application\/vnd.blueice.multipass", + "mpn": "application\/vnd.mophun.application", + "mpp": "application\/vnd.ms-project", + "mpt": "application\/vnd.ms-project", + "mpy": "application\/vnd.ibm.minipay", + "mqy": "application\/vnd.mobius.mqy", + "mrc": "application\/marc", + "mrcx": "application\/marcxml+xml", + "ms": "text\/troff", + "mscml": "application\/mediaservercontrol+xml", + "mseed": "application\/vnd.fdsn.mseed", + "mseq": "application\/vnd.mseq", + "msf": "application\/vnd.epson.msf", + "msh": "model\/mesh", + "msi": "application\/x-msdownload", + "msl": "application\/vnd.mobius.msl", + "msty": "application\/vnd.muvee.style", + "mts": "model\/vnd.mts", + "mus": "application\/vnd.musician", + "musicxml": "application\/vnd.recordare.musicxml+xml", + "mvb": "application\/x-msmediaview", + "mwf": "application\/vnd.mfer", + "mxf": "application\/mxf", + "mxl": "application\/vnd.recordare.musicxml", + "mxml": "application\/xv+xml", + "mxs": "application\/vnd.triscape.mxs", + "mxu": "video\/vnd.mpegurl", + "n-gage": "application\/vnd.nokia.n-gage.symbian.install", + "n3": "text\/n3", + "nb": "application\/mathematica", + "nbp": "application\/vnd.wolfram.player", + "nc": "application\/x-netcdf", + "ncx": "application\/x-dtbncx+xml", + "nfo": "text\/x-nfo", + "ngdat": "application\/vnd.nokia.n-gage.data", + "nitf": "application\/vnd.nitf", + "nlu": "application\/vnd.neurolanguage.nlu", + "nml": "application\/vnd.enliven", + "nnd": "application\/vnd.noblenet-directory", + "nns": "application\/vnd.noblenet-sealer", + "nnw": "application\/vnd.noblenet-web", + "npx": "image\/vnd.net-fpx", + "nsc": "application\/x-conference", + "nsf": "application\/vnd.lotus-notes", + "ntf": "application\/vnd.nitf", + "nzb": "application\/x-nzb", + "oa2": "application\/vnd.fujitsu.oasys2", + "oa3": "application\/vnd.fujitsu.oasys3", + "oas": "application\/vnd.fujitsu.oasys", + "obd": "application\/x-msbinder", + "obj": "application\/x-tgif", + "oda": "application\/oda", + "odb": "application\/vnd.oasis.opendocument.database", + "odc": "application\/vnd.oasis.opendocument.chart", + "odf": "application\/vnd.oasis.opendocument.formula", + "odft": "application\/vnd.oasis.opendocument.formula-template", + "odg": "application\/vnd.oasis.opendocument.graphics", + "odi": "application\/vnd.oasis.opendocument.image", + "odm": "application\/vnd.oasis.opendocument.text-master", + "odp": "application\/vnd.oasis.opendocument.presentation", + "ods": "application\/vnd.oasis.opendocument.spreadsheet", + "odt": "application\/vnd.oasis.opendocument.text", + "oga": "audio\/ogg", + "ogg": "audio\/ogg", + "ogv": "video\/ogg", + "ogx": "application\/ogg", + "omdoc": "application\/omdoc+xml", + "onepkg": "application\/onenote", + "onetmp": "application\/onenote", + "onetoc": "application\/onenote", + "onetoc2": "application\/onenote", + "opf": "application\/oebps-package+xml", + "opml": "text\/x-opml", + "oprc": "application\/vnd.palm", + "org": "application\/vnd.lotus-organizer", + "osf": "application\/vnd.yamaha.openscoreformat", + "osfpvg": "application\/vnd.yamaha.openscoreformat.osfpvg+xml", + "otc": "application\/vnd.oasis.opendocument.chart-template", + "otf": "application\/x-font-otf", + "otg": "application\/vnd.oasis.opendocument.graphics-template", + "oth": "application\/vnd.oasis.opendocument.text-web", + "oti": "application\/vnd.oasis.opendocument.image-template", + "otp": "application\/vnd.oasis.opendocument.presentation-template", + "ots": "application\/vnd.oasis.opendocument.spreadsheet-template", + "ott": "application\/vnd.oasis.opendocument.text-template", + "oxps": "application\/oxps", + "oxt": "application\/vnd.openofficeorg.extension", + "p": "text\/x-pascal", + "p10": "application\/pkcs10", + "p12": "application\/x-pkcs12", + "p7b": "application\/x-pkcs7-certificates", + "p7c": "application\/pkcs7-mime", + "p7m": "application\/pkcs7-mime", + "p7r": "application\/x-pkcs7-certreqresp", + "p7s": "application\/pkcs7-signature", + "p8": "application\/pkcs8", + "pas": "text\/x-pascal", + "paw": "application\/vnd.pawaafile", + "pbd": "application\/vnd.powerbuilder6", + "pbm": "image\/x-portable-bitmap", + "pcap": "application\/vnd.tcpdump.pcap", + "pcf": "application\/x-font-pcf", + "pcl": "application\/vnd.hp-pcl", + "pclxl": "application\/vnd.hp-pclxl", + "pct": "image\/x-pict", + "pcurl": "application\/vnd.curl.pcurl", + "pcx": "image\/x-pcx", + "pdb": "application\/vnd.palm", + "pdf": "application\/pdf", + "pfa": "application\/x-font-type1", + "pfb": "application\/x-font-type1", + "pfm": "application\/x-font-type1", + "pfr": "application\/font-tdpfr", + "pfx": "application\/x-pkcs12", + "pgm": "image\/x-portable-graymap", + "pgn": "application\/x-chess-pgn", + "pgp": "application\/pgp-encrypted", + "phar": "application\/octet-stream", + "php": "text\/plain", + "phps": "application\/x-httpd-phps", + "pic": "image\/x-pict", + "pkg": "application\/octet-stream", + "pki": "application\/pkixcmp", + "pkipath": "application\/pkix-pkipath", + "plb": "application\/vnd.3gpp.pic-bw-large", + "plc": "application\/vnd.mobius.plc", + "plf": "application\/vnd.pocketlearn", + "plist": "application\/x-plist", + "pls": "application\/pls+xml", + "pml": "application\/vnd.ctc-posml", + "png": "image\/png", + "pnm": "image\/x-portable-anymap", + "portpkg": "application\/vnd.macports.portpkg", + "pot": "application\/vnd.ms-powerpoint", + "potm": "application\/vnd.ms-powerpoint.template.macroenabled.12", + "potx": "application\/vnd.openxmlformats-officedocument.presentationml.template", + "ppam": "application\/vnd.ms-powerpoint.addin.macroenabled.12", + "ppd": "application\/vnd.cups-ppd", + "ppm": "image\/x-portable-pixmap", + "pps": "application\/vnd.ms-powerpoint", + "ppsm": "application\/vnd.ms-powerpoint.slideshow.macroenabled.12", + "ppsx": "application\/vnd.openxmlformats-officedocument.presentationml.slideshow", + "ppt": "application\/vnd.ms-powerpoint", + "pptm": "application\/vnd.ms-powerpoint.presentation.macroenabled.12", + "pptx": "application\/vnd.openxmlformats-officedocument.presentationml.presentation", + "pqa": "application\/vnd.palm", + "prc": "application\/x-mobipocket-ebook", + "pre": "application\/vnd.lotus-freelance", + "prf": "application\/pics-rules", + "ps": "application\/postscript", + "psb": "application\/vnd.3gpp.pic-bw-small", + "psd": "image\/vnd.adobe.photoshop", + "psf": "application\/x-font-linux-psf", + "pskcxml": "application\/pskc+xml", + "ptid": "application\/vnd.pvi.ptid1", + "pub": "application\/x-mspublisher", + "pvb": "application\/vnd.3gpp.pic-bw-var", + "pwn": "application\/vnd.3m.post-it-notes", + "pya": "audio\/vnd.ms-playready.media.pya", + "pyv": "video\/vnd.ms-playready.media.pyv", + "qam": "application\/vnd.epson.quickanime", + "qbo": "application\/vnd.intu.qbo", + "qfx": "application\/vnd.intu.qfx", + "qps": "application\/vnd.publishare-delta-tree", + "qt": "video\/quicktime", + "qwd": "application\/vnd.quark.quarkxpress", + "qwt": "application\/vnd.quark.quarkxpress", + "qxb": "application\/vnd.quark.quarkxpress", + "qxd": "application\/vnd.quark.quarkxpress", + "qxl": "application\/vnd.quark.quarkxpress", + "qxt": "application\/vnd.quark.quarkxpress", + "ra": "audio\/x-pn-realaudio", + "ram": "audio\/x-pn-realaudio", + "rar": "application\/x-rar-compressed", + "ras": "image\/x-cmu-raster", + "rb": "text\/plain", + "rcprofile": "application\/vnd.ipunplugged.rcprofile", + "rdf": "application\/rdf+xml", + "rdz": "application\/vnd.data-vision.rdz", + "rep": "application\/vnd.businessobjects", + "res": "application\/x-dtbresource+xml", + "resx": "text\/xml", + "rgb": "image\/x-rgb", + "rif": "application\/reginfo+xml", + "rip": "audio\/vnd.rip", + "ris": "application\/x-research-info-systems", + "rl": "application\/resource-lists+xml", + "rlc": "image\/vnd.fujixerox.edmics-rlc", + "rld": "application\/resource-lists-diff+xml", + "rm": "application\/vnd.rn-realmedia", + "rmi": "audio\/midi", + "rmp": "audio\/x-pn-realaudio-plugin", + "rms": "application\/vnd.jcp.javame.midlet-rms", + "rmvb": "application\/vnd.rn-realmedia-vbr", + "rnc": "application\/relax-ng-compact-syntax", + "roa": "application\/rpki-roa", + "roff": "text\/troff", + "rp9": "application\/vnd.cloanto.rp9", + "rpm": "application\/x-rpm", + "rpss": "application\/vnd.nokia.radio-presets", + "rpst": "application\/vnd.nokia.radio-preset", + "rq": "application\/sparql-query", + "rs": "application\/rls-services+xml", + "rsd": "application\/rsd+xml", + "rss": "application\/rss+xml", + "rtf": "application\/rtf", + "rtx": "text\/richtext", + "s": "text\/x-asm", + "s3m": "audio\/s3m", + "s7z": "application\/x-7z-compressed", + "saf": "application\/vnd.yamaha.smaf-audio", + "safariextz": "application\/octet-stream", + "sass": "text\/x-sass", + "sbml": "application\/sbml+xml", + "sc": "application\/vnd.ibm.secure-container", + "scd": "application\/x-msschedule", + "scm": "application\/vnd.lotus-screencam", + "scq": "application\/scvp-cv-request", + "scs": "application\/scvp-cv-response", + "scss": "text\/x-scss", + "scurl": "text\/vnd.curl.scurl", + "sda": "application\/vnd.stardivision.draw", + "sdc": "application\/vnd.stardivision.calc", + "sdd": "application\/vnd.stardivision.impress", + "sdkd": "application\/vnd.solent.sdkm+xml", + "sdkm": "application\/vnd.solent.sdkm+xml", + "sdp": "application\/sdp", + "sdw": "application\/vnd.stardivision.writer", + "see": "application\/vnd.seemail", + "seed": "application\/vnd.fdsn.seed", + "sema": "application\/vnd.sema", + "semd": "application\/vnd.semd", + "semf": "application\/vnd.semf", + "ser": "application\/java-serialized-object", + "setpay": "application\/set-payment-initiation", + "setreg": "application\/set-registration-initiation", + "sfd-hdstx": "application\/vnd.hydrostatix.sof-data", + "sfs": "application\/vnd.spotfire.sfs", + "sfv": "text\/x-sfv", + "sgi": "image\/sgi", + "sgl": "application\/vnd.stardivision.writer-global", + "sgm": "text\/sgml", + "sgml": "text\/sgml", + "sh": "application\/x-sh", + "shar": "application\/x-shar", + "shf": "application\/shf+xml", + "sid": "image\/x-mrsid-image", + "sig": "application\/pgp-signature", + "sil": "audio\/silk", + "silo": "model\/mesh", + "sis": "application\/vnd.symbian.install", + "sisx": "application\/vnd.symbian.install", + "sit": "application\/x-stuffit", + "sitx": "application\/x-stuffitx", + "skd": "application\/vnd.koan", + "skm": "application\/vnd.koan", + "skp": "application\/vnd.koan", + "skt": "application\/vnd.koan", + "sldm": "application\/vnd.ms-powerpoint.slide.macroenabled.12", + "sldx": "application\/vnd.openxmlformats-officedocument.presentationml.slide", + "slt": "application\/vnd.epson.salt", + "sm": "application\/vnd.stepmania.stepchart", + "smf": "application\/vnd.stardivision.math", + "smi": "application\/smil+xml", + "smil": "application\/smil+xml", + "smv": "video\/x-smv", + "smzip": "application\/vnd.stepmania.package", + "snd": "audio\/basic", + "snf": "application\/x-font-snf", + "so": "application\/octet-stream", + "spc": "application\/x-pkcs7-certificates", + "spf": "application\/vnd.yamaha.smaf-phrase", + "spl": "application\/x-futuresplash", + "spot": "text\/vnd.in3d.spot", + "spp": "application\/scvp-vp-response", + "spq": "application\/scvp-vp-request", + "spx": "audio\/ogg", + "sql": "application\/x-sql", + "src": "application\/x-wais-source", + "srt": "application\/x-subrip", + "sru": "application\/sru+xml", + "srx": "application\/sparql-results+xml", + "ssdl": "application\/ssdl+xml", + "sse": "application\/vnd.kodak-descriptor", + "ssf": "application\/vnd.epson.ssf", + "ssml": "application\/ssml+xml", + "st": "application\/vnd.sailingtracker.track", + "stc": "application\/vnd.sun.xml.calc.template", + "std": "application\/vnd.sun.xml.draw.template", + "stf": "application\/vnd.wt.stf", + "sti": "application\/vnd.sun.xml.impress.template", + "stk": "application\/hyperstudio", + "stl": "application\/vnd.ms-pki.stl", + "str": "application\/vnd.pg.format", + "stw": "application\/vnd.sun.xml.writer.template", + "styl": "text\/x-styl", + "sub": "image\/vnd.dvb.subtitle", + "sus": "application\/vnd.sus-calendar", + "susp": "application\/vnd.sus-calendar", + "sv4cpio": "application\/x-sv4cpio", + "sv4crc": "application\/x-sv4crc", + "svc": "application\/vnd.dvb.service", + "svd": "application\/vnd.svd", + "svg": "image\/svg+xml", + "svgz": "image\/svg+xml", + "swa": "application\/x-director", + "swf": "application\/x-shockwave-flash", + "swi": "application\/vnd.aristanetworks.swi", + "sxc": "application\/vnd.sun.xml.calc", + "sxd": "application\/vnd.sun.xml.draw", + "sxg": "application\/vnd.sun.xml.writer.global", + "sxi": "application\/vnd.sun.xml.impress", + "sxm": "application\/vnd.sun.xml.math", + "sxw": "application\/vnd.sun.xml.writer", + "t": "text\/troff", + "t3": "application\/x-t3vm-image", + "taglet": "application\/vnd.mynfc", + "tao": "application\/vnd.tao.intent-module-archive", + "tar": "application\/x-tar", + "tcap": "application\/vnd.3gpp2.tcap", + "tcl": "application\/x-tcl", + "teacher": "application\/vnd.smart.teacher", + "tei": "application\/tei+xml", + "teicorpus": "application\/tei+xml", + "tex": "application\/x-tex", + "texi": "application\/x-texinfo", + "texinfo": "application\/x-texinfo", + "text": "text\/plain", + "tfi": "application\/thraud+xml", + "tfm": "application\/x-tex-tfm", + "tga": "image\/x-tga", + "tgz": "application\/x-gzip", + "thmx": "application\/vnd.ms-officetheme", + "tif": "image\/tiff", + "tiff": "image\/tiff", + "tmo": "application\/vnd.tmobile-livetv", + "torrent": "application\/x-bittorrent", + "tpl": "application\/vnd.groove-tool-template", + "tpt": "application\/vnd.trid.tpt", + "tr": "text\/troff", + "tra": "application\/vnd.trueapp", + "trm": "application\/x-msterminal", + "tsd": "application\/timestamped-data", + "tsv": "text\/tab-separated-values", + "ttc": "application\/x-font-ttf", + "ttf": "application\/x-font-ttf", + "ttl": "text\/turtle", + "twd": "application\/vnd.simtech-mindmapper", + "twds": "application\/vnd.simtech-mindmapper", + "txd": "application\/vnd.genomatix.tuxedo", + "txf": "application\/vnd.mobius.txf", + "txt": "text\/plain", + "u32": "application\/x-authorware-bin", + "udeb": "application\/x-debian-package", + "ufd": "application\/vnd.ufdl", + "ufdl": "application\/vnd.ufdl", + "ulx": "application\/x-glulx", + "umj": "application\/vnd.umajin", + "unityweb": "application\/vnd.unity", + "uoml": "application\/vnd.uoml+xml", + "uri": "text\/uri-list", + "uris": "text\/uri-list", + "urls": "text\/uri-list", + "ustar": "application\/x-ustar", + "utz": "application\/vnd.uiq.theme", + "uu": "text\/x-uuencode", + "uva": "audio\/vnd.dece.audio", + "uvd": "application\/vnd.dece.data", + "uvf": "application\/vnd.dece.data", + "uvg": "image\/vnd.dece.graphic", + "uvh": "video\/vnd.dece.hd", + "uvi": "image\/vnd.dece.graphic", + "uvm": "video\/vnd.dece.mobile", + "uvp": "video\/vnd.dece.pd", + "uvs": "video\/vnd.dece.sd", + "uvt": "application\/vnd.dece.ttml+xml", + "uvu": "video\/vnd.uvvu.mp4", + "uvv": "video\/vnd.dece.video", + "uvva": "audio\/vnd.dece.audio", + "uvvd": "application\/vnd.dece.data", + "uvvf": "application\/vnd.dece.data", + "uvvg": "image\/vnd.dece.graphic", + "uvvh": "video\/vnd.dece.hd", + "uvvi": "image\/vnd.dece.graphic", + "uvvm": "video\/vnd.dece.mobile", + "uvvp": "video\/vnd.dece.pd", + "uvvs": "video\/vnd.dece.sd", + "uvvt": "application\/vnd.dece.ttml+xml", + "uvvu": "video\/vnd.uvvu.mp4", + "uvvv": "video\/vnd.dece.video", + "uvvx": "application\/vnd.dece.unspecified", + "uvvz": "application\/vnd.dece.zip", + "uvx": "application\/vnd.dece.unspecified", + "uvz": "application\/vnd.dece.zip", + "vcard": "text\/vcard", + "vcd": "application\/x-cdlink", + "vcf": "text\/x-vcard", + "vcg": "application\/vnd.groove-vcard", + "vcs": "text\/x-vcalendar", + "vcx": "application\/vnd.vcx", + "vis": "application\/vnd.visionary", + "viv": "video\/vnd.vivo", + "vob": "video\/x-ms-vob", + "vor": "application\/vnd.stardivision.writer", + "vox": "application\/x-authorware-bin", + "vrml": "model\/vrml", + "vsd": "application\/vnd.visio", + "vsf": "application\/vnd.vsf", + "vss": "application\/vnd.visio", + "vst": "application\/vnd.visio", + "vsw": "application\/vnd.visio", + "vtu": "model\/vnd.vtu", + "vxml": "application\/voicexml+xml", + "w3d": "application\/x-director", + "wad": "application\/x-doom", + "wav": "audio\/x-wav", + "wax": "audio\/x-ms-wax", + "wbmp": "image\/vnd.wap.wbmp", + "wbs": "application\/vnd.criticaltools.wbs+xml", + "wbxml": "application\/vnd.wap.wbxml", + "wcm": "application\/vnd.ms-works", + "wdb": "application\/vnd.ms-works", + "wdp": "image\/vnd.ms-photo", + "weba": "audio\/webm", + "webm": "video\/webm", + "webp": "image\/webp", + "wg": "application\/vnd.pmi.widget", + "wgt": "application\/widget", + "wks": "application\/vnd.ms-works", + "wm": "video\/x-ms-wm", + "wma": "audio\/x-ms-wma", + "wmd": "application\/x-ms-wmd", + "wmf": "application\/x-msmetafile", + "wml": "text\/vnd.wap.wml", + "wmlc": "application\/vnd.wap.wmlc", + "wmls": "text\/vnd.wap.wmlscript", + "wmlsc": "application\/vnd.wap.wmlscriptc", + "wmv": "video\/x-ms-wmv", + "wmx": "video\/x-ms-wmx", + "wmz": "application\/x-ms-wmz", + "woff": "application\/x-font-woff", + "wpd": "application\/vnd.wordperfect", + "wpl": "application\/vnd.ms-wpl", + "wps": "application\/vnd.ms-works", + "wqd": "application\/vnd.wqd", + "wri": "application\/x-mswrite", + "wrl": "model\/vrml", + "wsdl": "application\/wsdl+xml", + "wspolicy": "application\/wspolicy+xml", + "wtb": "application\/vnd.webturbo", + "wvx": "video\/x-ms-wvx", + "x32": "application\/x-authorware-bin", + "x3d": "model\/x3d+xml", + "x3db": "model\/x3d+binary", + "x3dbz": "model\/x3d+binary", + "x3dv": "model\/x3d+vrml", + "x3dvz": "model\/x3d+vrml", + "x3dz": "model\/x3d+xml", + "xaml": "application\/xaml+xml", + "xap": "application\/x-silverlight-app", + "xar": "application\/vnd.xara", + "xbap": "application\/x-ms-xbap", + "xbd": "application\/vnd.fujixerox.docuworks.binder", + "xbm": "image\/x-xbitmap", + "xdf": "application\/xcap-diff+xml", + "xdm": "application\/vnd.syncml.dm+xml", + "xdp": "application\/vnd.adobe.xdp+xml", + "xdssc": "application\/dssc+xml", + "xdw": "application\/vnd.fujixerox.docuworks", + "xenc": "application\/xenc+xml", + "xer": "application\/patch-ops-error+xml", + "xfdf": "application\/vnd.adobe.xfdf", + "xfdl": "application\/vnd.xfdl", + "xht": "application\/xhtml+xml", + "xhtml": "application\/xhtml+xml", + "xhvml": "application\/xv+xml", + "xif": "image\/vnd.xiff", + "xla": "application\/vnd.ms-excel", + "xlam": "application\/vnd.ms-excel.addin.macroenabled.12", + "xlc": "application\/vnd.ms-excel", + "xlf": "application\/x-xliff+xml", + "xlm": "application\/vnd.ms-excel", + "xls": "application\/vnd.ms-excel", + "xlsb": "application\/vnd.ms-excel.sheet.binary.macroenabled.12", + "xlsm": "application\/vnd.ms-excel.sheet.macroenabled.12", + "xlsx": "application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "xlt": "application\/vnd.ms-excel", + "xltm": "application\/vnd.ms-excel.template.macroenabled.12", + "xltx": "application\/vnd.openxmlformats-officedocument.spreadsheetml.template", + "xlw": "application\/vnd.ms-excel", + "xm": "audio\/xm", + "xml": "application\/xml", + "xo": "application\/vnd.olpc-sugar", + "xop": "application\/xop+xml", + "xpi": "application\/x-xpinstall", + "xpl": "application\/xproc+xml", + "xpm": "image\/x-xpixmap", + "xpr": "application\/vnd.is-xpr", + "xps": "application\/vnd.ms-xpsdocument", + "xpw": "application\/vnd.intercon.formnet", + "xpx": "application\/vnd.intercon.formnet", + "xsl": "application\/xml", + "xslt": "application\/xslt+xml", + "xsm": "application\/vnd.syncml+xml", + "xspf": "application\/xspf+xml", + "xul": "application\/vnd.mozilla.xul+xml", + "xvm": "application\/xv+xml", + "xvml": "application\/xv+xml", + "xwd": "image\/x-xwindowdump", + "xyz": "chemical\/x-xyz", + "xz": "application\/x-xz", + "yaml": "text\/yaml", + "yang": "application\/yang", + "yin": "application\/yin+xml", + "yml": "text\/yaml", + "z": "application\/x-compress", + "z1": "application\/x-zmachine", + "z2": "application\/x-zmachine", + "z3": "application\/x-zmachine", + "z4": "application\/x-zmachine", + "z5": "application\/x-zmachine", + "z6": "application\/x-zmachine", + "z7": "application\/x-zmachine", + "z8": "application\/x-zmachine", + "zaz": "application\/vnd.zzazz.deck+xml", + "zip": "application\/zip", + "zir": "application\/vnd.zul", + "zirz": "application\/vnd.zul", + "zmm": "application\/vnd.handheld-entertainment+xml", + "123": "application\/vnd.lotus-1-2-3" +} diff --git a/iguana/iguana_rpc.c b/iguana/iguana_rpc.c index 7f85bca53..0521b62b4 100755 --- a/iguana/iguana_rpc.c +++ b/iguana/iguana_rpc.c @@ -702,7 +702,7 @@ cJSON *SuperNET_urlconv(char *value,int32_t bufsize,char *urlstr) return(json); } -char *SuperNET_rpcparse(struct supernet_info *myinfo,char *retbuf,int32_t bufsize,int32_t *jsonflagp,int32_t *postflagp,char *urlstr,char *remoteaddr) +char *SuperNET_rpcparse(struct supernet_info *myinfo,char *retbuf,int32_t bufsize,int32_t *jsonflagp,int32_t *postflagp,char *urlstr,char *remoteaddr,char *filetype) { cJSON *tokens,*argjson,*json = 0; long filesize; char symbol[16],buf[4096],urlmethod[16],*data,url[1024],*retstr,*filestr,*token = 0; int32_t i,j,n,num=0; @@ -718,22 +718,34 @@ char *SuperNET_rpcparse(struct supernet_info *myinfo,char *retbuf,int32_t bufsiz url[i++] = 0; n += i; j = i = 0; - //printf("url.(%s) method.(%s) helpfname.(%s)\n",&url[i],urlmethod,helpfname); + filetype[0] = 0; + //printf("url.(%s) method.(%s)\n",&url[i],urlmethod); if ( strcmp(&url[i],"/") == 0 && strcmp(urlmethod,"GET") == 0 ) { static int counter; *jsonflagp = 1; if ( counter++ == 0 || (filestr= OS_filestr(&filesize,"index7778.html")) == 0 ) { + printf("call htmlstr\n"); if ( (filestr= SuperNET_htmlstr("index7778.html",retbuf,bufsize,0)) != 0 ) printf("created index7778.html size %ld\n",strlen(filestr)); + else printf("got null filestr\n"); } if ( filestr != 0 ) return(filestr); else return(clonestr("{\"error\":\"cant find index7778\"}")); } else if ( (filestr= OS_filestr(&filesize,url+1)) != 0 ) + { + *jsonflagp = 1; + for (i=(int32_t)strlen(url)-1; i>0; i--) + if ( url[i] == '.' || url[i] == '/' ) + break; + if ( url[i] == '.' ) + strcpy(filetype,url+i+1); + //printf("return filetype.(%s) size.%ld\n",filetype,filesize); return(filestr); + } if ( strncmp(&url[i],"/api",strlen("/api")) == 0 ) { *jsonflagp = 1; @@ -751,7 +763,7 @@ char *SuperNET_rpcparse(struct supernet_info *myinfo,char *retbuf,int32_t bufsiz //printf("URL.(%s)\n",url); if ( strcmp(url,"/favicon.ico") == 0 ) { - *jsonflagp = -1; + *jsonflagp = 1; return(0); } if ( url[i] != '/' ) @@ -889,6 +901,7 @@ char *SuperNET_rpcparse(struct supernet_info *myinfo,char *retbuf,int32_t bufsiz free_json(argjson); return(retstr); } + *jsonflagp = 1; return(clonestr("{\"error\":\"couldnt process packet\"}")); } @@ -916,7 +929,7 @@ int32_t iguana_getheadersize(char *buf,int32_t recvlen) void iguana_rpcloop(void *args) { static char *jsonbuf; - uint16_t port; struct supernet_info *myinfo = args; + uint16_t port; struct supernet_info *myinfo = args; char filetype[128],content_type[128]; int32_t recvlen,flag,bindsock,postflag,contentlen,sock,remains,numsent,jsonflag,hdrsize,len; socklen_t clilen; char remoteaddr[64],*buf,*retstr,*space;//,*retbuf; ,n,i,m struct sockaddr_in cli_addr; uint32_t ipbits,i,size = IGUANA_WIDTH*IGUANA_HEIGHT*16 + 512; @@ -997,15 +1010,33 @@ void iguana_rpcloop(void *args) } } } + content_type[0] = 0; if ( recvlen > 0 ) - retstr = SuperNET_rpcparse(myinfo,space,size,&jsonflag,&postflag,jsonbuf,remoteaddr); + { + retstr = SuperNET_rpcparse(myinfo,space,size,&jsonflag,&postflag,jsonbuf,remoteaddr,filetype); + if ( filetype[0] != 0 ) + { + static cJSON *mimejson; char *tmp,*typestr=0; long tmpsize; + if ( (tmp= OS_filestr(&tmpsize,"help/mime.json")) != 0 ) + { + mimejson = cJSON_Parse(tmp); + free(tmp); + } + if ( mimejson != 0 ) + { + if ( (typestr= jstr(mimejson,filetype)) != 0 ) + sprintf(content_type,"Content-Type: %s\r\n",typestr); + } else printf("parse error.(%s)\n",tmp); + //printf("filetype.(%s) json.%p type.%p tmp.%p [%s]\n",filetype,mimejson,typestr,tmp,content_type); + } + } if ( retstr != 0 ) { char *response,hdrs[1024]; if ( jsonflag != 0 || postflag != 0 ) { response = malloc(strlen(retstr)+1024+1); - sprintf(hdrs,"HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Credentials: true\r\nAccess-Control-Allow-Methods: GET, POST\r\nCache-Control : no-cache, no-store, must-revalidate\r\nContent-Length : %8d\r\n\r\n",(int32_t)strlen(retstr)); + sprintf(hdrs,"HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Credentials: true\r\nAccess-Control-Allow-Methods: GET, POST\r\nCache-Control : no-cache, no-store, must-revalidate\r\n%sContent-Length : %8d\r\n\r\n",content_type,(int32_t)strlen(retstr)); response[0] = '\0'; strcat(response,hdrs); strcat(response,retstr); diff --git a/iguana/main.c b/iguana/main.c index 90f7e7998..6cd550b2f 100644 --- a/iguana/main.c +++ b/iguana/main.c @@ -551,9 +551,10 @@ static void _gfshare_fill_rand_using_random( uint8_t* buffer, unsigned int count ) { - unsigned int i; + OS_randombytes(buffer,count); + /*unsigned int i; for( i = 0; i < count; ++i ) - buffer[i] = (random() & 0xff00) >> 8; /* apparently the bottom 8 aren't + buffer[i] = (random() & 0xff00) >> 8; apparently the bottom 8 aren't * very random but the middles ones * are */ @@ -811,7 +812,7 @@ int32_t test(int32_t M,int32_t N,int32_t datasize) } /* Stage 1, make a secret */ for( i = 0; i < datasize; ++i ) - secret[i] = (random() & 0xff00) >> 8; + secret[i] = (rand() & 0xff00) >> 8; /* Stage 2, split it N ways with a threshold of M */ G = gfshare_ctx_init_enc( sharenrs, N, M, datasize ); gfshare_ctx_enc_setsecret( G, secret ); diff --git a/iguana/pnacl/Release/iguana.nmf b/iguana/pnacl/Release/iguana.nmf deleted file mode 100644 index 9d37ed227..000000000 --- a/iguana/pnacl/Release/iguana.nmf +++ /dev/null @@ -1,12 +0,0 @@ -{ - "program": { - "portable": { - "pnacl-translate": { - "url": "iguana.pexe" - }, - "pnacl-debug": { - "url": "iguana_unstripped.bc" - } - } - } -} diff --git a/iguana/pnacl/Release/iguana.pexe b/iguana/pnacl/Release/iguana.pexe deleted file mode 100644 index fdf8adff33bf698c1c99c02926a874ff3f1ef0c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2762664 zcmeFa3s{uLwjkO-^N^Q-%Bw+9l&2!J2m#GGpol1FL=C8*;n5&y^AIrcv7Mn63`Q^@ z0wUr85ubqKyHRq55CUyufE^7gGMGbJV$_|Jy`%e1_LtjO;TO7zSJ9!mGd*{u;`hOM<(E zOAIW;0S9&ROlRmD*-aMiPY~EG(p~V0P-miqe#g@|og7y|#EYx45 zFWx);fTyG@ETMSn!V#y#4mw?7D@>hExCM1>xg~VBD&8{PX`z8&k*PpX5B*H@oNimG zA3X1w(XBY$3(iI#3cC&nCWZ+FR=RP*3(mPI0zodICzu9^o`zpRijg3<5PpN4oCO8~ zi!S^qFcygMC-)Ql#~dF8Zbp8B5TPK`!irvl7Sqom`d1+Ebr1wmOM$>lPq2ckBPb3M zoDiyOSPFs!t1aNgS11S$5eS4+bp-TkAqX;7*Xc#>(H|epgW!+@Jl@iQX19Wkb+GtL zonjp<$)h^K7M6l9gFE1hnINb)l*-^A9Scpz_(7*QOJGQ!a=1o_Ymh)N?#p0(z#>Q= z@Ckwn&_)7(EkKkyg3B5RLAtw(1rEM~Tft`38vhA0z}hP;;i*@Tl?nuofJlc97eb9d4j^hBv+(OM zJ_;T2F$^mr4IOs)I-;Z1#v8wG5@-;mK25QP2rK7d71O zc!X+6kAyaY>0_^ib}hYPf7A)_>H_s?EBI~qml-xx@ie1kDhh@$lJb30_k=cmNy9Jn z%9G5udn?IYpM=e8B)cJvJnBTrA0~OLHpj=H%~-{8?yYDO6~yr|lH&0sFmIC7{}kFE zYBO;R+JBVW|D$OCFK-uu;&8lKVz{rS>V z5@^nXI1@ygnULP1`jud#Fzf`4YX{bfWJNe}3SqS-Vl7f-)VD|+ltl0(tcChUMXRya z+lm-0A{x;o#uHwL$pjD)gyIh50ZqIZ#xxY#uw&v9i3V{YBB&O__}{SBVPp{rkAEc+ ziPN!&DKWkeDQ;kud2mE6@}wET5z<&h3gBbF_`$eF>_!~OZc#6U7AimoxqC9dIQR*z zNbH#Ssx1&^TRIFiOekdN@nA{LXfgT_4)sJPRof&Y#vB~N7~Mz+<5~m~f%p){Q>g}F zi!_xms<9{1gm~w=^_m= z8UTa~)9E&(i-tZb9}k*pQIWPD(E}Jfz!%rgkm9A+v}+S}G<) z$0oxfHcm)(REtyHD{7LGTfk-!rYWEqfke2>DZ)0BuQIMqVt5Wk2MG@fz5@kPAQn70{bwlk6mAN4^v1z-O` zjt6_8j){{bPAsAZRHV&s5<00FGo{S7@VHPdCShLlwAGAi5qN|}JrWU#WSzg>aiypZ}E(ijBS0ah%uLnm{jr@ z+d_~wZMRHVYipc#Q6z%rIl!j-+Im3P^V*9XC}DWL4ZJp=7(t|Ygak48kHaE<5ni-> zV-2-YCA=6x#2hN3TG~ixH{`*SwlMIFUpy>QY&OuSAzw?oA<>8uBC@r|O&g8~D$@2d zt5J@KD!DNN&j<=(x*n#{WWtL)n*@uPuGeabmTD0!lB2d3{xNY75=;wuuCigt7ilA* z&3j9-M63ocFf^90jX^dGpjwQ{yd?@jl9>~TM3SjD!U;veO9wehT%cM+3?adWIMas? z#$?7Az9Ew#q52vuG&`0kR)R&~5s7%jOWPpucri{8Eb0-9sK;7H5F2Gwi;YF{5d@wr z32VrMXF5*?n5iyrg2Ir6Y%EeOVh$N##tAB-frmwe1kp&dIV_?c|HdYpeTca)f+in` zT%bm85Ey}Gdi5H~*pTNa6D!psVh~MUAD9fOs05K9jxymBnkkxrBBT&J!C`zNG>O5) zO+lMLb1DIza7127Mp-SM1 z6F7DVFUHkotfej1cq}4<5D9*05?;hFrf%AJ5vrsQ2)+XeBJc!@74H zEh4VIfovv@|Cl*U0p7qb0#6d6S}59DEjjYTfc5wv7io_S8V00a2tJ;HXF@AsMGRHK zD-%aQ?N2e=MT3|OC^J-H8skD%i5gN7!Xi|OAfi#*rV>|KEkc57(eOl6dAykV@3j~J{K=#qNrl|!XfJM9$B-@3I zAy`ZlW_fydWkJw_rDG`D1^QW5pYinOsO z@Pq`RO0`fQs21TxqD8W)M}nnYL}W8gP%SEAGpaVki@=kUAZ=#+($-TR3GC4abzZxO zM^zgMs`Z8gcrI? z0ZOk~?TBN4w)_G;0|*abZaKlwbpimI0)kDSazsp=pqRpLIM|a)R2&1@*^ihVj!NQ7wBM;S%G-5)dSU{h9ntn4v=K9 zA%Q18y}`HAP{Kt3-y_>@BVmPMkIe7HGk!6_w_y<>!K6&JNPbLXBC(dXNcmdY+DAPy z@Pq_$f)!DZd@ZE04TZ*o$0BM-MF^fZ1XP5uNQnq90*|$Ly<)ZAq5sk#J-@_{p$=0^Zy!qix2G-(v zPXw_drY6K_9xrB*s3EV>za9D1BMFTNBB#Z`GwgY?2^NW#)zU8FIYH{nYBA=JXsOok z*=Ax6)pElD!-fL!i}0fLBAWp*aS(WIf(RDR9A@XK7U9LBGLfkF{1TE4_tl65vw=KU zQ5?L`h!g)|5%q|$cvOi-Heh&E-@wARG~{U{SfnP%9HNnm81}?fLV|&(TA;On6D99) zkJ_?h?VE9=k_d1vNkq_qBN1q;1{Gm1d@>i|!qkj#VQeE<{D{Eu%oh4u-B0xd$=7MOXB8Do}Vq7J%wHZxCOq`^Q@ywPY_QVN7l{KVVC0I+l=(UE-ToAuV zjyR#^d(_5@mm@Z;)dEijiW(BXNVLeW=HK#52ge}6Lhv2P397|28jBudEn+kcUYtXe zyrqcg1StT?k-)PZZ6ce^eE10iBZ#+u#4jdCB8X}+PareU*sI^Q3nVbqKwkJ^*pL{5 z>?7&Cp%x*)dLv?3!`IM6;qyg|qr5&$#A6%?ix|^~qR{3Q@tum;;+Y?w+SY?mC3QpW zE!mKwh#Cs47Qz1=jPxeC@7|zJa{&6sUg8?#LxlNpjT|fON10!#cEt; zIW*LZHZD}ea3Oh7Q6}Po=;uhMqs3E~3=Cb|Kcw`$1`wfz%TBtNW2%bdwdqt55i*b{N4^PlG#!aG+X$dtV z6{VaNV#?PnqlwxxkYuX(UI+%I2=g_Niv)ue@w{G*TqK=FmXS>&jb;9z83`cSGct)k zOo=HwpBlp9t+5u6)#yM3s1eb`$m~PV)QDhEPt-Xsm#FA5@|Ze*13m-?B|!}dG#mGk z2%7H=m4@WS2qCudgkVD+O$jmu$)zH`Awz<1$WRS7z()8=jfl2wScE#n7ZCzDut*iC zmanEaUX+9YEgF$N>WvtqO&>KRSjb>fWYQzbqb@N-u=H4q%pesfK{Kbw4=QX=wMLkh zm0%-Mm?x;E^p!D`r-#sDW0h(ViOdG^Bw{UE%QhouLY~-;iboBpH#G1Bo)93cnZe+3 zVnrkzYRHfvMljxxs%zKc4Tg3@0w0EKBfrKh4b@`CkZO^oK~zInEyf&PjQ=+k#UsDi zXd=b=e@79?kx(U0koK~v&l?DmXhwpNO}0px*dTiY*(45SGephNVs8?;?S)2nmA4`1KkR%mOuIkHj3bQ`C@(Uh9$B zPiD=i7L8hh#Y{6b)MhlJkvH*gs70_C_K}DeH6&Ara^x9Jwa}vREM$1m5M|iEfgnO6 z*Z@_8p~(}2d?$4yIK)0C!xF@aRD|gR-wvi|h8~^TyTT?-gc7}ylJLC6%2dQtN>>FC^vl>j zl0eZpEB*`V3eRm6z}q-Pq|gw{LqX~opsq1lkdE+uYjYWoFmR`8!?YSbMgcM!Xiq~M z7t#;XNMCHoOd|Ehig;dYLy~C&p7=yH7}hd6GQA50yM@kopka%Oyht;&Rf-s`t$2Jb zM$ms}5s|H9h>U@YQXnKn%94PO#6`AN%cGDtbCey(dTrzh6kkNvo(V`>{;%m0B2Psm zvy<34*>FY+$)4v6PP(Y5pu<`O5~0G`3(`A$U)FCvI0ab$@R z7GaNemWDNX0y6zHhOtK;7AYXZi*c1CP1yf~LN9c^%%J)ab_wW_GCB#AnrZ=O4ycGm zHE|HpB6cyOMdqLc*)@zHU$YL>h_oGPVQ_d22|?kIDPV}RS|LmyiJ^>pky^0GKDQwP zr0!%Lup!~ZiaIFTMQ{iwG-AOBhm;r*AU2V95CW(}JTYuw@#OMoA}r!Bfv2e*k&HMI zpAbB$DB(ms((tXt8U>7PQw@+A*q-m0ryObG$z(Q`h#*{0Z}Mmn!3ZD@QX_)HctagC z$~(}h`;aLaVWxz>lKnzjngyUJ-WXaR2f^+TL%3;as*X;tP)8t;f3G80C2Ts=d&|ge z+c(i=57!?N-LF`^=0WUQ%b_)P4(lIOi3Iu?8$v%Yxr4_`3Z@6NK?b}q9)U(hKM`*^%5_ANt1a~#GS^% zJN0=HI=Q=_7)ax{rYEL2W#`0a9ph%1lbi@^YJz z?QRS`dAn8qSts>&_#P8y=Tbepo!N5|!$oy^?rnPGzSnVY`z2CPGwi-8J0o43keZV% zm^eSbL3+UJS%b0&u)9`V*3);Ttgp7U1aMS1VKIl-iN-?n=S51waeA70$MYidj%ST` ziV(?HMfvhRS#eoWYe|_budQBw_lo>bv8?7$G5plK30C~rAJi1lC@nM(iFh%qP&yMj z?0Ih5@w}%||G=!7JwX4bUP2*|zX+gx^L*c-?(Wv^eWL}}TV=|-ZDrl^vc6sQ^2*kI ze*>(PaqpdoSpH(!@{q-O4dw@CrOhmCG8KABrGQ}wb<DBJk z8<&`jBsnE#Y)zL;+XZ}2Ioq|bi`bL* z!t8`(IZ)ziuya~gQubD94m8P(PuvW$%1%npagwBFff%LRsiEJP{+*2BE zQs>F_jfen3&hSfUtQ`Y1By2T7L_qWRG!)L733MA8q;HioK~T# zEMK(xgQct9TaH@Ngd8-_Ymi2GjVEE8$TRJTc+sfF+{STIz@%j}mdU!xitft}DcwPa z4RzB_9Y1rz-9moRXI`=TMPFb%Il<-CJp)%g!=ScvgF`|6!|h#NBUhJpwFC_*gO+wp z6u51R6WF-;M~A9bE-+Xrexe&4<>GHBjy8;Tc@h=+WaWaBf}l3hiIY(A6Wd3&vDE|X z)=q{|6zG}lSqf}$)?4d&dyh$YDab(9b}X#&=wQ{+f&*P^>>busI^f`Y^ib60@Sw_} zI&2CI-f5nq@I4DXOQB(^XH}KSJWps?Hm2b~jH9Sh%upC{<8brgc#4;&~oZW@mcAq=^Ig1ws9XBLUNNTy)#wN5y;50bf<~4$fODf{Vq}z zr=;}6tnHaO(AX(0DLXrUV-i112PU|emhLPCrL!{uZFA2SmEPV{r@@#cT@s9>I&`f$ zEOIPZdqiXx#vy8FbTszJBf=e~)%xc>4gw&(scN#bgWW5`ag^7~fKE|Ctlj$RqoRV! z!5EQ-;#e?R+A!WTRg8=bjRXz1kEr?w?*w)B5BDlYf<_dhs?m|y6-!ksQI3f#TwGtd z7>eIV(X9^od2YGE$5AeZ-$s4eX)rB1G}`qEiZW(+r2iQQ0NR+Sxg2X}C(!@Oth0S^ z6u@?lDB4FAL0I#i;-?_x$k2nJ6~q05K~Yr3wO$F$Q&#v#8|YT346Ib42D+{l$^KlQ z3tkym`T0fp`5R{0baqCCg7)p)^KOYaK<*!4=~&Y2?H_1y(ZARmwDqcgi?}$T#s8gR z|2Yc@v*C})1v*NzYKLf?#yYWE-9)@KY$AdWgb>2MpS^s;25n# zVZ^R|C|Yl4WNB4~Iy2ksWeBk^BqyX-@#6#4ouCK(D&ixsbZ}@i2nd4@A^#OXJv>$r zdq37uR1F#&dwBi*fvPGyqjiM(YL~*4+p7uzk43F~)X1GI;z$-k4RMn@}Yx4WHoYOxm=aH(!YvTcr}P zL)lvsvJj$z-0Vc7G#%UmS<)|`@9Qe-x!c?aHu+X-PhVMy z>~dL8Pkwb7S>)5r*8=^-{(;5K{{A<_0fEIgeCGgj-(OsDFG{siY}o&;-pZBqulN+` z$LC{d9J+Hy(G@iGbd+ebSbP6)>|}@ac9kYeyJOLpW|;H5CEZc>4|ai?s#L?hBkd{$ zvbGD<30MShzE%wl5}@P@t}9VjL9k+LRj47!)nGxCpG$?|;^ zSTgs|MGH-`=Xq9vX;_vW|6!67dTXcov*;J?aUo42wRP9u2MT&`H6AE36E;Ppd!-#{ zQWm{1S?<;I!f>QP38aH7?`V8xKGM@j6N_78THoCVjlUJJcILvS<=YnoM< zZrUitW~S47%%(qY@KVlFCOzxvK`0dl;QX>vvvbh(Mg>PK2?<`kC6X_VQqm;m^d(Sn-|OCDaRA4EtNFn3V-EN|_mEO{=tA>d znG(iDeXG0{-=UZ%Kn|ZDW1Yw7Ovg-OB+q~!F#A$FWAl)-7d>VjGm9E&=xsFEnhq1a z%#5s@B#Bc>e0GX7Dcx&^#3>`oDPAJU;@(h&0^HD_==q$>7G=BJ!IYs6XRvy~o+g*V zJ*(=nbt+@R_v`^*dr_xlA^D#%w!|X*d_t)BrjMlAvU}s+)KF+S-kwaLF z?XmE2l`ssyGUxom9mVJ<`iB>a{yV*+K}xW1z4REnv@7VDD(FG`j~xR;o%aTxK7bPR z8L^xXTW{}Z-!)*nZp{&q(O}FG(fZ0k^j+`SfrFp7v-I|U-J0Qm;E)if#P}R0j7?3; zXBHN6gW<#%hU)QP5E>-Z6CNLKZCmXK&{tXBwXw9i8(S%|D~PRJci$EqyQ4$Q12B_z zMzI3}>+FCUk?0uoHh%ZHQkV@?Chn|z=rQ$&mEa_2u{oj_IQToy&4kNeq%}y>?=;*= zE7TXhNIPKOXnH>F1t?OU;RLuI7p~5=5?BlD1R}Tv7UVA&5APEM6X7~oM}Zz(scR0; zHt^kEFc~g|HGwN&CqaE1xbk?409J)?kM0C`wukmk0$r$Y1Tc-Eo~dA}0Iy6o0|?`x zm8D>s0I$r|1*k&k$w1&Nm@b$h`1My8fh+v$CU6I-3k}Za6`6giFU-wzwRQkh?4UCd zp(%jsR)7?uHh~b;hvs(hJ{i!lCsg$SkTra_0px56S)srM+E0M*wtyg_YXIFLiiT<= zjR2)ze>DRn%?V8-KvYNI2FU6Yss`{~2ax^sS8a5E{dK8e`uxLx|8+c2`S)LcgU@)*$Ug;THQy#g1&z4z4#vYzOszk2U-1@+TA+%HQaOz z{jDlj!?B{@+^;!!x4yRI`kQo+@XGBi;qb94;p!j!nu8m)g5U_Edb#@66S;S5jxV_u zcZqQP#r|?9SaaVeaPL8ulhpYBIT8UtJ%S&!Y6VB|J&uopC^aAS%_r-*&N_b99aUWY z2i~Vnch;A12C=jwN6_7<(_rd z>JQ+Z8QVYfcUtSc#zVV4v>%IqF1%><2k^AM13ayFfT#5i^~drD@d1)}`hnip;R8$f z?*Lz`J$%%v58t)mL1nG)@bR^GEqNiork)xj4`_d4#u)tIyUR>h9v}GL=;W^T?r~;J zd!T3Ry8vFa`UiMtoX5b2`ln9K(1Q2c`|&f!wZ9*)AM+0U)cOwa#(oz7Fs=TfverA$ zg50z9 zr>48`;B(KO(Rvr0sySn8i}&txe{$X38tliupFLy8e}y`=9K;5i*zhc2L&tFchTeYF=+H=iXZyg0&VeD7A{Li20OQBp(8Y%Sr~dkr z?yJt1s`9A4PsA_pz0{3%?JW0uIp^iQdobU>=S*vFzdUP~#fv9~+9ZpkTwSA8e&vRf z%3Z#34w?J686k5+B;v(3E{nfe)gGF>655oqKZ&~0E)_3B@9jxksHdj~>-VR_U9dRs z`mB8v5YS%>^C*G-r*S)Pz!G2*PW@q`sIjRLX3K_;%Id3YVOgkuzpNWp zg)mV!m3y~b41nm6FD^(D%2lC^=_Yy{(<{8M`vT){iUTSxU$X&TUJPiN(tJUFaWe4p zV;~!-wlb(tC6w=laKpiuFIS3RIa~Wh-vb=8^)7nDs{ZO_l!1@01+9mQCv(640mVL- zFE-D`Dl}8aY5Icce_QDbf5jlB%}NMAbOq6r7U!r5EBstu-n9;Ot=Rj7mQ3w0twRlH z0cn_E@MNVfE?YhIu3x-#>E`*X-hp!8`Nb4zu(*27`=al)ImK4u3i=Ov+90}BR$cww zt}FR{-Sv-Ug{^m+OCUUYtGl%b)&{Z*t@$NoB^V#Q4*%d<;9lA zXDWoh5R*HRH&Z_k0-VamrXDULe9a&wCnqyIaQ5u@%v3Lk;U;FJro)ml3!_Vk8ELa~ zQX$ZoHT(TlaF_1Ho8yZPn5Qp)^4+4s=V{V3Q;4?q%;@QP_B`J!P1+a%Azwpd4ZM#& z`p9d`*7$UZl;8mP*&q7Mmc-}8XG17)_JZK3MJt0BFG9#(7(o8#tc;Jc-}Qk`Qkx+3 zTCl0WNVwc9t-Lv2p4h(Eq zs#>=chgvoc6ScmGagG1V?`65lZ!e4p|0f4k$uD0naJ307SAA#zL*f-E()*|fbDj?N zkNyPBL+l*wLC0@x#u%ez0>#C3GfaU!ix2e`>GWQ(`cZ$Ja-;57|2gPyQ@qQ@Mf|FB z_dnnIc}nrW8yXMU2IFi&7qmQ_eb{egK$L zs2@_8E>+GNf1<+_RyFX_K;`fW-|=7k4|#YEV(79%*9Q*Q=K_d}6xF)q>o4Z?Tzu2# zviG%1Vtv6hTU|?2nXYw^UR}+wV@}rAq~vWNmv+;P1~Y(iLf+GtU)kDS_85d=)KKFL z<5C9yKPo|O&KGJ5fd1QS*2iE7=?D(>^ED9v1U}5jNKS^R@tV~DX?jmjQ^bL$LKy7P z1@$F80Oykn@+&yNzm59Fr99LR*trl^eeJ4yC=a7`5A2Stu?J{>0mETZ6@&27;Qwi^g~oKr{9g%WYxs$Unbm0eRnoJ@=lV^{3umQ0+xV=p zah9^EVR2Jo)ABn-9_m38Z4_y?3%asLyJK;!#Scb54E@PIBZrWwXHOzi8~?cJemQ+{ zl#A=%US8EU-K)eK7epB>{`lUi1qQ(0ll^xFb4cC4T)Fnx@@@<*nSl>^&_39;146Y= zM+Wx}Js2KPj4JZl2igb03q=eL!OxDR0|QS1qqsL>q#ha8!V2hQRr|B{{(<(60R`0W zu6kJNu$E$2vn}gHmy8q7kzyp|Bz_n#-I@e~^m#3g?Gp|=6?Qwrv-K=Z5>2v2o)mkG zhrO4CcxilkVv-j;&PaCp5dX!nMK|muolrh+d|_%9GP7`&66^{|KLf*zyKinCvUYU1de_CQsozQZ&iC|=x>-g z%_cPZ-l}hRCnj6ndl~g4^c#Ezq7#Qkx)dWvpFZeNi~uyF>R8*gYhmT0Ki*u!UWh$* zDh7^Wy)itE7}HS06&{dvryHfnk3RcMQx6@y*S_lMf8Luc58M(sW1 zxA>Jy#qYOY6`>k!9~s@T6a`(dq*Ao@y(M5rzj~;>&p`6ocW!5$XE+xY-o=N76Tr|r zrDs4~I5R0RH90kj+u0f;;;9fwqJ70JJ7Je>59~P130H@g^Z5;yur&{3sv%1LP~_O< z5PN^kk+tjWD7^ii%;ffF*jo#ChQa*rZ38heF^5HKzrxs1W$ZxpzK2y0*Q|YSoG7Nc zdrkGx*vf}%HoVt;bP0i5|K7g+MU_iz?J8kb75g44|5rX5c+-Axuhgpv_HnSi)!N)D zuLnb?nfAT*8|UEU;N&>$5a$>-xyEtW(P?tcm_2=!|EyL^T zNrJ6Jj{`-DUAvu&=jpYgQKQ_G|}* z4t0|@Nl!0d-lR;!-MA;rzk;vM$x7Nb#<_a=%!b&bG&OPd#-yB#EJ;#ULPo~se@-Ki z@6O0}$=RNn^lm~%PKpZ|&Ua@>po0Y-5G92%5^@)|UF-Y4gE3O>ef_fh@*Mx_gJ6-5 zx!3gdwe@^|^JYPPUmqBKd1337R@j$q9r)sU$IZN=qSm|ezSg5AmPl=0aICBbO@r+ukVehU zI+H|TNx(wf^vVc^=p<}mawY_+A?R$PB2bCxW^}+o5R(?!V-u^{@}i)&1cR&2z=Lt*FjZy1EMBv-I@x_ zpMMq{bdy(+^uTi37yp8rlvP~*d#)z5yG}TJ^#Y1bB1b$REpc? zFTQIie6j36L&OVLQ?InfndeVQ?!eS9t)bymUQy#6?1G+vSEqhofjDKE4O~o2lKwMH z+BPR`N7YHsfP#0SyR9yWIz55%tokF|0uA4}$1{6psWa?-zmaFaky$QGPk}G*|1MmJ zzwSJjU57)5fG!NLf`{9016`?S@8~#q^v>=5YwR7XW9^RJ9*B7uZX5ex|N6pkW%$6r z0N9sDx7Bvz(R=V^-C8si|B(eTd8-9+W)?&}Xx?T(1aVWGrZ~9`PlFeB;8e&w```vY!OOVRYEB|LTM6~t|-USjrf>JkBOB* z(JtQQfgsodzd{p@bCs%*m@^Tad?)$Uv2O7v7nn!ADhoyT9|aWsqK3V@ zbF}}Nf_ivuO0;iW?3yE-JNe6I&$@*>oqwo3XyWX-a4Bi%7&8GX@9vVFN~3BkXnbS} zS6#leZlQCj$qmtt@a!?w=inqL+jukBlgc^cHlzB3Eot_dGY;}{AT5E{x4xpXw<;TW zuQ(4U4=2xIk2ud7&tXrenQ=2~W)8de)>v@*2ATzmQ#S5T!McC>KiYoDaNCxwndRZ) zd0Khs#&VT9Y>;5{*J&?bUWJ8pG)_6fJD-k>!2U9>fQ;7K4L*#uhZ)28+ENo|+&QWl z4qh{BLFk%U!7G-8FIpRjx^~m(+@da{bNU```@eTD2sW)fKeLZ}ts@2#a_=MpiJKf^KTE-80x#{^BlV9Kp8o&4Dj&9#ZbR z069P4fS>?f5bZ7>!s)!+=Gw)1u!LN-*MG0I>cc35_VRn>p(x>x-?fxqybiI0K-l)@ zU|U*SUh{`&4is4VT@AFfF43%%EFCR1s6eUQ_afFg7yu1g=3i&e@5nE6jcpv}K(z~3 zuLb%ebSv(iVnKe?5R(Wt!0Lxsd`j=zmj(+yu24q~FlMlsRDJ`@%toK$vMA>QBpg^r zNBb>?jp?6294p1H?bB#1xg2+12}%pE8YOl)j#~T;5UB>k%|QXomsOfsdFt&tkQQw$ z=eI*!R;ZvuB>tG{ph6H9H=#4?(V`hI#vM-q=!raZ$qzX3Cv}S*HN!xO=;$c+G z<<|q6>T;9BL`bTty}jr4R`SpP0Lt8K5@-s;2_TT5G5a>_C&waXNJ-av%+PxjYZr4L z!d05mFmAR8$wE*GGBwOTd3-BqX3?FQuunYxwTU5n-K>+UlcuvpCtGK$&PO`ib$06P z(%C569c}Th<0LSfMl;>rKzXNz%%$b?;UgfAJPX*j(a*532i{Fuuq0v?&eBFxKQV?i zYEZBlv?_2qJr!Ej&h-`2q8nQY`}!<^c`5iSn zad0m*>NxZ@HmWfW)UAn69o}ahwpahibeZcCr=?bh4+@*IWFAX~ms*AWH~ov#WwVyl zgj@anps;W~O9<*ha$HBJ|0h)brzA z&8o4v0>nE2xP%U7>@gEjj6B?PoWU(T@Zv<7zsE^c!_EXF_U;1=J&rbYX1 z7sAvy!>nVpGdc6K(UJBp$h{aCP~2%B2tprA2_r$Uiw@3~C66rH7hZ&M7&mYifaZPK zIAX$*F${s{?tz#iRWWN~V4c@}bllO{2e5SF7fZN48h_;61eo;hJP6acY}vv+$TOF; z%^%RJ0;Y(x;`o5g4d>vuN?Rxa@sH zY!N8;z9_bURIC<%`TSy7yjY+mo$UCGrG7%>tYutEKVA{d-q~P43?^6uPIwI5>jb32g$h* zbyd&AX<`Opst+(m3V~857*OWwB>^l0dh{D#ESuSbF(!OVH-I^s0W4@>sq}$*>YkXD z6c5=R+~hqiDJLZZo;kHXEx99Ul14NYzSvBQ29VJ;ShXqZtL2=Cj$abDoWIZv8Cm`< z=Y9Pz!TfHh&)Vf0Wyr;JJpJi22%OwgjDm71W9>u_qhk&auCoKT|EZ6xG#pn%TS`#r z9AUnhn2zh&Jw+6(1ZAkqyMimnpATK{JzQDXS}#|tMsXP`hexUJ#bfAiQAw`N28Vj_ z7)11j)b0#ousA?CANCpfMZn?qTDwQzXuR2ZADlD&avU7R5BnhT`a3?PV6^U0)f#)F z`!V;ALQo-g?OKu1Bgj=b3@IKMtbq)=2M&)QCoar3c3lDHM4DCn;G;)!@BGHHagk=4mHe*zU)(GxqVVUw*4D;dMRJS+-1POkdhwFCpT$*x z?bG68as7fXr7FR;)kFwS4ozCU_~Vx@6(?;%D_*KjI#2Yg@PmY07`5jP!EV#K6T_YB zPGh_sOc++H|TSrhZ&H{4d{l*Ua$r4bg2}QZqm7ha7fe4rY7luCT>|{2st=+rWZB1 zc5*rB4X{)edPR6Oq%|4h*x5Oa8zPWnJtKSCOh~lOicia)78rxC>t{|&l}rot!3^z? z2Cu)MZ3ARZDa)Fh-^J)L;Bmyt#%@lzm5u$Ja+;UA_p%sBB?L=g(?%T|QO{Pn{P>?S za9w$#Gwvu}b;V#b*h>3n`?z{Ix5bGrS9jm2bRSK1 zbD9fIlBl#Ds(X}xp0N%3Dy--{x18ox$1Rq`GuN+_w716A+;pJ*o&x-pwuX;+^PXZcC38yglnYb5r}s|z zaf-$C71Mv5oU%d)dfpy!auMY0_P5DGy@|RYGVhP@sRlq8Pe{R6XM}7g={ADVaz7cvNC*Lwn^Q&QcvzX zCg^Wpn30Z2ezR6X*eozUGZP|fV3;$~XQL?wGrZAsRzx~P@=qPO)1VK^<8Rg~$JE3t z-evOYzS{2(UBG~IyJkZG?emN#ufhng=QE{T9OsMWs(M`WT>Df0{rvjo{C&;1*?DL- z_#fCThP?*kA^QT(Ozs=Sjhp6zTix}zpgDA12`>dOT1f$Rm4Obxo(?B7G@I6-B%j0T zEXwfJ&$x^QaVHK9D+W1RiK~Z|k077araJcU!`J~^IH`im=dUJkYfE6umRg@gOZDnf z%``Bgb0Nt$EtSuyTQajK{n@OZ=RbHAnHNQPJ@YCw%Qg5SGtMH~Ce)?kLu-REk{U_~$Nh$ZQ+udEsF!n#o z&+qO({EF5gG4FK`MpGo$`cHrOPf+3R)4LA`eRAT&u@gbZ%J&{ScvL-$8XWj3NcD7h zcxYr)6$E=QxV5_sVng3ha442KTBr{2;=FKsj0o50e2f>^H7PkO32fN>j)qn=C=McbaI@OWishkdBJ^vY$i!M86%4aJ7he&xyKQK6K6eM7&L zORbm;lg0Bb0pe2F(v)8kU%Gg4vaOA+?P1%}8@_?CH+bR3c}Tp4VJ3&ECtpTu^Oj?1 zyeHtK^5X34^JsF4bG|mxKhan%)_(33whQkF`-S&}4}?R)Z-px1Q{iVqv!yWSgP@Ar zw*NFXlCn}AdQgdBXW0ev5a0naFLtq-ty&$tY(*d%Mo>&?*y$N5DW_95oz?e9*<@_I#3SV_7l(0Wu|iNSucU2>De>u) z6OfvYJ3Ba21#JRPivehi!f)*DhFk>D>3`I4uJ+@lsA+us5d7@SWldu=Is_858%}k6 z0h+HF1z&WUlKt>jbLFk}<6YT&S)A;jW%05ES)xoLOOhqa<^}Ju;_L@F$g%Ss2*Sda z^_4dH^|C(Ny5JNYCp)cRHQVF3nS#XYxpG!v({dVaJl;)cqCYyMgp_%#9XNL0)$H36 z&~m}=9h+<77K}}S)lE3a0)||qIcr}>4b#3uy z-9FuKbnojv)P1D;UvwYq{;TeHx?k-!ShVNErE%s~hxZ7F+-2MFG3Au-TX$JN*zhr{ z!>5ElxyyDeg~#isumaRQh83RT<8U=TzQDRQR9EE$5TF#AL51zu3?8{=|AKV^*tVrm zw}6`c3F~&95<;_pu(*Fg9R90&aNBK5bzaU5u@7bM*aXU3#B;cy9Tvzd;DE=qi#~xi zzAb)Nr(8PL954?j{RabJ-^ua1zn@<saDjEGje+=8l&gOf8s2niHOESSJ{ak-AQ@+fIE7VgVCX`fNtBu zF=2<(PBSfFS}YfH(He0vo%jkYz9|l*CCs%cN^eP(9&W35d)86TMD3W>?`jKcZk?-H=00%1 z-F3AY(ti(*jcE>`)$G0i!K5yQ;z3ZqiVmOsq`<>fDJx734FJ0_0{rcxk^SFoZ0+6b z-?0y~Ut^zQzsHJ`XEuR#oF5UNor7>g^4wwDHe|6dckdUu7na5~Sh<}O-tmxK zUK-bEm2yrv+cxC&cl`-)HT){Pckl?n9{+fI@X~n;{|eYT z&YvBT@ezXE`y}6OS(CKT>v>NPApP-=H@)+F`UvY|Hoy!q@}m8((~ud6_=Gzs$KQD*`z;1s>}ddMxm6 zvsS`LajjOD-I?X%96sk);k8_ITRY2?lVE^o={OfG!C=7kD(a1H&Kid-wz2 z(CfipwbR2l@NxJ9RqzMep<{+0&cEUr0(?WS3^nl^JaV|;`2c`Py~86G0u)4^%VjUU zs>yzCxAt3%r#(THojYiQH)LQCGAjQv=45RDAk3;T;qyl{OqhT>gbOxEHEs{$a;7y_ zDm5Jfs>vCUE5j?u*rx)~Hql|xY0-62muNsVD*C&~XmX0k*G(VxK>v!H=N7abO55)% z=rJ0Wrafae9l~SR+g8RtSUX@#sRjG1mA7dPR59@I;e$`%pLJ|y%I8l-p4&VjvGg@F z9Sk`~r|(|b*WCT~J>21KHQSuF$8E3KKD^y&N8FB@9m6}~wypT_rBi6~-jkgw16S9u zl!DV;qee?o_nqk;=dpCtCubE;jXlFXBcw1Pe`Y#sSz2Syb2G2y=?9wbyfB~r9(bKo zCdMg{O++V26H}5BH{;m zzyNN@fVXpQXFUqK&xUz)yP3f2W}`DHDXAXc8;yLY4;A3b2!K0Pf7#S825#X&On^OU z(fj&73~;&Y>DgzdorO_l0Ul(*#E?nCpGG<`RdWv<+TDHhz$ZZ`_ntUdb2SK1Xj0{@w@kY_=W}8NH2-H`tx1 zhMcVYT}AoLMcr3Q5S`Jo?pE1_GC9(WNkVj$!c|}Y8{Sua#TM5Co3C8F*=Tjq%i^lo zAF{|XN(-CAHn_#z?^p4mLH`I`n($My!ME@WhwJs6YlbU>t3|Pg2jM_HhhH_Fm4*|W zVMjz^-3~@El~vrK>on_n4Hz^#s|qpV#5CGIKK?_s-05%7A?FWNF4nNfIZx3N(C=gRlgC3~lHj zE4C(tC*jV41mn2sgihQp*q7f!(K5M@-1nW9Gne6z_y&=hWo`N0J!SXn<*ob9e4krW z_E@GY>aK6=lU=Td^R)76=8g(3$RU+{GR#~3%Ra=AXw2}_4!A;~w_Sx<j(he*Kjj6Z*TY7!K|KwR_p-A48-r1Fs-kBUHNl8zZDmF>erHT$om!hL1St-##%Ir+ZN{&mB#z`aq zJ4+FloSdahmvp9QCAVj0DWuYr_RRLIWJ#AYE6_ZyIVkX{v!lJUU82~e=uF7kl)foJq3lw&cP2rFw3P}PWrr4Cw z*`6uw>PlC1bfp8h&aTclX*-mb`OmnapP$(;%9%7pgJl(^*1 zj!ntRP05NBXb$8jbhUS7w#TJpW~M7Pbx4voNhC-;(4L&KDY;#em8ERYQlzI#lGD=@ zqzQ4!?H!#73GE48%H+(lO!c2IkPJ+F1bqr9VsQrimnbRFhh|5oK~brvobT=J2h=VKcr6O zq5cpzd6@(!aFWXxe|$<0@^!|PY^+fE8PYiv%qCf=2f+*4T)QEb`(BzKINy;whEja_ zQj7Ps3$x`nuFB^G(y4Sih@ceF7Tsf5oc4Xs8KTQQ)qRg;dCjn)-BbU48JEfkDI4gK71ov&HNrDOQfd>u+%V64c99Yy`yJ`#61Yh~x=eF_fuZ_@%?CN# za+0!h0^wR6xP=KW*4fJ4!$j-8K)hRM>bu;9LN~*kq|bW5%rvFrn!rp5VY;&gVQ`vb z@tAcY0>gV@)Zm?Rwk2$bGFT)2NAsAm3ESN1AMG`!uiIWdwW9csoi%Aa9~xgc{^-uaDA@Y zuv|MJ!6JEgRQZQ{Ay_Gt<-K64C(+U2|~HpUBUgsV%9k zJkwUve5Q6^TiY3V2`tqjedo^g@t*rmfX^K9TroV&@%D%Kgu=zuz;!P~r43Zc1}9Z} zReO^`{akxNJ{7u-vxWH~}UN zk^cU3e0}GLedY%E_{{NnM=bXB2CO^`lT|Kz_qw=*8W?Vb3DBv|P{3;OnkASJDr0VDqThS4FJCTC}+%phmwAV}Kx~^u_>YWzhu@u?yaHsFBwjJ01#7kBmUUS$c z1xmeS2^(s@w<>56LbA}w@VKW|DF=l|ykuv?ho4%xwFobI$woea3Ii>|7B7G>{DT!H z7I_7?J;ZxLG@%4IfdzS#LELdH^l&!l;ou6U0`Blo7vA3Ts0uH3pjm@xhcg`*k-&L^ zw0J4*W^7hpcQFFlswuD;M`_e}@0Y7VR??QOFf4HQ?p;XDQ77iOsI$Gf&5%W0dXCZ^ zldCq~l^3USiIm`j(~UW#`apTV?YjE|_67H=9Ks$B;x-o$ zouNMSvOnuMNO&z=+?J7^oSK!EBvI26xf~8t%|8Pv-sT-}>xbEN(g#6?s!l6@9NjTG@>HQI+5sR=#x01l4()_=)qAT}ZcK=Z zQcYZRmpjN4?dK95YMAe01IIrx#TfRG3@V~jU=`rS<&|})AFM#XNwn_ti-t95IGznG z=4OOjz3~8QR+Q@HcX^9`Ui9%PxcSE*>*FXDAg2nAa(RMTmlz7gaAH5)R|K!%Z1*I< zI@0@J#)Tx|l5({RJg%n4_wiAJkC5}QWot%G5}gZhY4TDQc@=rhR_p`Cte{O_P8Y55 zNGq2^3JN(by3?A@9)T_`+_XuOE=|TQGwCoOH_3PI`ypi^BZQGvzaIUH7rR!dK7<@o ze+brg!gWfNR|=LGf>T^VGc^BXjs1PiNv-pcWN&gLhO)l!go=B7_U8966p5qHXRPvI zVscfLC*&pLDTsJHAn^lCM`6zxN8i@%@8S7BZ1t}_N{D^JwD}1Pp=FplQCSH$^T5zi z264F>2RzhUo(;?C;LCYB#*jCwaTe^9=D{xN#tZdV>ieLD1?(hSj3lfauuw~SwtKtwW%!VhLgHQ5X$@c zaDFo_T#nP3-{Tj#^~+^E_kGMxd3PTWwhPYsR#%t7iM3t(>Pzx_8o5XstoSr>G+Wr7 zye7Zk(?abwj0r-&6CWuPPLk0M7absNz1t^)LYh+DUu6=r&0 zTKh%0915jecu=bB;eqx}#ctI-QV!sQQhk)_*oyUVtKNCLbET!8*`nK39&ouKoL}NY z*N`rQX)=)T%kD$0JSP%CuKI*{%i7Q3yclF+fTmD%dKRcia3USU0gLt=jXCWrl1)#) zGhIq~7PvV7IIpLttgpTVWZyo_>ZPksNHt3DNSMxGb-XlD6HKS0LC}%b$sj^C?__z-1MJwiL!cz z#L=CdFH!&fL1qteV%6C>^mK5PGqk@M+?o`*jCnA)?ddR$=qw6SYpBo4PLfJ#+W|)H zd@;Y(u;ueQ6Hh(LepMg6fqS7Kb%wHLcz!Qi9PRW`YEFtIEB+&=l%y=Y7mlWr{_|Td zh_xn=+Al)Oe~h1K>0oJUIo)!mrLX0D%Mi=Ijkhls-gB4zV`*Hg)#EMGQ@Oy9&eW?nM z#{{X5$85yZe)U~~a8UIcURLNAWv#zb1=k7~TKU1HY}Q=P!+w6Rio2(fPIRM}u#t=X zC}|H8Ws3u^UG=}_+u|R9R3Fo1A6Nqpf8}?3)V?}swEuyEzeX>f-|B-S31ZGI`x_>} zyaqG>DDy&Z3>F$b0}kS12z~$>)af^WQ)Ks zUy|zqZ!z0^cR|4?7xorofRIZuy1G=g1_X|OTY~UtFkbUGG#IorHd(oJDNcx&*$vsQ zJN$61-NT0>h(VoSk_9Jbv+JBa+WYZN&RK8@1#@)}JCoy}**adaHz+xXc-Yg=9Q$x@SQZDfb5ssG)qA^ZDeeFkKcNt^{Fg4`t)V@}3 zi+PaWV%FROhmKNQ{>{ZN*Dw zr=p9TpTS?}3EtQ&kaTfrD`2O#p<<(Yvt=Krh4j z>b}-)Fr;wvLVkB&ncBN)*odBXYIHJ0v2iv6x~CYy3vcjNU=UT0$Z=ie(FxY?L!cIf z4lAZA&xM}h^A=)&+C3{tnv#^dF(n5S$D6y)uo;gWnb1{+OR~AKis%o=x5m!r0g^@iGg}Vguhi zA$9|E`2!86<0YUp%&0sWJ26pTpvqEpWd586;Vk^L7N4 z&B|PCsD&nekHGZ!Q#ld9CZ5`umBm zEG&8;CngGO7O0~v{N~TFc=e?j>ZGFDg8dY6p&)j5(cN)xr!lIXl~k0!pM?IcapErU zmDEWj`B*q1S=Q+5cb$p-ofERC$2+5*vU0u=y6RgL??x;kN2k6^^>DcbDNo1gdR_;I zP48RV%(GrR71br}uohlpH{6xyJ^k=A6fd`{NI{)luQf#9R#xIPO4^J273zd5l>Yr4K#~9j6Rrv6c8?KahtB=Mz&r3sf)u;GCI(pewu%eYnb?*TKTASRQ z0Yo^3&~#(n`_;uhAks)Gko%sw%4s0{^i>O{=qmux9f{ogbK;!?NqO zsMK^L$ZxFZQa*UY%|N^Z3n#L^8%5Bpuv*7}iY)43qyg}SRMo{uG`Mm5F;j*$*H@q| zQpzLS5-cym2~Hk@!l9OdJDrFJLmZD8gWZ(!04ED9Le!$7K-@$T2d%lU9W|wm6{Wcb zct-=n;AvlcG3(Tp?(UOxXSvNRgsnh?VUwrIA!gk_12y755o6xu9jM{YN)J!VMKK~I zS(oh4Qru-#cZj#r$Cq(vu22_o8@+Ir7Z?uc+Khw@nhS z>KfWKE7apimj5R4d4bsv%hbP)x3(Uc^5U3VS;?#$3yx&%-8A$s0<*?I_1p2*%f6ZN z@5kJRYG&mwK9Y4{llXms*^5B+#dzz{Z>F3$?k0YJRw%ysVAHP40<)GN^?UKwfByZH zOUK=Ys%9-*a0Ipzhaw;Gg|;h>U;3c<{V`lgn)LcAOS6}TGhUlL%qn@II*}uk-UQ~3 z>ODPT`KjaSNDmpWz~0Q6zykC^y6XW!z;&Rsqk}F8F+s!y`4VIGB<~A2^PQFg)0vSr z`12V$NzjaQSR{OvbODzMBGYh>EhE9Ak1?l$aTQ1|vdyqIV5s;{AkPU^fm=})XP)g8 zhCZlkYAmr!cYe>?>@SAS6NeIzf(& z?MjfGs^Ch##37u4y3~A{8rhCxPJoqMu?Ci$HWi6gS3M`@sEt)KXWL=$`DrXUjggPg zn4|XH#LDF5HiaYsxw9Ith_8Cb4O!SvNN`9$Lj&cuSNgpUbV_ zM64~|axP*R_#}4pyC(yk-w$=Rjl#AXfJ+fkURINRXmprbO_)S+ddC+pjUcs)`46{_ zyoh-72m-|n$*jJD50u)8L3c-jd-;mUm1RKEOXhQ(u1DNQX!*31bj?*ihB&oZZl!ue z5>zRKB2I_&8}6bRdz6RqoLco~06;%_W1X>jUqnTl+e?L^tYCBMO0_4L)3FO+bVwkZ z4EJwzbl(FPml$W)0kBi5%8bBr%ns~;QW}F|%r+XcNi(LiGPV{ z&xHrC@laaIhQ*JQL=QJa_&FyG80323%*Y72MF5n4IDC->tmH;tX+AB>&ktM%+GU3h zdaQoqjuws|*89r1T7VAk&6J=(y{rL#7*cJ&{@wV?eCxdVf0}1uhJ?Hvoo`^BzO=M- z31w=KzVFJ43SPr?&IM<@j%P`wD@YQuPZR@VqEa8o#Uuw^G&vmwU5^I_-tN!Q!8h0g z)3&dOBw-IZFxVB?sZ<@DEM2}pcu1UA_=%+FBO@a=tju}pCabYR=NenC^m!^upoiCZ zCsV)@(b_z_>GLYApkW}AiIdHc77yU)=;1w!>F0& z1T=@%kHl)D$Zh#u78AH=c3)yrl5#gp9eG^3B9SVgqZHXnC__p6DLQhTg|ERXr`G@q zwu&o`E4}Fe?XDeP(e3HTCLhKh!s3 zk+*&Ym-ooW*;%H}DHe3jpIJBC;gwe$#?LU{xR9@tF2hkiH7wu{>ga%U^*K%C^~m{6 z*S%}kayq{LHj9g)vj{hwR~^__p|T5wBl9kB2yyt2V`YWDn#9z)r+aH^s=dQ~Hd}Fe z0XJ)F5W~N7#F8eDaDYuBM%}O|smQQj9Wa06Qj1rSZZ(52Y$08vv145#Hp`&ImqsdK zDGREX1Y${c5OoyQ=s=*f^bo-Z%R>mE96^Co7JA@#Ah*p6W@wsAOw>-TOYAuTJSJoN z4pFr~q=4;zi`9^*@V4Dt<+FrrnuhwEFPqsMkf(NLL*sQKG;+td5pP3K1SRB$u>uiI zPks2v1<9@3fmx|)+CRaj&?bh(6XO$iqij|RRl}NV!1h7#{@w;gQ9_TJoPONe5ze(| zPx?GPVa~^YoHy^(n69&p{5Qq|kZn=LE|fF$xd7N}gW#Qz&}$V8GK*(<)k#E)z~7^g z)?{*^=d-WZ1_tSC>-DtckJ29(09F7Qm_1cNM7^280Sb?=KPN%~z36jTQuTRg=`1Kv zeA|iW`^Qi7@~UW!+3qQRewBJOtGRv)c9$QuY$BFftD^uaxP)An=S8QjWQhHqQ(LB($kf_zG$d*coRl z0I^l>_yK1oaKiLVOuuV1V!)wOh1S#Y7K&{R7%{M&4W{q&yopUe+%fjslYz)swXPNQ zyX0=`dFj=j?wRc@e0+951p7iHngc;B!ggZ)XSw{YcSV$aiH)GJTSFnAfr;(AsCVQ= zbej*uknLV|Yd28S77}7CjQ*Z+$gmTz01QJ;0fS8ZiSw+yG(rfTim z`$gxXOJW4vrcInaH~kP}fPY!65@ou3x)UB&@=9H#_EDcG8rh$vI|MP#LTebwuwsz| z%C_*BDk6*d-RT_LrW8fUZTjGz4z+Xu+VX}WTJryW@bxquUY3WKNlcw=FwIU#k>#BtP$XEr)%?8y0#}h{5*bwGpqQSl5lE7$W zp$N^+@TB!HS3L{OkEthXJw=%?G0hk4)B3^sFbB&6MS@DPM1}xxnFoLqN<|9cZvTf6 zNIg{O=`YXB9yi^oiC4#Q9Q(Nu>asoIrXYx|d1eO=C0kjP&pa6vlx3P6&G!d-iA<8u zR6#^)uHQny#Gkw%ex$=-n$39~f_{;2jIKb5^hK60FpE=R1Gnd1(s{KZr!|9JPvZqJ{CtYjsfIJI!Fp!t5;H$=IOIL z&=uY+&dDpfN4q74#2sH8dVItCxo>pxk7Lhmt*-IrWC;m^iaU@9&#UfGkJeOaQhYXk zh%(9+pW3!gtzaB2vKv7|w056Yr9Lx03jTF+pV=OU15LvzkVpgs2cd4iH%-M~;6`7Tne{+)lP< z@Y9yQ-gY{p6WXDVjM)BIp=&!;Vm%k*ykn4BwBBsP+mNi>7ZIEgT2UAsKr~X?JCTl( z7p)ol(^JOeYFzqm;_)l87Q1~hIS|^;g)4iN{P> zC{iuDOwGFSIa6rGmeY9OLFMI*RxDqNCWz+bQ_C$R0ttWkpHnY>B7Has&&!;pWk}s$ zbn@h{PnykGe6eIh?_#sW4JB_(yXd^CcQUK+NlEOe^hrJFpF9q0CbO}~sx-PJR)l@@ zXg00H z23O*6?0dO!lo71@@9gB$0ShOIMuon%jpt1Fxc))=cOl=X)R zlBhZ32xz^5*J<%h^t3T(@Kt{Sj1vTm4__LSIGn`ebYen1<0zP$7hy?G9zpax!L|s) zcb>3B`f)89w-9tb8^e3FzJ#pIF!M150+>bHn=-^)iflu2YmrPMWHhoXn8W-YrNjq_ zjl0y<>97@`gB}8(yx4<6_^eTG>cZ{E1!Si3F%;&wzN<&2g>&~PtU$M(46JWhUWZT& z;@i$Vvo2sepcber^vu#{>)@cr5_@HqeF5Fr!ZV+DcqVG(Jw|3q=>5QIoUd?$nV?n? zlks62nnLHI!nlf5C6&fyJO^1#G~_Gcw7n-InV+aU-$0sun>98*mN`Lgda{VwuwIBY zd3Hu4VqQ&6xKFjlmXty}h5fTOXE0|8`d2cT?^xSO0a>&~Im1|1jmy3blB%xP9ypi?-{rUKe`IHc5oU z@(}X3xjIuZl$aUZJ&0@sP_%<>mr(NQk_$I8&DGpiuk%w=l!%5Urepp( ztB@@FtQv8U3PqKIdxK=|#u6d*DNT_ELVaQ5O&R6R=n;|9o%CaG7&aBBMdAv2f!g-n z*tCvuA3VGRu7xOUbw_D|zVa)jtHC}03ETOmQ&c8SyqEJX>^`x{$LpDGo_(vPI>nw= z)52GSr{!O(*InZ>xpb%bT`g9#!3`QF?K!CUo^3(KAru`i0S?ip@%2A&9{h3kKdLE) zU;N@L3s?WMe+-Wam;V!gS@`XL_74D;Muz;D1Ah@bA}EMTJHwJ=Px|8@5Nb9qCJ1JG z1ac`gqu=*JAA#*bJRVsbvC#rrB}J9pAbhE`crKsE3@gTYEK6pFJW~`yp#x0Y1%990 zXl;x(7BRa=LTlIaQFBlU)!KEZvk+_IXfH#y6(@J+ZBXCAidO!ct_pPM+wUHp0(Kk zAJEQeV=Fgj*dDgFT-Cfcn_JiQAz7P#*Bf+8^>xcA>Rw+P*f1-|0jt1jb=L|JutaGK zs4sICygvJDw$Ap4Q+Nr>h?HV?Dw4n`5 zGq~yU;H_hO!u~jITiE(7*nc$zISf2$1c}$bhTVmrw#Gv{NWv~5a2(Mab3ZW;lhMmb zSE=M{QX-W#b0AP*pnRB~J%?x3whjZJo!0Cvi^eDyiMErE4n4I5oHr=Ruh0Usiq*4bu zy{3PeO>(3(;b;gFHxAL>>DOOhb>AXhW_6OEGM1g?;50|TlEGW=6(LWVT#3}II`^KwKvzTz znG6ES1iuh@4k;i*6OXQ)7o9Sw11#nT+PUG49@>4Oqp0h`Z5;xJs3*w1)#jXI2h`XN zekCaIrQteq*j=$Fw-hN1Sag8)1|>4b5zF4wQW-^Z{y_Mvz(PLCWM=p~XaK$hAKZ@g zR+_$l=CL;i2r=tE0<`E=KDG(hFGohVB%kV5f~6rM8x%mF)iWjMIRDko`9>7Q;+$1KzObBo z`T)aIh9O8NL=P2WA|S_*5X-Ty@g&jmg&B85%d|6%x9s|eNEA1|D|qy%Z@WM!G@JoW zLjHWm)Buz>kpDXzg;z-#WK0cvEQkLJDOkuz~!|b15cBHFZEA_0rs~^xmgw{X#zu3_J@8lwQV+)Jp8MzIcHEx2q89c(4 zR`Ok%mCY8yb3Ni3rbu~EfWvKxUPg0A8;x08d^nRa+47H(3uMCr6q$ugHQ`t{l#E=g-SfNiufBli=2qBPX6P7uxe9qsEKR z%ZB+wqLqtS1{)$hbBW~{ZS9@8&EG1XTUsVru$vB!SZ&>EMa-6#o6(l+U(ZFV5-a^r zYtD`kMVgxjt!Vg=YBw_y3G~0-u>1_N3M39FNdW2~jCvV4o>&@9n~ZZSA5Ixy(Ni>n zl}TV5F%qXR6m|3?!5KV@G7GT#V9#xy;k;-{{viC0PjXcf<)!5zypJ-xlrm6lkHhM< zH5zX(D2{nm+{W9A8vB~?JJlNen0aw;hv)R%?z&LL9De{p>eDNDZ|A11sY2lk5xt zaE>!uRM2!AMJ14iQK_v&wj$fMuL%IuQ|Vs@GUBEcM%R7NEtJ&cMc=8B1gEysSmSu~ z$3I0FS3*q86dD@D@P<3vo{lS5JAsn#OsDM#T#zqS?8=8{Vs^lVM$WP&%wIb(+lcUw zoPXU|)7Cl6*s;)c&cvG^PpI_qIr5@V>x~B}<95NL-w%AmmK33>s9?T41-5AaY0pAP z4Yfu*xzKYPGL<>CwZKz!m5bF7UHc*FG=02)tlvVd`TDE0#XPhqltEbpPw$0~RahDJ zv3VQ|@GxeOcz_f&{HG*G_-d1t>3d19t)icr4m0fndijCamTQYW2-g5E_ADLwtEeN@*Qf zDWuxNCw-&6s3Jo7@|`0T_3tD*7!f_%7V~qMir8yrujk(E%uKm?S)84fIMyjwdK9)j zb5e=lb~-3MO1>$2?fTqt4|hga%KqvYHGVeqSI5xtv$DT9E*n1+TRScsKil}BC6|bzy*s?nUvzmSC zK)H2so5fcex1p&{2k|p`Y*`mlM$^_wW|UvAy^TZ>ME8@V;; z_2(9gHjP`EwWBrnTpG35*6Gg@)x_Ci!JLwwri?-zTDcn&EllSZI{4l8Jd_ETh=Zx zyT4EECbu4KvpA%26WcredC8G1uh_ERjt@OBcGqtOX6N^*|0CY|{T7So@3@ISbbKE_ zdnEk#S)}Df ztQUY^h*fO-J+0K`xYpp)&S68};PYVA@fpkH6~>gr2w9n<_R<~Nvsh2X)j0yU{CroK zirez0nWcma5&ITJ3kOkY;e?Iz4iOf9P*jGCe1CWl1<0Y!xh+AdjpR7m<74C#FN06= z)2^=h$y8MN&F z<>V|{odOqt2&p7C@OjbxSWs6;JbXSI;XKY=hTDfb$%!&T5&{Z4&)BhO1Nj7_{26vn zrAQO~Wc=6kD4lxET8lr;{M}6Rx!CLZhx)r^4gpx%D0?9JBi1SY*mi$rYuk$h4}O?; z<^VGC%`f);^7oQ?ks%QyA!i)hr0Ko;xR;@GGd zAux;bil<|1N9+qoX^XCJLgpxG0TPNIe^_l`*-vNcD_NxpLK49RR)j}((N~Xc8s^M! zFN9}vbye9}TIB=~PnmTOJL4>g3oA$Z0#%@j^TReh#m6m9mSxB9+$C^ac*Nr5Kda?Y zWdho~=QQdeM{W6j1=f^FuQ&MR->eOwbUZ3k422`#@nxIt^GN_^u+^_s#1{bPo$VWt#82pJ<6msSO8pQ53&L*sx@}dClRA3%DdK#8qENzwZ4ur zzvf2(?JTLlcH4^=mJRT2kol&{31|oiVhe-vulr&_3Wi0n!7*GVH+8js^|0jwVSKUu z+VLF{a`P{Vt1eyiz;y?zOx#$1y{;jMcVEmA@tF}>u&*n+*1xJ|wp>S1UO%bM@RHU- zJ>*g*2&5$wpM-9Hae9O=5JFjR*oqcO;%xmWfEN}cIM4h=ES+#Y3J!$X$j4T=%~vVY z4@q))0LM~)buF@O9t2~m=Xl(w+mvx z-jF~RRZ=>(Gz04~R7eaeg=>qZz-`^CxC3#C$g5f5zsu%|3OQD^w~9Oy2{3+{Sh%7! z*LoIS#fC4q1DYG%vyyi$)6^xUrh-$hkVEC6JiXo1_$gJz?7+sH>2Yt-+-}&mc@tM~ zkgY&m_1fw+EEIO^(+fC&O72$`ADECJ2}yV1j@N0wxHUAYg)k2?8bvm>^(+fC&O7 z2$&#Xg24Z=5Xj0?sxN5S*if$7Zz0TTpF5HLZ& z1OXESOb{?Zzytvk1WXVxLBIq769h~UFhRfs0TTpF5HLZ&1OXESOb{?Zzytvk1WXVx zLBIq769oQ$3xW6yx#Ayno(eV4_bXn%HQdrSGO6z!i+_*b_kHf!;j-Z=2a!*3lfOGS zT4nW*8Zv!nf`ADECJ2}yV1j@N0wxHUAYg)k2?8bvm>^(+fC&O72$`ADECJ2}y zV1j@N0wxHUAYg)k2?8bvm>^(+fC&Qs+d-hO8Jnb3>W!N*{muBIRtB=~TwZed&iqk| zxp=SRpWpeU+1>1*!$F6kzkA!?v}3wpf`ADECJ2}yV1j@N0wxHUAYg)k2?8bvm>^(+ zfC&O72$`ADECJ2}yV1j@N0wxHUAYg)k2?8bvm>^(+fC&Qs`$3@TbV#K1#pw}# zcZ9zgVAGnVQ`p5VlWtB=x@ng+6t!!aqt)?H*JG|zvrH8Z{sv&C3nmDdAYg)k2?8bv zm>^(+fC&O72$`ADECJ2}yV1j@N0wxHUAYg)k2?8bvm>^(+fC&O72$`ADE zCJ6kW1ObcbqSZEGD%HwG+OU0#wC1`}^F>4g=S*^Ctx476>Qe0Q( z;^HhUK3iJqqN}Z~(`j{*Iv2s!TA{zQ;B0B}S!bch-=(fpOxTV96T zoUT&^+JeW2ALoA3p4%~SIPY=0rt4Jyz(C(naewPTao(4$xp`efLqmt}wHn$Dhrcd9 z_T}N6p4?AP-8PllRW@sE2MKmW`9EvClt>d9~J zrek^z#^2q2_ilIJP~YA5CVUR}<@etmFtj%rnhb{a;-16(t$n9Dio4oz-eeeVZ|XMS zx471C=)2pe>DTlZKW=Yt>MQO))zQ?~KG2R9PW9*FxVXQsy=j1cWuR~SyYZ`b+&PT9 ziXYz{p!2>y?ryq{yB-^ieWZCQ?r6H(e%Lre-G*-TwQpePu(se>b8*qVyWKl?jLA1H03^SZMv%|=s)~r`_QRo!*J6ut`GOMpK3mp^9kl4zvx(h_i%APrlGh; zQ>5)0()1K}-M!n?ed=E8sk~2G+w+U=X}X3m3y*VinsdL*zlW#wXdXAU=l17nKWWXs zSDcgA%)@`umhV?hwluyxJdPULEEnvywS3Q`%B$^?+ZEZmJhIPJvzW*&R|M)n6r6NHgi<8CsN#Z54IJrzB_g6|~ zGU>7esh=!CzRWLP?!Ro=vbd#w{u2MVz=Zf^ad83he#)iFfH+BDT>R36fWQR2e0}{C zeu_A`Bwi**|BO8}e*TyHOKsCDK;auepY$BG9uTl}X@GQ@bg9G_pMg?^bg9f=;_L70 z?=MLRh?DwBm68PXn63m$d;|RPTU?X+OP5OJ_?IA)NPMLU_?53zB9ov6r8J&hkxG1J z^ecb*RvJLx`kj2OO#xGMW#nS@hGG9r&G(N%4Pq8#1 zPHqH0`0q?vAa!eY5~i6Lv*KZR!`C5DHIpX*S;Ji`p1&$P)^~4Vv)c@GcFQlTZ^K z-XCRmr!P-PeVb(Q-Hu)HyZ&2VinKS<;#(71Ti!_MOi5^IZ)q{4zmd|~*4ZB4zDLo% zC#kc2S9{u?mb9eSggu6omN#1Vq_?%VwY0>iC#1C`rSIAG#-3eiZ|pJPwaXCSnUdD3 zV10`>_R#nXN`L=D+S@MLC5c6$??v5dj zj@vx8%_=mPCu}>N?SHy(^=Z|t)vKlctG6XMhRmAfSh#K0fo%u2S*~_Zi108EZhptT z*eIv}7eDLH>Lij9NnLTVP;gbG6J4$Kt#i>yv?W5V(EqCM)mkkMw6(>hI;}+FU+U*y zcUGjUlZbS_{(cfVK3nU177h3d{QU)2i|hRAN{WS7OZ|!k#vU3!|LYy~=U>h)0%tlz z(-O4m>?|m$D{&DPJ3E)Uh$N*Yr9xq`uvqI1y~Mv%D{>ZIMc<3H#ae-|xCG~=B_dI& zvrtgtEAkg5TL>GQhs43&p%6(@W&HFPO_GIUnU#NGSjQsREKCr-6TrOXg3)6-Ma#VPxf6IUt} z=_;T33UMNo-T4Zrx+`)+M=KT2Eo!R5Q|{z=Y3#EO9j&C^)YIFId)F#03JN;9a6&z~ zUN4qN0$uYZfqGe>!}SK=x_}1%Gu1Qed@LqSJ1?xD-+r6LjlfV;R9&e*r%x)%->*JZ zTcGaiq7Q1OequBEdf%H9TG{!!$ATX{tRx&tX9Swo#)qeS9x>ZE=)-7n#KlwV)w_%8u6$(flF^k=8A;@rI)ea>$xE%I*b^+kC- zMFl)`&ldIcpl|953+hgt&Q}(Md#?pZr49{2QfYp`GF?DpAljHCsH)WI_}eRQ>(yna z43$}iocDakF2QD&MQjShz@> z5SN&wRNw(BdQ?g(o&f18U8r46_oy=q%c)&In=rYj`xld8BWck#E~zFjDlAlG;)sl; zoYe)V?iS9@-Ewl)t0%vhVU6RWu&G*`_8rb5QK)dI^En(wIlG3sx>!FJg$hDrN@84h z2t$iSLhEy}b3*%~qe@C`toutvuI-OY&&JNNv3A}5&?WStOYWo6*cd^n*(8hU_8UgF zY#7-ZJTy2w8oQxAcy#!O;Fdcry#pD+8%Bah2HWoAYHV=l@bJJOj%I_A?`t|OT^BiW z1Q=sx_M^wTZ?>+ojCVZU77=pEe5=Gt@}uvIm>DLjW>eOThDat~82H@}dXX+9%t zxy@t_BI{Mk6gGPdqyR4&k^f_%mcek}mA$2&Dh64YoCThHVT6_voZ~!I^kD=oH*uFs zIgk^e_r=Hkq*d{+QL?N{zs{)%-q zWq(qVm@tc2fV{?#=QSWyAqUYkLXPF6g4R2gyU8S>PW6s0^PF*OAYGbt%8BVEPd1dxm6sfj5(=xY@A6)De? zlc-HainpD;VvPPbqRocC)20syFF8?_9G4;A19ImZ6f-7pK*c_3Viy~pd*|6IYBXI{ zInSPf-6thct7k0Jl?nS*xN*zcwOhqu>%+s>uJI8kfVt0C1%YWWLg)GVvaH36PnrpT zou0nf`QqZa>5JUH0ImTq5^X*P)&X<1bYUX8z0L`W^f#HD7!wh<4A1O_?P?5mQy?Vl z6(^qMrPv>?HfV^OMP49&cv#ngIr&J5AQ1-Iff|#0sS%Q686}R3xRQrV(NgIdVYf z7|4pGg?p?oTXTrq`poXIm&Qj^Z6Hke^b|CQE_FVjPSAe7YxBIPRffDxYt|_~u&)Wf zb2)dz;k6aj8vAE?;cM2BEF$^7>G0YqC%nD7@@j0~-Lz)GrRiCRtgO8eCkhB75X zoTgNAl18jZRPltMRQUM#KtS=Q#4bFOHyxig&yZ((_}Mf2H9m%9Mp)1rEMNJ_OPr9H zlBnAAHv=UMmvOA?FLOQJ!$daap6<)#S3J%4U6ISP%L_}*r@Ffrsuroug_-czEm9K` zbMy6K|ImR~zW>*sz9#dMa3+MKJTo)f{8)j0pBn#;^#H|Z;HpuOQA=yLy|!}eYvPrw zSFhdj+WJlFs6XC&_PlR>d>YupruPneS%7UQIO-;as=;#Y)~%bjiop}&D?h(w;*<>qnIK1g?7W#+bc?gr;+;0R_HR-IftZLXPLW+D8b z1elfSN=`&@qkI)j?e;P}J8aLWzk;bR52j_#CB0>C(A<>N_{5ClxU{)mbK{cJk`goa zD{xsNk$BC0Gf|PTXKs+6*W5kI#NB%`*kM}YL1mI^Zcq&U#MetA+3_1ZA;c@M#@qIe z@`|D+4C8z6)Lk9-A9!6gchThqiyYn;U%ou=J$Hu-^FFvFUP!XwRmnFOE#HLm_3FdH zCnKG~OjG!t)Px^+UEtpN+}QqDSJAoL6YYZS#gC$e+R&FLS!{kI^Gc~FCu!q6ZLWIK zxYuXSO;@V+C!w2jlavV=bJ4FAHP5P3FasnnrhJa6oJVg8jdwC*#j3WWh z=4y16dDX}M2q*61{K|`7j7{bHaiU8%8{OSmzhG{pH1gAs1sC1xB2F*pgOxN&cl-v#H9q5Os_x`zs*`-659}_3=D(Jl(|*?* zbl3C?AJw~_o(&Ka@j~Hof5)tBXnuSW z$YkT%jp&g7GR_}9rm6mAvd~5@x*{j~2MTfyd76+MGjfK6_x0KJ=h-H(bZ*J=fE|9I&{bdh;E^d_GICE0(6d=(DIt8r=0`LP~ zj3h{Z+$#AoC&WYc&8nm8fJobb^iYU7L32K)-__b#J8;&RgOu8S~GqW+6y1K%@)B(#&_3YxMs>^d1U8%TmanYHXQt1jJ zW@pY`tj)Qn&$~cY+2OprqUIiT_XW}_)Wxudn{IdX=uh1xSx462RXqUn;Yl7WJJo;& zAo0#n%kW62p|`J-7y$>6S^cFkLhIP#fmm&{bBvao%XhWqHif`B9uwY5h|7qBHk<@h zC2kIN3f!1Co@r!Tg2_6fiQntFm&B6RQ|>7$&xD8)65eV(Z3;nM(Bp}fs?Dc+evdVV4;%Q!Y0Hw2A4ejQuI9 zG$=6azJp@A?;y=vATI|`+U#YKzrRd#ch8Pljd|qf%4jl!{S@qVe@CY#c6xi|!{{Bw zF@0xZqaF#iN0mH^6bOX_&J@!N)t(&yTM!7NOCAZW*|id~RbT48^Q2{<<)h)2hi%<3 zQ9o*FZ+|i{GSoRRs@Rng{IGZAVasS+H*`b937>S1#BSLTn`Q{!(7rYJ=?IuVe?qF_ zNBIXLoJJg9%y+skJ>qzJ z>sN>5mh{R0KW!E-gAV-*Uy!EyS&m|=$)GQH&HlA8@dL8oxT&A|Mbb+hwN2GY?<<}I1?3&_>g zT%<2h?@A^&&@C+?l;&D<5$EJGFsBeRGKYQvhm!1Jnf?@sDs10{e(S9vE!fG5rd`3K zi}x#H4iAhM=KCy55aTL`P`(ElQmpW|c6Tq$hIlexFPD2Rw~?D)R?&Gmqg6L1gqW8j zZ>2!k?-HvO2}7MlG5yg3k+thi=jaj0zwtv&WC;25;zV4<7Dp>FXP8 z9 zx9mMV60t5)N{)dT0JXbir2Ap#L(oKtkrHEzA($VDtRbKU)-LBDKrNQo1wS7g7!4k2 zdD;oGg2Slw38J%|y#(u3zYYe~wcV!^BCb8VPJ77Koq=6xX}0RYSF4Yn2|3NoOv{J-QuF=f!v%9 zO^@bSbKiib00H$cyH6E;JFBjFxNM+`|%LylZZ zx`cDf1Vh`ABOw~gOB#=FLNrOXmn;`7uuVW{!?LZ)>(Y@BkE6C$?|Ce+f-y05{z`RI zR(??rbBTn82uarCx`Rl>8;f@u=|+5*=mf7A5f;l zJtby#5gaD3lYO+``<0A?i5yWL6ubSCc7h`!xC=W~QyPNDu)(s9@P+eTrALGSeGXU>u2{y8A=9C+@r(E$Bbdig zLcDrp>!BZU?W>3fN9a3zhTxMB>uOsI(A9tk2R|Kr!d#mi>F=$j=gf6%a~zRI!0k<3 z9h66(r_EX%;o1C}G4)la85{o_;=b;?j59sp4XL~8D|LY4s1G3at_zY$uGi5a&!(6E zoK0WLX=W-~mVtDTF$G}UYfrdbT*>Judb*6rz%kwJylRRJs84;_oTD!&Vo{9Z=G*L= z;odc)yMOrSto;fMJ_}}9c_-O#w5;$>uJP8S*xCW(fM%SbdGsYFB8;B;TzXh@PY2;> z_up-gx!x#{?G-`!ygFsB^DGSWC-+TQri#<3h?G~t`U_(=#1(jBJn4`~_t+ta(4Q+-F#^up zJ|H+K zdR|Sq5A@?_wo^9MB>5O>Y}fG0DLI5we0bjV4d>dSspohX^UA;*5O+X124C?WM9mU; zoOmTGv$Q;{+_Mmtl8xB~_*Km>)0>vw)b!R&Z-~EW!@htm73Xg57gmT{csQt6vfxQO zWEqsmTwb(^$ZDgZ(3uh2Cwjy^IdhPrg)I8n#!DnnHJeU;_G~#vg_ltX zS+bBuTDtN8b2;#aTwI2D53_O8$mKp3M)P0D@F>u;9PVL zS2C5~I8Bctoe>X$dw?0)KS5NQxYX$gN5ShmrV{p!b`H0Ub_RF1508-4nV_4Di-A_? zPxnbZ*}FwzwTgtmA*Mi4$jT`J+EI(+0VaYtWyz?6UE!bA`Ec-Q@4y|V{7@^({I<4; z1CDK$bD?%!Z#zA59h%jc-N2FynU1wB+bAf=yR-CqK*Lgp1_{WU*Z=D!@PO9_*4L3{ zKe%A5G0BUzw$suxFGg5UjU*I{<(ONHHIuKC1?q#AHP*{yuK5A*pEuU)Adk4lkVF~8 zObdU9WkGr}9P$xJ;&jedbe08t&3eBw=L5gy?qx%jD~%fXm@B2-b-Pv+8Y4K5NwBew z7P`3d#PgjUZ;Uap!rtnIGrp4I}yelgzW!5_{k8D3runD?(DtOO{xI(rjxW>^5Nj#@7yv~p5|KkDOZE5 z5<>olnafFuDSLSgPe@Nq7BiIRLsJ0)%5wGm7>*poaQAuMWcjD$@^K3z2bPX^^H6IA zlOOJ2My`kjUq!B=F)(=9z(R{-b|MA?qoYF^J9ow_Qdj^dJ|iV1C2eQRQ18wS zBlwSQf9M;r;8V-q-mQ3_dnja`)q8*VVWztZ;UBZ#%`8``RN3xky}hd(L!2z<)_ppE z=7ETjkWc4d{CNIW$*1#MTITmggdBYl(q_D3hG5Z#kzc>qF!Jwce1^>#IOERb+Mj9P z*%ABl8Eeqm=qx04y(HhCo&-t#u~)SwFA2#D4Y`#)w5?f3a~|9u`FcsCt|34M1om6E zfHXG*9gWn9c8`IYOQPqv&Vj$M?Bg)z3e7ke|5k=l1^ya;ViQ_?02PGsrVBY;7tp4C zeO5V+!m*jKa!r)k)!X*K?v=(9*=)`dU9CC-?x}oDQrz zipMVRZXr7d54Dfg#>N!KK=Xx*O9;rQZAweCR~OpA(Oov=nv}X58Vz9Nkpy{IW9w~z ze;1GZ^prlYdJQzey z(-SG*p*#h;K^{QxO?L-E$;~-kU5{^f6rlZ+U|Tn2fsJT?4zGy=0P?}%_Re9zVDt%L zdOJZN))|m~S7@UWdCD^j-8~EO5bspDBT~~9h^XNyM>hFrs%*WJPdwk~gGk%arrSE* zxg5&%F7ZXY@|It{Z^Kne_}&Qv+0qHd1RG0RTj$Vd3!LhB(y>{N_e!x;U&a?TYIoOHE%39MJ7s?V7l*%m_P3NW?(38Yc) z-~fYsOkY3RU2>riF@RZ_1SGfQR5*20)6uN*X?3-CatgT_K~wd&^_4xhJ92cC1%E22 z;kv9LpixGX03U9|gNRRI-J|{G?Y&PsM@G?lSf5}=$qsFw=rJDgxkF|-BQ0TC9OeM6 z$Dep^2g-VrLMYd$zxFo>7L;M&=LlfHtIa?_E&%FlY}CV8fO`qdLDA~4>{9e~M!XWk zUm>@xPD&zwb1|IfXh;Ll61nf}c@YvpT>`^zc}TNnjSQ2=rLjPacURh|+*gN{!h!o4 zT6$?uTnb@DrFWMdqN5*%r=V-Q4|jCre2oTeugm;&E70HtDp?5BZGG}XF9ER4Wk<0K zP{cU>?4mg8nlY;ciG_#czq~@(zhI)W1dP(i)w#7c}CGkm^SZLX}rCFPw(Y++|DV; zgNq$)JLnrQ-;|;;XYv{9rhKG(@HwdLDF_2?w}T>Lqe^JL)rDbK3)NR<(R`<+Cmz_V zdx^t9#C2oIp>wvpksp(m|e!<|vi zF59&OF6Yqn^qGa3Htr&u(sEH)_G(5E>*Lc?;}r5ZRfa+-PfXjR1a7T(AK7d^$zDk( zQoQW!tHTKqn(iH|E+TMOTn~~$Tc`~T0{aVCR!@|EUJ|)LD)TtwK@%F*25Ek0aF|AA zh&|UACD_s5&!%-Vw7J!uAMY()j-h#{A;W5q@?f%RH%2$l(DkhPPI46{<4wc8j(+y2 z^E%(gx~nq%3QjMN zm?%kzprF}?0T5bI4=-+t5%2K7rk6DY1`#Zp9ZyHnEG&Qc15GbF*(ri5ZmJFy_wM3$I_o?FzwoJu|cPc3G$p}pwZ?fxSD?E)g}eB|i` z*2^F(2fqS6O1TsdNOp+K-T?!pT=hf?&qejSoSPsxKgUEeodqE`=qqJIuO}f~PT3Jk zm1=i->i#qsX#}&ceKdL1niJ2Gi35D9xloi>{g{Cck9O8eZqx?oZxX8|S^b6M^@!^c zr>($e0ljQ=VDx*qUq;3{;t=!D#TAjj?VQsHl>KgyXL+H`O-{nuAgJkCN}yfJdLx%( z!B7Ti2^HR5$=t*_RqFF}_X>(0Q}pDvUPlP+b-g|?NMEO`3%Dtf=x$NMRGprfe&L9; zEn;0n#C^+kBoaLheJytY4_kDDcVwXp(~+zr%2fH|vEGXP$!TvQNJV__7Wp>}-c`h2 z9^~faRo`nK8~IsDgP(rIvPR?32jxy}r$dNCM=l@;1UIWN`hm{p2vQ7pju3A=j(CUj zj=^Xx=J>l>8^nu=F-AjW;i0Zn#lM9RF%6mEUZwF#N_tv-hi3dJ!bTksJQ!=mRY_y5 zPS+45BN@$&6S~9$OREKE5*pZ}_x3)dgudr+8h4VQu#4{R6GitA6vsLfGySeuR2Y^` zbM6g+J^sYsvzfN{NlLM|-{_N6lLRg18Ikihw{!(0znd>~ZR^8zj|0nqiJEN1sPeK3gw^>JYR{A8?cL%t5zEsmzg> z@fE;(xU;Pj{Gh${hnBXs!6ySW_?{gCQH;+V`k@EXvZDm(a7qGC1DXi#}eWS1bDiOfWR^&#mTi`Szb&`g_c#{GT z{EZ#?1bL6do5&viIP(g@|0QyRVXl#ccEbMiDuVT=wQ#}R(^EW$SjTym6jjF7;76M0%Y|*A02KP7$Gjm^o<;NJBUHmqIsgCjjF`mDL)?&v>BhSlxnY3jO9~G z>&wYAGOF2)4IF9_F-uAfQ&OqjGv~(bM#K~eFY{H%-$|yFWQFl8AyJv6@Wol${tOlhS0<$; z?5B`_LMj5T>`Sk??7;8u{R%N#{s)u;l$6H*jt<9~f;ynY!(nV?fWJdOM{ZCiJ5{FR z_wlLm_;xHahdRTZi1`~+QgJKaFceE_mt8V`AGbdv6_ks77)n;kcuSdq_Ef3+)8)zp zD?yOCIPWtcB9Tw{Y=Lfoeo2ALo_o$mF zYR{*}HVrKf?OfFHZKxG*k8<447@l-3eTStl0Xtyj5wetc7} zZ{D}Ee6JkjI6o~tH6s-+Pyk?c4X0s7w&&=pi8vbd@DG87tV9|wsYjsjcGADziR~|D zg8Lz80tSlcYI$Zk0;)(YNrK7;)(I9)TKYVwOXRzQ)>_|nj*&FUi{qT;v9n@F$ z%8Y4GUqwWONUbDLMm#80D*MG6$f+lNqiZtOY-nFY{(v`X$8LenC3`V4f}Bj^YRn}3 z+5I0+xSy1oUGRee#2%e5-@7(~CR@dirR3nr8Fqcxxa`_(a+ROqv$f;dZQ}wK? z#_%k!%C@z-N|S_SZ`g{I0n4rI*i=FGm}TZ%7UKb1f!36gs!)nkluATuD9c+68&k}w z%q+W5+Bd7fv-FC*d{)nlebA^&%WcZ9lp^1iOEU8dqx^(yQaWdS3wkPOKF@Mb&gPy# z{F@9#!H&l+xiQhmPzZI7h1few*^Sd}$C3463-XcSwP0??k#Tf&*dEg-Xpa&+igJws zLm=hHZv3w9hb?XV9lVYd3^!BoP|L{3Q1@`lNGC%T2l8b+$&0^_K7!Ku0neRjH zVX1i{G-jLSo@@xmnkQs5#tL0?qnsa;RgpXUu0uNxN@)P86S~sc%S@2rA!CQ2t26Rt zIW(*vgJV!(zSs6>p{wQKMsmssHk^Z z`o^63!4Eq}y9e8Y;onC>&&Wg`uxs+{Tkk258t)T+f(14y+4oH@)-ri4@yl5-8TsFq zAuG*SmknuG7R1Evh~5#st$!f4FIsD#8|^9*h0eCI)((h}KFD1)ql|HDOKXI7xD>L5 z2WQSc)g8&*RPv~Qlja?$2=A&7&HVSeX@!rD?JI!7vv$jtEx%fy0-2g3S1$MS@tYLz zzS-TE4KKI8eCy@Ye!u3-l(la2iL$gOh+9F=O z&aKhNcAIzky-OFx3*Y~6(c(o8jkVW6)B;-RQF~p|NXd!$o*nN4eEFz;vjpL>-`wm&itekeS;>-ixEq$qRCNav)x2Hpqgm!Wf~BK}xU)2C2O< zP{+F=!ay8o(wYfl(iv0BK1Opw=1WI=71dRC&!3S8GO`KbUNkuEhK$^!gYl=^z{fs) z!KC3fxNk_`Z6`^qiFOw4&<+S~0Q! zsQF4yc{Z+;Unx`}%O1aAngG6B3Fo5CtCPfsCYM`n`Tp)W^P8a8tbsa|485i`{CTzA zlsn!@nvKNy-kiYsh~tUlQ#1Y_^4>bGs&88xmu>-rZYfcuQ=}xMOS(mnPLUGnQjn7F zlI{lSE-9tEyAc6_-&`BM=bYbr?mhRs?|na?`^UR-D`l@N<0)e;p}$2$ zfDdxxX)ucBUmW1S84!O>F#PijM4w@u zJ|I8>*t;ltX&O>WWg%$t_nuF7dKv}gL-2j*iK)yHZ|^Bbh-3ivi_*QXVV`|NqWz(n zu8++xhZJzaUxounDyI-F$xGyH3;hMC?Wx&$dASp!q6lJ$p-Q4CFiQaPYhHE+hYP+C z?HR)-o*2|WvlJJB(q~Zi%*GnW!deb91d<46eMV> zX~y_}hCGy3447tw6(scEl&%QFt^?{Ww$^~eZw0R88|`);#Huv|Xv5+*a2(*Sy%;K) zSt?*r05dm4-@N8*Ld?BuGzBh{WduU$X8&+1$PMF!7IU)VhJegO2>V~>;*^v@vr3iB z)gbguBz{>9v5-9m>Odv(pohPAS3+NaJ4kVQq*sGtJE+*fBP0Vh%zV0_)Yd{WDt3W+ zAn36m?0J%hMGdQX1r+6Uzz^HO63N4)2B8p$=(jOjw;`4S=FL4o?t&LgHCMrkcta{m zs;hxYaiFDjNP!=LhzbY7Dn@|l4%D|;(7ZGSob6k|89=Utye{BN_BMl@d8ZaotG)Go z+Ew7iz9IW2*7omgzE~bPmiz+)i{b3Fj9Yf^J)s{dU%96ytinzfZXl@^x?gXEz z1+1>26^Q2RKh)_9%Y%T6g?hSfC?F2U-+mFH8BL%`2#R81lyt%yHxK1~9)$t&_%K|y zt)`tztsMeOt{pLqR)hO62Ab#87lnA~ycAHl{ts2WAhzerc_F(aBa0#eqD{os#~?2l z*oy?c28Kq!Bq*~~2x`bfgi&)@yE9moW+0|tlv6Xft@Q+4p6?wINr41_>*gaKL1uR_1 zD^zgR0ftBsJ`q&NndkxfI5b0f?sW%@QmEuUj0B&U4TnF3wSu{-8boe)q6pbSD!@m| zcyRb}=pHkK0Mo+-G?+}?q54o(5J`fW5Gqwpl#>-P6)|MnC^0_}qyqd3NXp26EgSH_ z>nroOvWgl|*k8k0%*qqO#Rh;TZ#AH`gs^@C#hu_E4sZo$SAWMi<&&CJbU2^rE=KBa6VwMk|V$xcGR9iJ*l70L$fub4m9&2a0xKw~A9!$%O-^ zO4*=$CJFQ@4sxxY9~>V5428aR_rLIQV2V!{7+-;a7@y$|EG-0Fs;-CWhTh{qi>)54 z;P1YmO3qRiW$6i^zV~fQqqIUVfZ}E_=mJ3oI2|H_d80r(sG|7<`G#z$Z*E|3e$6+u zbbNcAJcJeh16DkZxw#|6j=!!|Z-!Qw0O;A@nv$8Gof^3Cz?wS*M8Gf16#WD!{E?)V zUN6wSXaL4%V6JvSZ$tL$Sk0V^X;K48Y`|oL!ojg9VzLCRAQ0J+fVBWfiC~}#5Vf@c zUt<@uy?Ly?J~6pI#Pe&&D|0=;8IX(b9h=z^9P6Hf$Wagp9>##dPzHpCSP-2;LmYEY=8-P+#AgKm*izF%4ZJpj1RX<1fZslXbVJF9sJ@Fk*RD&jeQXBixu!P8##YvrZvGs4Fuwp+}hsnTWGk1ln+^W zgd`Ny^-XM?JOV;v{x|;gzkQAW+b3quc?gFL;3$L+;wpv>-BAi3zWega4*)NJ-dBlK zi5>%q)p0_N*a;%dxJhEIc!(7~O{$YfCLP#|DHGI(CHuV_0}GoPveeM8459+T0YU); z9mqW(^gxJ!umhn2avKN<5N;s6K=^@h0-*&0{fHqZ5CR~~Kp23K0pSC}3gih8JRpyO z+yO!j1p3>?jue0S9@w7;Pbk34@<5ouaS^l!G60VCz`h9V1%bGO<3=FX&~va)1~LbZ zae!EZV?D5M1d2Dk}Fe1HW(SWsK!h)HO zp*fHeS`mbqgSXcuvl{O~5z5$}AlO5-A7Bt$=p8my}xbpLU^w9Vgw z%UJeG)*2@68ZIuP5JI4c@D&xY6C`oqj}WN9t(Xl>b+6UWt<6js3%&w(BNMAhIE@cj zD8yK(n706R7gF~vsc5gKk<2I#(^=lVm)`J_h~1+b?Vg`yzr(DJ3s5bVD+E8?S!MokzO_Bv`eAe%x`KDWPh+zk)>gJw%EKb z^hmk_P45Q>Yu)?e55JaJ+vo~zeKhCvDlSe$xi~}i7JH3TNy_BUPJ2L6WLjOtHfVeR zm-xWcGvl%udA(f2N741i1QDmSI_2ilv_*O^BCTO-PBcNvz@%eHD#4(^Sh+C zcIg|l%wB(DUYpf$o(RERP|xj^oL==C($SLBg1d*<>d7>2j%*NiMe8*&fQb4F}>wBYBw zXgP-F``NNM9dG-iQ@u$$EA57B9`iWuYL*5m@2wdHn`rHg4}l-vRH8^8BfOub86_i&|+)ii!=E`CZJ&uc{1h$1bR znN;D_)(a7udN(<)D}!t^2`96zRui9QdOZ4c{X2TNg{Kh44iA`JwrM71l_W2(Kz_-{ zQRnjp<>333ch_CjTRv+2Ui_(DD30q2-p|=jZ(+OXdzBSDDn4H>Wo_gpt_ZaA;^3;q zGIiUFSQlY@W`Syyu~S;PJN4&}gKh`q?Bpj?aW&>61v9gTt~L2r`sO4LPj@qamrk#h zKGGSs^qNSbAy%i}jzBj5ishr~k^x7|{LC|X-l1qWXP51VgLq{$-z@us_VFUaAR#s# z`Sr>>#5U~N-A|EMJkorowJ_j9@xwhCW=W@CeeuyzmtdT@4_~fcFnnb;AN^)+LbTsJ z^0w+Oqndt+%-vI#ci$Dtd40M#JzjbtekUjPJ8mvTs1A7K4lk53D~bM0%VsoU>{&dP zrmu{+Nf+|$#=)e6Wqru*Hj?SO$#Y7Z4aYy@mh6>6+rdT{vyF`5TIYLD$0}>nG%@WM z5kFCBKl zU|##0R+hf~l#86E+*s9;anroi$BN=N=~moB)tMi!`n7i(-i)UmU1<>9KAq7K)z>zR z?iznMte_DFPi#Cb;kCK)<&jm+Z0Qy*{J#t5eS`uaw-CSu}lzle@tXRa|ByYf3+K4I7u&fkjr9S)t+z)1tc^v=h>}Va z$0GS*0y$%)%VGvy6|zmBJD<0?xL@d>sgbwxSw|T5E???61@1E(sKjUWsIRWb72ck6 z-z9|WAo~90+oZwA3zl{%wq0p!lT#{x>QZsRJKB~XQY#splHw?_nGCB>U0as&zp6fb zS;L3sWc&5=gr|srhHsJ8$%}1&rm(Rqf|;#xVTW`@-rScbO_&A_F|K8irS*C|NRMsvOhepTGf&TJ>ZchGU8|x&R0m!mWgTOPZ!!WzsCQb zYw|*wb>pwAH6lG-#{hRxtj^|O2{2a$ zfOxpzZ7gi?`Yk zB}GLPs9Zx4r9?E+$OsvPE>KE#Q?gS-Qt$QkLl$)O_HPem;2vJfQ_~z%XCSbGdF2%` zPN=l^umA1W1<0_vMzeqX8t^eo=3gsDC!!GVOc;7#1y5CJxxgg-O)Vu11OC0vqsaw< zHYcT!B0G&TohBqatoklaX%Tw`Z#7s~4201DX@S%r6um=ShwD1VnJ_RDJ%q6EvaJ;` zj}Q>>qoQEUx5~Jl55=15cK^jycu6kCShBw%}SmyckmvgC>1du#C8NR)8FaBN4#(6CCIKS+t2*v1 z-L|8-dW32+swWb!IV}g!gzCBJd7qhGc(NU|M7#_{%loYcGK$^-5T&|;xtOJdwUn)l zy_})O;cwSl7T zpX1Z>%j-?8e+4tQ28wPoABB7QK*0_a8&ZJ52X^j|#z8Cx+k<21wSRkq5dRX*7R?dO zADRcra~4mYFd5i7S--X7;^Ja5w$L|VvbA{4!pZ!^0L&92f4f?t|L)&BwD9&r4)Z;4 zDS;zr>hZ94f-j3pSx7tIBf~h7-dd=}KC^S)5n@aea639#pchy7cG-I(T_*!iBQ9+) z*5a6t^x>_+O4bvv))Q)z3tOJ4#xdLpx|`=vy^ zN=%3Pbb%gi;2{Z(EV9S}ynMx7OJ^C2;^X`1I%Gicp^)+*{Xr^(vyYEIS|BH~*_BXE)LZHn9>r9mbP=od0>%s>Reb7)U-^BnB{txXS{ zc-^Jp?FjO%7vYbW-4C>(Nw9O!S4d6JN(w#LPta+{b9RxICRD_$fuZrQmUF*y4tN=3-+! z*LROubMFhP-9*eB?T|!VFoxHCWio*yo|e5NL~Gosg4Oa4 zXm!cB{Pwb%@vC^>*RHZeB;D>PMp1AT@Lcp9kLT_qX)QG1`yqGN6?0m8XcoN)g(NgSHen_C6DumOB4No$m zUYzkdy9AArf3=~3H~nR!WwT_fWPuGI*3!~xUpfGZ2T-M_15tW()`q@!FKM;kGFC%( zyz0|u4bL;cyt_xO8&+HV&JqvLSyoMgamMZt^k;pB+rDw6>*Z z*z0e}A$61M^w9tL=OGVG!A*sN0g`4gqXro^s70X`d;yv`s1^=({9m;wIQ?%M)GIn= z$7I)Je?zU?^3Sb1(fJzIwwR!8g}mgK(-x%fKRck)N^&=$vjYQ5h;<8YOVT3GwlO#I zoV~GpaIL*pC|6Fx?3_UfgEHxmndK6>==W}$kZjQGp&@)&u7(h5OOEAg@*p$WE` zgLKAy9(xXYu@(gGKF7m0p`TG!PGiq_vAW#N`HT*C$L@Vo^ZzTw2BnIxlWqU4BS@9W z8$gxN?L%r51o9uL5*jT3?go7qsvLnFy&SjPf2K-fm@02Ws$?1IpBpq?XQ|{l&H7jVvnlw*pzP3UXRUu_d0^^V^~_jvs>X^p_| z1@e3coD`(q(L@sFj~TUnJ6YQXvqFs7ka`gXd^`_?COJq}=;oDH_m&{_E9)}UP65sZB zYD@t0PyyL0T>K1eWa1zbo92%k1oP)^nbZW zsHfx6nr&p!`35COh|brnR= z1r)Ml_&LRqJxpu(X>1(jo6X|~#u9*kQ1FiC7a@5%WLZ-nnR2S|aCuqGdLJ|=dk1Jv z=o%p?f76`Mr8Vv$-qM2(z%~b6!@s#TLg$^MU7%f|33Y?!jQywP>><^NC5eL?6r1ip zQsTe)hyJgf=8kz$w8?<0SSpih^Zj-dM)<4fP#l5{g!eLT);;Mx=SoRJvt^=RI*#A8 z+E^!MdObQ8DLLpX-Xiu^BQc^>s#J%jWd4UYcb}w(-;RIXKQq%!ycBE?f}5Q7FnQ1| z3h(TUTwRIqm^%Um8~1VJe!J=UuZp9wBj$ttxoEL^P3ll5O;c|!43?q_czT8G)a{W}C=o$Su!_ifh>ZfB~!WxZF0nJGzNzBO9Xx;9&u zzVqHk01dG?u3HPb2SFhJlN&0zd(KO>PV3JdJNDWLdW@^0tXfh5;+5~Bxi6h8F}m6K ztgAyqlZ*vFP^?%86DTFyJdM2@%vvzOmN|Qd@W+q>x_Ck8;eTv%k9|gY%r_&|BE?8X z#jUJPUi{@--G~lD93w-|LBaRU{jBYbxX})@VW?mA94CftxKZnS89xF|EgmuWAgq)5=hUOX|;-KHbhg>C@TuL z@Cpu!--f1qVOQu5_7Fg!01^VO93Jeufk37mGX2nd&};u{gXWC~(&f{O()ZE>LDgY( z)we)s;fA{Dsi|+tphm8)7jQ^^j8z4~4HRJx%zi>Z(B}Iz+u{D^IGKWC_lasK?wCiB zLJ!6>Sq=XyW+(TLDj>jbbWc}cl%BYSQb{uQI;;uh@tZGxe4n-imU~*@d4sfs1*L5uRNv z1eV^$07drK3l#%sy#4?M1G;6X0o{Q>w+=Nb1dTx(-!cROIj6tW@?WV27WgPeD`qKH zDFQD&`5$^|BkOBO2l?ryCRV{|xxuW_SB%DTv0qt!G@*U!&GB+Lif*Th9vQe&d73=m zB)P_Oh#L9Cg&xbc>tVaAjdcif3$q=$jrUCWzU||&Z#L}ri*1Tal_)OY(T%xpyD&Am zz0Xrv9t|_&j4vRUK#6?b^vUlgHN}3Dp(?vcRB_zotIBWER-8B4tBRW>7S~NKtMVqL z#eI|6s=7&V@!aIOs&CR=ynkiAptMRX7(4PneK7s~g)08V*nyhiUu_}aO?O70hdz&e zp8Tg{Cy!R_?_-DlZNrGStnd0dD@q?twI^cRi|Ea#G+)mG7#wTjn3QGAd|w#l#PcDg zO{^UR2A&n3;Bnvvh3qFk%`&DHh+qx<@M;Pl1^shGoc+Y&-HE`X6Z(69?g<1tIJIvk zxuw{~6y#UozM*Sx++ zoEk#`=Mzg$K{(-CLV|)`nQ;S3ox{VlaW1)76+wM&_k<#|v$7vPw=AqYiYqH?scZUh z@!qvAgKy47=YtMeVCCVc=Gvs@WdBpQblum~{OcY$FC)JEz_q?YQ==nLlZnx$Dr9Ba z?UQ8N{Q7g{>#JK2Jks3L(vDO_r?R%!=!ucB2@o(55K`(Eu5|v)kR@w4T434B$kfRa zIiqNccbK0H-uwNK+p+U;?#1!UF~=LD+NixxMSD0=hH)4LpQJu!B#tTe4k@ZSc4l2w zHn^4N`phX0{8TQK#4$xu7DcM5-Cot+n@&idbY90g=?hvd|EY6o?sVGvf^#u*aCP;? zRU7*s9zH(Q<)m1}ps+g%rWu*P!YeB1%>(#V$ni!F(@KO61Z`Q9UK%K)n@E1d^FjRr z|Iriv$E=cLo}0NjAaoFAJ)x)fDgQOAu{ELbtBpZ5MM|Hte_Tti(9UW%?McvERSi{q zYSeoah&YI?LKlsE7tfx#o=_FF9W);tuqWBnV%G=DeG*2LgcB8lODsL@P@fwgH$479 za>~e4?LKVTg|^z&6;BZ zogJjnHqp?u&_;#E!B8<&u9VD>Ogj5l#eN4~C9IJuM%ow_QlEO%be0PDcXxwZkiWxq zG{J2Sz7WhcFnjcP`%{fdLgdJ~7~^De-&}J3xZ6DDVJ~J>@t=ORrLky44|wlep6-pW z@5p}6Nzcit?_#|pxHoj|6Dedo?k?yiliUsrAqE*9%_>JrJ+gL$8&lTp9UEDYXL z9UE1}#xX`gr9kaOczaB!!9*0x8bnft9P8U|fg|Oco1AN=o1n^?&&!z4X6j3;eE0s( zSy`U*^y#G~j8IcA)KvdY0^2h<^#_D8-3_hp{y4tpE3IDJ)jFDrrwG7HM-21!Cew?$ zEsuhOa|aO}2Obq(c$v25=U(^Tp2PkO<~hw%mtltVmQNkJIokgrn#|uf|nHKeTVIbrEx#?2hlgXCArVHGPH{m5}c49$0P?P zQ%IWUG#n?D9~bqJ{z9H?N1mQmvCem~$lsNhY|WkDG($N)NzllTjpa4=dh!zg-j4{X za1jMz1>Eoa?FWC({=9!g@SYBn8547#dAj?2<-E3H*7_9ts=vRO!SA)QqVmsocp`~e zd0EEJw&U(+X*D&mtmn_wU#X7^5@{3^lob?&jlLeo*zNgbuv&e04~>~w%{aO6B&w22 z;5IQg3JHqeV0Dk>)myhKKiZg=N|H+9+PAr@)8o_A>v?w#v~9H$u)I(L;e0(j%;0GQ zQoU0b6v^c4^SCWxgSVAStl-UmP`}-F`Y8lbdvfEitk4ZV~ z^}?mmb7&cIUSd8g&WO&)7_0qmbZPzJaxJ4yeP7y!#aq!_2F*~SE9bHQdlelOyth7& z?x&zr>a(1#=WCV6lhkTC*xz=N{fuN3ji-ch_b$!u=MvSJs8PE2^E^5NWI8+~@3?Mr z-@a|+L5Y+G|6sALFwf>l?JfK1Pht6NGZPczcf%pSbE~StnJ=Z(jMSnBbQJ#NU2HuL zk~a}W)qjC19Kb=7d513ZX)xh8lte%A=#(#=@~s2%ThtBH```EXl}@`KUvUTspur=d z!Xd&nRndEzzf^hova5&1>Z_{JSAWiZB~4RJ%^0!U8VEAapX)gHC0~}-f0&?8**+OL zabUPwDc7w|(nY>wfsICu7SJ$lzkmDu`{xx!x!#=R4Tkr6Wx*Z1Y={DnU*0JWZg)?VnGCKimK5V(G4kq1XIXw#bAOVgH zA{v?wzLv9#%Zq32lj_C=4wgHqUHB`A!>uCs@ZOMPJjRe}dQxzFG;zef$UZu8x^wDu z`{W=(GdnKMbom?cJ{HTqZxcfMt(L}HT$|ph%ApYv_^-l{6%cT7vl>=Ubbrs1FAU4P z$a!PBK^UPIj-K=JW3z_lR>ASk&U|K-!rlvO>u=faYcGHN_@cF*`sn07*U6VQv=R88 zX5q#z_BWYIZ&uOY?cr)ZA|}pOb2Y@Yk?!Sl-l5cHBh?mt-&}RkQ1|TaVu+`LN2r2H zs04g2)g!a*78o{M5afrmm zMl>JsQQjv6N9q$Z<5xUdBbSKhcd{8CnvmXmg^x~;{*lr$kW-Zye^leVpZb!8zup@0 zVQ7kf3MDQ!A`$_g9yBD)(?&gU+e2}~JKqZ|k{cLItyH2NJ%4+25g`Bdd3a09GH3Bi zEeowF)N51ijwlCn0h!30Co06|#BqJ}o{yCjl!mXSbgb67OiX-Tye`g8&zw=58c)9c z`Nk(@wOUv?P{|dYlN98@s5hAPOME^SwJzw4d}m+wswZNw4@Ca@ntsyo|Bd$^}$y*I9| za=ux&xf#;?j%glWUtjh~4=27BeiWtD^^pCt7ou=w<#zQ%6{885;9S!PiXTuH&~cdT zubr!X`nK|Th0g$32v z9arE=9uJBedM$Y@ExpNZ&$&1BWmJVHqkm{;>2<21%b;z?L6~vI&*P8^AgqjwCuCIY{|d)j{H4& zlF2o+@Wgv_7+l&|%Jyv|o995&_CP9gI_&QE@VjtAFjJje?IRm0`l+pLINLo-X?R%4 z#kG62{-~aRJkE7Tva-87eMC-t>w&p>u6=ad#qxz~)m#G+AI4Q zrNV5bRZ8N+JJ~xs&!T9i0F?TqDt-;kQgJMWBB_Q2IKjs_xGWpGKDNbB!VR(GIQ^>qRc}X8FJcLyt~qO!;x4o#0Xy##?10( zyj62m8_RoB9(2@n^w#OxWct-=DjjZAZ*0We*5(x?6%;&Uu9w!;*PRW2ZWX=~u(D#$ zexO5SOcX2933K(-F*ad8uePt;7|uFe>YSg|wUgO9zj*fI1*PvP>6Vp0ffL>rijE;6;d6Y5&n{T_iI=AMbCD|_V(Ap;3E0i0r@#Eq0eG|?d>n>md?n|63Lcg99N`DdwRg^ z8fJB;r2TuW_l`S5IsAFx6Ov2!(_W$6mT^3YeMQi+j2SpnuSO zZT_6b$%IBt$`^mtmQhvRjoqi^8XV=f2avTP$ZIbObG50tu7S&^$EQvt%)ey`^a!Fy z^lKtc`c52PHOwE7UnY@TDBtdapx@$Se?A3ug~9Em61Zb=`{TEUzx+yCOIXX<%e1sj zw5Q<;yGrn9qVO}m+tJP4)zj-35Y*jeva(_(;k1Ta=cQfL^yT{HhX*n+==U|4#M)MZ zM?&JM{Y*#AQVp-`O(+qED1Ap1O;mK0FZsQ?llpkZS{}=xuHB*VHIzURNMiW|Aa}6c z!Z~rVBujD5go4AyQ&ZCf+L(JUWnTVhByfHu#Udq@?U2y-Xa3LoVkwu>g_wl}g^aP- zJKbS-P}Olx0kp{biLS~Zd|z1D_+VJG+LWjIRrSsW$w55HyIz>7rp1^cH3Xp#ljQGa zyKf)(zR7WKS&~?j#2>&vM;Aj96YJGgUtB9*TlTmV)adpa+p^rGtAvm#j%p_%LWMvV_*c^dt#ddfOGxaG&5+7<86BZZ84kFYq z%|2YxT|-9rI|_*70CHvRM;XjW7xwnvu~^8g_))=$dks~6OO9fNF5b9ad{Ypf+|A$J zWxwn*Yp@k)cu74$cIU;NFwEM`1=3#$q*ob<(aJqPmHQfv$yc%8ym1U=Xax|~zt=;= zSKO+7B-1?7j+hjwB+%a1A* zxhmtkowyc=U%gVkfqGaYXrjOcKeB9vg#=VgZvDFrdkq2unQz`L=QT#WHK)J5ZO+|X&e7Xp5bnWOs&GUVQI(M)KdD5K;MP`+dsOnk zC8JMRrR47o?pbT&(WwDQgQ3K`ZbbT)G{MDWt+H&Yj2+)mFv1^x<#k&#U^3~ExA;puBgGfGQGGWby|Dk~1Xqi=n3 zPyXH)-YEhL5W+uc`IRK`$Kd^+a#TgC=eWr;`TqB}N%AxSXCT!{1_@WBIGvC|Lj z0`2Wpp;mX-{MOda`%(?uVx|t!Xp&`s_W?z>K>PEL^r-*v50z)+pp{S*2jG}J->B?nxh;_vhe zI=uuvJ@LkO0pGg6ed93f%ZpQqi{p9}i1-=)^XHFn_ifTD($a=BZ=edn$19h87Z>ke z^W_{rI5^x*P1bohYpH^;|BT0E(G^5nVJ^^koS zNtt#zdwHonkLL+YuiFKU4*?UW9b6;t4qOIK z2nE97(aF&f%5fuJ4@OVV^r!Z1{@?uk!|!1z5{VIgh5U^N7;4{@?3OB*mZE;v($K}z z(ZS1Jn`%4HgvX!oK7Go>fK$l)nwj}a=}W)sx~pr++4)q2WkiGoSJLM(@v$+LeCAK* zJ?H1vn>G)2l6H3bnnF9?Z@+(E`+E`J$Om+--p^mBm8Pd%GNq~jl)^83at+NyKTmll z3MVEKQMQqFV|RD|2#B#~EMsI;({KuHXm4nEVgQTEPy}v2fXn}!pPwhrv;kb5Mp0S0 zxfiFG*Dmpu4_hxATZPeqfI+B%fmS;#iiN*}$jy@zmXi}MkyU6jZeugE(0{uVrL(g= z$h8x=Zo)y<8pT8@d|bDXwB=y;;DF`yh16p1;$qe$!vYv8n$;Cy?EXal{@<`V z(_CjbQ9{6Nh#bZD4q%ad}CZ^Y>Yi%I{+XAQ8)Wz!UE5Nf=VHsuCk4? zGFN-TSm0V-e$QIo3V#;~=ZdRH_; zfC;|iNqr4foZYXX;|rWMm6k^>EfH}pY+F%VTeEE;k&{xBlQOyF`YH7(DUG^bBtf@> zf+;Or;v??3hO6Md8iOs7g|)VsEK@8-9PUVE~7 zdae*=UyitqjL;W5i~;CR+`_5ZRK8PQ{?_3kZlP~sVg2)22h(y>Q_>$;H30I;ZzNy4 zTGfvPJ%^izhur6T3CxYm%=vn6AMM8N?zV#HLg0^pz{CfVFaZ6OJ92QGQcF@(C)EuR zHi9=c*1NW_4Fdqg>^82h8LFv4FbOwg`UYI4&Z=x9U1Q_t1dsX|-I*D^6!SUYI!XR; zKdHSKzPJ!uy@7tQb4y{iVPWrhz6INN+1sCOz_OmmoS4znAMbqpSb!#YT5?cQBITrR zu+p%y;xl*+B|eZC{05Mle3k!%>s17BDXnQcKOBDi;4No;m=&9q z?zH9f^wsV!qc*m-wzQ~X4w^4CG&qtJ2LM{A=av+_^k(q(9=M-bY5UXGwry$pC(jZO z&z9}Asm6fRvj-K9h3IPrn%?1xtFbd?**a<21X;5v=15#4&pap2xSyx zWGt!5JYOhWSV$TF&7>a#LY!vN{nB5hrNS;5_bI(8DcOZbzQjw$$D`61?E%+Hw!?R0 z>V5yb>v-DHQ5^oL^v~#@KXS{kY$GByDryOUTndY+9p7SfVq$2RTIDRVL1;5^4OI<^ zIK0mK&(56Iy(?xlXJ<{);zmC#fB2C7r|cPZ2sJg~i_x~HTTh=}zI(=!8=0FMD>caf zo&5XvJr8An0AX=sr~)v9k%NQ15N@DJyux7RN@b;yogT*Kr_If|p56<-JwCoB$AqPXhAak#H!m%UYe#Bp(ajdbnjSPY`6a=pf{<2e|LdoMDb=Yd+l(7mjW-;h zAe)c?N7p274whVgGn#nN*vYAP?O@{5$!X z*3;J3qjN9ED;6p$tZXX354;%|AglZEbUS=|d!%FXNiTkH?}E<_)bwsHi`Iyae$04V zB0VQPeOuXIn?4ypae0;r5W;KuRtbdv?)d%NY&%`Vm&(_-8CQf4=bk$Y7?MT$d+1^W z;$qT)Iv0U%fk8G84(SH42M15$W}|P*+{TUqlYutnHZ~6?TA_p^FxBYSE`V=Z!=lK- zoO67tR9aL<<|+;KTgGg92BEFX$>!?jCg~2=%;CY|!Q*APh8f}68NF`_rw=Zu9!!3i zQO*FDxF>-v+sND0_}TsZu2Y1QlUetc8dp9imz7E^8VM2!>3sx(MKKF;@r+7_8>r%V zd9rZw3w8UxnOT;Z>8+p5gHM6#HtdJKHp(?My{Qe}Dm*DDd~T#(=dJ7Q!^1W?sb#GV zZvAl^Y{))77Q1M;xTtM@j#vmxaE>;k{3Fl>oRvNKcRhD^2Bs~ftg5Umsi#Lyy5IEl zJS)s65D4NIpc5;}obR8X7e8aV?xOTpeC0`HSD^xl$7O`lSPbwX9zRZh{bAnjClBR_`GSdGIDa;ned6{L+59&j~`Y)nr3(uZuyI} zIJl@dUqb-@B|A&TH}W>BQ;pcl!^RdeQrO7ot04YBOtUPh?4Lm;jX0 z(T==^W+XwV&wTivaR^sE`$GODBKz*AO$}pB;Nn>yxCObnX}2H1qOuPpobVc?nwsjt zVn51(tJ5>l9YeN2Mw#U@#ds6_#>l+y(yg7UqrEC{nG#HZ0F!jj_9cz7GF`Z}&SJ^p z!nZaB(h%&B&>-TZP&VMYQw`6qO*-{FW~pCEX@d@j-}3D8vcbXA$ad9^4u#6l)=Dr` zY%P?HaX4^rortL=I5OBdTopq!rI}@<@uJ@o8-^IZ{?K(atbeSpUwZb1a|mU4csc3k zjmb3X&0WpOePb!Je#`zA-1^hEY_2}8u5!)4rDN%0<3_RTTuhQpjPDF~9>ZKc#iq(t z<<(VoyTs1%#_DTjBcBj?&@7Pu?UW+h>rhD>`tPt&i0Vu%EgYw zMdeGH538xGE75(Tlr+EuBTAHALzP>#H_%Z&&sWvg?-AGFn=z*G@rF+)k1L}pD&tfr zTZCPoKlf_9qoJRbV=A zGi`s|-fA9y(}ie=h}6fXcaeXUm#^?jshA5ue_x9oPqS$=v-O<{Djh6cT~|NFogbz@ zfAD5C*rx!<`$LHM+ST5RiCi6BUA6he!mIDDucy&8r#izmI~(A)-tG3=?L*mxFHJ6h zexH?j4nzz^MJr1wkbjW>{5c%nL)Lw#r~Aj3aXb4AdwZ0jfo>f~UEnfl6Wrz8JxHJS zyVf;)t7{TQXyO5`^S8~|yYtNR^PunA*U*o>tCMD#nr7R!k$f|3bK~fzlRhl#Nx=8w z9?iY`+IN``4VMiKqYm8Ld)+{}OIqm-lrY~D0Fe8;YrADDLtAT(|L%15ZdSIvsko9n zhk^n^+-rZvw#SSauhzH@{SFV?X6$=EzWMk`oN3!kl3q%Z;>)Y$QUEPf427~#l~K`B z9%)%E=PWOM?2^m1>$I~STdpaGnQG>iFLfaFp?7llzJIpA$3KrzYtv|B-92CQkl;Q6 zAqxg(P+CW78q)_uFG+1Fsjfmi-&WnWw&$gBI?b#t&GFv*i*L5yyz%+-E{f~O zR>#UFrSmyyLUD3Jq%2_Y8mihNA156j9}bzBH&oU)42z)^UUXmlQ9R{xc|jrZf;GhW zlf#(9yFc3n1}coIsvJ?y@8bpH6Xp@pa325&%PN{fK!!y|j)HP00tQXEM^ml(tgQN0 zQt?LcM@O5Yn$Dc&oE$y(qfg;o;StUSK4d@qN&nEp^v~$-$?h)C3ZbxFot+)a%y(uw z0O9du>d(~l)IrF_ou4`SH522V&FFWB{(i#D>VhfB=_%W)sA+#I{{ZDjt1MuG8$dm> zd-=cxSEELjD0Du44^lnfkVE7!~KzoKu>W`FKmG} z(M%B1F32EhRToxOFH7PVU%P5q?xzX7PZ4Cl29JT?%q4L*8|0MbaS z$H&?a*uULbPoEvK9Uj6=PYJz-_!_eFHS==?O`4?^Z59@@3t90g{mCiMoUI%t=q4xg zgDjl7@&fZ{mi)gXk&v@xLF58mG& zopAHV6vf2ydGI2@k%C?i3`xC~Ik;fv&w7Z=3J0y2=VO*I7{X|p}xVVzOKpfshjATs943tw?ip#iSyxPS)TTu9;9$5NqY>32P0p`X)HA? zENAlAOL@_`c^QzI?*vYK{w!&w+(7upz6q5pe2ue(vDo7pMbFuyU;istV`= zM>&WoGf1=3DYXEcSkF$qsL79t?2n9c(b3#?C35{B8~B>7IjN;3_()g!5!6NHFSAVq zOw8_Ps5rj@t|Xv2a*Ym~nodA~fjB+nD}Xi}DmP6n*ml;@E`0IK$7{pWlh(l`J-@9W zUqQ|6>VC~VJR{va+hg97UkCAhNbi7&d$uw3;yFaN0Hlkd+2LXGAK1N2OploynBX;k z&z=94J|wKfhoMN3`=?EWx^OO`qr%!41ROA#7h`IQmz6P#ar00l|4l?O4n!60K z4d1xcnG$t3^z?KrIba4CehyBve830|mF0;X{|BZNR0o_dhKwamOwZCO!ejMfqaQP$ zR&-MIbp8oj=W5<)X*N23n30M7HM2(`*8+-0fXSRw?pIdrpNfq|*ti8h*V1-W{`k@X9!t1G3T@Vt$mo9i4y0yEDygoMM6vxeOO zbg(}=L-hhAhof5_?~;#GQ=SQ`CP5H_ez;Sp7QLos2D$k4K+f>cub)mdO2D=7q!}5@ zPRPh!ZhtBLMDfx88%{Q72uE0G5M?HLYj8(L?jI@he$oCumbg!slE4I`h8YXNLr?|o z-8z(Q0MPLkRv{*~s%5HXv2IDJ8~$#eIg^DISH7@@@0qVJyql{x2QNFP7#XJR(ZITVV=*ZBt1yTc1ef`<(43Vs#IobB|ZnHuF@@9K+uHiwh_93f8Z()D` z;+DbV7BER$=Go*>Z&lxL7kfDW&)(G^<8!PiRRH}+b8TOI?Ed)C@{Q0^wm?p9CS4TP z7n;b3?1!ZSYm%EAx6@OW>-Xw`%an*a^>l2cm!xN?q16lP?C$A)vJAHzcNH6l zFZL$r21+zSkURc7aQ>6>#{gyA*;)Bn1*Od&pKH=gQ&W*SyVBJ@s%uEL4cuMDUS0iE zw`q>oe-A%cXCf{_KJtqoecQ-u04?&nJv;B_;M@^bty1h#?&-Q8o;0%(vbt2%W3S2v znQA>>6DagiIM|_IJYJl4ZN^VrbYGnN(xUIc#=y+_3XechBv@2j_fI!bR83@Lm@Xq? zK*PsRenwnaK8C(NJZOszy%YW4(YNon`Qi9_51>YM*(q8#48T zk^v;UB;*~k2b24{hlc_Yg}rxR*+zMH2yz8|qUtnqHZ+R-Msiq@QBfXXd{^KGswS@s zY;LY*jADMUa&^lLx-)SWaekU{V5Ji-7#8xHV(`~i(eBpoNp1W>K-VyRa@@-8#{IMf zMeH1cu&+P9q~s^!hGg#YWG@^Wosr~+*zEvxhmglv7iZVFwqUUV4G4|`a4iaKuK%z$LH$8XX(M@aZE9G8D|7j42H}h64L1;< zqRGCcN!zP3apL3TM17lr;qxS+=PpMxyp?hlm73(|+swMmY@hHgYhh3mS0`J~RR2{; z8R~FYPFPrlDi3vvdn$n9l<%Mro^YYvc#(W@v9SC~n&=||5xRKD9o&6Ec`zg!A^wCO z3AkiuMuJlo&i0_*6E=Pk@mZ@6ae`btd|HX9hP*%8+k%YmO105kn`%^4-~#sE-gR!S zC?0=pXH|~N!Eq5x)ye7_9%$fj4^{B1ONJ%4Ra{P&X zuAz#7|Lo+0GSxq`X$9GEFEI-9Q#RMKMkSu_awDN6{eQ&0Wl$bX)CGt;1b2eFySoH; zcXxMphv4oG!JXg<5FCQL1$PM^Y=`7~cfZ=&A6xrppQ?UFTBdvY&b_Cn`_4HN$O7B! z>_N&jYw7hz!Q3CWy+<8%1Df7w>kDuXOPjuB`?9QZTyzgpVq2>JZoP#}L{>&E=o$+7&A-nf7{fZpo7EYbr$;1OG)=NW_H7eOflw7?Y2^Oxefh8@z68XZsyrJ>9hWx?uol=FEo5h5Gwu4(1odjjy75nLOQ{ zVwoLa;zz4(m|tJqaK>Vu_x_H`zHvL++L`g=!dlkM&IFhGDJ?eQ;QMY?nBke`Wj3%s zG3G?!N2VQ#P7VVq zJux&{26uGw)q9?8+&?`%e&hl>&47UL)4GHE~VB>-QuiGNkG@)Y)B~C ziBfq4!qcDQn_HAuFbKdzgPnmKiHrIK)(VJ<&Q2+oC59{@ySjBF8jm=tm6x7XT}zkQ z6%{#4OiYzDX6HPwQd{JUp#v&Q*$&x?j1*5)UXTbcK3?N7eJL(JFWZCz>m^q-DFK;m zIymJJfGXgpGoWDqpreQ;&d1s{u{PWuQ;Ro-jcg->l?{9Cu;#TpL`2BfKQQoambS5c z*t?b`7e~SiGPM`Xon32LQ5HS#%g*0_OP>Cdge9$B=6ZnY3AKyJx<@@F}z7tR`RItB~&M2V60C9 zrqfSVLqUN7Pf>x6Rz<};fGT-moHa#IC(sl&lCXYH$|3gos^u?JO)acE?ZkQt8w60-T(KkXCQNeqN=OhH!`J^ z^i;i3@X_=ac236FNnF;Ue^9~&fZSa7IQ?%G=x9|WJ-sNM#bpa$2;9mS#KaM8lca<( znwnFh3n^RiCx2r3EH01dQ!{+*Zsw#dqXUKr(KXZ~W24%skcmH)iOE819ZN~7(~@Z^ z1iMp7e~uWXpVUrT0jl~N!mKec^eNh1SGqeM>VFDl$md+jx8S4+3ZmGWR0>K}O=?=xAIl@r2L6N5|>B zxc4Vy?QGDdDg3RA|3Ot7&xOUGGIcm}n}1&A@yMHB81AoS_BOljLdXCJTy#ckw7GoM z*2%EZpsP2pdmN?p;^-d!A@lpma1N4t~K7nw%e8!6KZ#J?z1&7MDO&UX_=v_4XcQSZMa%Pfq;sGwEy5>u$xoH4#Kld`E9Jw1z*;jN@>wcpoWsnDW=0&!xnQf$Nzi!Ycfa6^st zOlD5OEkcXa?d8e#3nOwetO?=%GNk_?zVu;uNGFs7e;8U@i(gFfXe)n6_}yW*TX>$W zLz}?es#UL{IVR(pyHPCwHA%aaQD*uEOs!DLeyEa@+toQsl0b?BP+a6x#A;`oW#IGl zKF{Egfz4ay02VVFdK?is3)yy1L10kO-=(q~K$UN_nfd?~ftPt<@f;G@v-!*sqG84PQMwrbZeqoxH6DF_7J?R~9L&6du>o^|dlxn||sYg@3l2|8o@S*WCM| z4XNpC@9FslK0fF6>&Q@B458QfqP;oh5TC!1`qFy0$Fb!Kznjz5abu{@cQ;qnT}v`Y z^sS>WD1CB=)Fsujxtgbi&r^VjPt{r!d3riwNyB=y@%=k0bNM#CGV0BSI(1x83Munc zRIA3x_0Xd<#$n0IYGQL|z}3&kF=$5j#)?V(cN9w;SWwB68Jb*7gM)QIANL10{d27C z+QVs}Z$csp{cJ>za9T<;DJ*4rN^H##od^DPSIF<`pAn1-hhr)EQ{({(pR1H9VV(SG_`{pWOj`J5vtX?G2LB6{20 zO|!Yr+5&4*z{g61j><9*REC1e#O^a{_OZiDTLZJLOGNi~bsZUxHVoa9*FVR+DX3T0 z6=e&;FMj3f@Q|fQD+TcLYO1cK!+@z}5{z$(Z{X`i0-uG0+JpsvewF8wZTsExcwKzP zsr%Y*pypORO01PiM$?fCnMg?kK(Rbsj)GTB^|G?@SH-l7D&BFfH-A0(2PFcpubj?V!{5GBQmBjj29T;t z$hgJ8IjHlg07C?H9Tkzx)D{|e zlKj+9k}!I|q{S;pC^cmLy=gUallvJK^>Rfg2TX%-%6`mk?}?9e7N4qxN8H02c*ZTp zho~S$tbYcd9FEj7l>A!|*X{osH}j7jvI1_6;?So0qm( z16|OD5HJC%+9)E!BTr6u)fWTs_qG0V!I}RRtUHv^BmF;tAP1Z-J2!z;YJI^R6iPXwr*upmtTwDpm zmzG<*V&B@!c2%8yY&ftm{A_x9ka`eW>wAX#(PD?zeu5KXFTGujVI7J}!K&^k$bE4S z_{sdU-oH0LJLbwAGwXz(xxw;x829%9V951jc?gV`U#~vKhQHh0f0ApW#l7cbKdryp zcTZhfwpyF}Lc*8zeS#a9=r%O_F~L)4sU{}285yeSGowf|ZvQ{osn0bo>Q? z-sDRq!5y7d^$VDtHU#*-57hSPd@Sr34m3nO7(XWHH98JQ{aXH+>Tfg4IF2k6%SQu) zt-%Do0}HrlqBQCTIHIzjIOFqtBo}QR3{di!?B5(r2L`xG3{}64YHOP&eFMI;rupPJ zl6)vEEd1BC3*%$$6MZv=fVGj)=r)8+P-(G?0_A#jNM4#b5#mc)TJ}GPF9ZhdfwRD+^MW=LdXzKBb& z=ew3c*)Nwc!4;$`glTrL*ICIkSjRD zs0^2XBcxU-4R;Fj^$nsLEw-&}oFP#o)8pE_G}CR?dRB=!@ZAf|N!7cG#D2~_dMC=Z!1@~=zvV?m^f95ewn}7Ab(9U3OT9pI`oXBT6#?5o*BH2;z}W87DKeb~_7fQU*+WmC1xs60vG$)LB25mtSmeSB0} zCh{WU4pXRXpb29W|JT*x#F)ny)O-tqm~8Dbq=>3muAlp~pB(7jYnYylQ>&&*>(dWx z8R{3?+fJ0yB|2zp;NKTp0E;eyUkm&V^Ir4(+kH@$04CaHi>#kt*P%Dd|DwpiqAi4< z%g;M>m$A={-qvx?Y0qNctlD-%ugNUskpWdrYI)^am~1v}d^P7!Lv%cM)2yJL|GS;B zyN>0^Jil|M26eUab{6Fc#)r_Jz}zXoYqOi1%YNWxHrD}5@OMUC?oYZnujjt%scN5# zx#?z~%BSslGuZp!lkJM(X#kpS4XcobzI%tNWb!mDi9QOqL(0%L)rPh1Et=6W{$6~z z|2rxR+$l)CwInN;Z%~6zyA#)|lDE0^D^9bUGItzYIPG-|_cD(i(|om{bC!Ld0D1R1 zbz_00{G_JLKB@&S>k_o@N;@ zot_TiFG+r#Rv0tRK32Tw4=1E_bDYi0zYP!f(Y6~qtS`eCe`TKn=!$9akgTmg= z^~|u}^SgfewCeEnIpVGSSTj|$k>-oED=$2W0^qI2&);q<^rF-)E0_6FNY^0iL4*j* zIBVaFkJvPxhTTIhHC(U3K0qwt(XmY}K8+ET2|c)n4u)n5;nEz~REO2?#b)-C76IaZ&sPeIOT1h^u@r_Gizme0i z+NxXDQTZ?UbA(D%G?Rofg`yP>ynErz_W$#CHK7_;1XR88A(wm7=DFuV#@iQPv$VIY z{J(D-L4t{_bwPyml#5cRnYp zjHv0Nl2V5?wqxR|DR$TYJKL##z_Z@WJ^PFXf*zV~bN5k8Nj zHFKXeTbwsOKZJX}PjH(A8hwk-b`zPd9F87_X9k7@L5CmaHm{!;pBXW(jws0HS=IJp zrR$|2)yy=EYUte;y*VE)Ro19H$vkN`RE1n=tfO^mU8hr@qJ93EYO_MtEz_)~*)Pd< zkh~9(HL3LBs?|L#;auVNANlVSYBMK$NCb@5UN<))qnrQ;_bsxed6+CnEs?$9?pG4! zG-+b+Kd*5T-FqENT3@!czJFeaA_sZ$9a_+OloLX@f9UBs>Hk4|GSG9}u3Pk4yvaNI zIGR=UHO!Ub`vsgo2p#KxmK@6c8gsR}99P30gSB8jUjk551SYvu{N3v`xw(6kI7&4Y zy%Y(q0Ui=PYz&!GBD?A{d_c{M1?n62rXpAHyVqz!WCXkd=+}tDK~ikxL@Gu%R~d%B#Vvvr>C5~*P7jPQn}P;7>Jd!~NP)2%WWDaCRKM~VVanaSPgv{b zzUNP@A=)+2z4W8YQaHm-m0%_ScZZY{jx^?vefYzMLO8Ps&J1K;`V44+Jd=SO-I0AW zRMoqsuI;08s5UM%?|#KDs`N`YlGcU08+owxI*&C!r$rg@v6$)v{)a;Ja7kU{M>x>u zlbN~T6z(rqMgni$z4#A512e^GYCiYeC8-*d6LpCJfe@dgkfMuhSg_ z+i|8ia2|luwMo^jXrM@Vfip6AN9$%QMTBVd(7%r3K32VoV z9P4vkGzvsUC#87f`R{|#Zg*_vV;bRkL+5J^*dDI%zR#l#Cu06_vy(xp%g9{zmW=)- z04|(@UlnKHm&_Op*98Wu)JbYIiF|!7ER3<53z?uZ7+{E`k6@|^`pU;+8|<|ex@4fj zr@TDH1Y2Kpq`JtZuCi_gaWifJGf+a>Lsf$%b6T`tJotgJYVBFHz03(V+*pi>f%trX zeMj3Jw3daDWIvwCQ?*lZzLaDIX(i)Np7)B7t)&w#yX>&V@N&2sGIJQoioxOQPrLi` zAI4zaKk`;O3}sN93X=5&Vo z(Wk95>zpb|!OmYn+t`Sj%O+;h>hZCCXThHaoop$%LXq{!@ml;5u$%fiVQe3RX&-BN z8BKuo?1N@%Q~gH6vWmA~DW25i|8z>9RP$EVOJbAFikI+EO0(ic)`Y=1SdEUUe^%BR zv{xu16aR38iZNNhZl^f!wSJW1ab#Ovz zLS6CV^qG}=oZ%@Bdr=lTy|&Yy5YC$SfzNu!F)7`LJ05SdKJ19VSW@9$X&aTE1_t+#d~ewytt8^^ z0AXZHxy$9t$yf}-vv|7VBpwKeA%B%!kBIu}v@sJVb=a=dg)$1Uv(KqXcqEOW7 z-_wZ|0e1t0bu~ooYvkhsSZ1g+bbZMCm7X^2h(U1nkB*+Nzk`auK&tGeY%nZn`-x0j zhUn{)5SZL}BeZ#F-MQxO&}T>HbE6Z;-@;$BI**uS@#|T9iON!7eN%<}6lQr_BGy)I zK7B0BP&Mj`KslZATLKdnk&pm9G_4}or=@iZudFonrIwm8KaFAfDfspALJ*X*+o~YU zP)?}+QRUZ9b7n$>l;#Wm&9woMRHn&!T`p{8Sv*r3i2*;I*#?++L zKw6FAuh+E`nVYF&@d`%Yu$eZii>Jq>8>U&>;E4!7$ypYD);~gK#*L+|xPm7sXWB*n zojaSb<*|AMIdQ!#b0IF~y;pAcHWy_e&5w<=Q0TXt;U&!FOJx(u+)4cXZ0D_KJaA-u zCxCCNHwskiNn+CPM~T%Oql?M{?oVhq$BXo^CFW=e(;PFxR&hD_C*ugGPYJMR9co6E z@bmqcm)$hL?UxN8m(`&m9IYF2^?l;?P7`O4Yn!x#m%`R^>puh zCF;3SJ$x3L<(;qjQpQjOLSp?ZNJ%SG|c@zg5MQqJ6#e~T}{aa&)9y>`%IqO*! zhP)abSk386kDKeh@mxc?VNcR!E$c@2z|U@jN~W_xF1u?IIL*%-a(%;#LM^!pGF4|- za$>OeqjgCy>E{q?(lwN8_)_ofXhf>a)d{L^#S z#a!DxciFS?SffpW&T4DH*b@KBuHkwSS>fx3T!Fs1wBf~XjweKx^wP1_kc$od zV<*w$f}+cTd=aj(u$5mS43iCow2^Pa>wyC7hmdM>zz4|X5DRcVqabq`th^#flh*l0 zV()qM7@~>u#fS>;B>v2SkqYpFl%Gx{-vs%-ink2~6!> zJel^eRh=o73mH$0jc)GA&-3}eQxL~Qmz=vZcnSY_`ICWd_e`6}U#}$iwXhBsFWIk3 z#NMk9_h$#gM1UU;oa%UI-4urrq|)$I*)l<1WVv*Dd9a2uYd37QXTlV@Kis-~wLlEo z9Q;B1$AhOTq7ib6XVnjSG(2$B4fP!IkXC&LM+~S5FJHZ&eGOawFl9a^>oIl_j(RKY z`o~Eu}89Yiy_O=t?)Uze6(BNXRYRT1J+I|GFASo&T}}XC6jMw{PJ>Fy>e8pT~Z_UnRxq z@r|N|?H)GQpq4$NL$h?)_c>X$85e>TBL{vpyVS8HCY6|#+xDgfWK~%c$%eJN5f=3k z=R#}Y9%5gjaXgr^wj$F^JJ^p=B5p zV(Z#<8kz7Ju>Oat?B{T|1b?cH)m~=mOoF5AUWNnL$)w_|T?$nfi*p{wukjv7J3Mwb zQ4y@{2s!8FVI%g#`bwE4;i4Uj6ZrHHG@<;Qz#s1~DL3PJ8?y76L&4^ouNLrVL2ur; zI*f)Iu8A4s5mcrNhMirq_W4pQ_jOMQe}yW2H0D@@|Jse+I_278S(81}w&$R~jn<0y zfadiL{`-iN<8ohCLfg5IubW<%%B-e9?8iGU#we`%TH^7Bk@h$FZf^xChZ)Lr?yV+u zY91&7xPI8mlJ<%@siy=GMZc;$@M=qENSY7hIP^EG8#6~6r0H;J5ji(ZXwAf~R78|E z<5u9`pii}`6-88oAv74j3t;7D*%cf$m|mkA#zDvda3=!=3lat}d> z%57jFV#?)!r$7^%dWR*7H0sy)sOYYmO82maL8jV#>cq+oGarAjtG1N3#@?P5(HksLc|*9|Wb#?% zuLEz;jTb%p+H#zJ_*Ar(uqvN;WpT2YYIQE9cpK6M$34@MgWpI}qDSr>ph0aK#J2qx zOa`59V+dE6&g0w`E}gPZYSIaevgy2kv_@#Yc;mf>wo4qsQ7;(ajvr6l$UWADsN#2* zYC858)1r@?Geh0DGoDa{tsc%TTylU!B5$C~I%V=HZ{b)?49N!f>8H?f8RxNobyLfX zl3WAX{SvQEtkHZ*iv1F7Nc1&ixvo3bnkzVAraW3Rf>&tn*$V9AdW^FHVY?9_kx;_5 zmBe`s#82$L#li#KNw3^KQgzHu5L;NOP>v#A#T75?-u7e7KylnLfxfX*&}O{L&!x+v zS7FiNNYKaJB*14ovESIRh0BC>)a8f`K`F&KS%2kih5f!>+fn3B4a|`tXUd!}LrjKA zq3(6zO60f|)k>B2{F+mFdWHd))uZf!Dw5b(cX0FO1nv+)^4k?mJfF1Q@^Bus&ZQpD z_6QkYBk-AbnB3Tj>~b+Lr4d0JB2vY{CAm}-|nO*5uC=X6_}923G4z2cY5*9}Z%qn;tB zaUo16&KFE-D>t>3V!_{s+~)c<(aD0CTLlthpD?`dcASa~dV) z8^zkqef_fh-f;EUzDgtQ%WHtmpE+tcoe`bwzDTr-ZcS@DNk|79jcV7kbx2??aupst zgK9Yi=^l5u2@!ec%lh4gOX%?P3-=n=NrcZdm0Bbzu_+!r*;xU7epavQM9qb)>G=@r zE(i&8kZWxDb?Eq8yN!k<$^A5f!fULFictFCBf@{=m`N#sjC&xCLaC}L3$wk`FOW97U~USx#{sZ ztBy5P2vc$igh5@D^Ln-8@*#OFK6sq{qvxEPB_-IY;3guDItX*`&_}7O`V+WSZN@0g z7sbdAEm0e;G3=45>F9&Z7*=nptjG3r1d=_pj)BV?8yZ55`BVw^T3kxd{VNO}&Y+sJ zGt*36`&7?dZT2i;Om`3RVSAmkHRPl}_5cDg@@u|QI4`JmDYSVq0$Jl@tK(OE$ltpM z#ub-DEW+Us@t6Y5_|?Yw zQ(&=n^Q>%)i$&J2^>34j=F{F=#t>XMqIR*#Mjcb`n%W4VFPeV}^KF8zTt{6{sv@t5 zzh%Zg7Ij+()v`6fX>K)DiF0`9)L)x18ffg%;wmO}93DUj-8V9)e*VZA=r#emV@jzW zb#}K1ewlXbkc5$KqZhl9tb8{T`oU@);^H*?f#>?ojl>f@kmwq%k(#Qeq(@51u^(OC2{#X#>=Pe_#E+9f z1PERj8K|#$6g#{YK{y$!oYCw(aBwWo^p+7uTcj+6&c_aki z-7v?WpwMsIo}p1TCi9&-UPkLcCsVR;_Pm7nT z6sTxDqzL^yI>GKCLzxYOTS&IY%xM#l;hNT^8yAQz%-xOSBWs^9LL}XIbierOEp6I# zUX!P|e|8xsKydM0;wd9tU@kp}H@Z*glP5jnA9FVxcT=gai&mFrHUd4R&{z90i%6_# z28Heg9vg<|NZsu)mAgI7+bNMgrzX~=5*G@^+3du`-vk{)g7Y88LJ_V<715wGiX+@X z^D8{ya@9$9+w*Yo^KlM0f{oLMma6Wj^}JoCAuIB;zOl01rVxzY^Z%%?2xuD*A0Eqn z0e5ar9L0i#c%C50Wkd&Ak7$Xwp8M|biAxca)xbASFo~7ZU!JUprQTKhgPWfB@Lp1s zmFReL@HdnAu(2Mj$C~x<-XHPslqQRM*^RUZa1F-bjt42#?zdkrjH>BTYMewW4NjT5 z5;@Q*`|+72emfAUAnjO^qMLA!f_>ZxM8k4etTY^%*R)bu!9);s_{>P)-*bib5|7`r z4q><-tzlu>V}X3hsyP+D*E_2%(*z&Tj+!NVofyRoDyhw!vi z;P@wAFZ_1nrtc(?FZ>M#X6Pr)=``|A1)ZnDS9=rlT5RZP!*B)!z41Jd^?N^pb5<6@J96BRmRuuWvwYEJT*YN84Y!`aIo8_1$R65Z*lL-EfdkK+7}nv;~q2Z=y>7I-OPZ`%L*vIuaU=PU*vb5&|)Yfb~-U34W?c!?KlfvB4@r z&Gy0&lgn*{A9Z-18`5e9HpxZCcDXigE*OZSTCp;-qdh@m0Ysb)bHK5zCBlXtd=FEZ^w8I) z_)D{?LQ%Ohn5RSH;Mb*B0WGy(<6>{CekwEB?Q<=9?GVqX8JH`A^j4jQP+z{3G%#k% zSf`|YXNoAxy(!P4`uG5e%llAZCDAIWV7h!S=)cNZ-}vepfQST^+$=PtW84h}-1x@rR-fiC}bP<0@YLO9LzCl17Yz1i=ce*UvB zp6t3G_NUZ;keVpN?ANR1w-n~%+Ljc)4G&;xljV8qr8eeblCf+N#B?N^;@poa4rCJ4oT^7IQFM|fD0#xN|*HB~JzZC`8rphqk%87nw>CkiJiS zlxTiR_{V9AmSskwHfieX8ptHfx+@;eZ`GnaQCf01RA6i4N(c(Ax!89K@?y z4Z0w;J(;W1)8n^qfz-PJ(qZsV?Q_`WWfI*(O9nK3v44;WW@UPmr6igCLPZ;&-M$3) z3fYG4P1{F`)jOUfwynqh#$wZ8>;a+mjrf4A452jwS&zi|w%J|w$vW5W^A7ADo#UTR zP?z;R_LorR_qN~G3NIa~I;isH7${;B*C30-+lDi(YMGP7zk-*`p!`w@GXg-JuJ;9ic~B;iX%0u`Hhq<7_g zGhuVRK$Duwsj=%){jcPUpu*&@h638)$GogOP8IHcis)uXv*g|8bs*WzC%js&r5nQ@Yn0ZuoGu+ z$Jbbt$yM*XZJ!ka(Zh*7dDU|lY{KS-pmI+nM#Si$6y0cNL!XFk)RcbXtY@AJGgNI` z#iBt+%5mCX_>+3;=2b3DZeGmmsf}%9vVcw*~q_eTDu2s&ic z7fVstyKf+tZMJayH%l`!=%2gChv{E->wex4G=@;_bYtITTfIs72__6k4!GK_KD}+h zaBdB3pz=)>cQc;UMRDyioONyS+%)$JBz>iuNpty$Hf5Mh0VYpRZ@8m29C{C0qZ8<2 zsLB||T8JeOV&YS+DHL&2gI?)5NKN}?b*=KJ`*YN!&<=MkMB#j8M`U|d#uhnFEN2q~7+pJ|^b9hhgmpWR$ zCt)?g-c9s=NZL#N+|pxc7Jlvrnp^OXR^W%8*!H{OXOI}sxkm*kL*UFu14KIE1$)6z z3a{UL9aR>=DSVft|9Jg8`jE3=j8CNCnwnu}e&xO;((yPG8 zP1kg1RciYSe`5TgX>{ANa@mVKYu9zUcb`~5gESv&J0CC8|no4Lj9)-@+m(Ik#-ODF*t5G z-?$dSf;rw{SB~7T$-KQcax2@J!Of#oJHq3PKY~kbMz{otR>NKvSMh524ryR8>BKtW ztG?)UgukXfCF6RyNNkbB&|@U0#IlPY3XA(#MV4&ar0sL9_t9&&D-V;7;C=_|ilEs{ zz=`47_PK5@j0YL!RFt0&ML@h4_S-uh+JKWPEjCH;>uUnLq=f^Q!(wR+6!fkhf~ z9IwW`-P6wei2P&YD66i1Ee{kZ>~co97+XwGd)48u9dAhv`LXU~?Bva-ET!(JABfs) zWx5jWR@?E$!ykVUKi??-HkvC)%LNL2uqM8OaysB<&?>+g9gyz5|A@6o6Cs+tbWA<;)AD>Fo7`PLJ*=v!Js0F zm#8U8%n3>D=*S>&`g7ahBKHzlgHQn7u>_Pd3$)Ppri9uop}wW1jd#N4VIk=yAnd>M zF$YYgabf~|CLCqp+v@5PP$KtG&RA&@(8hNZ&@<`_cNFOd!O9|o%6$@PU_ePgG>JMC zsySBLAST72dKti$3?BBiqp_ort)r2H0J*J^g$22TGoiDdjR(1jlRM!b)i72HDoYwF zMJ&*;(0J zxiXNu5J}0(ihmN8B~nopRuw0*ceAx6aIEz_DKe}qP2lHG4a8B-*KT1 z0*G0_VgDXe8c|Wqc0tJ#$2dRJ*Y@s+C(*iy6OCBLG z*kh{Ydv{6#Knl5=%$g3sS~Q1BX+mm%|#`fu;d1ZSVfO zGydK{nnpJ6w)$2UtQ4Rl6Ii;MxjVSu?+z=42EZ3BvH#8wT?E|m>%qRYL!rUlQJ^n% z-&tpbMt67DHs0yF|8=U&2)-na{tEtj4nS%j|KVM*0B-L0R2#cOeTM+4_xS$kA&}lx z=x_G@-9g=VkvQGg{dZy*5Xkp4?-JtRNSO|>RV!0a-cvxMNPBwlzm38q{JRBO_3@tV_QxHjgn8Pa zI@GrM&>$2`dYQ)m*~XoJl?B>3JhL__G(NL5x<7L>`d_6Akx5mORX8ZnL^;sVIKV@a zLqy$KB`{6ElTE_GMbk`7LP#ZCTtZYhMAKYU(nQg~MMX(Dl1-pkB}7FjRMgQ(0qP!j zNc^1oZ0zjp45n-rmPY)XY^KJXM*NH%JX{?7rUslQ>}>qTM&^e4%z9@0CT#4+dOT*F zES8LhdTc!W44ei$Y=BZ32OClek~wH<@B9AFa2|vb z*ayn}n~x7T20|bUuq6Y+dpbs7%M66~e8Bm?>E4fVKSqiH8%ZD-0-*~CvB2l2{&#qf zQw4%05McgqaqsC2|0iw>*#7T)|Lwn*`Tvyfzxe;Zw~Ch}Ac28^i#PBCs`~c__YoYK zh)GD%&@nKfpkC;E3?Kzy|NZ`^pz=fz3j78l9P}MjB)AU@k`W9983r30nFyPTiiikk z@nP{+lsJ$AL|80HOj0)CyO`=ykR*PXtf47YU!1a5)&l8C9ag)eOiPI>`Ni*nbsq+}>X$#m|naeoZSu6N@x$6Y_c^gDVg};c6i;8y1 z%u4sj&CALTsjR*nQCnA5p3>RXoYC9Y)?P9>HC!<}H#Xj|xwYJ~ySKW3ecHk+X&)fR{QuWsVYTogGRs1KaH*ZxoU^=q1 z;dyDnaePQ=!KsPg8SI6TRb~=rvD7eCQ6yLJhjZ7mS8?EB@O8A7ba5iJa6f`T)*)mC z*Y^ZxWaNeSgeO$yqzTRJ3!U$7tW9bP0WhF%e-u!9mw^7wnp)Lb$B)#^&D6@oA70AF z%U#36lU&8q!U2K2ka2E;H<2L)E^QOy<3j6F3@$|i22?@H1w7L`3#?#EP0HTg$kxh~ z$i&&fk;vK1$<55g6);$FmXUC#r#0i_bar$#?`E_n4rzA+L5yMitQs(7ubCN_T!ClR@+C%Gw+y@M-}i<_gPgR`rdDPT(#vAzG#%e#=$_5(Lz7Su{6 z+XlWEPgKT*7d#W*CdA}@ClS6_#^*hnn%D&NzYRc*z2zt3VBzLMBkHr|fUn7j%%F@Ql!v?@3Lfw&WKs*0UUtbzE5;g)T>C};l((d-7 z!2eE^ykn1sz}T>chExEI{Q92ydHVenQ0$f=O*LX1{lpo<0G(~@IZ%(#^E1RydfD@8 zgn?5zpo*VsW#ek-#%p5{Ozr8$5d(vV$lC#vUz!-yoZ8Y2T<%*pK&Tztoe0>B_YwyS zM(t{mkj~}efGlFLm4`5)bg>Kw5c0LQbao796Nmu70pJDne|_ob>|o(+=Hg=IZbsy2 z;2*emypsPTCqcdbmn;)f3{LG*{LWGLF3EcT`o+b_&e7J&-h#;7$i&sb*#+oyrvJ+P z-#LMT{#WKN!pe9#Yk0bV+-hRu;lZrqMWU)sqrm87W$0$;ew56@8^+he*29s61!TDn zBc&iZP6$9MeJcP8-WA$E+&vyV6k3_tU+Fs>oN^Ufni<&b+x;zcI5o4jurKtE2i_kV z>0?cyK>*tVSw=6nMh5{XEqx3;INARm9K9@jJw0qZ$&4Ib&5x2xOPb4T_#luDh@r>h z<3N_JzWsdw5g%>{{k{Bu*8s{r+}IETF1@q_l(nY1j<1`!s=Jbn7rBZ@Ac>8)x~hkR z1EZa(`(AZ~@bIJ(TSH@^{XPK0zXO)FjYFZCcRar`y7rE^e~%sl#h44--a*Y^?x#Vs z+zkQV98+UxKq796;G%GnnDf$|3+Zp$(yFYv{vf+?SLcKlL1%+V+LuuOpWIcU8C?hfk8pV0B*e&&d0y^-Qk}SBaSWtllq^B7wGp?VI@3#y^nwUOHx~BNec%CE)fmw zz461k1o&&&_OaRPWu%)EoY~^Z3|OXqt;6BA_BOf`(B+5e#5rv~R;@5)BwYQ3mzBi~<4* zB6x|kfQA4812~})N>W15s!45X(sb~9);{MV$=m+_eZPLc4>;Vz;hcT;u=d((c-GpJ zZp+R<)jE<^Wp}-~rOhGt^#C@vT)raGYib4$qVdaZcFN6n*1KkZUDN{YV3*$=!KO26 z`ICacO==M&4~sj0FP-QE**_t%eY6J>yLfnX{K*s(gi(=S+ZjwwzI0Ptzij@bgCna% zKp-h^!vUYToe_M3>No}pUhEd=2hN{#J5x2^?aa$bc}0o9)~3}o+BxRRR?6(xIO{dF zLO^eIbk=j0*|o}A?45J%Ageanwb_w~yM$+6jJZl~-p!B=RX)xb0>6|r6A#NS&5)gA z4EKVgb8fT48Yq1tMW18w(_Zl~<{pL7}^Cj&6N@w(WlHbX%|NdTkZKB^5WptO?sV-J8#Hbkpnltq1C} z!4yBy$jGTDVY`2*9pzqYACmOn?d)vtMad|sPod^kf1ORg&i|#DWdaZHjhlo~;mP4i z$soG@!pMa9X_Y9y zeWYA@k<}{CBsK%;CAW!Duo;9UKcq+(%&u_3=L>pvBI&BS_AZTV?S=e@g6e0Ui6s|T zt@1SSq(vOc=n-&W7bC3_k|;bu%Cb)H!V+RVp*ssrb{6k4a(`43YNT$uqtFD?xM#%V zQ3<4j5R=goQ1$2FaIS60`A&qkXQ19IwB7?^%&6NWKG_l)^wt;jV$kmVkL6Hh z>+}6}aq&?3pY*Dy+swUdJ02> zv0AC`3`Q^00!G7XX^I(i?^2Zad`aH97^ zdoK(awL^b&E)9O#FNp{IVaG1+2@HuNS?pso}9v&{lz8u%S^_(P)T?dcbXitYFrg zFiW(t_Ld$|?wq-9-0d7R2|XYB(8$b`{`Mp`}F zcN#x1$+~M|QW9ho43-XR?^>j+c&sLNyJph9Jjt;<%$UD)dIy=JQ%ZE@bB61porQ+z z3-?0I9`q3AOd*<;^`HbYHl%ZOlo6Y=3aZ--QhUa3_K8!a(uf%G!>);YeG|!ItOk>4 z8Rk!rxPPSU)+DX2VKLwGA3@@&iLTK}^v6Tog7)wA{;Fm2+EtxE&Sv_+WZPV%=Ze+Pc;;S7=dfXe^gq4Zxdog-wo)O$PIL zK^6-L@n*e(qDonTM5VWKsPt;VP-Tw9JL4GUSjTulN6+}<6z&s~YE7BwihZj{ufloN zl@>cky;`!p=^0+vH#Ay@f{gisTxW83t|%C)QaXAIawZaf^tOQQb$_seAZ9;C@tR5t+YO1(&3ET z83hOX_W&k|Oi2U`uRLWOQ6yczkpMlp&613GEJ<+ldZY3*(~W_aw&%%@0Bp zs_U!Qp4AYS4Sk`)#w)(wOP60EQ&Nu#ki&_6ncE)}{vQq$vyxxXNHxPugv9?CTA45V zfle8D1iFEAJbe4X@c87|!zBMhpo4Z1nGnY*0ir_7NCs zGj+#2+flTDU-7iELLZEj>@0#7zyvf}#K1;#i_0uY?f9zG?-3Te9lW?UEpi&M#WU+s z$s??#Cc%XZj9!a%p_tx}z?-(ss+#JWm=d4w7iW_$!6s(Zx5>n)rUnm_x-i%`d~0xu zosw~MY!pKJdF+`N~xe(Cr@ z-{kPbWZ|~mLf^>ncxSGIz~1Ad_=_+(#omKs!x~T3TgfS8sB-<|wn1t>c#6d=edBssv7w***}8#M1do z&v5c1v-!_aH7{SXI9If;jh8w(Mc9;9?()-(tqyBsO)@I?XEWd@9OnGOe?jRT8I1)H z-z0;jcds6kWmGmwDz0XnEBGnZKNa^{^r}~Af7sB^>9LGfx2m~5aaaEt{b#GD*Y`im z#{8(zg%w}TKRz)!GGR|V%=JWXe0K^ryCzZpvL9< z$&sWI&ysQy<)$@mNQ^~RA6&FbGQld3De~H6!={eawD8CD?mu=8mYjv6Wy)#HkUI)> z-8Y-M8!f~NAMzlCEJ6!+KEUsy2ap4QI=P_D=w^;hOgtH%;&z`ydPHb?GSNrP zOgn9Db7&Mf>;rV5Tr zC5vN(8pc7Xf?}y;S&UHAxG+^vE0tKq2(^qyQUz^N$%+`Ewy|NFpie4U6(iI!4oVX| zlu8_9gu2FsX@VzG$=Vp^tk{8%b^KSpR_Yi2`Sc5Cx0zcNngx;QvzG z*MWbJDXw+kf8)4k9G@NdTZ-!`_`eiK2hPWFZ5*E+_- zj~+hBpM$C@pc)FAIN-Zcko#!hQ&J#55Bxm}sGB~3kI|(# z;1g0*bmKm3P>^ou+i9Wf3z zoER=KhBXC$cHl_CxtNBKhD06b_)Njy9k{N5SJUu!;O`V%7vujaI6CNFDwL=Ze-o*6 z%=*s`1)W(-P?7?@mbzPrgD6a1HKH6d9CkQ}Lg;3qjHNh;8ff%?{U07NhbB-0dwmL> zp!qbqLL5>YG=f4L-=a(YlS6zXjXEy{2Q@E+4meQ%lLPhbFoc#)42G=Ju>iVBoLO{uRT2GDz!T#_AZ;{ahQ5G<`nnyW9 zZ8&g%WFp`nIJ@hc!u;LJ7{tnFtLmQ2%e*V0B{$Ffx=Y!4p zv)9QUC?pup4NlS6i#zAa9{f;nz)PI-?Ty@PhE?Jmg@glMKP*MY3nCSK{q3_OhCbGQ z*?<4=MTl?3ADsUF;a-(T9~n0P4Gri1f9sp&2aGrW_?d0bAJ6ad`(fMt+OzM@-TU1v zommH!l%1OwsAzi%1r}yY)aU70XkJ#c)oxZ6>GmnE(Hm1(ryr*Pqqu_GJYxlYLu~~E zV}XL9v68~VU;LxlUFh*^FSCi@txJ9odoN8~;b)<;IKXnuXovOsIia?@bi?efX-0^& z)py$q1ThXNDsgLouy@WyF= zt1vfpt8sFs_m?}fe17S5+;8_Uvjezzg*DZ*NuU6fA;F?NY;DQY*49CsZ9De5*S9kWbx-7j6x?zj>n}-)D91sk64Z zr`;`16|Pwfh}6Q&&T2YDF)K=sLPit))Y5YEjZd--S%!v?P%<^y3n0%4feiu zC#*d#Um36cO|wr?M@!SOu4}Hp>TYvC(0x57x~)X}lEX=NL^cev63k{L6cexO})svmyCUZ9~a z!;TJxt03=j$|(jM>g%wu&Ve~R{W&z20f?{Ja7pS^MCq!)r3i&H$4d==kgYT+{H^e) zs6=6Ge01_#@yQ7XESAfSlJ7!~Ay*6R-NZ%ANpn?KN%yc_0Z(T|)UA&{-UxV=qhRy? z{n1ge;c)K2L>?a<2~Q2YJHp)wiFk&dBXpJ7fVB!dv(ol~p$s&xBW$YvL{9&+bX`~L zfgGwQbCTY&h68t^BI-HrRa4svKc;Y*dD1czxIZ@TJ)wCl{69$vaqmC_gx%q%|Dw0- z`+2E+S@T!6=RoYI-a;2i?-ICbL~OymIsF+l03EJpRO)qaT2t3S``pSJdb3{pLxPcg zeXLR@?`Fv;jB6ZN3+6BCbSM)u`@A7rH|ojbeKpnUmRZYtYt<(PbZ){hlkSCrzSn8L z+nC2WCJKfm-a0P-<@Cnvxhqwp<)dd-yQq4_g=J-CRZ{C*naCOAz6**Ch(?A+aA>&f z#)6Dq=H}>Z%=ikW_-!-LnB(3|bVl9qU=} zmq3SAW3^EixOAE*SKD6`>8+HtUWLKF+0IeK*#Xzg%XM~g$Xy7kMGelQ1~AlTK*NXq zk9EK`kYL8ZSO1j*8g5L2(c^+PORGGSE5N>2;h} ze?S#o!Kg!aZcx%wFwouzc7R5GfdPgli|VwLwmLhATIV>!<12G?_(-JJ-0I}4M<78k z2Z!(A?3;XNJ>1BXlK~F!27WIP1uoqaxD@8r8`;%Tn7sOiCwidbPrzy|p6DANc>#78 zu4nHM-~g|2z~pJN9RbrBc<&`JerACV-v=ynB>&?P<;9j3rh1mmB9NrhMMn@`S2&>y`;fMZM=gV?)Z6su^rO3u8qq86$m)^1SSAsx zZrOr<>umfA#o1APrwtO-(&bh#NUUjrZF`p?tC;+$o}N)aFb6u@Wdj8~9pLdPRvREn z!J}?kKdal?z-X9N;@N%>GYu>%WEs<^>Dmyd`+Q)31Gyhrg|cai(;)U^hBFrz*@022 zgC+c_PFF-uFtg>NqwJhOoes==hYnlF>NWi^aG|}G1t0;b``qoDc@|%pGFS?a8Q>?C zMV06~Djfy4Rky+9p4-^k0$aWaEp2mlYQ;P7CPyqf=a0H>R8_@rs(nA{5XgC{MS%74 zC{Ccsl=%s>R%YKu7)@DIW0Uj%@w6^+=4^& z4z*_$6p{0_0_$3Pd%fg(QBfuM(v#P#(u7V!|Few^)>xt#_hs;wn_kcBb#8+DJ~h{V zZI^-VZ#$@@{q7KR6898jWGFa=!lZUQrZ`;Dsn z`YrBEQ?6lP3Am&6Fc?>`NMGiB-A$qvw3rN_jq6|ol@mIOgU6fazL<^hrd*|gWi)-K z69&%$iTI5z+c63iHOrUEXM?=!cTLYqbbsJ|pabCh=?2ghlj;wdV^2nUMz>C3Dt7gV zyO=jWdDkwvS6_e5cD+-&JweRTn-x@S0(0|+5oVgH!-_>#S|?35$lZg|@sC~fvOjWgQ{%3$GFs8<>6Dg@@1RDTvV*tA7WTCIG7l3*19e{KL=MIE2ShNZC7Je{}Kzgf? zhLGSiaLsH^@+|iR)DL)oqT&c8qm!SemBV3^v=(RsxF96Fm%1mk$b=lC>M$4^!e!0K z0pc>bMRc+u0TZC)`C#8DD6qS4_$fh^m=(BxV(cLtxP9XBzP= zOLl!7)?c{Nh$BZ)cU!2_km{d2S7ZW4!JO|sp~a7ajNpLV2^1KJrKf~&Bpl83EI1b$90c3| z@20;Lei$SMSWA*8L$&z(x%qiJ3*88uwG}W>w}gZ71nl~tk5=;~F|6lrT0YCMVOI8( z)cFF}*d!nyDE0z<93BTSX*fYTh0%v1qobn;7Pc;%d-@pG0?6iAExc^`$1iMWE36;C z79K!Dc~EK!qkn3o%q2K|z`ZKUud=z5dpIoha+s%ikc3%={Cd|BYu`U!hbu|p<{+FFH1 zGJp4ww;@n8BO}J{g(C#&Brm*0Clv1OyU5e87lGr19{qfIiyQ-A5eLP0uKpNbei%hSZ9) z`Dafg%k6alElzel?E_YE?A~x6@MS<=vB*V>l}cawxj8z{69fuUN!<~B$7&IAsym>{ zPAS!GliGzpy%0fgolKpVdGu>h;LG(d9UQ)=f86J4?C^D}+x>3byguW!1BaYoqHVxr zz|#4MxD%M2R^x@=c}hO62#ZAgTRv1|wHLs1nVoTHoh*~0C7-$(xQVmjOdlbPdiRrw z5iZt_!skMIL+N|{^p6I}hW&;0;F7qkELBMwZXQ->JeBZ6f_kD`%A!5mYmz=8!~e`L zF)qO2z#J{!-)b+hMA|L|<9kXcY9#;2e3dEOqhgrop5&IY`sk{6$ul?et0Nv>3S1Bi z@e5$}YKVCgeP2F7kRPP~+KNK_1*9=Svsly}tfDj~F?xQRjzX$G13`}fRZ7d4L^!FG zpFD}U(8+fM>yMsx_?jXTH>6dpYIT&6yx-)^sf+}7z5E`8TD+RGZ#oQPtm^E!;2veSuNgIx#AmDK&Wrz!d8>Gl-uG7e2c^kss{;iM!Wq_9rkRxGvL>n*h$R&=`U znZ{~S->J9b+@l=}fvJ2HVrYa=A=1}gqn&{9P}iS3*T6knOB*9sp0AZuvdZe@zU4re zECy)nwxZF7i%B799kuBV_k^TmY6N{#L#}H)-hW~%)gRwmFR0YBcD!3S)cN@Obu3$F zrHzfEHO{7b1@j98%;=}hjFs2HGoY41)u%;SlJ(V40WcN4?N^!dTOsRY2Ar-Ai=2Ax zCD~h`*IUnufpv;$RDU}a#>!c^%6ZMXGiUOh&gDBv$wohB2#Ga9bK77p)7c*^ zK)eCq*<=i0aw8lSVtFamFUI?TPwVQzii=2+zV#@n4K_`NhGmGM}TWjx=5 zlv01r7w~FIQgl2iMV#8?z0KDTk|7^Xw(b_^fQZ8ASi|zHa_qP!%w)`v%FtW~4=@df za9nW+R)TRKr9tW1y&Lq3<&qhI6Lxdw5$`2OGcUrX+PFIF0n+jXOWjbFGiuPYBV!K6 z?_(NwWL!d0G&`f9Zd;)Xp~2vmpv$CGCB^QE508Up9Yu4&f$>^SR^}1j%aayU%m~Tf zk%~p-N7C3S<`qSDpX>AqHd-(}db~p21NReP!wd*LvNLE`7UuXYB^R*q!^;;X0lKxk zi13Tcxn43~McR$J>+!vsPb$;($95ieXt-FEoc+s71vWV`Vx z)r99~=&W*Os)Ci)cD%Aw5uECdCpZ-_<8t=h6H47>(z63y>24TOyfc_OY{llqXpCq1 zr|79gFn7ekn}nKv>9s-!)bj55)w7Q)J88o4AVr#@saUh`36=%IZp~?NY|b4gl7^H@ z{CAe`$by}ox1rJo?=UI?Wp4{V3@w;(UO-S4=k9>c3zOLcl5*V(4CZ8o8tpuHHUxhZ zL0>z|xeY&K?FD??$j8sudj)#HQN8Ji=VEBTPM%r-^g(Z92?9uSbAb+ro_C4Wx}m(e zgd#OG@Z`DIAp%+Ng~7{M9~IgI&3M2!U-1{Z~@L)@|KqByAAiZkaRIC`gv`6 zE0D51XnH)?S#im{?u72MEw)=$kYc<=4SY@oW|Q__J`(3K_-dClN_Pov)2WCj_YYit z9N;(}#&zS4zl5K8R^gSO&1QMe0 z`nn#9yZTvZ9%7P+#T^)T{rHZG2=aEfk_bs80^vi2?hLUUAV0c%8d3twLSc4#Q=r2I zl=ndu#WRuW4O0~Ff6eoIP-x0b4(CF7?`?u^!^ALD4Y?&!+%bjf)(ygOxTYRkUWRErZujhpM0>V`VXS}Ea&PeEYwr@g=hy-$~3AFHxBHog-7Pxq=~;a|xV>7@P^V(S7a3PO8w+HJ1H|0=ZW=9c(|RCBTZQ~@U}j|Mhr##e z$MxA;;}LtEQy-_saXJbItUHktPkQSzL5R7f{pt|Am7-Pls~sHIIE6<zdKcrz!=z9#X04MyR8lr0WHT8HfbE~s60gssn2|Tm( zPcOhpHW0jIa_=DM=#$Y$BM(D$K-5J?OhS++3hcu)332mD_EBK?Tpm0~ zNzcpcEf`=RXZWzm{G{L7x?+vY@j5v>zx?hyRr5cm7eGH>`J!KmhiB~`mW^}OJDA?j1lQY~maytnakeqpiA z3e|JABsJTt$T;)g4fJ7)*ZDSmRr&3U+y3|%#4FPdLC*XYVx>k%=wzyW#_YMLv_SWE zBiGFv{A}^AG#J$TV44rKo2}}C-p;P55?ag$2VHsBRrM=$?keed>F!WeUUk%D zl(ZjlIV)kiPjtk=*tle&Kg{LH2|VKD`kIvdBjra-jzm%lABw~*nvQdO?<9oj!*qP^05uG4l2@*m{f?QN8dUh5yd z)?sg>L*NUzl~m7H~J~q*D2lE zc|-m3^TFpQ2on8oeG%q4g+D9~Y54C53H~(1l%mf|ER#r~S6-x5t|j;Kx^R)dbA2~% z^#jkU1Pfdqqt488nHwc5o6brfX7tLvZ|6>e@Kr zERzwOUXuKNpYSinLBA3Fc-f^h#A8yNpPC694{`F3{q^U-heMZ~U*u>c16qUy{7oH~u$c_umTcU6Q=qH~x3ytltVI zFG+sfH~tS}^)bPVOOn6ulfE+k;kSa+%aTQLQgxFxU4s0}67x8zhRLBWLD^-=@;Irc z$+a#)(`AWGoK(x?hb}=Esc<+@H*_|Wdr9|#blH;HN|LH?p*_jiw86hHh*cxBT+v%vQgB z+gs0n_#_5tTd8IKUZv8$RI0Vp#;vZxZEixJjT^T4&^t3MV=Q7~G%GBR!Q%Y=I{)o1 z{@d}+%{JyvrqmeATI;F{i!jw!ElyHaHuFzD#r4kR-H@oMMH#+>)Sd+PmZDTkOKOvm zmz&qNKop<8ytk(M@v&+YekN?T`4*RzZ|I=d!evX#PMa;exTI#;GBjq6-^L8T3D*L9 z1J{D@CeUFUj-Sn}Xp&NMvVDjAJ@Zcb=ii~md}zVKtLOUq`+9@hEq0&Ud>p;M$>5F6 zC^oYO1Gw;u?^Mt)tFnqyD^8<;bT(`W>W5LU*)G8}CrY!>y^af1>5=8sxIARSfYe=) zSw~IUm2cAHS1>rofI3k9?C2vT|A6z;NGt13?%dfJyX8h!+; zHJuRptRkuo*0VaoPX?aKF385KPQyh|AzhTad=Z&~($@zry?=TVQa>{oW9fniNsPC< zZZ;)JJwlO|qs^MeN=25Mn-#%swpeW3e;^q)kb@Bk2gn!7e7e=ZYgXRcFZcUcV{yC> z?46VcE)k@r>7u>J+1@l)zu7t0RIj3`d6m60`wP`j%(th`5?38ROHJ2y&p$bI`vbq( z2EN4U6yDa{OJrjtG&4^!qn=~3Ps*ulJ>zImZf%X(ax@FG#$SJN(v`37Di8aYHK`8Y z_BZqOT?IvERdscf^f(I6@*TPxn0FH9)r4!5VQ95^%t3R@kV8Q`ae|RtS=g6U4tuB zWi!CGkPSLtz5}NMTnCi3<@wk|59%|9{4x~!S%MTVoCgb5Q_45Pyjqwwx)lVr`ClrM zkwVg9rx7n^fe2sw8g46GLH3r2`Q1pj0Xp;e)`I}VVRnH5ErMwm@$}tX(mWP%tPI4u zD7U$Fr8Cel$ga@{-{WiCmOea?0IF5A=L{h+5RwiZgYOb1SY%0{u*GTrs`t139rfg6 zw*|t4p{QINp4vi41|IR&vvdG{_s81;AOX3yb)cXTsG9bU_QuAam4pHRWtn3uL7_PG z7iDTRG%P#~m=4fjZB&_s*6TV8dbung)37~BdJ&Ih25zzuzSRPNLGuQ9fGpXHf$bwq z&kVb959jU8!%N-2(2#rf|F1An&U68zE|=O7sMa{n76=hvO)e{Nw!SDK!!9#BB9kW| z_3TIP4l-84phY=kKvvFD-af|JtQITFJj*vIBW+AcxfZwfl1H9ffb)$@Z%^RNkF78uyfjr=;m}j-v^CV0-B~ZCw7W#;RBr08oM?;a;sE|UK zix$X@z8oIs;R4v6PU@06cnr(iCEdE=u@Pi)6jx+tilgEp;&w%Zh3*cG0wxRE7vSpM zgPeOrdcLZf6tNS>t7+vv7*_C-Obr6FXnPg2$T^XJ(pUby==UOJePG~3@1Ai3=pkb1 z_xA)!e+C{7AkRcU*Ged2f5;l1Bvo}%Oa%ssZ;j!Uq2f8eT0GN;!OLFj!7$|n+;dP{ zA21Jgp2Pq*HGO1kd`IoYBy%N)Ab@iky50oj&pgnzvy4(d0`s^EjzfDnNDg!bg#;Wj z%_CxO%k^J-?MiL~{tZzt7Kfq__yb5rV8wgLUjq}$X*C};a_wT)QIjH0bFcdo0DT{E z;4;cQ(sUU~71!y33%)@>KBPs;1;~t$%y9D>w2Ne|^IBNuFTF;`rt1cbvJJk-;S?y| zm!A$mwT!_L8d;Puxjukb;O+vnU` z0Lu(@cnAFB-|t4c1U3ELZUlJA4EVYQ7P~64l&MWy>@IQ^Kr-ieeD_352mt1QeJb>S z=L~1!6Kz@+IPV_0OUqtA3;GcF05*uAiB!t%DS!nIuHSCTaT8xCS(P3zi4!b~^-Jh}d1gvFo=x&tusf z=p0`6d59-o*M!^}Ev<+m=C3i5X+*TKGk*m=xohDlKxqK9=C;cUm>-Pb%;~^=43<_7 z5VVAFz8Jae#&$5-6r>*N#3dPnnT(Y7Z2{8#S-;JeOXO{59xGj@<&$TGlGpUB%GIWd zTRC-J@h5Eifs0qM&Z+CqvCXmlCS6q}yRJXmCcELO%94HVgAT91P89iQ`uEpi zy*Tq4IeAK!)1F6dE+n)IiYc@LOn4eyJhs$;aR)aTc<=j6I>5#Xvsna<9tbY!JS=a> zSM?C!s0lJYxMzQmt(C0>+sJ1+$5{&6=Yxcpg2vt5H_6O|FwK!UU;G4#7{73U`ALp;>h&-dmUT!5V~j6&35LJSXx$m z8en{ql>C&^(gJ53kdizJRzpA3?%uOokA2VwL+1+Zo|uT91KmA|2l~UpZbpU0^d%k$ z3rkEq(AV96ASNol54Zc_cKm2)>z=1i`XR*FLXXMRCsTuC6T{yzY;LlctF;(b&It-_ zI_&B(=^6yHXV=I>{(N+7v|E1t$;2?OhWgPx-826&+I`p~?7+7{;xEU>4|_~f36sc# zG08oM3dy{G?ig5q>K&x{RU;_f*YoZL+#|F{my%iFyzYDa`IkV($*=n?JASTiXbalr8o!rp0$ZNdbEW~F_ zkV;U4V&=Y-3F8G_yuC%-X_8jz?9_6}e$CqA6qG;_>&>e*Zh+ zUmSz}p;P>R+Sk7e`@zv*-5VA~#~x_v8=F~*oY#B!?1O;IGp?hWvFg;=&F2>vT_yynN&wj^VGUF)4@|Hssq*?M?W}c^i9z zyUvv({@bfpzp#9Lo?ux#Oy$sZNA7k7y5EtzgF!yZAV>;*l!JTvWOTT{gYMWVvC2KG4 znZ-sC@#Yv)J^s7{#z;f{oW@khpVK&6@aHskcKkVw*Bbtu#z@Sc)3~_v=QI{U{5kc1 z7=KRvAH$zh{~zGbso&n`&#AAD^5u6m@N(gg3;%I`w(y7WA4-4t0^deT`M-0ar#I3sgv5*S0R-Iz z#LU%^p_GfSTwsaV6QGP+o1Gxug7cr5fV}iI!QnRnCx(ok4w;Zn1)REvRRAI?7fzEa zEj6b+_`sUBHm*ic=sW_`AiG#P{k1$0Vz< z9jYJ<0qHsQSc<<)vE*T+0PfLpeiJEYU9+Fk=y!m_fDJts&0d{rX<`Mm!D8ibEx3*rX_jd!NwgSX zc{Wnyhft0u1~pG2fB#=3eh-3zi^-RMF2sn?Bsf*yuII0(9y&6z!^kwt@X;f{N;QnM zkhO;X4a1B48o8Qgm9HvK`)mG<+lre3ZaA5w1=BrC=ZWPvAu>4{h~?`y>$4H(VQmBd z>lwIcvf-Q|1B`YXW$A*t&9{na$y;{dM6rm6Kk*PK7 zFl;19I?Lz`(&E@pOJx~3?*l3bM>CP$^s*|R8h+R}_JqWZVtLQ0Qv$jL58;{R`wZp^ z?R>~WSlM|DVY0Y(luK(1m-RSea#$kSut9_F-7lBkC*8=tSw(5SLrZ|$Cs>NB0uZ7D zX$%=eZ^1b}HcsBz!z{}`O9jhLNqyXtJGpy)_i31{;J4>Gk+W*#PYPZbOqYpfY=8#g z?a||dhoXgif9E@>bGf=9 z3i>RAn(*n(k$WsNFcJwGoV9N6 z)W85DvVqz_64Ltmx~~BFhJkj=8#*>yhEm}1yn0tgp)ZtN4?4xEeqg-GsV9Yz@63z? z%{BItKg36ov!HP4Wr}uYh&>iUn#VNKd#~eAU^+o?ZiBWfTn8$|E~1{q#>5^M@Uh~g zM!YNVgM%h60TvVAZE&ja=%9FnWLpc7)NEO@@L&=H1kDUeBH$F#WE$@%E>q-j2!O{R z$5lyr63m>k*Ekq>!WpmVxpRAP*g%K(@54dP@HnRKBO}G|5nj@*I-hyEDh6|gK%s+( zQDYg=k{$dYPQ^a1$HXY-H<6)|^|>5cYR z5%VvZfd_z9#iIxNVQ@bH#?w9+Jw7B8Gngzs?*QlkasvK@3mc)=TC6nS!f!c?g+TOY z`)2!%2t=HAj>GIic?kKRD&O^!*e+xJX(luW211tRW-KO+S%AYlxXQUQR7G4EFMQ~f z<(Dsz;(PPmfXLk>cmciUD4_J+r}5|45U3-MmD(Xr7!jdJzbgXks<}{Fx!ib0;2lNo zQc5oV=bXN1zTPQ)N+`)^lLmXcij|4tA)6X6BbJK=MXqdV79mz*jjVN*?6N~HqD^z{ zn{Wl{wul0M^_uKgT|pEj6lgpmJ8j?O1TXHG1q>Jnh^557$P-t91g|`~Gs>0IdM-9U z;eJ5$GQ@!7BKm`m^&z82R5(#;t(zJjBFs@Tt$OL!`zbLng0w-;gb=ue5Q;cTVV_># zPif?Cs<~EG38Ji!BhfZn2N&xvxL#`Tgj=$eO})EQDc7LEBQga>QmT)%pqC0#tR)U91x9}bco3YmnhG3uCe6yk&w$^=I|MV#}m3ZEaW;!AYPadFz6%vDcgdX?LC7`^g&k1fQ35PYGDzFVFm484A_Ns5zmLFNmSXoc;|irkId=RzfquYG zp!&lBZbx4tdkNxnVfhLWY@!V1Wb*hl&C;={wXu!Q&&^R+Zi{0R%!3@2{ zFJ7RGjXu751`0YC6%Rh@_+i6eZv17HQpKBfZ#KVq9p4+oe_KmQz{V*-oPrXU&nk7# zlGUm%TNDQ`8|Sv_WWRap&9iSV7XNtT#|?kIf$vo+H-DQ(w|7C?BxT71A2C6yJ&y!G zn*75gb#w@t>c90R{()1r*v&c@6%IZUzklQX4Y_Nb|EyFDBpf2<5?z~BgRM|ldYnD4A8_&6 z;6CF4z}%6k8)?PiQsSPnaNn!0!Jhg=hcne1&fTuFhMyzv?`>pZK72f6&=dP%{KDmF*;Q2i zCtOtsh4?aH6TC0O^GQW2yv+}E(@b(_RAs%=zOQM-y=Ajt@OP9_z zl8V<`WB~`TNdplggBj<}VF8q9)WDi005lenVg@R6mz=tJ%9W64tE#HcSCI2KbNlSO zdca^{7F(i@%fUTok5RRbvUi{;n^+V^{!_ z0CKE{dw+$kE&?6M;||#f3QqvH!2wh{F5?9@Nz0~STD+eCoHuI>QN+kp_Z>2o#mMRf)2c4J%NF|BS-z)}K#D$ihm*X)o%SC0)b)>`KE zVT-EaIvYuxzxnK7)s^P6&9_HOPTib{>%7_1KX_+kbbKP2AjBQg<<>b{p6bj3WTOX( zgN|7ov(!?tiPMeJwn2Ogh0lEL#eBH0qstAeE|f1>#)T-NlMP@757xd(_tw~ z4aYSEhf*brgqi|1VhGn5S5Rb`_@KO3FRLy>@LGWKZ>~ue8A{a!Yf>e%g&KmOR7K<_ zTSiZ3rdSv*zyw#Y`z3y1o_pgD@eRw4`Hq9X`}TKw6aPNusvE3IZYKh(8u{{n%c^MS zGcnbIzJMCCEXxPo8d4d&hk+U8Pqu_Y^xMnZ^j*n9kVtmaPwfGP3K{}`162?tjFlTnGV zP`AX)4D?#P-G!LAUcb(-Iu*k0It;b56{77rjI?tF%5|Lz`|RvgnmfmZXi*AnIH!=p zrD^2gm#bC9H};BGI)1CFoZhJrX=kT&s#9T)o!D6WGCkd)Hz-JB%Rm`JMyeDf+afq(J1jbUwME%>wr9Mnom#k5$G7p@=`iI9N>nZ^uELJYyWNWOR=HZN%LGl{>FcdOCoAuc?@4%T+`Z?{_1V_DpvNyiU^_lBx_dP}B9vCr$B=1w4={6#g=s?$r$j6pT)PbK@=Z@fF~>Id}b z+7ne(snUGBQvIGU-jfeR>?|{~&~ZCP0Od__M_9MK{rHS-u<8-+A=M&_NTL-$x$P3~ zHy*R>WyUp&EG+eEmzi?SU3iBz7pqEu8yso0K}<>J*hB1w!-Z<}QKmcs+wAcEiS*2+ ziC`(x;pNh*E#E+KJzUU@vXK@7E+YwaD;>9?2E!i0nM9Vyurv{XZQHQ;%5<>0!2YWM zf8p$)b(!@~7gsL|2e*x%^RN526eJfV9j6 z>oDCCU2!~LCLqWDQu(Sz`W|z&vVkHyTL$xq%aF&2m(!sViS%X=ECFmVdpYzX$IwQGvJKtoT!KMSegs&cG}r4+ymKe9#|IrAwqHX#d7F` zFdPFsZKg!mz?5@3hfGY}u_F!zbYa`QP-8MW<3g6fT!U#7>k4Ddq$EJ{Bw81dPA88d zu*buB@HAynCESn?QfE*`A55TCRFloT8IaY8w{hK8q`&elkN=o>IFZ10i?(_DZQi!k z7Z0UZ$Lw{t+|1yTDo##s_&e#4IFnstR%=P&|B4?QoFc)91v7#CH2k;c8Vubo05bA3 zC(E)QQ#JDe*ehdegOl$@zqhvT*f61c z6ERX6mMA2{!?u6FE|N-ag`}XioszN8R!fx0kio)#6xa6GF_1wzQatX*7LeLY`gJJ$ zQ8TJGt5#E!P+iYJ@k_LkSW;e;O1*Vw+0Ml)iU z0TS2=Hr@A`ko*2&Y)@rs`Hty`KuA6;()E}hHckvJVx*d9iRfvolhe^oras~Ed!i8~ zxz3FXDdt1H-xX}|jeeU9pQJxPZKT*psF&fw$b(7Aunu#HpGcQ}G%iq(n8@3V39`|lFiagydJ_e~M(I$v<(^t#`zXMVugU$H(a0d6 zv+~&K+I80`bb8@*=(IOd&S3+Rf-eC1o6dyKMg`e7xwz>J%UKOxYD->cTYDCLLYu{e ze`3UG>4ah-3zYlzEiQ819B=(0h0^rJ)LJtG8znfDtKyX2G2J?c<+!Tg(nugiXPU#& zzvW~K#6Qg{AKvoAFni%b*3m5TH;O`De-8|HjXS{S8&eh~7%G;9A0S`(zx@@)Sd@a0 z9v~fni}agB$RWX(PK=EY_E8>0X4J*3+v9CdrjgSQN4XRdK$v8nQClDQ^<+S|fNZx& zpOP9tLjPJqbqqeiGd+VRPx=laK1B7ythXf?(b+3)SEA;X(^2-s&*RW*=?IWHFZs@4 z(*-QxA-Q9dQxxyWh*JL)VsUo8&T~)#M*2-!J_2kJ94HU4y{#B*X_dB5BLY4-78JVD zA9A>j%N}ys;f?WAy}i8hN&(kTPy-6UVBe^N+Rp>GH*DLwl@wvh4@AMgC_;p&84Bt> zoR~=Jn8qA#XQ)Ns4qy|dp8Kqb7f8q36{*4tJy@COKrI}elp3akH7j&iuws&XpgW2K)oCF_9+x0fSI zb3eB5b)h{bp+Nv~QYN)REp-YFb$`g-jR?x(M~}{#WCeY0)YId&6&9XtZEbCPHC~H9 zEVgsIH+8a2_(4RoVEY_oy<(guMm`y9$WBd>yq_TZ0dIvS&X)~eu?$kmn5#K9_k+^; z6F#?rNAiIZAMupPH6P)CMm>g=Q!>Cr6-l-o7u9h9k~!i4HjlDrxgmbVLgd3>IES?@bcUGL<`fEVy+zu6uoqy zEMhN~$7qUahM5joU1P%c(dLeOnTkonZ_n!=B`=+i#xa zf=*3Hj6KY(#m+)jFrU1`%+mu#enj=D{v?zE2k5!!;!*kIeQ=I`VdT(|QM6#+6r8xj6QPu81yN_yDX2f6E;{Q$$!M|G&&t}ifYp(9&6*tS zx`&)&TmZG$`zEmMQ%L-qujP#v~wUhD!G<@=((&pbA4~$F(7sJUq1U! z>Pe6O7e$cUuU7RJ&GQxo{I9+P$=LC!+A_SAdwyn7bcAW0&(?nqIS7fC~B!=#?B=sh*?hA3F^%UaH(zlKgZK7alh@>2Zq%P;Y;Nhln& zVTuOp_9H)JMb9(J!^yIPlWFDVQ%c&5K9#SKSP|Jq(@1-P)FG6Wb0e3IlX8wbYqDJE zc7>4Xu)U`i64ERGH2)^WZWCiF>ZEiR!9~GArpV%h4I&r76;Sjj7+VUm=Cw)(vl=(E|6t&aQ93W!`R8PN$< zW$VUDHAL=ubx*4!0#z(~7!~;oyF-(dYLU>@YQb zfb|pE`{fBZkR$Q-eMGz6y>H+%cP^52@y01%M{^g^}+~KdMAo|e>cwQ4X3$eSFTVY z^b&dIfs&z32%s^Iol@YluOTcT5GEeB@GVY5j#hZO`6T1HSAc@5GcG)Px>+Uzbc*tf zH^G*F{-i>_gJWReQfyMqp0nbfn|3qjI$jfDQ)Bi}F1G%1);pCiGXQfkLW0!CaOkrw zDS59p@bd$A`CPEb2iZ??ZFi8Gce7el_3N~}OnLNzDZKu5qDqy@C|gnz1sYu9+}B-# zG?htk(I7WabmTr^!akvedD3!p(>iEFcNZm) z;hdhJq6IsPgULN?l!g5Xi-Q+Jz6v!pIY&!8JbEUe60q{GdoP4R=HAmFM>h#QE^*1U-2nx!!yCm!F{-Y}U7_gW9CC7NMU*FL?z2)} zbOf?6S)yXK%8~zhc@c@Q^_WX1b&(wc>1B3;qXSw8N92r(_k^A+-0{HBG>dl0a1TKe z(H##KsP8NsrR+tNjDr1x&q#5pgeY+{EOl!E!K2Pnej6LZW9M2c(7JT|3rwq%x&Zm{ z#+{xL!=1=Y4G(C@qY@KV61Tl;D5WczQ41K;=2le|CX2iKCZ>k_$(0UY_LG|gr4bW! zUA)y}ax0uN2tcAtE^M23G4^gG*<}#w((9YB0PIwn@kW*hdv?Hi z%KajLD$A+J{o?!}fu5dPJ>IVe81iyZaS165mU)Ymi)vZd6ID7s-u-bZXe?)X5(F)PXo?0(L zk=(3l*iz?(h4d3iN{UzIIT^RHwo2nUgtpwtQbjFpaW5lQ#kgA%e&GL@kViS6ew{J z)$~3X5f>XN^o)K_=n}UFVmUTM9SjBc%|5$aVt1Aw$Lx3Xy+z)HX)*tf|jhHGr`>bWXP{>z}c z3!3~+qn8)=Om?Bt%9JSclA$Gt7(N=>IF+nB>QR;m$jQcL4wTK0*yV-kF2fkkJB4k~ z+nO8gT8L?FM`|~+t%^Z2B%*HWT|fzRAbKb&f;8mhK?{X&23sbbIwCHbwH&Wp_jAqz z9SRvJ_C+f4JOSI@mopTLktX9%lmp_u9b{@7aw&MkG)&@0h*~!J{LzS9u}1Eje*!fy zF@j|D8RqfKg|UWN`>?3JCnsn>FW+~Vv0`2N@z_4w?*E6fF9C?^%C;>i3Wt2TCnMSR6}0%)ZikBv?(k*N*#r$h zUWqYStO;(V1x#w)9PHIaY&s=pXOBxO$=jP>C_~%=`Cw_nxQn}saXWkO(Q)}HaY%(f zDZZ=SUZvTsoax?^Y_d`JdkVvhjCm-R8#W=^Qp!|>)@TyUm?gPd)*f*%FKoJzD;ihn zxWp0qB^0M`;kvTL1D!e^0T%^)3U^#Qxjnm*KjkQ6V-g3zlu2XPrysnq4|P}xybB}$ zOxZVO>i1Yyc~t(!;g)*r5;nYE8`x;{)k#ZtV90qe3K&&Nb z*B%5s@RAJ)#VE9O_QIl;_}F)_MpJU1orHCnNTK)@YdDIsaK$@sEqrG*?Ze3ILp^$6 z=yuql=;*7GkG9`dNDJ3WlQg?-hz_+*H-0Qh#6+p(2_29tMfiwNZX;Yeas%7qptM)$ zdxzq~`rNs83q!WouI1d~3RF>$9l^Ll$1&e<7N(ch+`E5Yu0T*)BCgWXxoVm$a2R3R zKwPi)%&1o@VgH50(H>N_K{r2Jf(`lltpWB;be~9^g6i!06M9 zb{U(oxoqOfW8juaHnDk~C4W`SpfyR1dbvr5Sqr>=7TparWR|9Vv+QX4_gAqzaUkMK zG}{qbOWLooEPzAi!|vsHdO@^KWwHt^gCUKjUv)Z6msT_-g6US57`JL+QjG8w@ZLB5 zQ=66*2Bke(mMWamcW=k$rA#8Qcx6nI#4)fY5iIkog?o9*YV}LpX+Ju97uMWM90Ky# z^}@9ng>#Dz#ypL#sx*`86>1vN%wU+yGS zrqFCp`uVwdss#t_s_DLOq09L9mXCm`h3h)3zS7M+^h7Ck?0;NRR`$t=QJ6{V_p$G3 zQXGiQ1!!fX>)G?BrKO9J0Z{oIyho-3RB4j;RKp;rkjs@O7LN71cU12|`3Sd}Iv5NC z67z&$M6p{MALlc{o@Gqxv2J{fg{|ziO5^L+D>QAn3?U{C#dz72Q++K6! zp6xwMx3y~e9dl}((De=1AG7^;y9(ZZvHf$k)cE7jmDDz~3lF7R5cfkFi-hsUlpA)1 z4C?^8WQ;$Lm7AaUdZ1s8=7?KmmpM5PP(KD?Ok++koYLj&o^^L78oO?<-Y40~7f#YT zZDuqs`N4KmD*?!MQPJ>2J#NBlE8MIi*UfHe;j$aQdrt0L{?6=K97Azx^|WZNBKu-X zrC3_t_6P8_gazEPI&NpXNPAmmG;BDr?YA?Q+l5MJWVMs>bjyy3@oMH>%gzXqbG2tM z$0K$Rjl>Ku_oJLFg^Mo?J6W<>`jt%Pu#IKwNkvgzd*#+)`{WFbLE zVO2@l9hDksAV0xU6Rit9u%vo?=!qZtJyM|Ab1YY-f~+c z48~YY_pe224H_>QHW)Hk)VS0^N2)RCGVmJajj&=HmBtilCwyM!@#E+4Te~G+lv=Ry z_s;TkS| zApLkox_S+D!3v+w+FqRkE~~)+EjMA#8TtyPvEh!S`<-kaagoKT5B+lBw>Qjh$gcD?(dW(acFzr zkiH=XxsgBUq*HdTi7(uf*2}Wz$$DW9Y6wi(pf8PNb60#JzO!LK5;~mG1JJ`o271*i z+AI3?*O7qqzJvcTOR|&BclaMNOnye$t6J{bFV&Zw-777V*xP0%^u(>>wFfVdo{D5| zC(WB`H{s0`&L2Oly)JtB`rNpX-{uvHK2kQf{F#<>QUX^W}p#iwWL7 zXe=f;9%0cyD|~pHkBe10Y4)3hOP<=i8Yb1J72Nc~tt=v@1?>peiXxIHZ5S6Ed}U5B z=PuwPE*_5I;^XNQZqwM{=ls3m*l`{Lj9aJsHjH|XI`an$Fnn)4dejaFBG?s;&<96Pj z!8Nb&`AbGR%kmbp{`d$IcW6t&|AL(@Wxl7dccuHsBmCv7XHN z%>Q=j;Mvwo2MaUW{cl$}V}q^%N{K(sF}mu*JlH0&FKQ2}PMNJKC_JLG3r9DivU|w> zZ;v@vH`Sl7uWFzlMbuH1vX7R6w3NNOQeVQ1+4)3!jadtj2Wt*jPj=NttyM*(Pt>y5RF#g0O3rw_gJGbP+Ie}IPK9SX`%G# z;W9~=XvtKAsbxK#rDSdsL~R$#(>tOsByswo?LxmqGMh=q#Xge`1+n{WKP@(v{V;EO z?dh+33yUij#k{i;ZC>_6;JO>z@uYh&0>00av^PedTVy>sHsb;4i@tRIl5V?&uhTEF z6zSfaxlwLngsO5^&OKD^oIDo3PPcJ?I9+KYl6p@M44*C(JsaJW1}}RkmGAjEhYrV% zJlG9w(fgE{lV z=itdlc9tQ3Yl9lJZN6Qxuj|a-&L_@vg)1FS&2*DU+>|d$zbE(S_V&$coRDIRou7BG zRAQ%0oGX9NQ+&_DkK4@*2Fo(+0+qd~@^{L(SR89CFGh~5i1hs|GI_>lP^yDiW6eP; zZs_G^X~u@acPOiHVfwfVu~rdeHc}f>a{t^9yXfE?ge&E2f9w;ek%<9ina0zPnL)T5 zy019utrYV%_c+$&7WAOUEVLhwb=-m>$%`09jIG3q5y>?M<~=Ln<+u*S8E8?Wnq-v; zS7eXi>eR3p>tB%>CJMq2)NY-eitE`h6n>Dgp-3=o(9se$0pm{Z=RFBD#tF zfXUtb+xd1UF%DT%I{Ty17#X|s=?t)S_LEivaK`$^(d&0BD=vcCbG8BA4f6{r3#$SO zurM*RVuF9Sz7y@Q+j@|X#rJfUeLHS3ghwT~?%)UhV)cPMY?P&pjTm{w4kdo#|F#ft zU`n6;H>~}@4wqTEbE3rRf=(S%9}2yoKiY=#3bPBaT~nEy78{k|E*Oj`vfpqam*mSu z+K}{KMh22c+2$zomm=L+AImhzT)F8hHY5!zJMAy8Z{+H)5gTXt(@&Au#ohW7)a}p) zY3Z1$#f%CN!+zBB&J(E8u@AJd1x?a7E7}Eib<+b%6gCw?=6jjQ$2JVFu zY)|X!_ObUyS5C_2K@L}bo)^RspoWfv*lV-enJ?Qxd8;i4Ozfw_2EW503i7)pt`_E) z!xiLG=D>v5ek=`Ii18fP{cu*x2`{i^(Q^;hu-u=6A$%@~#Pv*!!{QDxz|YJMifM`W!#9} zA}H1ryooQ@(p6P}GQn|+O#JQt9bR+WWZ;55Bu0gLMZW?vCgCc)}^VcfnDGf(ERMpD?AU61Sqdu zz%H-o=A!k^qW#cmea5?}4&6|56}9Z#u5^u>mEBV`-K7Q!7a3*migN4WP*qc7s-LMDKKI8W7856QF z2V0RvTeVE>jcwF=!JI_56OzeeeJ5?ZWCd*DSZ2?~M#*LeaxXS3+nEgSirh*g`!G}* zA5Z1@jBuOJ9v8Bh+~(PeCQ62_)e`mfg0E!O;`k(N&E*(jpmBOQhQ=2ziJ|qmVoAM? zkDcru2_LP0eOB9LBX&_MO_wZr9nKlrFX|o7_-Au;0`PUXW%B`&298PJ%$1E`XAaUNh5FZLgyme zjs8bmrETu0CalQ2#VR2Bamc%cmg8BmG2hZOJ6-ykAn`^kY!AFUAW28azVuO{A+MrM zmpt8fr>!koRPCmV9k-v#OPd=m*1=!dYRLm1mXRX4uPZGW41>9)hS#zg`ZxD?F>*$- z7@s5yS&Ude8snw+TTCxiZ38X5_xgRk2dv*Fg1SErZdm?Nk6OwCUTf2uVFgy>1sq%v zq`>;yp`=|FU+nQ7`G>Ied(49 z!KUq+9lT+Km^2E;d^dYQ9WaX}O<_43Be@M>NE~*D1{|G&l@{P33INZQ=-6N$SlVRz zp5c{{cw{XkwD6%T4Fub|U`d;3osUmWNhy@9)FQ2)UjTZxqM^s;7`nCamo~$`#X4Z5 zjcMK32&#oTYyh_yqY)epBpubksB{10~A_KPD2@u?-|gL@8g(kor>4{ijMZ|4g8_qx#@ zH& zkjtywvnrf1hM;QNYV+@Clg=$~oqg(7n^TKTgWc+b?F%z(K94gEb9c2%S#0ujTQJE! zF2m+&wCPt@-GAC=Z?$<8ZF;gc?*n`944aI_SkKwG_mZjDyYn3 zU2d<>>`f}QEn-~7z>g`%V{yzslN@-x^25)L+vrs54LD}thlmU&`B>E+Cpzhxsz9h< zw5Y(Z3-R%cmLl-aT7{)l!N%310-sUBM)5RujsqEZy*{_sd-mn3b`}*Ng++z+IOboW z9KgRZwef>NA=NP$jQy}<(x5-clW2qfuzX<>98}H6$npFH%x0k}@rT!SdR^bXy5E0l zjLsXbt@?A^U}dcLv!5k9x1YCgG4(&+*sQl1I#gQurT+6bHe6>MoC6m>Yln?@J~WJ^ z0A5MH^J7*-4`${clfCSJa<<3+&#VDge_e`|58Kf;{dLg*+E>0Uy@*|4zj+9mzwE-y z52odQ*&TMsVOl4L$(XCCLY;hXms{1G5553J4Cce5KKNqxtcQ_Upo0e0keu!RNRB#? z#FiKw8As0-qakBn*M*FoIX`6V`1xUzW(R_RV2h{9UZpbkQ$M+)TI*~0)v=_nI^e46 zhOglx$C82S@T;mXe9Lb*)(lZMTvd%7R{keP{XliktEwx$<$E0U{nR(Fs8;$Kc01Or z?zFmAb-~wg+|m2(s=DesuDg2dxe6wvA#W5fS|pbguc;AJrVI)T8jDCQaOhARxHMHN zCCTpvIn|!!@IE(u`}p0wF19c(%ScU2o}IEWWp;r% z870%`+%3FAXl*!4=hd#$wHQV3?UO4CXU@3xsBebLg>#tnvu6+CXE!+%ZHil3yh$pk zg)!~>V;j^6=iVo^At5KVE+Ho!UvWA)r8gbIdwb+}+h0`FZU6qFtlsXVR$wJ%SLf*;+zdC$g4RrtB<(cdV)D}d z9^;nw&dpugTI$fifS^GEVPS(5(<0*RY;kHU$>Rzn(cg1fIQC>$$R8A4o1L4w6cIc{OWCy{lIh#(1Cd{$$gLuI>{yB` zTR}-wZ0;|TBUlmhw4DoPF6&Q7G22Iq*{r<%m}K28$+cG&t8+N!RX4~&AxhI`rxp~< zPEIRWv^Y^t_%6=VLm8*R#@g_7$Ei|`{*9u&;**=U?Lxei{DZ~@hWQTnm-F2FQuKKh z#!W7$kRz|39B&Zr%FVm7aD6@U_cPrgUH=^SU2>`iYz!Ak4)MIgqGj>cGQJ?%;-v|) zXz5`tUBV!cdCF$`t8I}dqv$wH!l)LJAQ|jJnnfy1*?x#54JxR>qMFDS!Q@zjd?+6S zTVzvWF2}tGN{b(;DlT2x(Y323>OO&JjJcHL+_dcMjO3Q+>n`QUt43p(a~G^*u|#1f z&v8B?L%Lz>;G#v7+qcB!!hoQ_LDR#=4jPY5gj2ABWvK5+IbwZ~+A-dRMXB%i@9!-s zfg-iUxwnhRlPw7^so-NtdnI;-2J-@?T-g%8eZrzKbNG=}4v?c6fXvygB@^tJvN^;O z=hND^$_G-sPhuu*8~2Zz;?sQIEBG4FzTbxuV4mo$S6>eay;5F&=|oQ){JB8}#D2kn z5BnGQ%_{oXgLpyc&9N?;=Lt9r#loC1}^m}RN@{vN6yw0HOM}Wn&B=( zhk9vRGPY}B(ZOyO13OPM{NzpF@vvai1Hx}wSuyM%SBhJUt?hF2=5!P{5z`iPi;cKG z9!sUdCaeJD3=0elkTVAIg^;hfFjcm*-I*z9Xs5WiILlTRMruE;R94Y`kNvWV>H=Hf ziv{DdVcjm5{w*oFEM`*rPnV^sHL|?bICeyNo5l>xh?L9SDEFllPs#)FN*0#$!Nl<) z6m-}~Ka@j6CS`?nU^)CcuCT~b7I(IkMaE@Mr{R?RT73<2gkPKTcwk=vRS-FP?*y2P zael*Z$ys`p-%aY{hXyUSoyev0S(>>?*+hwMYX!fs%G|A#n`M>3trZ(n9EW5$7?&F7 zQ+T;3?R~1n3eUv}T6J}DMy0{pS2D{b`+IxjXYKF3zopKQE4{rDen^t(egS?iH(MF# zkJ3`03I0L7*UAt^)S~hT4X)MJh8sVSjUsDkA9oL=QGa(2q|!F`{c<*s2^`PV!M`vu zZEJ06P$;P&r;nt>TU5eD)}oaO&!-}y>Jvp(G$`hUQw7%A9>W7<`z=XtRcFV_W*nYt zBqQ0XiV?yq`KzUjhDgHGI$E`Hu(47upls>1lGv)Mz9vU~F(sDDfpw)gkMaJ@ibupd zmpIB2Pc=#+Yh{zNvOQy3sjGA4cn%y(S!oF^_WP`NAth~9FGhw;8hf&ut)Z^YE>RO7*{ge-=o z)2@tUQ4ygWFMS^sIy+pFoe4#SMfnHO5VGSXwI~xNw?~Uo6yV}O8p5DB+2*`QU1)QV zLrzwr0Jk*oPKZdCGQ3q=L@K>AM9f>VyjnWjTb9xLNyF-#)=D|M`F<|VUq_8E$`GEI@cRj!qJ`u4X9wlcnR zf2*XmncDgrMOzuGH-4k6waGerq>aL@tnq1Kxmbea5^rUXYw~@xPUt|| zvlGc+kdZx2c54@y*bA2acwakhD@H(6CU!JUyv)8WA3-oB16>#3AL-9TsJ`)+y9@9g z9gZ1HG8%vezG&}?osd9$NC!~;_++F%4qW9vvbe}&{*VJiFxj9hM)44Y3a>*2h-y)R z7v=jZN+eX^FCkC`GgVMqsep$~xX$}R5~_ePKb1kg{unCMTdBaW;GPIN{u)(~`}jJX zs{REP3|1;A;`13J0#%^yBFB^8W#n1O$0s?ZMK;W-{M@gk2Im>-l>=!s+g4TK8yP{F_xJfs5{ zig zrie=9^5aH?-(;i+sNf^3KoJ=z9m6;Ts*ng|;5{={=pdr_zT*LY7m11dPlselV6 zT;n|k6QuY}Dx@1v5dd+Sx{jCR8aIZ z;Ue!bC}lwr5tmeEsIb8mDo|`bq(e|tD914~k^zWd0;mo{1%rJ{Mq-TOo(L8dWD#|^ zu38QivY~CW+W4kfq#y7kP1-2#1no&s>HI zKU=2)e%8c?5!#jop~4$b0S{P=DvqUxfzMLGOciuiD)0qaMUw%?R%HQas28Au!NE!e zomEDn=(I@IDqMpK;Pq(9NRU&x&rx`h3P2TtP$3B_q*|%K+#=ssaTI=m3IE6<;+9G~ z7bR;pqylAUz@M2a_(26cCv-Ic#lw)W9LH7}$%Io?0#m`s$|CVs@G;)BWF#F= zq#ss&2^D5qtAH3aN%vb+;4dN&%HM(tcjZ*z1rve}fyWjVC@z9Xg?UiHUrGgW!Js_+ z92L@`0wQODiVx}#ObGax0ic6ACI_8#T?WEfDE6XlJ`8!a- z&PHXg!cB_AhbcZ!+1NJmqWs4rGgTN16;!fba-{Oq#0PXH`Dwn3zr#?$1Qm2RX5cU2 ze-WsHC<{6u1OL8*3f@pbhhqZ*RpE0Cma;$*8Sq!W7AiPG1&YjvC_9fCEM>u#C*psV zc0N=XFQ)>;7BNahFd2YtGg38E!CA^kI^3sN_+JDaf04ym2SgyKeuN4^P{Dv>9RkJT za|~@&pcdupph8!sf-TN$T2g>2BqJ;^;UfNL;3H5BE*p1GvL%x7Gx3mi0WTZA&wbI$qW$1qJrE~758vosPKQF!a%4%@fi5Dk_yQ< zwN^pgUJMn2p#mS~gZxKU!=%G$TchfD52?_lrLoPY4S0@0M-i-yst%{Bz^5bqE9F$6 z=zP+m0)F*3Ms*uh@Pi6`2={+i1>QGPg%Es);)@rauYw7Ws0Km>6I9UQm_fV+(M>oK zsh~AjMAYG$Dg-JtK?SPEpkx3Yj%ZX>EdTONLiu*6FveO1+&AF{Z_*;ED61UHlvo=B z6{bllm~bwBUI)NUk&#R|GU1$oe^ZzWU9D3APvYw)+-s`>pI1dd1qY2))yAL4J38EZ zrV5!*AwX6E!ipzNd>G+bDwwH4sGJH^jft$|!_QG6fvEr$On8REh$nwfg}G3{8!G7V zr~%=Hsjw3&Op#Tf*c8VEc%BN{Sf~(Yospie0>7h5hYC8D5b;G^Ktve;40$^I!?Ga% z>4-5-Km~i05anU~0DnXTrD{|9&iJOv3>DP23rsdToKPyFjT9^v z$$)bN6F_wsD&$$K0C8|n1dBz|;Q|6dwHzwwsRG5|PvYx}3eRk*?t%&(S;+CA3C~k1 zMTKM>Ls*N5{GN6RRItNU15R`ZxUB?>3f4xonyFxeRG=9AI)VYfU{OI9QHN`)HBiB5 ztpdbRRIs#>_4D&QLbaH=v>1$$goB;rL`4U-PXRz}r? zQ`KXp0#)Ew@vs4)1d9sR-T!q^A(1NJt0p|mmwuyyETT~1Pf($kl?r@OQ9;Q_{0IX< zn*bFYq*O5BTzp+oAsOdXLH;ul9UmYSY^7At;oO8^kb{mQuq;@o!eyvnmQ#WE74b!! zJ!=r=I8^8>XC#VfLimjevWUEIrV8z?R50M8qCz>2se%cJKu`^Y3VE^$;sU;Iz;%W^ z9sZ#T@}G`)4Jwq#D)0h>qQ)~vFg}6`gJl({Gk(AllvJ=T&f4Wr!BJ8{Bny9`tqKNQ zLofkUQL48|Zb(n+Y`&#O4I z#fMs{0MQ_<7|Ej=yl%;SaJ3ylz5}@3*v6Wl`}hm39SG(8?Z7x9qF4gry* z13a^V@d;FzDyx8Z#7p8~96w71?MkT7RZ_u(XI`j6HB&(Y6(|XR;YBL^2o;P}0b-l* z{0mh$2Nh;mr2>`Zi_c93s?g0U6_^BgN5oknW^wEsE}x# z3e*Mf=N0j_M*vEV1Tgy+O*OwZ?65_ESrZhrUbVIbL}UZ8CP@dgU)>BY=^^{GN$gdxxWOy z8XIHJ-@SfGEK|KwR~?!2Ae*c1I(AI>U;cR~CYE3R-~9!C>TbCGddZqjtH0ck+|Lfn z14q*Du+(P=(DOPx4SRv(Bs!!5+Y*pWB=0RUzWDN z_{&l_`~$-Q7Vh;=8a98?%GGgV>76 z3_0a{de~?`?cQD_xhWkntm_Hf9P+Wgv@1wPK6A#bn#y&r&6Xvmueh#wv8GSl zbSv%S{)BYEy5jnH`=*^XKg5{w-0G*BPUtN*}0ZkNr&Skno&1OUSo_X+unOGWghOPn{A(+Ws@6YigC-EZU1(b z&E8nkf4S-A+dJgi{Clx!p&hAuBrazYdG(y^;7@zit1C} z^5c%?f$F*|sw7{-9>?YpYP&B~>wYqHchU}2cfHCo@Yt<>t^LP)Z7wb`J#x!iYd;Z^ zs}`)aZ#w^(Gbo2uKg;O-C!2~ThEF};i-VPjw^5l8R7-&fs%1a~RRRz}wH%0`S^-2* ztwdOaV+2(+kf9nMUkpT0#Q?uRi~&`#2<`VS(Js&}&>OWzol$Sl8gvG|UaQyX^*XIi zr_&=ZHZ79NV%*ye^@CKZ8iewJDpd&)p#;ZfU>*aGo89nz94|mfL@@C_f&s@yUgJ5Q z(c)N#phqy^nh{|EpZj!!8phECsZ}}zNNEa%*g(;S;XSltOh6T`tJrgQ?-h%GVYgKn z;1_S1@C%G!Nr9?5sW8>LO3pEaD@@6O$q;bpeMA~Py1Z0l88g-vdrg`F=7p8f%V5Jk zb-MInJ3B00Y-jJ4G}>$NXlxaa9`pxNAn1C(E}g`$NL;g;Te>!MlpkJFv;JpP;qc&b zssy|7!S%`#$-R_*f|;_Nl?RUvGK*dH^}6egHC5ax^*Ma2aQj;J1KA~*@c6A3i?d-x z77w*pkujSFHZGgGr6UWR{YleP7G$aPio*%G;%bL-@zl-OyrXQ?sUfHQhVI1Xqla$Q zCx5O!xNY6$+CQ&5o>{i1cHjEuCnj!LKbNz<<(^GVeLbR4{MG-5YJq(CyI``P2=43u z7uKAGA3R34m;A+E{=+ZZErPd~MUj1X#%8ti?N(9Ix10YdY>uDm+G|$k?27)?J$S=-vEKV2Tq`|@jJkXG&YXMMbKotNE5&cauW4kL+Q=@U*CIPR z&*+|tW#r(0ndZa~-oIFZk5)8PHJ#@s##7kdcRn}uJQmt5I-ikRa>nq-cMS^=*$Mg) zpFO2*9Ukf5H*&&Hw5q3u55N56R=^Xkfy^BL_soEew=`efP}`~v8$La1uTm+2@t_>X zEwJ+&JLaZ;0JVOP7KoXCfA@;+qcpi~8gBP%dRd zMfI9-_uk!U+@N`-Yi9Vi8_q7BRZh!%%N@)qXe&@K`OgGO@&BWoJPQy18KYX(f7I^x z{+9nd(x3MYcu)uY8KmgSBtNgW{VVVBhb>OL$f$dnKka+63MlYrc-cr=E32S-$w)H%hpd9h`e%RVxLHYs zmyIO5zsMQsWg}^pqQXl?Qn_AM;bn7@F6EW7et|%(tqGA!O@3%cJ z_f=HDofj1}zTCV?Q2{3}lhl5S3Vi!ze&Gu%6?A;*1%C!VD-~WQsr8$!RCt+43b$6_ zWnNflrNYbPjq>4ED!fdrnypnZy&!^kJHc87!%MvIrL_tzBVNyavwVcC0#o2AYU3B> z4eb^=6(Ei2UoWT=__K9O8vl3oLZqyMiEqD196VC~?&6ku;bjV_UQvPB`ek0&p`-#L z$%J=a_!p(50(0F<6dpr&B_q8|HpMrMU&Ez^l^7z#nGDCXcL;1-zD!eFv>%VWK!iysHY+Dr;{GR-{_w65A zXCyxUd%4_jwyg?y;rGf=bKh;P$^w7jceP0P_Ukqo=>^65f7+%3e!#$AdCp&X&BWGa zfzRol^Dr+bK6!=;zn7N+lxAL=kLuc-TTa8Cp#pC{??=kVC>F``3F+W@DPgp3U|7HN zJOlgB_%`)|)k_AeW6R->&ryL7JWGx8*Po-p^IkA-wQ68kepWtsR+fF-wk%k`^sI>b z*YBwCtdd&(pTDERv+}rh$JX(!>ILgwo5@-{9JlY~eCZPUfE!Zw=H_Lm<%05fZ#sO6 zqceE3Cag=>u+T6tifnfd-4<$e=|cZ(Gq>k*U$M)wfS^?zx83aUKD~h+cJ7UyW!gy( zk3Q&H9zWH`OE9k9<|c{;eC@N@+%7@)K{L5A0$+G_S)kN8J-f(B^iCrWW19*-l715V z3hA)Txi1{l!$aIf?BT>GCfv=~VdRcdha_yN#uuEiGZ1}S&%@X(f!^&~8?i4Ugu9m0 z^o2!U(5>^E%1*@b7q{#!C|s~ee5UpWU3_fy7Gk)`QjGBsA6a6@%@zCx_VN8pRc43kGQVq7LnGSdA-%!)1F1+N&)4gU5K zuO-^4%r=^=U*E7(?Y7nA5_i~W_7bygH2cMM8%+W6rdm@>%(KxPCEitQO2vIU%_(A? zT62cjY^OO-tXFF;5*yT-3SyI5Q$>8N)_hKER%@;kpQtsri9f3~_lfy-nuo+ocABq< z|5R%li6%SEBcjSq^F7hdPV)oN!A|p(=xC?;g{ZaD{F~U-PLupkpsSrGh1kUl%*-Ola{=`D)Pdsd+DJGUcf8q%nO)2qX8_g-=SsTq6 zV!4gxJn@o^=AyU`{fU(}nksQ0`V*^dG}nnWHk#YSn>L#J#Je_{hr~J?%~!+|(4Sau zqj^MZu+e-^Y_ie(KzwYYc}i@y(fmTZq}KeKSg6({{|orUMw3D;QESqOKig=w5dUeT z$snq1HCeTET)iG6G}_le%Nnuo-JwwkYqdRt8+(a%=% zh&a+#^F1*E=})Xg`V+_4YJMRaY&HKT2H0wn{|yYX)ua$tBmIegMEVn_*lIF}ht--a zq7nI@7;dZCOPmS)iF2Soae=L-n7A1F6XT#iu@d?d6QDnFwXNnnG0|3Yk(h3$sUW^> ztEnRX5&9Dgp+7O)PIH@BZKt_UoTJt}BrZ^Ez9JsB(=-xiBL5R>kpGD$Tg?x|jkcPn z#MNreFT}Tz{=}I`|NjR}h5p2JTTL2q0rV%%LH;LZLx19KwI-KnhW^AI&|ln#{=__# ze}T}Sc+*Z(O3b&_oFe+!Y0eN+k^TZv{)q|5|HMM*Puzk0Pdsd^xlSxW`V$jT{)s1$ z{=|=w{=~CLe_}b(pJ;&o#7oehSPA`!)kuG04bq=@6X~y8h4fNuQiykNL-9~AjTmc zh<`*p5Feu)5StMX#3#rH#Gerl#Cqfd;zq;+@t=qX;uzRLq6&6^Xs6aZBBrY~-xD3w znjeUcYRyw(9P$A%8+MRrMn32b)FK{;CfEUD1LA>Lt=41^yCNSDYmg6!uCN2do@&j0 zqE4+TAof8%AbP7cM~MSb4-f;OKT(f*fas^zoF|Ti{=_lJ2Sfwx0P$@*&F91bwdOi8 z2>J_z{=_EK1H{MBpEw2OfM`THASNOoi0f+258^uX@4d*uuW(tiXC?MWn0IXT)Y+=M zOMq24uK`vAn}MGLwV7KzYk+#-O`s8Y8<+@0E8g1-ybmk^)&XmP4}s0VdZ0FItLFlI zUk_XaGy)d`6M@-4Gw?d!2lm2w4e%?z4}^~^Z|%;lo((wH0~>)xU=uJA_%`1MKEink z@G-Ck_&u;0*bLO}-s<@SP!D_pGyv1GRg%dSa)aw;tFY zXaqU}6M-FpW}p^W0_+T|0b*ITcQddXQ2VE?o|k}npexV_JPNrIf$lgr17mSs0_=(N z8elJAGf)TA=5O_kqaHvHoEw3CfQi7qKr_&n?*qMYUIX+2HUmMQ_QS27BY}FLKdu{rg}_80RtY&z=1&R!A#F8U^C9mJU_hEGYzN* z4h9<6WO|My;(RnP5jX~D2L1t90yF??fa8G8zyP53$X3q@Ks_)BXar6MCIY7b&A_R^ z65t;oUk%UzYzFqhb?s4nkNN_kn$JZU$E3 z`z63C$`7mtHUnq#_p4D3fO?<@&iNKqbA9x#B0=x^X0j}cv!23AY-o$r+df;kYHv%8x zJP}wAGy}f^mH-=oHNZw-Gq4G$y@h%hs0VuE{gO9xJRjrSi1Y7(iNI!{8TbRR1X$1C zM?Qao^BSB#1vUeJ25N63et~-6KY>Qzzk!Lse7t7{s)#X}p0+^!x}Bcsz!F@46IcVZ z12zNgf!aGLw?IAcE1(hR089k72bzJ7z!G3bU=2`9?3m-(8Q6^T2B5YM^)XNn>;^Of zU4e-}cc8hh(|GXUE=)|6{9?ziXyH-8xWWjB0|y2y+W_J`vb}(D7+$7#2~IlUje6Ly z0ow(06)58ed`jA)z(pWDSeO9vBd%dtxoR;!GG$=8qhKPg-aJ^MWpmm%xYJP#1-|h- zE2}CV-mi!Ac$xmuJk!<9!OgwW%^@o1f!nKKD*U1|=(c)~SFbX@T1v}0-LXaK|o=ERAenZK2%V#VkpTAvQGD( z;18$7JKt=C@8N!tSd9`*39BmV;m5rRLphn0ZFY8#dp&30o!uhfGzuv3`n0g?45Dy~ zTxTajuKYm>jvEgrJl=d5vG`LeggUWl^ZF98;06+TF!oNBmX(!!1Resg8eyER52Ui~ z?oSeei!&PEgtvRRrKe2w4G)_hRy@3Gcr5W|8tNY1zf{G6xIL7yuFgHkeO6A7x$bj& zIn0Ki(bkcvxHg81^4BCsv2tXtN?Hi-;?b+#NnDM{41&-BD+W8}S1+G3xYHImX7A3Z ztVC4qXpws`CLA`l#V`iW|UT1YA8$ZF`{*hen9CP8|n=g4R^sR)l>tKw?X8} z-93Azx?02>!YIwzzCk@oZAosCO_Nq7>Q=PGD@9y96;v86$vuKHR$r;Tu>Qo6gX`~Z zI(~~(PZtg1$t@i_+D-j_^U(wn4LafQ8Y#pClcB5~dG<)zQTz1;zURkODH{dX`bZh@ z-kAM-TNLy_^7u|9T@^-HsTdi3s^HMPso@9cl|J)+4>~a?a{^W(b%|cvBTDUtRZLi8 zwjTPyJ8#+cwebFq!W@l=SM<^?k53YWw-|q2GSG2jwbRD$zjNC79he2-)@t+SYw!rY zITN0wx2@l?>B{l1A?67ztvciP(TU?=z>?XSv=Rjc#w3T&fSY7F|6I@Vzte5Ph!jZt zNkz@YyG#VIH8jGtcXf4D19;{j_&td@vhpri9xC_L?RwCX*H`wCpF4Ts z3YZb0iBt{*Cw$4dGLpg4`G^&{MwjCq4Y>ZTo(a{v&oiZIoP|i=sLn z%ygE=nM&je`vgp`ej`BdA*jJXt8w}x7At?NFI>#(+qXM>olh6kcZLfODjwF=fqWNa zw1(@IZDZyx2p*#Dxy}VUryzD~N#0KGYu82v4^YPk?^-5kh~dFstPETfv-+(Vcy5l4 zP67obxm#AmC&k6U$ev9D&y}NWr>v5=-?q%nSH8Ybd+=P@`fS0giP)$#9Zp~=WWJRM z6CE2uItH+a9!+>0vPGB|E={CCl*ne^T$r#XMlLJ#HviVDl`EE@T&GC}vK4PM{4s8; zJ$`Nd38coRJ((gMQV%j2d`m}|h1+q%g>S1G8lb@E zRdrPj7n=mL$NhRkL*qsA^+BI`IlDoo0P1+Nl}?E2LU=<%Oit)`*?H5K431q<`i(a`fyK+=hmlY=9~j9$Hw*Po3A0wYU=Ugr6c43g|++MsR5M2-yPWkilM{g zC(U=S3`nQRNgs8H4hET`#C8Go z--%y=tQrqG#+AzxS4r&eXphJ&$%qD@YoLD|v{_jC{1tF6J_vk{SVnoU?B1s12Vw1N zLF`PccZ}mX=oH?b_Vk zGo8Q&LE1gCebVeZT0eXL_W6dYuMEbj=KAY+#n5!S>A$!#^Nx5?rm$cQKKDLa7szt*U&ezq;Rtp}~cfd3yk^vFEG-T>wdxf5A#paHSR~&haT-Q!s9em>8 zwUe7_H}6A4d&nCL&YT{BGC4xzl}}}p>M`RjRx{YX(QvWh2XNms!U`BFuGiO~(E_DI zqu|&1F7n2g4|+H}KrMqwyQRS>A*d43-s`=qgG8^ISN}R{L_s7A<0cU%77tp!f?UKK z9i7-jA>k(k+WY zp*}$=pPtf=oC4$S*ter0qB#Qz#{KJPor3*`WxX{E>zt_jb%Lv;ZjLLQ=4a38)l*_# z##Rs{-ZEL6ZBQjA__ZWzCdlLS>fZnjDX64T8!Q$?%Q6FR;=)x6mm>v=6#b4mb%c(K z1?^;{qF&9(3+s1m-nNhIj8LsmR!!){rkLQsoOerBO3}vlv{2_0MIE#quUG$IxR18? z#m~v^IV0*-G#Pt>6r=8*E16X0X7~IOEKNg_)+VX31pA}yHq3(LoLS$YN7Mjj#u$+C zTJfePp$oBk&8iiw-^Nsb=hTXcHDSfz@2Um6<$Go4M7kWzIk_@>c9H&Bv03O+pfI*%D#OLc7q8zXcP_Nac+f*)z^?1*Fz0R^ zXsa*>y9%_eq6M={owH#;kKkd!qC~t-Eu^+ff<&oM3E2k*)bA6vRfO19jSXwDhiM8+eMgDf>~t5!;3(YmmD9C`25R^&noPFM|@`QJK;T)%unhb-MwqT3V&o`aE75@ z1fnrvi5E0iAUfn$qOa5nAj^!UD{8o~cEbpNwC&|~y>;70e+uN5Xgd0{5vj%YsnMfO zGdcJEL|&tDpZT}zTv74#O|%j+&;-r0AJOjm(+M+>6>mJOzxdUoDnnj=IvCLEL6X$; zkkq=Oz0-ZpUD|ZHk7H%@j;-&o9li8@(YvJn_$WaSw0h-Aa8io~+fdU0bQyZ1(j=S5 zwgCqYZBJ6a(u$54gtCb-Xn6~6bl8s$M-NZwm@iSTTd~-JO5j2!NZBQR@sC>-LPWaH z$Hi)ti;6*e zYQ*Vbh&@*%@B7CyPokB%>B0qJnhy$!`0QI{V8%h!O%d2QJAHhFzxl){)F`7zm!5uY z1e%(f5vT1lCZJWhbHYx!xjEynEdC$VH{KTYip-LI2}R!-9bh!gWroAbZ2IZnaHvak za1Swp&_Aii_Ny2m=`VN=(EgGe%*f+xC$CtE%$&3ku^4oe?dyTxIgwf#)b*%hBEdqq zZGFwblbPpk)q>LT!oe%TYz;0eMNjdyGN=jyY&JUNPW(f!NdKoGn)_`B>;o`gJp@0U z$RigUgbCg@=ic32Jw=sRIVZ}sM-NDj;hF)jt%cdeuB84LvDvqFt$Lx_<_}tabWr*VM>P80yMl%u1y@FJP@}WnMEutnjt)FJ zIE2L$T)I<_Cai$bzUI^?{kz8@Xhj}z!e>Oyi|*T%%v+%F7RFHSzI}{lX;bDE5*CA5 z@eHzpu!w@BnPusmZy6I49fT2)_HwbjnB`BBmkI6mNA~>*3EE*p+3``YS*)n}HCR>@ z!qcT6jW}~ce+E@JzTg*0_T%?vpd8wxKt`sJ{uFOodgJL5ZMw0ZPtztfVHc-Qp;~c;BfZdUcO^+HtQF!f7+;239hCZ@Utllyf#Lf+fXvF9c_FJ~9 zj8N{St^tV)C5B)Oa0qHKHggv0`%P@u&R2ACs3vWPKSr3)w)`m;M8PCP8@A#1Iwn?y zsF$lSlsC(cl%4ysOtk(pMcLsYZ6{*>48|*R+_a@o92{Ae7(t98K~S1UjQFgtn%rA6 z{3oyzoq=JxmX`3ZFsHGGs^%tGu*cwkvkZWdW%VM52kNl>$`O0g(8QIS`J&;vJ8EVW zDw83OzxjZ)tE~=9YX)+e;}iGziAssrqeqatbrW#fu3gc)(BhScEImbb&l$gVJ6juX zBqb%hIZPg`(`u#O4lGY?9u3Uvmx=o}GMVzSJ4ty%872jB^?mb{w zheOc^*dSCNAFy4FEW?K4V^-CE?85j2v<9R!aoRX2WXfQSUf2yv=y*wKSgn9H{plKp z+p00a1TT^)$M~HRsN)m&cIK zwticCqGXho}j9f;ob(Fbxi>ODZzHo<5^55-WK$VBn06O!H>D(7Q)#MM%F zZ{4!|^TBd1&UfteeF!r1(S$8i2QQbKT>b2=Uyn!1#m2@*$H%N#jZR(knpN?u!6|=s zv(;z%T-(fUbGnn%Bml)G27B&ZHf=o4mMq!Ik7*jY1O3!m;upy&IpBnXvt66`F z4O*p2W`m4_posg4pZPE8uI^mHp+yi;vx55}7B(5pBDTw{b?Wk3*?e{VetzYYebOk63JC4dSQ8*eiY=`$vT_72~iYC`-Ga z8vQvU`>XUZ>kmDudw8ko;`KVYhu|s+vu777-3K{QU|n}hm5kU{DFKVDSlLkX4oH$S zd#25+4|>Y|e42n)Q_%$%OoBn#4|d7j4tAUz>#M*mS^2PvU0*QTA`8_w8EUG)B72Gd zuzpx%n$fNA#C|inv2`jj+;*<$i~0!^nleQ%Dk>;rxQ^l4&oADEajt&|8rlW}x;j;N z@rnO{IEpb2y60LKmD^*_yUL6RmT`-eiZWY7PV3QTS?U-l|k+Pp1 z0~)O)loa2>)?dI(lhRZ~(_FH*{8D_IFVW=TBXKJ^n5%F3$U;zq(>!jsiT6BYvu*7m zP|yzG2R4nhsN(P-3bP)fChalHDYXtvb-7XZkY}bjw!{Xhk=eb8H8j>-Tx4hf?dtWq zD#l6Jo+xYz$4E5DnB`#cs2*ZjBQJF53 zW;ajYvg+RKIDY&fhT%7_Prr5L9$Qw$R$1F(6=4l${MA3Q9Y>DPC1me(QDk2+J%OjocR3c#}=qNGm^=eN}BBVy$yVqmxY^EpT;>>n>AaD*|D>K!z=`%|V-z%dO zEu$=FzridP#&qR+T~5TEUtYm1%6gee^lT1Ciq@wdtYsIgSoBg_M$hRI1nt6kYeaEw zng1Lor{MPu=)j6zwmjR2{C7)C3#HD@Av0SK+3N`m-i1T!uh=XM?!wG&GtX&CM?5ko zch>!xV$K9JVRK*YiB#VO#@q+U>?_?DP4-!}{}*?kjQx{+C%d=bPv0nG$4{9QI5m9! zgh^8;g#`r$Aiu_@_Ajb@|4|1}Fnxo)0R5bXdbx}WT{m1466!K(-5{43=%w?`IdQD0 zf5EXLP+R5q>xahv_$N;S11|fy{C$mAWQWB;Puw12es@DMWnvj5#*Iv4vwrqF=!DPcqBkBgWvA#nQq>4D>?O@~}# z(o@soeHxcJ6vf4T^MOxMQBzUcqpL;55OIWa=+KbMf0PC74WgpgA!APupMs+7WBdB` z`*446Y=YQ3PKX!LK$kL~q=F-S(fKWDh3Cy6wAy?Aa9VywdMTvrETp^>>U=9Q4D?Dh zq0WdqPa*1PpZ&iq^~ud`KicOP-;DO7mm)qPZ=fXa#K3TiuxHbRupRnWzMopuBum>K z!@82ByvA~S8360Nuro_3^swXDed+d~e^9Qs#&QwYa9JEa&2 zaT(>jPENpCE|a|6n9IsdEpLnL_|4VgAfGGV-v$?Z7Z=B+AwvIZ^?HcQB)q!L$z@Wg zmz$T9Ce)=RdW$^z?LSuJ(f^P~(U5$Pz6H#&6Gik6k7x*ZGCZPBOhlg_PloUKF=FHJ zja?g7ha;XINbw}{@A>4syz{Bag~^r}yNN7vM;kUByLxtpW`teuI-PMggqcJxYU4nA z_AWBWEM^TkdP2sAg(Fu72hKv4epHzHXjySkRdLXxtKL`o$G0y^MU-@Z)g^SDtc;SG z^AC6wEAm5!J_iQE7VhXf{wZB%43F>|p82E!62B(WbT_i`j_}a%h}y2V?ijaqjmQYS zZq!CVx-W8kGD>|ie({~WYH}`j$P5n)oIV5c1c8Qa8YEgGOC#dB0~)VWLWaVhkjBZ$ zWh`@R0X$~pMwN6sNH)`LRpW zCdD>>JK5*`Vnokp6sbj`TuNkB$|=j=QOKWUHte7*4=4*n*`1c3T$pw~E3Nc=E)McD zlDRdjit=<153TKtx_~15Bg3b?2P6og1VVuMlcplYrjDJ0?7S3`G%hPfsuc#MAt%Or zr&6TTLZrEqyhN7EhGEP(mbY)8hd1|LA%*<@?h=4Z7TzcD$G{(-c!kFxsdfq5n1UT* z8JJo-66#8 z?bE+6Ob=qw@9)C{HvKp}!0R%Lf{->fV@p~=;rW#06mweY`TVq$z4@sHkop0o?p}MN zt>7TOLWw}M=KjNHmAgg6iGfoCr^7z56wDttW!m^)MC}TS_$>=WOVl>C6!gdtO3RYL z^1Uu3R1+Ez0;!9I)GQq|okJ{TV+0jg6CUv6@Jl;jF@I#_XD;61*HzR_9|?76{oCZv zFGc*flg6=Zg=tWzXfxzPkAcN7?){2kse1V-%2-VJUn~j~ zq~)XTI-io3Uzm}ek%Fv^1i58VLoQ{t+rwD=E#l`&c0jREA!zLln{Sy)m=Bs)l)D7V zf3>IyHVX28a|P9Id|Xi~%a7HFuGV=o>jI0(B zYqU#`23!HXC%Qk#Jdz>u8U<4{D%4AAZJ;tLkPOj>`v<^`irP74hX1LjntnTDv3%|6 zNii|}EwzRbh2gi>8*Nfa-35A9>l?%UPCOaz731||grA>OeYl{p;&N%VY?05WWaODq z`1A7jrlb`VoX;=LhJDUQe6b#})E}9`71i}SH@CA)v6}nEJ$gU~4s5PxGTp)cR_xRIr?~+m`qkZ`VfO$){UL?x|`Qf7aDKYl*fAe93FDI^fj0Z_$qrM>Kyt5 z6BCI)UFM7h2AD*A6_%WDgkP}=G5vI&11aaRrVib7D14K8XkBjKftRxGbN2MCd%%I+ zzcG#7_h0-acL1`fG|>I)WY1sSEh}D zgJtWK8HMM3WeC?!;VU9XpKi z>|TWUsgvU;^2<5*y6>2iJJ)sYz3H%hqVZUGQU>Th99+pA*H8>oY0Rb#e%bwoIIhbtiityU;SfC6PMOiv@G-T z(+;Eb6cl9aWrJ7b_?C7h424vw&^|C1u+o-mJyD+|&-ST;ft^IfSa*j_nmBd7QMAk1 z%=>1*mHzKP`gXGSH{S#oR#g@Tq121SKYnf#{P&5)3G19Riu~0J@Ja`tprysFENgIa zWl>Yp`#$|si<=G!6U%C6-B`_}5Er?-BULv1-}+SK`ptKwIzo*$bCvqbfk z*2}V^>4O^wY<|4#F^1^Hs@Q%^3^u|fTaG3fQb5@7BB?sw*Mt zHI}Y$=Ud%xP7m#-2ndstd}#ZIwODYFS3i^j(#EWc#SrEgG!4IjJl`+Ftgo~>@HAz) zmRXA+=4jT@O{6r<0-;XPEMR#AoXm1w;Peo&+V0FTOuI_0^(PcDuwUc|noG8_gmB-t zNY``rtFPV@b7n(C^kpOq!#G)5=(dL9MNAC{#6VCW+7Q#GhG9@BV(R#CL@0{*GRS+V z>ixn>?<+;AO;-!6;#1Ke#MsMc6gy&+vx}S8C>Q5-vtIXdUgs7u$|)4>TFA`?Z5xBg z@h@6>S}?AcmZue-y7+zF6}}vab$PcLO#buHHO&^WeXA7<6qjjQkSn zL@V9OR4J(d^FE}gNarn9I+q?SJ*yaaMJX@%+OSyWpJFiYjKNvcYW{=(WWXLuswL#)nAu(=z+`=BL>8ze#QLplZ-*=v4@3=5tcDq zTSmpCp@cRie5a9PV=kkdApb})A|`xj6dyad|8SoV4;(Ad6?+ur>(J?&M}r&l|G9b} z_$KQ6@&8)SSrucBwos%%7*)G{P{SX!-B9mH(i99M2$gn#gjuwFLJdGuN^zG zwS24iBI;$o{PF3>#OE^xznS!~A-<|rJe5B>eBPFkMPtTv&;RkkW1$~kymkJT1%IFS z`mrN}9}a!}Ck;R47c<|_h0(>Xsr*idPo2Ni{Q{rJ*9Qjlx4*yk?c2V;mcNWS@wYer z^)?4ihNrKLx!gCyiZD_+zhVFIW0(9~WODHkv1IeTI{Wmt7dp1_Kq2))vYq|;Li@v8 zAKexw{GRZ{hi;ns#DAajp*r_%@g=N}ynNTQs-j7T;^?Exh2#n|}CdfIsYcd*V0r4HNa*7iH(1<3Fs-zFM!l zC|Y;UC1nK{J?h~*YLc;Y!)751m83Wye0bTfKVhkNSZMdRha2<#-r)(K!jJg+pzv^Q zoVmasr%6l>ft!XW%%aqA?NlJ+<}0yc2xC2gjJNPiK((~$MnV+YJ*%|kZF~il74^Hu z(xgM}0{{4N`f`7?JmC}nJ(u|Ipqqwk2aDq6T17D97ApRZA6?gwHsxi_SmAe7i{*05 zzF`(+%QZiNA}ANAUfiaqyf1|X+c*`xm4NPoJPoQ;JoARb+H2YmkXe-MFE+z2r$Tp08(`76dSTVd!+4qdG z#_w7q1Djd(Xsv@lR$&Kb2z*a7?(@5TBm=vwqAcG6MBw>OU`IKD32Uw2wS_Q&n9`=K7;607?-JjQZTHJxcNax3*D}*GN%7y+oc*)% zw0hsr>Q)A_7@r(fi!L6g|H7ZWJmLF3ZDLGt2>qY8P`y#zO|l~J?4LbDji(r)EUVMZ zzWR_=jn~R=%(xlbvD`4J@H3Q$8h>Df5@?U7IbB7m@!EI-M>v6vHEqg)p~fE>p)#+FAlf(O?J8ZBvd9wK^H01ln7@Yfn-5N^R?n z8P8|}&;IGSQGIV{^|r5ngYEl6tv~x+{JrW|e)OGw?^THn_kX34A@f0T4>@>9HaDg# z7I1)GZ$0mKolk?^p~vs!(|=f$Gv2gT(Cj&qESx3wwLimktK>Xd=e7mL!9wJ8KvNaNBrWmd7( z!>LmS_PkgWzFM14;H6Gr<6Uh^L$UQLr%o9-fbnW=ErFLgfgLN`ltsl>FQ-l!IDcu51b2o?l#}f*BW~i%+s~ZW7;P8d7R{MaAAF0rALz_Wi+*J&$fW|CK)-9~-wO!atibvK5u z{QR@nIL$ef4)xH^k$y{eQS^GPV`j$frGa)%wv9jJ5>sq^#yOO$?b$!(XMXn$i49$6 zw^8@rp!Lkm#3!&c>0-!W__Wygg3CGv`}(-DyC`*oc7ni(PGHAFZRdPmY<k z5O@uN_QCRKn{s1`Q5gB%7iPu-3Ew{mrCkiXSrZGF&QceYRM(1zvwuFi-WncoZ6OEy$ey#WD1Ft4 zR+9Y=$*KcIt(tTCo8g1*WO#HhDbAgRN;ixIGE(y3S8g$y($-6Mt zXgf)M%GqnC-Ze{IK~Ca-t~mQ=Rf#n!;QBj;vw!r_fmATz8=%d;$y+(G@YF1IeMxl( zhDdJn*IYhM_XfP7gpV)2v5z}#-NeF@+3KE>>I{J&LtPVuKm+*=ESUd2QiG>}r z)%VCza{^ng7^i9bAeA0I4cmHlkkaE_C>l3K=+jQX#*=nq6AmCp*h1=`YJIIkh(Hmmb)#LPefi!_r zXt2BI@kxa{>(piBNT8kz{0)Kg1MayApJ=cHe=(_Wf1SF59BJ_60;hdDO5iPl6oIug)$1)>Iaht1G`ZW15KLFjvUqp3KwCRE#YpcDq!%W9cOlIkds-Ojm!(FWGbU2|99%QOTR5aa4GgQU819^~ zj6Fy%8?klT+wKJz?MzFNCIZpMgzp}i={%&bS={H4eE`yXYGW^4|)_&)-bFpX^f^oicWP=h*~ zOu5e5(lz_cqVQsE4$?(ZdO6a^1JT6^-w&nqDWna2kx zrq;`3x>#F@^j5OWW!g9y=}!V#q>mDoI|XP*kS-c#v@=Mh^zKQ#TWU~mB~#uk*wV2F z$@DgDGt$M5G;}i!;GIYPNj4@4>h(osCSU5l(rlq)7!KiNN;zf zjX|V83uKW#DW#JxYEzaEGqy5LrSu<2_cy33$dq?0cBaQ)A=BHn9;8bgX=V=6p9iA1 zCw#w_(gvh!h8a&XPNnqTtG$IM8r1v9R7#B_WO}=H3h5n=wDA_CzX)WJ{!U8QBejMZ zDaNUk-gFJ)be_7KOnJLxXZp*dWV%!`WKENv3ydbC51~q?!AXJ{^eOnee?RrJ9Sg)G*^2#;KHkzlw1>PkoI{rPMl3 zrgv&9k*;v0jcrJu4P=r2RZ6c#dVHAC$vBnL50SRbQ~yb(ykX3b)3?aGOf;vV`w#DSZy<>0!nT zj8iH7Kcpw-sh^Rllp61o=`!sU()%1~<17e7pT7B z)fHo$On>~D-*s?q_mVrc+-X(e`B0V>3>dPoGwsr9A4ca zr3D|6=}K)fQvO4v{8{P%(pLgmq+dwscahE-ZuBrti=1&f^*YAs0=14zJ)8`Q<|Mu7 zW6u1mwE0L|kaAzlNxJn_E_|;B;;RxqzCtR01G@m}yy4cXj8mjlx$|ik(v=I;1!Rh} zk4B`^KILk-ohOV)H}%(slEB3yWf0`Aob-)N-v-AyOb6~nD#j8mjK(OjcGMB1}JT}7tfl+w@1bhUO2>5ruJ zW2A2c;z;?LxxBO&>3zekHyEcb!2*$^h+{bt(`&oV=4U{X*S?qoA6yJ zr2|NJ54W<6Qz`urX~{x$51EdWnHoGbU8|KZ%(x$s(sR${O@1Jb^cpEGE8&^+aO*?H zsg&Lw_7+ZFs2(KKv!p(&$h}VUBmFNaz3AL==Ba>pUBY+0lvW`613 zsz=DQLS`D^8T2}>5otn7OObvONFl9}(t4z?4>vw#oJ#54v%H0C7piZP=~>bsnclCp zA>AaUquBh@f$04S-}j`n8R@&jt^Z@3O6iA4cPvytAk#}_rqhtF*Se5CE~S@}>6w6c zeZqIMl(r-Nc)0O7<5WuTzR6p7Y@zxonVu!Rk!JKoJ#43NY5-(za-PkWTrF7v{h3VW!zh&^lGH;8gDE2r&8LBG*D(}HLhPu>D{xv zh2@LXU|Ds?S<;zg+NxC`{h5?rhjeI73h7-^I)HRWnNeKhvZVAwq*E5DGs~*^V7GIa z&LYzXH9yjyOKAXUNsaeG?oW~0Z#_$?f0nfs0=^3PJ7pV)$w9=7Q*OBQD zwN|9RbfoIdNXu%xKji*YZvK3vi_44=HLkHp^<1XA>b!+p7pb?CDN_3^HEk}L{!r^c z`ad+%1v>h%pu4bG{=`N)6Z&icSt*ZDVTH~#m`0u6kQKZ+@ zq>!3YItA(LWyZBNuJbQ+hSbys#_6r6-(?_)qq<@ssCy{=qCWVymQO%#F)*^ks%=m7N zYnqf!{XXOLR`mliy+UTXgiQZS+mG~VDg8Ak>Fa8u|CR9ZrK@@AR-~uPtm|uBOOV=! z=`N(FZdJb|Q>6B>KkE*po3$Z}Gx2Ag!?f{tNN3eVHz$03NbScTFCd*Z!n&!(^&=^r zK939EVs++-YX6mvbore~AJ;-ipL3*{XOPy_L?2K1`lU3Bv|)sCbB*gaQu;TfOBbv2 zMpSo6X=0gGlzv=Wi}cTqwDB+W>FW8}Q9tozkrvS}Jmwq9Z(0|PFzRbu`;dy$2dBR9 zeD3)dtBc9>s@#y^25rf5uKQ1D9Y~)?N~Cy*um|b)Ytm2fAQUNQ86ho0x@?3ozsB`0 zQrbe5AXPo;#Rn<{&%jo|@Fpc_NC`eljr!>8D$)bv&I%Dmt1> zZ(G1k@9pZFWIBO+ej3^QU#?>BKdH4M-9t-m^E0oKX>(2ZNgj$KwXabNkiIj*TEjR+ zsuPX08)?Vw>U(60RLNz!Xf=EPNo@zxy)@>|{H<>wy{{&V)Pt0_w_-=#kM!gSYc1mx zslB7VK-zP=`YD-CbTZY}aG3r=JArf`o6efpQ5_ki>u!twVvDa5Dd`L8W~85wu+}q9 zWuM-33%_q&q8gV}cOmT~lFeU^)Z3vAS(1srj1Yy8zD=JdYQh~n9i_#7g7zfR;3Zaq zaVj_eMWhu=)M=Mg`zK+{ZGOXjR#B=$8;|q=jk(Ql{5R4~HEE<(NbTG6=aJ65#M;C- zmC~Ap?ENL`EHXVyx{geLrG=0ll+sU-K3)_470*bWOcSpooqLJ#1mpA~b`sI-s4k>S zm#7QKbTXT6XS$wodZKtO(nD;zy`#QB+Fs-RHIGS=+I#;Cq>C@HwlGemG!$j;FH!Fx zQz>0zvG-3D??C#BBUR5kkEcB~?*C2r!cywx!xJkmF@DbZR7!i09$TWWA=9g!Otl=V)?~LQd=Xl5dp{9Hdgu~s2jdi}{WdaVKTi2VNSYcFPUCG zV*j+a<3|zZ#;H1*&40Qk`rCxBNlMosJ$i}p4C553&hqT2Q%INIp}t0@LYmuA+CKX9 zx7tcFea+eY#!HbtTa!f^MVi}D+E0-lzr^TdoXX9=_ioOocc}j)(`#8%PCDUbPAI?A zHY0tVb>~hf>Xk^JtBL+D;cG^kJE3ULBYpQ0<4=rJq~TnqwJUgra)S(u`9n9Y8wdPBk#H+F$KtI^i%!)DEru&P@C*DZQB?^|zYTj)bpWN*5rVG17R2 zaVn+VtGGeCQ=K`ox=TuzAK@hZwB|?pj+8DW)1Dgd(+OWvN)t%yMjD41r&3yf4>xFc zs&mPdUt#9^^eBV>X{{0IyHdIo>8mv(m2XEmD1+b+@Rg5-cF|9buyjsCYe5?bs&9TO7BPd z_nH*aPAUBy>765u*BGZ#THDMG+MVh$GL_Qh$I0|rtqbV~Qu+|mV>RAqxj&WC38Q%< zG17RQaeA>Fr$~?8sjendeuRvLv&dGGb zyJWgkt3dj(l>Qp&hczjry;Ayfqz6VCA2Cj)wEJGh=`!^onM&#M_sH~l&5!g`Dg8at zQ#Ib_xj&WCLr4#gG(KjWN@@LljMHW65i-5r$@HoB$@F=x5$S0u-HG&*niSH0Dg7Af z>m!X%8K+X(k96%a^-VIB(vu&M=?hvb($C~cdJocpn(zw=Ulu8EaJZRBl=5-BcSc&L z8K+3O9TO+%$XYIZ%hY$t^akhmQBR%Zy8nW<9qH#tQE)kF-OI86Sxp-004;GDR98l55nGkE|;1U$mZO{1%+kHvf>SeZ-Od}nNRNRVk zgLX60ndMe-&@~IGhepw-Nd3#zS>@G@h9mtYQtuuug!CIydIV`{FuW(>yF^NFK{~hG zDh;}pOR0&pak<(+rcyfgQ!?G7Ek!Cmm|$o6I@006G}3QM={-mnmRrMvu7s5KA#Gi* zE+W&ZGE=197qvE|;-ikX^i8BAg5ehvzHdwE{YY;ww?+hAPf4kMKSOG{x`a%nbnIy| zeNo$vRD3eRmcE5_WH60%qLe;?bXmDIGUz%ar4giE%hly%>XVrw_3qX7BXvpXJ4iNWJ^DAuBTOp;Gz*(h0%vem?psr7s}eTW(EYoJy&_ zo^iTD-AATUI`(ri-LH*DS|X(%Bb^jXBfUvVUqyPb+?vEVmC^`O{|faGnFeI0NWBNN z5Yk~%`YF<@gW&^w?o&$NKzgLyx|(q+r6$tG73xtkmC~_alIa0$DN^y_6uVD9M|y2A zjr0dn`U%oE%dKk}r&8L7v~`7goJ?zErbxYi)!L9=BBfsBBeV0t7bgaSWlmDu1M=CxYV`qBq`Fsc`m_~ZHln$%l)K_kOmvJhk5u{x! z)RSZyl$j#+9@O?D9WABjA-ygbKA7;`E2X26ep+r_$2gTz6KQ6JdYVk7bgYj|4{9fn zdZhFsq&Ec9NFR{WYmk0fZr#8*<=#3!PLZmsRAW?iBk!zYoVvujXr$gAZOAG<{VAmv zBb^lt_auA|OX>AUgQKijj8iGq6O7YU>a zAX6zF8zj@i+ES#IQaTFh++Z5%e@p2-NEeQ><}yyDv=3?PDs>T=PM4V?^}edLA^otmg5v@`D%49 znTBMhNaM$}3ZxUI^eUux2UAF2lF}ED9vEe;V4O;+zKOfO)#^bqmC~^@$n7U?~~G}6CI z=^IGj9A&L$oJy&Qv~{)mPcoI#u`_oSh2PLNBjrPCF+0=ikgf?v-{AA1NbS46PmsPl z%D9(tinNl$oI8{Z((S9&_sH~nijvG7`_CawzoG3w%AXh5($*W0-WSXw{g;%w`Gbv< zql~qTQz;E?<_+&^^+~61S2g zk$ySKh%-)+dTAundyx)VqXtG-H_mjVBW5GbXyt1%?(3aCt(d_$eJmKyBz*tp^l9Q6 zq&JSX9%G!!KK%#M$!pXZqpLGWW4TO!gEX7brXba&bSBcxLHAqSpPrk)>q}gZboOX# zGvkye0Ct~FeVk_~Yt*@98peo%^XY^-_WoO1Bhsn#DS5H^U3F~!6Tvjn3y`w+#OBXK zx^T47&NxL{L?fFYMcTGTT}-A(Jv1WShcx=O)`8T|YEU5c&qeyvVES$DPie8AOx%rh z*=S>H&~=k&IqS#V8VtXa*f5OPvwx!RXqhz`PYvF)e@?7X*Nv{;HtXy*>gz`vsi5ob zud7qR@QK8R(O*}e&?@fBcxu0<9)F*DV03lmOlsB1n<=EQ%^D& zW;@cS8jyaV^&tJ891OQ3eLfiffZJ81oJ@uEk4QfoZTy8{iL$g~gXnfp{@OmzmS zCzt8Ic}P!bCF?Toup{-aM0zL~KgI2;lpaQU;~3)=hHa@MZTbmk!gcDbG1ZN89O=6Y zkbbO%kluup)r(=fmSf>?F#IvMtFli&LOOShb(mp`RP+g%_8@Isr#6r&(g=<8>7s>P zvOd<9BAw&(X=WYLBf&J%n`EY+Aze7eI>PByW~#SyCS0d3BGWo2(`k#y^b@TO>CKMR z|3jolgW*rOT}7JPQQD}>xVVn7j&gcMs^>E8LfWxTT|%Zvm0X|Bx|K{n(Y7P4m(oX( zz7|X){ehHThjiH(>orcVQtIErP2f6pIho!prHje*Q*A%e?@Q?uNM8?zKjn5+N*5qq zJ;r*SaVn)D^Mg4(a+a)|-q|DfR!9o51y| zMW%CQrc225j5cI_#(j&F{u=4YVE7ETt5W)Nqm$bLFz56-fYiTUJw&GU&L!*oJIVBOErj$3 zjQOS4(%&FWeXcD<+UQ9A&m#Ram`3`T zl)j1d%`w)ej8iG?M%ubwJx-<#PNvhAk?9v&8`9exY1i{ePY1(aaJwp{r;)xh#yZV7 zmC`KIj`ixhWGbcaB29gvZAaSVNc~+%KMSUj{!2(aVn)I(#(4GG?_~2w^oqpm)Z%W zOC72I0MajmX{3LU(rb}^ImY^uaVn+#NL5QUyw#2KoJ{v2^{T}~tc?3EN7{7|sTK;W zn|yzg(pgA@UP}wPPD*L`=ZsTJo#w61Na>PQWU3aAM;djc{#TI}htf!QN$EVKGrd-E z$fXT;#%VKBzopJ1)A>%O=dUKybBjYr?{=hJ$B>qW!sl-Cy(Fcpkk0j5r6Jb@DeXhr zXsHckDy6?cnmV_5DbkgW)c+>Z;h{9rze(wOqzk=9S;#dDsfQz-lXUHq+*?@cVlrLe zoTQC4+*^F3xC7}uNICpD^EbZ5<>Zo3`Wu@z{2l4pKiO{-cUc+FY68#xY5YuGL9)Wj z98Uhr@n+vI?!nuP7Yp8scS!cRnbGq$`Tju*dxmSD_6L$(XWaMFlDkT0K0rDl6dkh3_b;UORr(dA`@Gh~kn1Taz2z6& z2kur6lIdB}bx1EN4(-l()_!fP=ImCFc&jTHlEB$NN4?fHA=lsVp8ca=8_Hg^X~QR9 z>oB*gxDECFUsG@1t-j-}-u89%yI$)%j9HoT{iM8OxB3Aoi`ZO0RIexHi;MTu4>8#f zpVJT5g`yX4@)dIbW8VUOMn9bPTGumXxmB_6R!$*3wOjp?&W$)D;obGSs@x^TL-u6i z4bQ03J6O5Zft|d}>4C&H6>VgT?T}VAB7+X*6 zMp|0jiu57ImOTtEMp_^84%_7ONa-A;iziqOA=i(jH1ZVZ);;PHGW~%wV68nIUBimE zBjwMM?E%|Zej#tLLusUyNOL!9+G?cBCRp=AuHPWFZ`S^ev}=#LoJ^70nHKEhJTSa? zKhhr~wcib0igZCJJbaVSi!}FOU28|WdV;keZs?uey&+8=cKReSl2Mi^n5PI6F$c4(WROxsh8y$r{CYf{r_I|IGHY16f-B?atP_@;i)b zficBBY*o9HK<0aF)w)o8%qCx>OyGJF_-ul8f5^23X%#DDt7@L+klw3)KB2l5X&;Sr z)vUuDC}WDxApNNvemApK@sPV>lW!?fd-%;q>YHfAL$2qf^nRoz`_#b1YV~$UI^hUc zjEds&eVO=HN7}If>0_Zd(v?zrFVY()T91WXN2T-=q?7llGbUEIN~v~~Oe>0~Abrx2 zRxC!kIpn@{lW(n*wj-TA(b^nxotDzOp5e{-KDCZao19EfB8^^JJRfP&k#;Oa`a~#> zv{g!C)3M|Gf1~N=ZTIVGEScirIB_ZwJ*V=k*=R;q!_12_1rjp3F(lR)jed2 zR6)TwUGh()>qtc$a}>mUy4}! zP4!L09-e4D%_)^wPJn}#spq)0dRcvKVzvJcT5<{e=q(v8SkF@P&^`8@~yO2hRWUI7ycxZQJ@n)pIccdL#kv2jp$D~op^eaewmJc;zrp)AsFDZLlz z$%)2JPN`D*Z>0NQRzD(BDLo`Iy{fne=^q_w$1jjRABtYJ$(NSWIMUM-jTbnjN@>lX z_>{`a>Sttnr<3V~cgggs;!{YUcBB=*Li(3b7HO}PK7rJjWTZKzO6e^~ha6CSld8L< zG=Vfcxwzy2A0&089lu6;C={K%$=4^PTaiwiWc-awzm(pCbo>GJ#!1!wyPQlx9cBHR_vPk=-^bbg9O)`48^h@bqk%kVav&mFSXT3+JR~OGg`e#Sl@mr*a zL(!`@`La^liL_yo@ham~O5aAh^nf~#OqV&CK7}-Wb@581&pXnJ-y=N|$|4<*(ie~} znq>4cPLb9#B)Lj_fpqeF=iWN0x*O?Neil!%j&e#R*1n;c^Jngo4ybobs#c?n=iGs^ z<$V&krg#Slm?V(9^=f^V1YQfduifNR&vTBx4@qFfB;$2XspXFJ7}8@0)YX%!Tcz~5 z4|r&LZSe`DyBw+7#fj?8P!{PBDJ{8*kH}3jvYb+-v~edR<)FG}QgzYtuWXZ|?44wM z7;;S~_Us??!%%w4rVS-{&;H3yDV}nWkCT!EH}T?q&|Y#l6>?w4jViJB`;|%L@X93X z6r&Zd-LwB7hdBq;Ba8uZh@lm?Dj%_7*A*{Cx>s&k57JLVS)?AhVRMikpJWY$Tn~RO zS^abetq%wgPElGdYZF;b{tecm{h&-?z7vdpPXc!3Az5?*VUhgqBm^X zF#hZ68;Vbm^2<)j{#P#?mpq<$Pe|jOM|Cc|VeZj9jF#|)j7~_2_blJ0PJ4>DD5Xi8 zNj*s^z8y>PFrOGN%SBlxO?#N>B+fLmb%t*o`lx3?VdL~~v8)(;kYt`Xzo)Lo3uy>5 zzmGBt$~DA-2fUy|7$Ojb7{nn7DKH@oeUJs^T9yY7ctMBs1=Lw*7}8_#Kp$;k=0zY1 zF^EGFQeZ+KaSHw9_TppPy`V!FA`pcbq>G5x>hVx{_&1@!d#$ z?5sH3YSQLm+AG%Kp$=ZqAq)|S(zkuX*)|Z@Kk+3@9`J$=G1^mNn!Z(7SC(~%FM#Q* zVp*1tK^&5h0u$2E2U$?Y;sg(PL5DCzAPO;vLlRP8LK^xY3(7ZH9z5U$9l{WSD8wKR zNl1YSY3PG2DC1ZjJm3W#!VrNd#2^kyNP!7y=z}aM6)X=P@PZCuh(Hu#5QikBz=SmP zK^BxtSspy#1s%c=fhfcv4oOIX32EpP^~XIxgkxx53&%R$TAS)7z;B#!eU=D9%J7iu7DU2e;m?B8D|W5Rn`ef+7yV3lIaL| z&trMWGB({;5C<_xk7s#Mzzt#0AqigQ#~}$>rWHyZ!VrNdctjjTAPO;vLkdh$5@SLd z`aog3#FsjGzzaHrAp#z@KPzGwyKZq@fERQKLjpPIL@M?pCArNNP!7y z$bvEnCwN53WSlh(i)m zU_u)DAPWl1xWNNn&>;*Fh(ZkFkc1SN;9;?>xIHEZ@$F~&d6W=gEJPs&3iG2AsDpL?H%oNJ0ush;V*V#Ce}SFhP9i*mD(mLm0e}g$U>%-hM|Z!{igA z9)}bpK^J`j9`J%2B9Ih*#%PLCrxbsDL%8C0GfkN$cQ1MOQD#A5f4Lz{T$o9dGRAg$ z86Ppug(jq-53->A2l3zmFX#}42t*+UaY#Z6Oh`i?WFbyJCLskTq@fS85GS7`q`-tU zIrl*p6pi(Q2fUy|7$Ojb7{nn7DKNo(Ar8tu$bxv2;|33SL5DQQc^^dCH~IxQ1+|2P?7KIpuMH}uo^(3Uggf#R)7L;Nf-~lh_5QYduAqL6>9F$4$mJkDBh(Hu# zAikI|2`Mlk4SkRWrIdAm2fUy|7$Ojb7{nn7DN$aHgE9?S5O-&8@PHR|2tx$2qE9Ge z5Qn6w(?@Ygfrst)LW*`1+-!^K#SKZuwfOLNgmD`cV;ACJaxPUETYbc2A;M%7OmVKI z6ki*vSJGC^{3;qKP1co$KFES8&cDn`LX3SCha~7M8wNLZ4}^(}KonwP8AyUcUT*M! z7jy_i1fmcFljWmevVG?HtRLdvW_d`#;MXY9ml5(#oeS(g6VlKJSy0$NZty^w{^^4( zC|o<-;1Sml&>;*Fh=PZ6j2CnWi;{lLUdwXyhZ`caMIi=p2s7V9yBBmw(v|`f(hy;O zSS$xoP(=RV0k0@0QbLrzi$NTckOC9Z&<9yaG47Mx52wI{H1t6hlu>xW176S}3=xPz z4C0W46qt~PXc-R5EGVOKfcOeXFX#}42t*+UaY#Z6Oh`i?WI^Ga>IM&ZL5DCzAj$Yk zi7^Oi=z}aMMfAP#B9Lmy;8JcMjrD*R zbO=L=c@g?B3NeU_{uK2}>X79+t8l(|LyCQ6LK<}ZVTeE!Vi1QUq`-tU^g$Msi*SGk zyrN_bctNKgh6qF<260G23QR~tA7nv1=oDWV>j5w55QYduAqH_sLJCYsLmy;8xtQg_ z176S}3=xPznsY&#u^poxha{xHgf#R)78Ezj(0@^gK^&5h0uR?K-TIID(|iA=G&Ofj z+0OAehx3d{Sw#*J`n-#n9Zaue4DYAzr;mnEPN5v2-9x;a=@M~%f;4R@u?+M5^utcd z5M?cFr``pk-@Bm$ME`GvIm{RPBurTk+r&J4;!)U6=z@N7ZYPhekOc9!!N*`Jd5Z7F zEQczl`{)}t@n^_IJajFmtrE6F8AR|`P>OS%=z|K%3gX0jE)VB9FH}M~^s`x0DESYG7jee+p2o1!q3 z2k$qw(msTC(NIKL2~%jRqAU{2KnWbf&t*WVrF|R6R1@y`uoWUOnV2E;As;bNywnFM z8(DXX*m~+k%o86yYGVB%9Ddl&JaO(H{P+y>YpM6KYzCU?(^e8)3zLbBQHsYu;vC-0 zei6^1!(!Zmczj%mcQSaG-pKSBvE7t@rp1%sIg~@7gZg;ls-S}DcBYFcla%5)Y(4cd z*g@S(%oM0(dK=RvlqpK_)s%hY5husZ&;#A9kBAxNj=eZLgzQuF^#I>*&G9b=> z`{4|9!7=EEQy|Wf3jKb9ZAyuJVF&Dl2>W0&>ndSf>}P$wgw7{!JY?wq0oo?hrZT^q zvIjW*DUB>A&P(lhH-k8DhzDFdp_^sP-~{v65<3KcGo?=Hhn3W0upP260IiUMQ&3Ax z2+mO70o%!QD=wWf%Jg{XXTKbyO`H=u$>j{|o6ow#5P@D0Px0nJJ&0!l<;1wDr|}Gd zBItrL*vK}tK?mb+K4py9M#?5w3Q>rF$-4XKmmb#JN4<@*3a5AoC%z9kN-oEke~Nme z7{9nXS#CaYUdqX^655Dsrd$g#XoYsM4Aeq~_oMFdn>64hpDH1Vg|LB~S)uSZ*?96-)sgdTHx{O8TOW^>2hYOd+4mlw@|+%TSbUYIOOVmfHs21)SKPf7N9Iqg+UH$f%nFa<(T z3m&KdKSZDr=EG!|1N9IFFO6u%!fwsz*6$5po~$rLKN1*O4y0Bgn30U8KyuL z=ul7JjHld6+z`qPWZ?`9z$s9ecY?AXim0n_2IqY4pPOK%xQ~WLXa;d_orDe$f5W*0 z#9y7Z!B$8?J8XxIuo>d86zU-YVVDCuVJ*a<6%^PHy>JYApbNSo4J!1(0QuEYhCqiY zFd1s;XFp{Xcwq>f0Yz*pKi+)yueZ zQ|}hz8$8t4QpR9A>uSPZB+k9GPvN-eXZZ{yp%r%E?_j+r*q44{w$oNixs)=+@*R{_ ztgx5)J8)GnFUc|{{z~c{)We`d2x?&t_+cBkiQA83E9kHmXAe0agI-umn+Gz~v(N|S zOrN6cXZfY9;{;`xat<^?6U>JQ)QdXvcTzUvUI}y9p6!qn`9nRfMreYi5QUY{3~Qm6 zm;u(gU$oJu71WDhBe}QZ-i&)Iv_ld~pp|(c`m>L+A2M(P+HrYVwukyL&~fgdO`&ZH zgs7H*oBT5L>3keIWQpC#{H3g~jT|;Y9M&?uR4mVUQK1NifE!An49dX+6;KJ|!3#|+ z+k|s6^(vSGI{2X$LJ)>IP!IDV0*%lFOCbs?p&3rF|2xU0g7GjOJWvT8F)hV7iI276#x9ECmyKVLyb32}7EC56q!n3FD!i>8+3iFVmBu3ObnH z2HRl@)5j>QpbILY94f#ADcAwyAq-xa41JJ+5X^yEJl&L0%B8RpI_Oe`eY+o2Xk-7a zg&0Jk6;{GVXohWsr=g57XM#>WOnW!=F6d|MY=bzi80AK2h4IYW%vj$>`!?d!95dpl zk9o%^yTGLGC$189Qt#o|X(x6otYvI&g(P%93|e6$v_Tv;L%XOmUgN@xr-iMp;W)&-^IVGVNtr7j2MYx`{Hvyk-#3 z7Q$j0#B+sS)+^3$eUODH+t|#rplx76FT^1WF-So-^g%lez((kVH1tCf#K|SXH7E*A z&^iD`!c>P;Z} zuMc06^|+~Tr1Vmjff!Tb+Snv zr(j!}wpueiUdWZF$B?g7O0-z(Z!R~2|che~|n+TTu2CS@ABp%=D6AG8xw1rc)9 zDHYmu=!7tiBG%JReSmH6gMP?DCrK%lz7kHOc}@PW!VU^y~NZLUq#tR7iHPTPEm&_c?=NS$#O|BK|IeA z&jPlII_P-B^8`2RD1%P&R9L2)Qv5EW7y7`282Ncv=QiBp+Ny{gScge_mK>6-yG*PX zUpM_Lo+*S`Umwf#Q#RwThj!*QQAQyG;<<4@{xV$RIsX7Cv=>2)T%ynn8^MdG8*f~! zgLS3FJmSUgZn_~2z0eN*kpEpyl6og>WL-McLKx~H0^%8U6>KC%p)3M7lz|5-!3zV- zZ=#GsGsGZHTMD*8l_+V`DU+08O7TotT;Iy*A2)cQnZB!}^g@j77B|fUY)_KdBI;$} zhHXrHD7{b#DW2Lq6Weo*lCQl`O8y$Hmc zp8?`Kxn~gf4dR(bjBC4iMwEX)p)*|z;{BAk9}a`KN2!7ci2L<=aD%wN@PK%4k^&Qw zunn4NAD~nyi$I~?PMLyE*ajOR4oN6tzDb!Szqp8n7&Jo@#MuWMDWed9G8iCUp&$Aw zd!bJ(5B)ei%&&wn)PoMSPz7FaLz>ub@Gu6OIDR9Xvn$29i+-*Y=MDC^m;S2)9a4-} zH+e)DPbucLGu_W}ebCReLVJXI6J~^@o$af~(@Rbf@~Nes z!WCm%+o@MUjCli$(`}r;Iw1uEwCT`Iy$?*NV!EG_p)~k=fL_X8@=H=~gKkJeCzy~D zb@FH?uZ`qhPakJlPrq0f+f+|(y2uG)^jC_QZb(Bf^g%ylVE~FC$u^~k?_~Kbxwn%~ zmT^!^Zf@`j7jaFL3e(M^jjD(EZnm4y!QZ>|l2@5HKEMM5O!tzP!tWuAzzt>KflBZ~ z73fe4VW@`)q**r2dYY(5p&4SZ5#rDeN!SJ{=mZnGAq~CI2mO!*H~B}&KTKK6ek#J> zPVO7|-Dw$}?*;LD)P4}ZQyqXJw$BX;R5HH^#OE43Fu?EJW5h(D6Ph6j;&-##pb2`x zgl-VOt8IrkM4=w4K!-5YLKzf+0&b`TFLy%~C`i_aQ#Qa2$6Ma1+| zZUpf;1~=1XFhISZ*ltSk*?}na7-ci%M#@eQpDXY{B`CBPfg8L`SAh;?OnaabYMD;s zi-Y*Q!vOSBk5Q(eT|i7yKz*BldKl`#%XAg!5MjCrqEO3p80w*!=}yWh-i@N2vI=TJ zhX`#=P)|K6rlAQ;+Pa~g`ZkE;i8Gz0?1nV-K`-<}lHMeuKyOmt&)Aig8pKeF^bZ3^4pJnNFrADcx zm$vX~lom`aZJAnXO)Z_8U)Z#5W_}T~#a`C5@|6N7CSPgESMnjc`S9*o%;H7g#fv#u z>w4Hw4Bd0k$Y;n55!NLlavQmOFj9FSx5awCoSM)7fqZ3GzEWtfTA!M)Jdm&K%2x^< zPhtDmn_^>MaOaA!k}KnbY5dS$sXmzOZjw^$p4Y9spg=U6->?_g?d8Lct{Zj1x`%vqdwq51`RjuIx`+IAd;N9i1?tYLt=rozy3Jf%7t>33 z=?$g3l!nrl>7@ni!0B~+_lkVX#Ezg+ibOI+kDDsIs-$z_QR)E^qG8|DT3 zVmdFTvm2DD({=rqHBOgyDO2l$`yMuQ!?JR(X0FifGG>>iT`G2%vPw84k_vCA_ zd~KIldT{P8v0Sc}?CPH$iyxgKBVQy9(pT7Fn7KGSK-k8tAbovrv{ z`Pv3&R4W^%I!kYu>MXutsn*vF zv%$=DOpDlbdb1^;g}y64wDJd&oUV0bPEFNiptHS& zYQER?LN(v(RP((~Rrb1SN||#mDD+FOUwZx0>z7`?^!laOFTH;0ZI#|u>1~zXR_Se( z-d5>tmEP8~z4^07VQWlQO<8r$FNLjoepeGKtEQ|f&R%NOWi=+NrmQOY(TZ1AW3p<> zs**qL5i6@PSv6%<5oZuFyoq(HU9$VSWcPK+?(34>*Co5JOLkwE>^?Pr;Om9{v#Kr5 zh-#Ist!K4bGQc^Y3R?|l7`56**9QAcRbU^F_A!$?N)7v9wNGZbqJX23BiG0k;@A{t z#azMFKui_n55btNGwm|JGTm0i?9#MLak?B_-Y#QyY1*Zd_uFO6E={{sxT1>O?DZP< zdJTKMhP__HUaw)V*Ra=X=(+W@*vnaVyk*B*cD$9(D}Ux`$#g z-G>EsCl=VfSdj0=d_NlYcD2~0l`9QVYHr?5FXXBl%&!2>i7Q4S% zY;TM0ZLxCN7JGXvd%k7Qx9s_rGe5U|mc6}}y}g#bz4<|7+1r~RHkQ3zRzYt6S%zJ< z*rk&USiyhZu$60n< zfiLGN*kG5t?Q*|e4zc%d$lf0XA-iX}7}+5q#fiyR?9oL`zQrDo1tEJt;<1l_kU4n! zC~k75mhO7#VU`eL5Ni@E8T8XEtU}1G(%{Q~KkB*pfsSea=$LY0gI;6TMi}Slb=+;~ z)+6?r%+AxWS7@+4(d8`gM3=gSsNlKr5JUmod9E2g{3dxyJft_{Dvrew5qed}Z*KQnU=-Qi{sptltdUP=BNskUDJ?T+XpGr67dg{h}*X2vyt{lx* zMi_R>7O|A*W>U=8^n7iE<-`{_ZH7~8acY)RGxEL>Ek4^f!g6YcKi}5k)GVh~5XjFp zoLWo1)}ZHeX^1&B)2TVxH#pfh#PV4+m`+W}=hraUUxNcI=CqkkP08onpgXmgQ!|~K zBJ*=C|+42Vd9_b84njQ>Hr>rxtT+rc=|M z@ey-src+Zwj>W0PoSNy>lo?K(Q;Rt@)2S)nD>bC)Kzy#$LrXdC7pty{PccK?PDBeX+EwwMjM(#>$*mqpUxrB*3t$<$l(B53t zdHd(w&^x#D&dq#Gyu;^o+>$@7x8zUjE&0=Wi(F9L(%96Ww%;aso(~z&^ zW*t;=a}Fx8++{||x7(K+#lGAq_T@&&U2YC4ig@p_g5~XUuuqsC+yu(OEfDj?`wq&O zU7B_|_$EZm7wXPXS$~#X7OT*7iBLm`rykhF)3bRV$u{ZN;faMc!>?p z5H(Z0C}LS%yu^gh6fe3dCdG@nn-}Fp(I#GE;>8?%5p$I;F+;p4`$SE=#Keoa@91=f z4lkB?DX_$(cxe$YmUt=HCECPGi+HibO978$iufMn+Pa4xdC61wKX2bOlZ$=KshYB? zSh1#%rRzLj$d!BS@}*o^XwNTv(Vl)eSMIXociHi~rq>0h)}0ru3qJHx@*DqiSz_>Y z7Hbkyvy_%x8M8~Bn;zXLn5qvB(SoUiV?sRp35%UJ_%tXtVhaj#x0MAUaq}_wHqNg* zZ$|xtPqhYb9mEr>!HRP;@nf;OFK!teZ5La1ksE|e+S9o~c(FA&2zhEbIQS@)+&VVc z>)H^rr%mxdjP+RggTsm`Fa6O{%txjlkHuoV=nsgRDXKB0MZD%(V!8I#!S)9S+Xr7` zgRf?;-Y(kB!Pl5?P!T&PSDcqCf`f&bn=u867JBVqqn-=Vb0KEYV56CvXXfUaxp~U@Im@(M5y%w}=88SJ;#{HDr^XC1 zsZZ4{yDZ4Hn}fZ@7#!>`eX26mKEcgs<|4K&cTZ zZ3&cGfzpDSQlqA{rKZ%XDJ=+=8o|<*V5t=>EvPLuYD-&cORd_{f@!73w9=MorPj34 zg6XB!jim*lQX^E_5-PPqr3EuejTxma`FrfbF5TYMMl3(J1|N%xK{ohUR8(U5(dG<9 z<-Gho?1gs4%vY4Q{1IrzoFkBJcUl!5sh%$erWof+ew5oo&!?LO%DErJe|F)xpWS#) zvTxB%vki}b(aJ@h*^6&ob@!5$YsPz~-F54gO3BW`yY5`-ial^-+Kh8s+z%dluqE{P zBZv3>>d;$H#VVeA-#N=I#Ssni6eWj>ku~gFW z^mbqQO)1Kpcj?l(Jl=U7j_U4*j$U!Ojz@W`7kiEgc=;(&L1`?qQO z%Q>ne{MQ2mugAw14R{d}Z6nWyC&pftv<`Iw35_RDytVvv0?zL6_S5DlM;Dw&o!jH$ z1LH;8V%=k-4~V0JMOyT7KXi)Ev*N zSmKDrYPNYj&2#*UtKvW`ZnMz)E`2btDbLk6Ee>C)yAb&3Go9_Y5iLJb9Z@Ulc13kZGjn?y(~nDN zz|Wt*lxJ|>0ED#BOYq3Uk-FCfW9xh3*ojb-I@{;5zl*ldV|BFG+0axiTzjD|$~AU& z*tEgio(jHUB&jy5W=qaDn!i}NagoMs6rF8TUwwn z5fpuFxWLurF}y{T=Vs|-i?#U+Fl_p)6fH&;CE*gOjew@W%2ZWJCzsmE4c z;G#gQqnb=%70JF8naL>Zp`Py`2(jpar+e0u0{>-t0Yk;QAVd)0zLf?h`?MG6pmeJc zQJlFbL}VTu6b#JM&?V*R)e#jU*9hvDd5hf|*J~5<^XluRdA8QTeRsBl=b{I%LX4Eq zG5zhGt-d4OcTk}UNC95a${(x@S91wgGce3CEiOjSY}y|c7azMnIDUVuC`3kdq0f6H zwcU~olex91=BtL>o}Sb*x$~LfMr8%k2J2>J zp`kf#y{&_Tox}G!&$W(^zZ@BB2L_&Jp6H$N|4b|3jK8+eJncgN$HRIYXA*pZ5XHKVIawNb4-G@iR;Lb}cqn8|o}u_?ZUl zTlme=23uQ9pDzSXiyW6Y=FTLXi%U8u#@kv)JB7zuCt8J-uSRLEsuPvY-@d&oGmH2H zL#c+Q;o8T09bi;1y<))5#|GQxJX--qYnhU<=L3G~qDA)&RvX<9 zvd7fCI(nzGwtu1*gc+1P+)f0ab|ejLpLx1>K~@%!m}^k1b{#krZ&W=YJ``+->dm9# z>_xHho`+~$ZgfnJOQmbZoFgpVU@&H<_T=vDs3TnDgE6o4ij<#eVkZDDV}j*7L*EEA ziG6t)-^Cz&JUIv#I-ifUwNCVp3=6Bq27yiXlVSG)&%)2ZJ26-Ma`iA>qT@`;ignde zOlN4TDrT8nO#t;!_gu;jrs0W-^AJUe4hBZ-jEw-6opLN4s=8~QTcm4T*pi_E`UcUY zZn#-jE_ur0Y9Yrpvy?lp(zdCgZv7;}wyW<7cJlV_;>j3o*CfIf6$QeI&avm6V?r69 zKk;O^*U!(dPOddxuIp!F)V+S=~O zYD~p^aKg`JtT5fCKCh1E-|Ah&6?{y(W?U*#TW1RFd}3n7 z2e2f$hz{+H3*0Mm7sZOBLx7~^EjDvfw#!va))`YkNhUci2}B+5#O)8-Ckl?=5D_n9 zDRQ8~s)ajDb<1YV4k|OviNk1JHJ$OUYB*JBCytBTFN&RnxiR;$3h!=|ijg>~w$^oy z(J@J_>pk;yi=JBbJ1eVe&>c&Tr}mUfG;T_J`Z`j}rF}ghG=8;Cf!=j(BC`go%u?HC zyS36QHnuHxSd93*yW^gZcue=?$hs%(LV>X4+0Y%POCER^>ID?}41vV7AL#lGdHX&F zi#qi&+hFY}4mBg`aIlN63&WrS0{6#=ryref>!Po9}q>cqj)2*6XM9x?uQ*xRtm|s zX|`!;uxz5vUCq1ecv|4JJfG*q$X-9>jXT*fXRxLVTB|gNg;46az zA`<+SY1fr8UPZdF_&j6%iS=p_{`nCU-M?QUf4>y6G!_0vRuxcfKfZrW~TGE1vd{H089}YB375kgm0z*TiqO zUTc$C*DP2gt(UT^;_lKsE!(x11r+M~Xg~ItWF6aN zlVfEoyNpj`2Ovpz7iVvbo}r{#q=7v`Gs(-j9m)^;N`b<9lZus@m-$wim-u$q`F5G- z)~;>f+qTd;&92Y^W5ESM&rd?E~$@hNd$Lx2%hEiCc$>wm}pbD2{-19S^?5?k_G?mYbVNG?ccyl+;F$ zAOXsH)LY(|>(-arc)MJB1~}@GkdwKx<%-}MBpwi0zrgl;N3XmwN1(JYrJ}(~+AOuT zUYluTTW@pSroP2e0H#yV&%DISNRtqP?+1PZQQF+p#Fy4J{4RvUCpNhUXan<)qW-qA zk@1o431Q{fv+)UG0p^gfqW|7-|L{Gu+VRQogFc8RpN4PI%}FRuur8ZXXp(ak%*9T% z%+zp(b~Z$Y1ayFQWZWjl9mJKwCUdT2B?@G-+7gW3>MSlZ4X3H0K|aG|qx97}xKNIOYe+lq<ha6azc>Qg8C~VJ>{)r1|VL)%rY4`12i#*(2yC4=W z!m_FUcGgf|EV7kj{iB1Ov?XDss7auczYi4hdqDH$HJyBr>FSb>s}Yn>r7Sd+3t_Wk z4Nqp>p1-9mhc+V2R$+tt#!Vy-TA6#;^UZCDqiC?q407QLaI;(Z zI``@9R3dTOx!IMhw2?Nit>@R5*RL z{#4On@s@oiirT6vY71S0UCLNt;2jzUHwQj53IZEKOunRS#vr&(_Wv6p$kb;3Lr`f) z!(cCn)I>(4SX;QZ{7d?UdHSVT(ss{~OY9pxZIu5@T%RH|=O_O2m!0wSA&F&*88Cdg zn1tdilarTCi%IZYDta&8L-a0q!KGQJAX*aZb08@*A_Gi%*EM!=*Wx!%b`scFmg9gT z?UStg+kIP^{hasGr9;L3Isv=0iy!;-4tg{DxewGPg&pTu>x7(eRwAFRqs#6$7jLuQ z;f|U`W@e0B7e&j0x^j|HPtU{L4wB#sE|#vWoMfN7zq7GXR_22l=8Y3E8fI6V#aK8D z4byg6Y#P4MG$(w1f?*fhwZVDEHm;i}GDsB5-54Em2)%D8es-yx2*K9a?VTh~wu$u#(U?v<&jN_%(x!%{`n)U9f$Yw49N<67 z8}J%f&_*o?MhA`$^$&IWwox~_>G*W{`}z9$bm{qH=ss{Z3@;3K3CA9@%mr=Q1R{@% z6i158BcnsigCmL7S4^wDx;%oqa7nowgNB<~jW^0^|5rJQMw4xQUX%2y=5=V`M)Kw8 z^uKl-@Nl$!4^jkNn>SM1wK>rLy#v$0O!*eKxqCppe8Pjr1; zv_JEA!NSW*%)8a*fLVRxB5#E_!7zMf8T32FTh^tJ(A*W?Aw^eipKMofym_oBSR{^# zN7GE?O%tWp8dqn`k+2%4qm#``?`ypE@OWK$Pbuy6-)f~*i)PizDkIyg*xN75mA8`b z_-NxMhupEy*Xa9?C!5wb;oCMcJOK$Jd$@Z9ZSt45sY@$BE$d5!hUTd@qI#=^#NyOS z*Xnevp?4>nb|kg2p>FZ#w^OBA`sF>OUqth+Ob+6eD|vOcwk>?ywHIt`*MhF{!{ZtlB#I!)w3yydR*ST?s=L}%wtu}i zy{)GiO|E(F(+wTDg=p!A(_6}_n6AFHIGmlNTr`-OQC_U7*VdEgL|cs~(_1}(8CEgT zIy722GSErF>*N5V%|x?Z{&JFCfaPq8V$otESnY)HaF;ULs+V=9P}~3fR@>v_%;Us+ zqeQW;(ZPYNKzU>OFqfxC)iMfHSBqmATQNf)z18-VC=U$=s^CNm1YYTSU?^k$h6? z9_AAF{Vy~&)ym;}Owwy=8CCypOE}#l*)Erxf3FNtwQEMy<`c(Frkb+kznT&l8ytqc zrYCsaj`+aHnBUGDXrs;3Yq!>>v+AW?(~-!0Ea_>)A5`8jNk*1USM$!VG`MgblAreZ z^DEz)GHnM2JZv@{iO(mSff2ag)hXf`yyqK=b@k;~>nP}E=j2?`dg23ltow{VjyNiB zo0=lQ>%vzS8EnLURWvm|5qr(;-F8?*MR+hakQ!q)IWXxjszsHM9yX6}wNQVHd8cPJ zUdc+mjb_wOHpA}PwLEAt^Q3E9^43ai(2B`UO!ERJ(+UW!FSAO)&RxjZ(fJK4&m(-c;%@O2T@CzM8K-0 zfe_GKBWy}Uh?$(;NdX_hy z#?-jgar0*3JB1n@xs1&N-2v+nN$Y)%jl}sf9s3&39WI|@o~|Ej_uRUhT+a6 z-{@l$V#3Af^c&cD8mGU&5`7Srq&E_Qkm8I{|B^)Gq=^n&hw@t6$YA1xqJ{@Cy5FEI zZRn|B3}Op=&&pi%UQC2ISR8M@W(~ViDMy)Wtg0}s(a3=4DXCSSITO+o$nsWA`RAWB zoc{babc*GDjbq)A?y79+HLo?=+$hLv5Uhbp(WWJ@1gr5f2nVzd^LdX#fr%e5p+&cC zhy+eAV1os=%h$(Stz@{^N5{{HSzSK`>Cw9C1N%l&PJ*>duxWTlAr@70;L3^#)OHXY z#FJ{{T2>@Zucm3pVwn#tNl>`+FtrZycrN+|On}9-8vR28gXLOKTix0gQZw3Ny*Z2Z zhEUy@KY&GM$$-iu5RKy-!Rt04PD4V7kF<@`oN;9_S1bIC=}gEpgs*mZN={M|qx}dH zM@Nd{W5vPFQK8Ym)oI0xnws>j7Ln>k9X-!!BYsDMZFpa9V=k-LJA0)r@5cY=cw535;*SsYTS!@B|Q6FMQ59^^4aik zC+V=a=nVTm_I~J3OKh}ra*>HH)UAvjaIu4z{SNd)a(5JQSSO6ng}%o0)D0as`(W~v ztr4{t8W0XGj@YMFUa_&OT7Rvc_SX=1vK=3Jj0>7P^JXs2<2k{oA;2`gj&bRq@P!Vi zyK`);v%TWg&`|Oq?d6ELbOO4(2cgSZtOpaJ55#!L)T=;T&Sl}+mveHk_UUE^fvx#~ zu0Z!N7446SiH?mIg=}+nz+yv!jj^OwRJ(OjJLfjJkDzr1ZRmb@yhqYe&X{bSb9-(> zTTA;eqB1n4k!?n$rSyv6QvI6AmehMO&6v5Ew`72~Qw1$4V_P!T`J8M@qrGFTy@YDPkwwM$O;byb(LvMr37ndURv0)_2fXs6snairWv z&l^jsH`P9mIJT8+0?ptS?YU=+rG+sr=z5Mhb`j`qkIRlW1aWXCdLMdQ=NNuXHcf7l1ZBZIzA`;A3vUVM$b=e*w;66 zSj)F4;PFB-13r<-UsbkFAmhr{5)*v1Sn5F}>CiuT&a$3~dPK$jIA934S6b7-E? z1PIS)f*B@IO?k#W^_eDSZnQVB#X!g!!%TDM+)vP`A`AdlNX`0sJ4PjZ+L87r17EzJ z+zo($NnUQna@gMMJKlfKw|A(u&6kv%==iOmA1sJ!+P-STy0Z09J6t!suuQG&ae?Tz6-$jefSKp5_iytlH;GXFHw*FC46qbw(w-KSx zGVcAv+eJ&;XFjx;PyE@QJ_R}}MvDdo|4N>kYfOG?wJ{$!2N^i*w#pehXA#AQsw>09k`wp>LYJcsn(B?P3J= zgh_Po$tc5<#S_$_H(dP0Up6b{Xdb_83LBtFoFS{#Bw{8sW1?eR#ZloNfl(pRk(igJ zZ1*a^)W}%b6Zv8i(MPiWO}{BEEbnL}WR)e7+}nMrQbs#c0kmzKHLvldQrl)r0c*sk zj>bYcun~JihzO^7j6Rm;<7j)U@91D_Tj$yCBmH9&y)0R%>G^nfVKd=FZ0-~`PDzHa z!zWyhE6eFh;OlNFbGdICS8VT+0s;}E0Wl$g=E2eXqvB%^Z431f#SyVE<}l(e5oXo2 z53B*1uu`l!yFTniOO8lV5#WB&W1NL$0xl<@7TPdfsk@SA)nF;TYSVnxs2)0HcE!M2 zyFj2h5X*bxH4_|#)+{XhzF0DdKz4zkhX?&J9d&j;==D6S8=$rOWB~L|(OAA93xsRu z6a(XTsLQcu1@n-3ORPj^N2J#(?_23y6*1>!Pb68*XQpQTxeqdN&y+6tJl9~}Z`8@l z7C3yrDP%S2b?jT)h3(JVXz|MS9`qj?yx+U%v?ogh*q@wQpjzyrJL8Z}Q8Fx@?A{aD zXm5>X`s&70ahR&=ov(YCwQ8?=N1gF}bOz~CRoMQ1# zjwTgC>XzE5j5!X^UP!?E9<}$RVvi+F1uvmxXIZt5Rsq&_Zu(Yz3u{s1-P%RQ}7L53ZSIO|BiWA*fbl4v>UvWi;!saRK( zSEyIwKLnNnLRuLM(`!nOOEK$S5fU8D*lJPqk%;Hct~C+qv}VlHK%w0F=B6t)&85wP zYqrf$JfQRquLm^qNQ=Mj*vL>TvzvJAukH63>UyjPOV9Whc`ps{Q43hcRJN+vBpBvi z7#L>DeL7~8VmnO}X=QMPC@?mVo$9R7@)+yu)%Sb8UIka`umiEZaf7wP*sxabeCTyF zZ3JEdX8$j@brUNc8)Cf&h`7gzXxuTs2eI`peBwQC=^64p`5-d^R*!R|&N0yt><`&T zlPgT1I4Yh*8x7X_ti ztcTyiAUg8JYu?V#B_T`lNFbCOLrX?5$tE2flAmLsX!-$5mx3q$zG_}uPfCdM%#JPE zqIkRWUHEgr8weJ8=mB9|j({EhMufV#s|EOut3_l6MAX!mFKa$At4Sw)B&|oMB^yXj zCV_$lBZ;nqKC(bh`#PC_6_-PX*UT{tCNl9GB@zsZ4S61l`qfH^0J~i?7|sU@3^&aw z?5NA3-33!W-`ehgHL6$MYEe_;TG7^KfkB&@E6M6fZ5*ZDLvo^@Nyx^G!+fTN8S ze~rwT$%7x1v7^dG)}VP;32rv9^E9Y4u22P6;AW$xU6N--?oi7X!p&wuj-kwA8r%vm z8#GmBHDxMw&5#+qPtAt&)$xujnPJ!}5YAUtc6^y>m{%EAWz2J`5Vez${_YX@q}>^7 zZ%Aj{yb8{pzoc2HQ_NbSmo0>En!%1>nH`#`G-O|d%#7gb-sgGJRpQo_!?+YtOS3N3 zi4QR@MNCWis|Bn_(Rym>ri!)-)?Ll1^k!X_F?l;Yl#nl=#?36^X=WGT+LLKSo(?S} z9oaG#NVGlmb(>?}7;N&pY{|uD{QGfI4_wV08EhA355pAy3FEsV>iT5M zoU|YvxoheA^$+`lcVMd6ABNwLb8K;0&ShQ3$3|NA;sN3OB*L)X3zn0nowO8Zhj2R2&QY?^FamRmK} zTY=pzo55hUlV{6VF6~>}7*|eo*6hbmyaQO@9gkr_{>?^stDvqG412Y`#BYLUTK#05A-sI74{dq2-@~zPc|NU! z7Ts|Mp09YD#_h~XrD{id2EhZ#{ zR+Bp;-=f-0Ma)j|8!NS|376s5VrrP}5=RmNHqp_MTlbRz2Cbhl=Y@o<#22X|jk?qx zT1!5PH>J6D56SuiG)_zFt)%=GOHyO){?75J z7w^%cyf)tJG$3?xuyuT*Xr!GSrP?dO8`0#sesCYTuj>Q-xOSmCC~xlU924Dy97D8v zCqr->;-St6f)0Uv;;=tlbmM}COI5^kw+t}k{A+H`xssb5)Z3?}7rB?}>ul}78kbp* zFM8liMW!<~q_As6l%)%eE4tGvWQN&I^Zynv!{)Ik;{#ahweJp74gZY1j~J6Oy(axqcWt^knQgHROibR}^YD0IM{e%wa%p+v!^Tadpkn0u zYUx_5wbJ_f3d3}ek(+Mf%IeNQ72otAH7yn1nxjlLU(?*e1k6EsLQ z8|p3VvB4lA@&TFm`qRMmUpwY`$rUfXo!|P7wvJ8ow+{LaK?rHRN2KJV3=GAFT>F>#{(A<9veDan>nda!`VO zq|B_Jbo%qYTxkzhCpiY1R#Hn_27_IWwvLY!7mqo>>lW0W01RM;JC|G{H__bl*M@(v znrG(y99=(5vJZd&HeQFe7_jc@#z2C$Ue4$Tpb&*km&tL~Lb$6Zw@=d7C^RO2^qoN9 zj5L>K+gbDh41*VzpEt6-wicWR{*r{o0(cc+69f;31K>lz=3^Ecaw~#pcA@hNxIElr zM{JNm%f)@^(jw2oGoFu2+y@`~FpiVkiWmgp1W=icCadk4LePYgZJjW}KR9wOE-Jirz z=iw9ILfu?k0;e4PHgYmcr8A42ePE1dbhs$WbK?$l=02t~jl;~MR=8$FOh~G$#V^6O zoY+oPg1?q??qleUw$G+10FMduDT^t8-KBavR!^{Ode4R~-zi`bPGJ#FYaKmZQWor`I9Ft-hsPu%@ro z+YF|^=~R6wpD*v!vuvmGjdnRg4+9)ir+PIFDpKrz$pai{K48(z^w%z=ac58kQOYpQ zHZ{yKxte2gvTQ+7D;C?GvW|rxJ%g@%;KeMV?t@D&q05r%av8aj1_mU+_A5N2iB?N3 zTdW$m^-VUmKv~wc0)`L_7CG9cX*vw#je~T_cb&vJdH0UBr)3YrRjHGR0@x3*G_k|S zeb_zQPX}~MU5yPOi+`5MI_twZ;plDP5A@}90fQpCT1K>C4DKQs>I~t^Fegu*DcY@M zDT2(kM$K#FJw0O0VC`YF{0)z#1sSsEvX4D$9VDj$EU-sTOm?-Jr$;WBPobZ-b}p_- zlM@B`&ocdN0z5ad-ArpfCYR?%xMQqmyV$rgV~$%@M8=lNSs)18DcaqBvnE%%efDDF z-ZDfj*DzXKlTxTfMq~uBNX6-gCP-e!o<~3ta(>YEMOrJm77l7f= zUs+^97wA{QS4I{rzMx`4na;P!x|YZoG+arZYb?eL31g-$4g|jECh^5I`wh0scVd!( zfIZ=PFcXa!7mKKTsxbr%>Lo1Yqt6g8CfX*rZQhWfxVbjnmF?E4 zY1WaOCFcm#tul_lOf%vLU|$AiSQlB2z)m%mBM`FJS!9p2PPFwVw-5CXvj~F>9x*g~ z(p~E_E#G-QenrJ{oPSHSGPGsHKvr;uKTHwBB+W9!An#iFY$KfO*{+3p7S3Pn@eu5t z7{0sAmLXie(I;cylS4h!`q)3woMTvUmkj^3?CB28?5ykc*ABoM3jODkOdRWhSu&bg z)SvGg+vtS1@h8vc7q?jlJ^iW;n3dLEsWR6h}Bq3P3)76cj_=E^c$mf0z zzn5|;yW|7;5+DzuT@zlZ+-8!3Fx7UYIX&9Ae2JimPT1`Lj-B7a$>lk^)f-B09c&N$ zv~-UJ6#BCs?#ymsE|@`hQUc?bla-J_22bL;_JmqkU|bk@8LL$zTBuY%#jN_WgF(az zGzhVV+zv^pY!#~pVx_<=uMW&$?WOu_EjHl2K#(SxCtm=oz3@49S00G1gdr9GsRv;={=Vn*&cP@lrEXNTWdR^6&@KQQZ zK!h+2NAn%xy}%R8FL|`oKCSGIWc+|#YiXNxCRdu<0efvyIvvlvd8Q+^QHClPc4SSH zLYzbbs-EM_;mlo*Dh#En7=ToZCs7S)8|;L<%t)mDT7Etdj0kzUyyWkP-cM`6SzsW~&3 zbka%P({#fXpaVu&tqVYQ zJ6ZQ9uqMGy2aLIOc4d`sC2(-m2?$UF>zV6ucuVa0ea=OP_c@=h+E)rjzhPfA6rASb zxM)~G_nVW7#sa7Pn3FXxdd$;np1Qp>>o#{=Maml5``k5__T}Qh2PvFV>yp+_JBvyZ z{`n^9r6xM50g7EMSJ~l2rWF=2 z(%CWUv-Zs^prw37O1t(4gQT=06=e~$c8sbJhivqKH>vFw7^d9EQJXZ-C0jX^g{VA6 zUOA&JEYzZtlvFus?ofHFymC_Ap>lE%IfBZeEToF*+*YHk(gk#cRaPOLVU<-DCqKkW zwNX>&$WF3CImxv3Q`ynbB6)pwvcsX)@(P17E30W|_*FOUp!<}wvN~WJ!ysv1Yqo>G zGaXETxI=y~Gs(p|4t_!3zDnyHllwp}J3Xwsds(~t)G4UVa0)2)_mk0 zje{uuWM!oDb$bmwF<#-(IX7B(>X2`1?!I5E92{K$aS^8b3bR3eJ>tcwNgwz9u;fHe8sl~b6 zXWgtZ1%e?9iG!mf&0(FxAwYGHyC0dO6fzPx5il>>gkTpNF zg-i_J35pG3%nw}!-NnV;u3OWWqM4}d5Gw09UPsQ?Y-N1QH3w;Gi(J$0xw(e&?vnWd zmGw%GcXW>pcE~HUDlEh?Ku|lM_uV*;XPp!5gue7^3mF-{6A~Kxd>@+CRiIu{T+l7) zW^5fy%ZigqrLvaAM+I50wmZO9hL%ONseCn6Szq^^c4`?Z60a3#X-i>OIm_QAP+79j z(2&e35Ww0-Vc!^|$&7;&TK?(k86~uc6`Ja%;1HM()w42A6dZ#CV6muXJzRs;E!tEZ zx1vcGyK^PCKN)MUmRGVyTf3-HUdeJpd&4F2N?=+TkXJISK1bp&ujF#p@ho{I@m5yW z@=DSzc%hS(^nEg|B`r7~XNO*+mN+g6w!TWo+NdQHK@p*oEeS~PNtd^z>|{sbv`Xx( zV?heklJu>ip`qromh^RWcTaZL+QPyTc}pCZr%bCPBxb6Tr5djHd}S>uD@*E_s${jT zRk*CX(rd?gjx;C-KVu2J5tc8QzTg}%+*j8_eOG(k@>D4@&`lh`4I#B<*wM|l@ zjQvYg9>v-ogyYn}fQJCyJh4u91wkO1QLmT{wINaF+p`9;9W##n&;y0S5zP%n!!xg%3=m zxhNRk0|(esyjH9!Rgygauw2t{I=HZ_e~vHj6pq3O(C5vK@eGN(z*pGO;+{_A9;b!gT&1HHZW+K<|F%&gn%Dri_Cp+i*X};9!62Gz(#$yZes$3wL<9lf{m`u3`!~ zTKw62D>m70aNFeS>b!xmQnL3U_f)GIuLf{tiJ387*oASreF3Zj42dh|7CAknCe9`0<$+`yfwtE zQTFX2W-YUkvNP=tVw_fqkB&VwY49OSA76GTUVgq^e@hNbk_kCoQ;rWbtweOj9TUkx z3{L~H7Kx*y+({ru5mvGy$fio(UHV(d*otc~=iZIB%BO@(kH=a#S>6?ZdyH@zHPclBj=9Z5*RWVET|t4Mp$^W*jig{y z58!SkLFyu#6nl(q0{MZ;t_;~1L}xVTJ@y}b1cZhj0ikqtAVhbD{L}(;ekzg+zAF!g ziDM&TqN8yc$9j<~bB1^;V<2XA29lekGHAy+n5Pqw8C&ryrbhOy;r?m;iWnBccVOn*B11f`K ztMa9lVH49@0BmjbS1W5I>AmB&J*m6*+MPQMW7O5zS78g+)}qyWcc`3tZaR+nWBi3tje@{Ni0O&fbPIx%u?Y=q7? z7j=&Jvgg(5=t=DN*xjWpw2!-=oOAyRc%=-~d*(gz6dYx>f^>LIUTY9)^{wn2pE%b# z);d(tNw&%$c@eAa7cRV?ZI8pcxbN$Yit!s2au*luBsUUyA(Qz0rVx?55IG)`g$yis zpg2{IDV>9%9@8$-Dk|12Daq5P3$AQeNSifFHOX(i=@OsJirSd%dN<*lGkT|YxM6gx zL7h>A!GXU~y-}D7eVAKrA4Z^4PTwla)5a^5mtPdIr|Gx6tVyj@HgUD6j;x|h{3ALb z<%BWjud%YRHD6n07r8@(_2Y&>PUg3dmrBLAK_|@7 z|CH>6@IytqYB}M@#Yy5MRj8kfO-RpMz5%SS5AHrP3WEdzh4p8;r-%JcdiJ}!xT<*; z_4S-JAE9;my~M8RDY^0Hjqrw=n&t4bL7)sq*v@>XnZWIFJf) zps5j34p(=ZK1fI9gXCdtV`T{rFl~^$gTw5nkI$+pzQ%H~id0xt=1h(F!M6(|?lrBr z4b#iAmX9@9T9P;`De3sM(Vo9=+9;oSYh+HUtGhx7laEc;^s(8dF>T)M@eSFtCurK} zT!E=(`T*^d&mU%hh-FMo!-3@0X}sy9^jkjS+lpyS4*5iWa*}Z=a3>AJHpmBWk=lGx znabwEWH$$G6w_t|swQS-n4C+@7JywEC09NWrJ^?~3C?G3 zO|nY^oA_Ty+?z&^|J#aKA!1rS^EV69|FS4fbqQ9i|E5bh7pi3n&7WFnLE=P}Y(K(& z6^q*-eMk?z3HzBYEddY5eOqu8$>>TZd@8snDQR)HOe%fbu1Qg>QDNu5mX|QP-?zaPi zE^%<@nSSw;C^RrQP8=zY5P6CsL@{B}QKCu5Ih9q8Jl?T%*IMRq$x+;FHKl+rcbjiF z>BVM*Q%O+a@umFwDX+av=*@hb=Z9G!Z_JTwm&}o*k0;N79qSzI$2DbGlqY(b1C)y( z^g@#wKw4hE$(#936<Q1x-$Q1pd)~d% z)XtC})h^2}&4QDK>|VEE?1)gac-kHao))t6*RI%7VVw85zKo2Dnzj=%F>?cMPPx)j zI^&Y%mYWJ=<1XPL}>Tli=Wz4 zo^qSkB^$Hb+j|uAm_RZ!P1~o0RpLIcNmu3)31hN@yaN|%Qbv@P;^Y$J%uGrWzJT}~ zDdXWpP1|QW9}WMuc8ng2NC|m0_e~-~>Jd8z5jz$UW?ygb1{@~+nj@-V9H0Yg(>6+t zw^GS-i+rkC>x>Cpp;$CX*WkDu;$1Lf7$VzDBy~h1{05QgzUMIC&17sGD=j}Se z9#+AD%U!FNFfL@*lZRgkVaH~Vtk8vfRWhHyP4~05Lpk$7*g9)Qy9}$u4&49cz5~uz z>o-MNL_}Gr?<0%fUAZ&+p6zbb2Qp`N&GjwV%regGq!LQrv>N8VNx$-MnQPP}59Yb4 zdElxX_9C?pvUJPDbYo69ZdAiw#YgT#kGpKmH)DIv+!loDO{-aNdR!`6tqk^EEt+Fa zx}d$v|*%ZGa4%+n+M4c7TGWt zO=3%PmAvj{4)AZCA*7q%a0l-W_xbQk+Ll$UW?Gz}YMKJlU5P^}e~J(XSp;)z*2ml7 zR{-&Ah0ITL3K4T<&-63jn-MJWeU>8rAkgzX#FTz+2ENPEwJ65-A7y!jc;+Ih0O1&( z36}EHPlnSorC-ByB?6VX2S1583%>_S&m8>hA?3M+v{CvQP5i_mrBC2_mhAakJkOIo z|A=QT+4D7O2tEXRYuYpYY&GSf^j=DrJ>x1qrc9}N9 zy{$-U$o#c%&%gdQTMy46c)ntf^qELlg9OX0UklG|ME3)tKvG`KLvx2FIhmIQu3k+@(4Ee)Ex<*e?vf zxVl;SuSS<|uJN+kIrqwpCKcoN)q*#t{iIbj(enP&pM!5IY}2@A`}G&LDJk~_9U7`aQ=PEC+WfNS=&_hocgu?FJCRWB{^lV z?Q&V$X^ndx9xGHAM{SGQDDeOBiFXlCC#Irud{O6t#SfnQXQ$3k^BFU;@B8bf{B9ff z&o%RpIF$`%Soa#2Iji$))WY>9J{LaZnk741&l`+dU+^+>>%K#Q;!y21v8O%j&YV4M z*F64r|K4HcKYTsXw&kBIzRjFHUnxWThhP7!|LF0#&EGhE_vfeo{38AMdtBo$PQ*(7 zb$-PI|JQ$9;2gj3P5u2lzucJX-*x?rmUl})amJ35HXj*B-0aj znEYsXeEwiXz>81nOpGioPh2{j_~Iv(U5l=)UU7Sc%gZr8EqjBlKmF;Q;k)iX)efuZ7Ssq$+$oD_IHJoLu zDYhaQEuvbD?`*4*g{;+f47;4#Umc+YOdG3+8>g=)^CkIvm40*F!3jbPgS#tI>ST zNc~F}k)_Tj2h#O_h&q#Gp{$NE;Q(U9C;NVX0FNLRcZ<@}SS*4PsZY~L*?^94VPpHp18**LOIM#T z4S(m?@#MBuKaD)K_;K^h*RfXL3%pJ&Z&v-omZYPu?Pu*PlDIM5$G)%w}*T=wCdn620fdaWmgx+ltYl%x_#0|Fy90-8)v>ug+`UFz96I@z-Vv-#J#j zp}ETJ<9`(UmyZ6UHU2UHhzRLfkHoE5OzngyEpS1tN zoq`Q_9B;291)qN#7S>{&S=;8$+ESz&(CJ^a`*E>$r`FQlCqKp2v8tr>!5z= z0|T?NN=t9w{^vgx6#0A)kD#FJ?DOYaTVK6e03)iseOz2h%GIm)?|=E_3?&;IPtTB$ z)2A<7xO3R&apFUlz$>TXX9ypMe*3>jGFg~s_)7Ey^uDyHn z^Dkb!d-u(onX}fc@%9c2D=4U}Y;XVZM=kA@E1jJW9XftoDt-L;>#wzSOiZ?HIehrU ziI$e3p=Zxj)z+=^^9v6zF1~!ZtLvwqboI>4TwULPKRx}%jp5l(_hgfLIB! zk`iE55D+UNR#F123Ibv!!~j#kqJ<0`1=O#A`tcnBG3v*61$;+9jQa6iAKwuWqkaX{ zuYmedFklg*etbtjjQa5%uqp_MQ9r%|Rs{hu>PLCZM+k)QpoExta6p6vC5J>LAP5tY zjDVP6*)?X zl@K$-;DBdzhmu1w-XjQ;@g4y&M+pJxN{E#l6cYiT2>3+6CjuVjBOo2{C_fqR5roNj zkAN8Pc#mhqfJgaU1P&(=aUwl%xlB?b;zX_x340KPc((@u-?{jX^hCsoTqXgD)I(eZ ze8;3hQ9{5Y2=Q(Yf)MZaAmBR}-;oY@1P(s>2nw7;#EFPGTzu!^JK{v{2D}SI*noF| z2>8y$ccdpGPUI>G0gs>{1Uv%1bMYPNfJfMXcYz2S@GcMm-?{jXbigAhaF~xGhl`lY zkx?RIeSFtPO#eBGc#oKiSOKvDVtvH=h&h}@gk-=bA|!JZ5Gx?oN34&Sqlov4c#oKi zSOKvDVtvH=h&e)l3sF8|E@B153W)U)>m%lD#QTkSkC=;C0kHyNeZ=~RIl@E)l#iH; zSOKvDVtvH=h&dbaek0x^<|0-=tbkY_u|8ti2NmFn8t`_5Pyt5?K?U!W5Yq5`1R)L2 zM-Wtg(?Nh&Oq|wWz$*e?5%7q)ihx%HJYp_lF4Cz6Mf@{BY=HU|If)3#cuqv1H#9R; z@T`Q8hUX&)X?Q+@0C=hbe+&>CC;}e!DPY=Cq{)T@Yk3=kWjUPaWah}ZzJ0n*uz zf&yX$g+#;%3Q33&6gWaW2ssMuxZpj$BPb*xM$pGwE`q)SVg&s}#0dIHh!OMw%SF%! zJQqP9uv`Rvz;Y1)A_TY)_0tz2>KCGZA?g>Rej$?ZUWoUI5l}zgBThn$ppTba1k^9& zBA|XD>KCGZA?n9_A>Iq|9x(#y$9u$pMg1rr9~6L(0%H2gW&UwE`iS*8ibyd)P{ca} z1VyA8ASmLU0RoW+kp}%DIv0V%F+yyF*ch=f^3kx-5Go^9Mr?%G2(d9@V~!9x_aIQ~ z_aF!XwFg0nviBft#JeDbjd&M?uo3Tq5H{jn5P}e8??Div>^%rVl)VQ*h_d$}Y{a`D zgpGI?gs>6sf)F<1T@V8MN#vl@5fX*?i-0&0abhAh4*~HJ#7B@$RVg7pg7`=x` zD$=Qm%7{}DrzUcg0IvjiCBQ2I9^VlV10LTwN`O}ayb|D*0FUnohyjo9iD@&FF-MY7 zIOYo{5p##0DW>o8G(|j8dNR^E2zZ5v{eyRG0vi$BR9;GBG6D|I1c-9jGT3J%1*A8s%khWa_1i1cSho!Qjr|$lywOS^TLUJR%ph zPlyKvAqOmm!x18Ez*i*ETFInyC}z_X@Q(5*&^!ERUQuQ|gYc%x5YjW!C=XzmvH?R` z>6v2Y!=&LmWyF8_C;*n8nY?(KdvhGpD3p}%3gDz4;_bSqGAr0@CZbcf0o*5X~5F-zAQa8--zc5RM8Q(PXA9|*@Oj%SXr7?Igk5m?0Cj&!xQTg~VWyx`(av4~vhj3x*MK-o9 z89r>A7#xsAh}Y=3SsOTtvxN8#R*z>6(wTQqGI0;UPQklR3AHtC%tCM-A#7X?wGC3%Z!Edrn z1jFW|cZ8cFdYe0sNu?LF*k`<$H;coi+=vloaT!$`@*)X&n0H*H6A+UZWgtKEm3kb> zOj(qNi!TU(qq6WoWihZ+78M~cm&%jlK&cE4Or3yZ%AuHGxl9?zB7dgLg!9|DF=bGl zR1d*$k&m7!jmqNELn59N(IGS|lI9_%G|IqykVfhBOz#jSBBp0bqjyvW!4NEcji?c)p~pgO5Oc^OG4kIInO zE60yuDUGd@!{Ktcvp9*|S=>Zqr%xhv3KtKQhJYu0C=ZA7AdOq8Ep5-ve&*np3dD#pcrLwSzfM8(o7x4H;xKTYUUNSg(Bd?DslkyQ9!6YJuVAwRa zE~LvoRL&&c%B$wb{iJGW7^e*-w{cL^pF+e37#+6(awn!4Cz=-NkwO_=%Y3-_E4)2p zej>zRx;hi$H+_re7{<9yhlT<#2i2=x-9pgLLb zWJ!sCk?xr;`pKFVm(ZH4}4n$`-| z=38-eG|O(yzoiHRK-uy6dop-VN@^U=xeT6T;<_R|eKU;6`XVib*I}`Du3#Mg9TucC zSk^KB4gh`x0JnhWvqj=fU{fNXJ)l6OVN{B{6@RUDr`TF7%U z0syxN0OBIOQUcfqfLZ|51E3xNg8=9Tzytvl^PECd08j#ecL4zXePS#C?g1ba0Q~@1 zbFpK7i2{e?eewAGb7y!?@c$z+M211E3NBJ*eRt0JwkSIjx~K z{0#u_7wP?zQ2Gl1ei6qiH2@%aUyzbkRmc230IaA2N|ijP&D4fV04OigvoZ%j1pvBLE%)VAf>-RP&s| z0C27v0Ch!rbp&t~0Q~@H2EYISHec?T{}}+n05Dp^b9#?Zss%uEk=|_+07wDwY+tOy zWdOVcKqUZb0niSBbG1CD8>(pZ2LSl6NKe5O03QJ$IXu>(8UShGK}xe~JLcB|U_~u@ z=^D@J0RTp?0bmRxO#n{;P!t|}rv?CL0T2d&YXCR~fOArw({rk!1pv>05&`@J0QIQh z0{}DuU;+Ri0^mog;Res?X9BnZfL9m?YV>yi=ns!ox(0v~Xu}%x(&qq>58N>|08pb_ zFb);~SOb9ZuvjH20T5|`mYxE@`vahKljl?bfYF-(_z~kk0GA0RbZZNtgc{mW!`A>P zAb<~fP7MU`Apm{`EfK(f0Pyedjko@N8HiD z)8hxyyq0M0%-_g8`exzvo{O(c1usP^VP8E_t-m(?TeA1~@ef=wgFk z(?d5OPJ+36^mmtjJ|RgcR2ceKQ?gmwnOWA0yG>0hhvMvRU3EBgcjkeIP51vf*Lv~p z_nxY- ziCH1lTkqAXkM-2z7tPd-c#bL#W|BEdbeEd?9W&&dFV>{Du720XO4y&yvD=! z2X5c5erv5mT(98JufP8KAB5?j>EC~z*njBuyhGo=GiX$}-t6V>`GC!aF*^9#|DCifeYJZuAZswZO#f#Qk7nta*Rm4TW_>Hzh zS8-R)>>0R{O<}%E*$n1hxEWS1rnnUB+~-+GL;zGqP(mPtg*)&gOuhl$o@bN<>)q5p z`qvx-Aothl$bR&LP$l&H=e55^YkoH#{bBgE{B^&s;KpxJv31cNh$;?xbk=ue)1#f8 z=l=C!xA?ommc7R#FZc%KWF(X%{m#rZJ;v6rz?eJoS#$2A+4AhN} z2?D5?!}(=;jZBC6d`0R1SD!hY0|hbOZ9i-@cAl~R#h!?Xe_SvA`G5jX`@8UbXps1J zd(e9H>hC1}^)H+Zmp}cbYWK}g_+CGMD%|&M;0ykLpakmjwYmFmyG4fe4Gs;Te=>Yr z^p_2Z^LL!C(z5CN(ClT%?BuLU-J4(hxsVWGK8c*eV?Qr^B!0R!%anr&&Rkgd%7|kzO zEq*wc`%H23yC3&om~i;<&+9*lzBRlzzHOdev%-%b{k!Yb-FCm^yI4H6(3sk0lAonl;&z$P%I=Bq0iIwsb2bEwrcgf9AROO1<8<@8|dX z|Nry3bI&s~&ogu8%$YO$oGx)g|3sUE9k=W)zpO~R^tsTW*7`SY{K5A#eg4TA1cAqi z8O{k)+bpwIlJcdke=Trg(P!Sj|65ea{)*UTY8LNJ_djpwx@7R>i`+7X)U#^*+Fr5} zQfp7H++NO~tJRZ@h-IE!m28`|253N~YMbQw-nENZ`j0A1Tflu8C#c zCoP(<<@e||+A^KaQz%M?CQas-){I|NRBV>k%o9~cWH7L(F8rR;8Hqt1e0v36`M)s| z!&7NfBmNT=R>6^*wf0>T$6uab^h>`Y9sKI6(SDV+1I#S5wvu`UEwj{FLq&QksSH^{ z)i-x}{LWm_oPCmnqdRx_=Y{O+EcTy4fY}~#eCQOJ?Shp$-PApvHW1pFFB|d&o z;nO?GI{7rA1JC+Z1gj=%8aT=2HzofLKDkd<@<8l3ufuQnPCKtVnFPPnSp3jhjHhB< z+39^RUWo4OxTfGQba}b2QCiNv)PFSfsg2pQ2$#lVw5A>n{z-^(m2%P~PPSKxvTytJ zW4N;w3)NG-|3%t=Vj_QRvdc;mpHAz7rc?Oz3nDYHa7@GWoi{o9(^W9XNw0)EWH~{ zpX*rj@MUBdW+?OLEX{wgqf*rJPjtBQcjBW*l!>U3{=fVQJqOn+yxZud>Mi{=?)j^M z62k?&HjFGjJQ?u?h1>oqQFl6TpGBeu&?PEHlcekS%wnx=t7d-v1xX9(_21tKB&3c?u^ZR#Vt-OX-j5i1D=1&@N_8M z|Eu(zRZT0lvb3LGyXss=n<4r1o$az7cirb6RM-69i%bW`q)jSD5F;~(#J(k zXrAGdcJkL)wqgBX^-izWspQD^z;$PI%cf(7hke_-R9e@pP5eN5A*iN3SjG(#08k*4 zVA13r@nJSg=yewYYk0{G|2$^qtI2(1U+5%9@!-#Fcz^H{)&IXjpE_`n2OhR3x+I;`r2xzKI8q+BP42 zX=^BFx@F97H&c#9=2pV;oHYHbzH@DEJaQNkjM($-*K|L=>-qX3BzoZZ300l27j{{c zlMGfdaJhG@^~nr-(bjahU3r~IM29hNgteF?JGy*ZGy?9J6&EG&@M)m&j6CFC8!Q^n zbh$GvVxLpMnz)CsOl3>Mn&jo3i@(#01yKQiMyoO~^r8CySLoE$?^fN;=XwLbofTJo zv|jVjV7Xs1iB05vSE>k`gSGEA!3sW8N)9PrH?U6I#Ntj+&B)WzbELap_;xwoyufJG zdf~2Qj7~pkimAep$z`?2*~<^c8Vx>wpVzi~CKCZZnWo+6!(SCDV7t}^m6KZBf@|5AgzFlIs6op|>3THfNPGIvEIW zxS~xy$ho}TYz~ohY;RCpiEVlRsDJqActp9<)K~5X{WA(XGmfdTc=1+8nF^e4$*?qE68BC;1b^UmIXW4gF zs}e2NLSs{xhsJ%m->VpIH3f0X-`zB@%=|;qA@`Ol&5O(_UM7K&AJ#ajDwp25`x57C z5Ot)6fd%CUPBIg+9+fxKx>_WVY8WIlJ*gr&dN1JYxj^=koB5hZEc`Si(p8-?gQjO` zo7v5~o_t;7#36C6fu&5C`Eif+x!1cQS+;!-;3s8yf4{CV%Ke&2uBExFmpsaloBmK< zrs2B8o93SIO@C_&;Q|B_C3URJ=aseb5`;0?aURrz*me%7;r?Y{w%wK5jcD!}Y#M$u zJu+Lgi#9UjhuDaKB38TnLD2>;FL&=fZku;y3$H!vzar)*>gb8TOW7GAj=TKZoQ5mj^y@9^1dR}U^l3yk z!DL!F!YKi~`JgcwJq;YTu~kPbDw-%XO|twECSMov*q|p!@iCjA=ivpVd9O=cv_=qgIE4_5}qNSQ2!%4Xm9gtw=d({{8EdR*r~we|-vN z`YFlQ6;&T?$~et0mkv{!muH(&EKkM983J%b4zA0f&nY(I+z%*{Sg72O=inFAAq+&y zKMV=O7_D0vyx%0M>Ql7z?r_aN8E>rfgYb1x_PvY9p@pvXIpA3 z;ntMk=D*u~5!*c7A&K?cG^#SD z<b|SA$~$mUG@l%odmC$ zYNi6;UYSPi(pP741-`MZPznGN|3?-)f8l zsxf8|lQUSvWu(EL>B+zc#3S`O9#ML;aUV*Yl{vc8L;nH$$}cI^;+dcqn*WR1Y5O6L z1~0}16Z;lsn%ORU@aatJ+#)ZV=qnHV_i)?PFgg!>aH-+WkmBpuzw;A^;-(aXyYe;R zQ>$1tH{G=@0)0kVqtLG`L`P-DjiBYW?qrGjsf+)pUbOwgsQL{jzR( z#{%;HqT`aQo_zS8ZS*|)6LZzxW!rWgyv?aC(q#1TfDqmgO{dzB<*#%hB)Q+qAy?~f z@Av5;^Vl}7-(BowV_j8HfuvSNN?ySA!5W2S!ch8{jlX4-^Fg9W5X!$ zU}0~V*xczve?AcDkN;M#)Npo!vdr7JuIY|bPR1gA*Esu9`xw^mnala^_^0vxVV*2q zrr)=@N@n!(v>km|@@3!BC!JH)m5tXOPDMR0h3mh}bcvlJg(?k7OZ8rV+iVwfea*_v z)kpWgmuf*MdT7)*o`P^~6{rJ7$jANL~B zLjF$xiNsmBc-(QE{Mn8%=h-8UBF{<=l?3ItnMO97S&exv*mE=LT;{qv8c1McHh#R9 zhxx3h>AB@0nWcI_O9Mj=UI z+XWknkG*YpBzl`Y_2F)_CGWytZDEd%aSU6ZDeL+~Pf#H6{^EGy-=<`L{5bV$oY8*I zj-K~F3~h!TDUOYT28~YtI#W8kh&n_UQL&H%MDf9+S8q0!tl=)I+&oY{DWfj_V$Nsj zf6W~|fD{Il{gYv4f03;~eBxS_6ko6CiZy+ecla6WA4m4FZ4IJ>A+zDI${f?fRSiO?-_N_|SRXQ7a z>JpO#4>+E^ch=%yh~Kfk^sLXEV`~{h4PIoLY;_{YoE2n}c|2(qdF8oV$hXOdISN-K zC`-CkEu#t16=J^jEI0gf`a92Sv#>`U+-9$I%3*4if7cX zOUZo{e3K^S31~Qmr2PL-L;ssfc&HA?|M1fPkFP+tc3|<&6T^I^#Bdkx)y;e>lunPy zVtUJ$i*OJv2vTg%`0ZpL<#`5A#i<($mMmNJ#JkdaV^7?J)uWHQ^%GPdmuu$VA<7%( z43g$(P#)f%=uC*e_%X)M#dy{=$JH2NeT2}hghL#vq1|p!5#TdD}^ojEM$jT4=1_blsw;C#p z!T$q#e}08z_Wuqy5%`Iu35whtX@_Sg=j_?F(&t-Ke&E!Vj!*L+UJf5G&O6#|^yy0f z^TJch&-)GSb9EU%k#pyG_Ti69vlU0W0y1;Yc1%9~@gvzn_OymFp-U&!BdN)i!T3Rg zzx`=t(Z%*thl|XNeqfjDPWKGhW-{sXEn3xgKvL!6?rPJxXPoNfbpoey->o!?;!Zj^ z=Wp-p&svA#Rm$Yn$mOl7?rZrvacCeRu(LIAJ7+`f*$jq=HA#XY-bV7n%ksF+2FcEy z`s`LI6{WTE?(4N?BA4Bz=KnRK-qV>I9Ps91w#en>|7fm%7pAbxIe#?zwZq{RN6gBO z2CG|)?HcS9-Ps*CB&fgRrMi4d{g;qe0eV+uqGoJ?z-zKQXJ^N_;Ah;B# z<==GSVOVJBoZNmX1u+W&U+o)O`$V1F#e5W`u;Iehp*!PQGY@4vk>wv4Ex538{6*+} zwGJcD;i;W!Iyzsg`ADk$yWkPRhq%~di_TlUk2!U9|L#Q#wtTW3F`X`WjPRDtStsVn z!u$8hutj6O7(VfZ{W9m(+}nZAc}3*c9&Q_%p7d&^PkLoRY$U*#tQdPHD;Vj#K(k(q zQNfm9&;Nyl)~|+0Arc(#y^YbF+o-X!?15CbRLIgurfoMV(Yqy|-sLzd5aB)g@cmJl zF2<+g%vf`C=b5=VCXE&A<9oXr7kKYaDEUMYEO|B%T~<@;EWl<#c50qn`T2Yhgg~*yVxrsJ^{`jCj>znt7&JV!3r`p zV12)^;T<{LgZ@WC51Is`#>0(g)F_PO&pR3qR}Y>Kvt4Uqx{WZ_v)W=(Hg__RJ9C%* z`iFI+JGKyhB(u3y@~dlKtz>CE;*h7W&z5fL$h_rZ6LXNv$;Y1VFRSmBRE=@vR&m_g zc69Uk?F^7;Y)0B8XSu4=HSLw#%v*icCpFwz2w9ZuS*G^absXbCQ~MFtX|^eL^XYT@ z$CoUDv8FsAs|*(LbjHHOGaDm{7k9qoEm2%jv~8mrsI&YhXP~zk%{mG`+`O6Ba;Izj zMq!f)w((x8_C$X3O}ogU($$2?p_^m@b$KPj^JkjJ>x9>G^?A8gz1DZ(esgqWS*go% zO)qJm;kcxx&EhYrZ@Rm>zO8e$aK0(27nQhP`Htip29*!NkP6+f>q!!iNZpE++vC4M zA;=9&da_-H>DLWS34-{BCg~HSbK#Or`i`btdUYnCLPNDFtmb3#o;mcIyvSkF^BgCM zp3W~Y7`99&UMjeB>51+6YK~>^rDAImPB;I+{JEL+uN@+yvZZv()g!08K5>=3;FtU>X78#G*{hf7 z&+Kr?%Nq>dQWcsrS=F#YY`#5xq(BCg(6Sk3s$V4{NT1IjoveLab#V4h20L>Zi-d%Y ztX^aU$y(oU(EiJVlS3y@o%*r(`jp3Ty0+k`Z2c9D9@oC(=B{g6E5BQ2Jq%Dex@Iq* zfb71%#7;Vhu##j`E$=A^OS6a`Ut~tg^^C zYyH>$9Qn`DJ(FWd)F4AfGm~w95s1h!(@ZlHWv1^xo>z1vY~9eI-7L!(-Qur*Dpua` zl*5SJz8Bqs#PUO@4lFAyu2Kfg{jGOV&dz5R z{~+C^aW7z=RI!f)0VX{(PCfU_3p&17Z(!ugwXq-AIS3v~CQ?~VZ8u_o(J}yXSspa#)hvp;MiEgR_$#IfS2igrKP2O)tnA*pDdG*Pc)ifzZ!VtqWE{m3&;8Fm$@%66<=N8 zZ)9>z=8N`59&shSIs1uHklUQke5Mxb)1tRjtIMp(nN@VqR|S6)9ef&e(Seo)QQfjM zR&l6bUqTZd7maUj-1zyo1b-$?gh$3OGUKar8*ja9GgK~7f7W7DczWSBz7FHoH{K+-h3vLJoRlmg6}1(;IyPTr%>n9h6ky6<2z-yG&y8X|ZV41C1Tuk5#O zM?s+LeOK2#$9H(|NI$XH(be^Dw|jwZuEihD7^Lnx{pF0hP*Pj_UoMm_2dz(;cWe_6 z+c00~(E|qN9jAC7gf%@&6lq(wx~l8cYTrINArH%wZ!bN1*{tv^XJm4Gbh&vfSJ!aI zi0{i&%Xc1DKJFjt8C(}@_*Y9q$1f&rfz-)wJkJu2*A$L5yfeKja~$<-k<|x_|T|Ys6U1D+5BrlS-wiwZ}hJZTg~{tek!D8PP7~(9*xH0$r?^GGI$4ZVDiT zzkTLVoZMx)pv~uk$i@}UTu}_)r0>=l>qpfY@|CxPOr5=V)H>KYTkq%-ecqJ<4Pe8y zSwz;XA}sv33_Kd<^l9^F?fFu1 zxyX{CXBYbknOo(S140wsx@xzMURiyUTSG*its~dSm$!8u(P;wf^4O$p>-FVP)YIc5 zSGL?@yMOOc%JW;FZ{-cl*N=K}bYo)}Bk}9)kM~NX)RweQh`KRxx(H@6u4Oeh@>#Zy zr-`e}Ie0u_zwVqMHV}7N{o_V1Ny5t052UQaN)=xoKP^``7GHcj#H}!k>EA@(GG(>d zM4uLY62T34oD7Yr^_lgIwX)^3rO1YU&Xevctf(LH2ZPbV*~_$6Zc?&kJhQ)O*9Ml_ zR`rU<%e2l`M3z=EF0UwDl`vm{5$5G%g-y;NyiBuxk=ejF*T)Gdf~z9vG|Jo z7wKc$7c6Fc(f%mETvew`JI_{h!wL<8L>p;XVONG+&B~QNY{w_IblwiU&QW2W?pxlq ztH4{1`m##z>hlo*;djP4{9ohItOoc-Sy>$WCcdwUIN!3i}HOw2r^c%RN%; zG05;QJ+f9~6MVD9Z({Yh2@$;g+*4np3!n(3R>h<97W37=$_6uJlzqpV*DmG!4P#$Mu4 z-|H6X>uqqdNOWhylBUBlTiJ8l#*R)-9Ove^Lm+ZqdtSg;n|eL;?7MeTVUL0jvy?QztJ}+=8C#tUWdqczC`}up{8#9fyuc_8}KdP))=@YSV z*Nsub2+#g*&yf0Sk=ey}za3jswAQ*{w{BzlD`y`sT>dTUe)rj*BPs1 z9N+pP)IpH@C>v!-=J`7}CzahlGYbkFa;f2Y^ZAHOv8LR$tM+?074K<@ef#+1JJoc) z>O^DmBbnZp9;|O|`N!@z2j98Svef*M;>9JIIXogK*5|&kebeN>?alG3V!l&`Rj*vE zw-wAYs;l?CV^Y4Ps`#3?GR8nm`?p_k+#`-}{ULfal1rbor0E`d!papx$)i~1ubW-e zc6Bt*CTe>h(RzodVI=`!k)1Xq;`Af_@Vk@PuxRP=fZ%r(m$!=W-l8yKf3H`_v=8cF zU^wn^vX+rHti19=<4u*xL0%ATdszRu0QE0BEdtS2FJ#b83%q6jL?5LBoLGa_ZvNGv z?)eP!TgLz$yhVncyrs0Kp?*CZNQBfzVd2|CzwEwRXB^Ev%kHZ`o+kP6V~Syxu{$-* zfBe(-6#VKBg8ZL``KK>qT7q!nwYt*8zjvTI=jy9}O^xN(!Pl&(Nv`6jNl?_h(BS|u z%ibasiVXH!*r6HZKXj;{@$g#KkiNU0iK0sK(!B%E9XuZ-9L~s&D>~F~%N9Pgy#L{v zRE}1={9uZ^(j#^OF;UWU_H!|@L+L8b{a@k^E{yYeJDRO!RuU?snls+ev6iqVZAJpH z3yRC!*DmPP(N~GmOO_ z9X&i<_R@wlGRvm78ZBS`kEVSIC&xyg03s*_32@x*=|Xe`MTYvidYg10z4utVe7nPXanFpV6))e02yUuJUMzf`$~fBDLdFr&u$ z+$WT*tlfA2TGW zQENkPgGNm|dolYI5!e#hmoBlco4?yKHfrr!OZz?vbW<@3nATS=j?b*vu){r~3gTZl z)BU4%!4YdmSrMj-ULl`PNzmGMT<&2$=~>_9uG6zaga_i_!onXMET&EEQx$PjA&P!E zoPPUu8gXuC%yJZvKr0J~niw%%Vi|e{(*PEeO7AM06U}f-UFVx=44wOkD0Hir8DEkU z0XP%wz(hf@&VqUaVIj$mBM16g5AaB_tY_gd7hW%GVlK;b(A<6%LsuC)FIsfK(D!jB zF|@T@oV7{uCT`ZOEf_gHYrf)j0(A7yvLDJ6rEQ@|H3!SBMjUfhBgO5~M$*4xy)a!u z2Hr#lLspK8^@yg-bVOWL=%5QGzk!$ z(}LA^%p@_2iE?vcL`9nlJmCg$W$Ss4bDn-Q`H$buN{FF^1Qt%07Ebh4=|l;|>yTyK zn8AP6t%dAII9W;+#6mdZId>}ND8_>d>zM_$C|$yd_5p?pZZXR8FL@c!ou}^*Fh)&#nTQnqcaKw+=%?!DR=k8*D}GQwPyK z$=WdrJ-k?m&*#X}P3EQ$-mqeGG>tI;|$|p*q&l#hOh&B2S zm)}jQ&8uoG&p!r-)<$@c79o6(T*U%Vnw_bFpJ@c8qeH{3?Zc2}TW`8eugHURlp;T* zq=4_GwA}0KLQpGabRw0T#Nc@>H;Kl=U3_Ed%XTPNC^sj(LVOD)0_a>1J|wW1YdX1Y zp;~b;y*TkcLae8tkpAJ2BMr5eyFsrc!c21>e$p3iZD)L{8a{X7NBun?;jRF|euA4d z3trbz>d27$7aAg-%j#cfK)PzADL-@9DZ=Ewx{kIbuLYV5rx_AJQnd*`Z&Iig3*D1i zW@TQ2LVaQ3%YCQW7?o?hS4d8w*`$zWvW7-BRkdO!jb!^na5)plt-TD3y+dTx9B$))E(=Fn+v)c*yV#F2km<2*`}r7w;jNR$zMPRu0MX6 z#N9@uI9j;?&(5GovB`u}QaoiOLLKn*22?wE0Ny0YsJU$Romh!iUVPwkT8=5t)cy_D+yN z;+fwkL8c5~*?dv46OGeS29-JcP0s#9Kcx&Rzj*JE52w1ySh*Q*Xecwn2U4iq(aVJw z+5}MCH2|#vS|8`;iF%ZR*FA6|!~B4`d(Dc4kSY;e7+8X?hR!?Fn4^$I6bA{}Zp1B4 z(hx5qCZe%#fM6Ji(vRy*SPtr#m>krB7GSx_uhO*MBt{BeMFs;)x?%#FV4*m-@(+L> zR?zq)4%+c{a;4j@RP^Vf-!c!CZLz{BrolC5w)g7~hn~50r<c955cc;_TQJ?uBGUXO6;YjusOOkjJcv!kQSnSS z0wkaz_AEW?+s`JO3@?#iEp(e9V9_w2zLg`HiU;?`zaL=7mWUruLkhJ#(v2c3B0m?%@fQE!5RN z((Y%us;bP&J-{+CgK{WlFZ;$Xrt(2Xs2kUH-?B%5z!UY8dS4$5iy-PDg9?rLVHoRX z>`8joS60m{3_U(%cA?AT9OpW`c1CjKxkb1svgegV^S(R=m%Cg@Jl1)zuCuco3CS6) zJPD#9z57MHpmJ8m%Q*#}aD%94`H*>vDqePU= z6*k+{0Z~aYXz=!hDEX(SZD)jgLfsWXaRpq9pd(57yfESl!>AATS)B5nwe?D{3aIf` ztt_po&_NvuCg!De%=3v*Ck! zj^Z=&-+;$QS&Y(i3h?uUA{4ru-|_MVmp8T1VTEQ<1~G*j$Xad0%h>1rQFSA&q5g|x#rzKB}%ve+}`CNyXe5&jD0UO%WGnemE}=gpF1yy&)`aF<;mtO$e_ z-w@Rd36y*+$O&v&29ZY&uh8;LQ2Tl0+^)7sAuQ44QqWb7$G(2+;E8}b=%cEh?@=n1*-4Cu^ zrMeHN1F~VWDFJ4mgQlb?lsF&PJ^ubBu?-BrofppqxBj%4< zbPF*bt05X#ZJOl2RH{;0QNA2jG-N;z`G?J;pupY=I+R}`-VDO2r4|ykc9D9Anp#1% z9cgr&f~p`?Hg=m#TWi~XxQ}Y7z}aQXloF`bd;4xz2hjS7YMZwHqL(kD7MpaS1oM6M z2q5{2c7^Pc$dX{wybkLX*lvj|Nw%Qt!2-~SEU&FCt*%f9k-?dH+v?s2SYwyA+Tm)o z5X6ve^XO=OM^7)hhetjrqE8(3__TAtmMTrh6{tHYr$A7XKP-cm%=lvjJDw2UYc{On zjXlov;tAoKX2Tj@Xv^=5$f^hjH`L*JhM=bqUM37F@k3t4hph;1W}JpX&p(Snsj0JxcQTPlZ-lUE1!*&{ZxWO92*Gv*C<=m% zySgCFEBYNTHWc6NK)DV%5?gn;u`N3f4z~!EFV(D7(?Az;aSk;;vAoti41E-F@+9Qw zsAa5RocWwh0&v?rY2QvoQ0F4N#LwFqH98<7QCDO~Vp|)M{8@hJG!Z-L&_)FL8>mo( z6pOow4OA#kio@N?4OFN}ipSlg1}a=fO2FM_4OD1NO2pl64OHk$O2XYi4OEDcPT=mW z1}Y@zB;#)OMk?gjNx|JBjZ{d~NyXjrjZ_$vuJCmnaYHBzCkP6qDA8Z$O> z2eT#x;H~s4Kfh)qyWaTuF{4)VgP)%sf}j2T!Vvrp;RuHK`{A>R;r@PlNK{7p`{5gy zWBmP^kvkszK_U`PfIot1;E!M?e23&?4nWjjE&zzcXA!)Q;5m37!3uaE!DX| z(knW~>y?)$bb>(1FKjzQDwBAtkv1^UU^OJ5u5QI@2m(SE#R?q)h&Vje&IUBau=u3j zNY7RBU~=3bh~iwk5j9>Ar`}FQ_OQh!P&xPTO9hwZAB7lWrIqCQA=`kew51Dk(}{(E zs%~ajA_+Pe5GT8(xgfi38pt|6sWeVTYLv1_c{nxF%M0Av6NmK|Nd| zs3HQ5&qOyDXgNWQT{d16%{^Qk&AY(!=3>@i6XO!kXkO<<(Z@iO)rF)-jY-G4;X1M4 zu-f3T&f05ON76NzM>&=R#4IXXaY2N?TJ^#*Ew$L{N~CX0MGZz}cTT8lfVwf(IqFa6 zGFg03hhkgS(KOc73j}smp4-v_x`5}fB922!-B{y4TCu4f`CxV3fc5bQ12$E70Se_R zrD=4uy_M8N8XWKKB~g&R)b=raX2ulMccf<6iiod6oC&OWoVTT^w-tY>JD zG}hHLMtapWN^0#HZED5?$4D(h{S;_iwvP4mBPDHSCkN6722P3t*-~JJ32Bc1$x8|7 z_#WuQ-R{1_d$$+S&j++yd%GYljRv6IO7B$(D5oy*1a3X@n-b^Ny1PKJq)woaT1Dk~ zwTsH?v8r&3TeU`wDu3+-t&3_GDnR?y(A{6!KIxBEprg$S5o=(m`A&Pw7^$bVeGsXX zgZqMphsMWfeP146(TG7?N&7V0KFE8iR5}+^+i&-hr9FZYGJ=;c~bCZ*ck z?p7Uz6WSR`wMl??9hx>%gnAMSDzj@eR%p${Q9t>f6|1V@ynC!{Gw=(g^?7EXc=L9b zkkAYqZ>boCq%qDwak;L^rkUumfp%o}pU8z*VG|NWZ8nix4DJ5dTM6PSHtSmq{r=cT z3F2zDlv@luF=#xPMH~KXNfUoCPcjVzS>JsdQAu{A)QpT9)|>>?5io=f%)z9#wu2{= zx`VUuUO_%|FXjMGRjj~!7xTrUyB}43ip@Wn)Y)D2sWR?hXa2LK;K_HGkd4m4U^OISc*+|hD`e^y>?cYX(CrY;#)PL5y5ot2vH30I2govm_Ec+iH=Ld3li!DvgFI z-m-e81JBSL3%lW7swZl5amx)o0`dkn_S=n8;Def6g62bpdwZ~@lF(!0dQ=EAddL&S zgj+_4*Yg>{NlO#?;8SQ%S2ld+oy=#F$#RsExC`MJ1R#qHKM|f6OJ*6f9l_nulc5}7 zvwp}>AAlwY!*YqxXF=T?)I~rRZHy_)XUcd+K`zuOAY@Dsp08|3hW>B(VPDHUswe&t zeAs}&8`S}rnxq7Z22Jl^ZzahG**^6EAC~dP%mIu@5P*S25JlUN#@kg8stZqqG6?pq zXDXg(;CHiTGdu=ffC2s{5g?lNBAc)U(FoKFPMknwcD3TrTsv^0REc0wyr_RwR>0Iu zL*5gdIP%KOV)q)&7tr3oGX~F)GQs*b!)Smn`i`Iu_U0b!y`%^uqCA??Mwp;51R3D< zJI@GvXp~n5FP!qRr>T^`2E2gB4DVqOs7wT?B}q1=Q68p7sFZ(0qx=DQ=@;Z76|>V! z?`X(3KroIxDU(WhA%qF~0AT}$gu&l<0Jerkd6=-FQoi*zqC9^L?7zn8*nnOJ%Ma+0 z%6NTGQz=gXgmKCf_G-ZhVQ!N-+$V<<1!BUp%>=2j-(&bdBM=$9aRL!dVKjr-pN&d- z6chRoBLQsGBAueKKNKF7{fBAne;C4vV98*SK^iC9|w&Ed=18Az*(Zyhyi@2*J0QX~Ah`PRJ0aAG%=gABk)=b+~l`9n11QMu8}PU1PClZLzuc;g(z9UQ*f zH}Nt!QR>KoA)&vR-PjIl>7t#G)Y1(nLGC%x#w$Pu#{eJ+9tqdANR?E|H$ZY!%Iju1 zN=mpa{Ye#sKjK}?Ns_#kN)<9BiL+*~6soYF=TXsZKyQI1f^8`0g>4DC@PsRgoKayr zVXQ&|Z!%b95c(8rwwim5QpkxWDrZ#K$24-2AczPSy$$4co}JtuA!qPC{^ksFSIL{zMb*sKAL}K?Wgm=gm&;Z?lv8 z-ap9=%gJBFV4UUTw1Ep>2oaD#3xkOAC>zLN$OcMM?AeYWA0i$G4>Jrb;>U0@Q433+ z=1&4hy2LwqF7zt$p>In<&vfHv&1`rKazX+Rx@9LZ5Qy8@Qtmf8qSwBnzuye3L+7Fa zJQ4hnMTRj8k|<@m^PGYxMED#1{bt1GHk#)_4&XOk?U~JBDds-ItKGh+un22@`vf^* zzP_-BN(G!5fz2=m$Yk?#!jzUKDmCn{e}0CRt`l>p*&?7~2HSv=eY_hxC@F!8uK|tq ze={Ul?kF;+WeWn z=-b~6DmE=1$N=~^fJKlW19cpid6i44#r6qN>ox^82`_09Kz8k zP@kG^d@E7+P*OscR?+acA&|_*!h~f>lHJ(k`x{kaQ906#W4&95^)al;egj)|uy zf-(Z{M1*p}mIdCj%Fs~s$tNg6y6HkWp-8znIJ)?wrA&~gbAU035Kgx!apfu|%a>Gn zN&@Ha2FX({h!x?2N*6C-fGPb9=K`tnlnBn>4aigZ!?X0Kj9(ILR^sv$kLkD1kUSM? z0#Ae(vS3K)uOJXBp_VX}#K`ZbL4DgI^g2Qkl?*@*>IoQS5778#FLgPHbLU;~%NpN3@ z5A84_I2~6u^zxcjQwJC>fC&bkI932+AvNrrB-xAFt>6bI(UVPNfT2B*Ium_GFVE zK#MK06-#SXMA4Xke)G>Ea(KKe%<}>PBj95kRfq{UUMm|0c=<0d={8LA_#OylVgfF} z5LIUyA~=+39xx=)A;Gf_ShTc{TFsOJhVek`5{%KpeXu9u5+Vp^W3ay%$N;)X3KCGBwW|fR7ROk0sD)AqNSkN!Jt9@0!47cNQVIa4FIqwlH?#Z`JrGb@+Vf! z`bJQG0|5~Diy?wbgXRMRT%s0ys0nU#sSP65f(gQnm87@4+zj0s4exk(xyQgW4D4gD z(O{9mz_y|XFfgIP77S=%V9mgd2t(P+7BR$7u!qcUeTAXl$Cr%F*rbL&!VRECqU8rv z)KKb2du|Tmt8!d}$@ZysX*QW?(-vPaeZgPHi&cVwkWa?;W&$iDWBU+1Ovd&jSWLza zAXrMq4kB1i#{Nd|6d5~&UFv+b_Kz7GDbnros2y~Fp7*lMlgkpJwb2}85>40h>VRO7(&KI z5ey|`PZ8Wp#>NngCu7eLOdw<92<{|f&k;-{V=oX)B4aNRj3#5R5Ijc4CJ>AvW0MFT zCu6S>j3r}l5R4;ZZxQ^PjJ-q9gN(gL(36aPK(K&}eMGQ`jD14zG#Q&h@GKeoj9?)d z`-0#ZGWHe0b7brrf+xw?cLaBnu^$Kqk}={bfO%w03PE5>X#_LLm<)nmWNZO~2g#W1 zDVY2zQlYRzZ<BnCK<(GV>;?e!0O|oW1_+xjnDVxaL?E{%xS=9337L*YAZQ2Q znE;G_I}))GpfiNS)C!X)_^$^T0PeK_4}crNFmUSwj0U&@-~xyT#h(b_AljHR03v+y z0OH}@BM}zhUbKFMeG|Z9@LvhA5+IC4m@Y#+B!JD}Mz8}Q!v7BVqx=kl8+|AAa)ezM z;4rvBFfhGMn01)I5liI_P2m}wn`zRk09wQM5-!O2a{6@oj zs9ZV#U-Z4R%}4|)pG5Fq4KM>BOa?OL!TZQv3~rph0CD<)KMHRKH=^?QsLU*1gmGD&kSEK!xs}TuY*N0 zz37)-o;+dHd2HAW6LB~$xHxGfxGbsmWOp{qu@hA^_-nMvVLw!?>WW$oSmeo6pL-9j zkIZGQusXq}y2W4%8{77|C(sHQsqqqZU(wICEmHgN@DN(syw_`MYnvi28Zm$l4ME^;Ul!#c+V@2C@pbWYL?x|aBA{TXb6dRxG0L4Btw^Yl;<#!%FTAmaaoKn{YOGb@o#j6a@cx<;n(1Vqh8O1nUv2g~_9!Gsa?}+()$S<81pR1y;P!zLTaw((q^#iMma1 zljwZAJ`sCRzOzn*T~w@fs|~Et9ap>>sw58UT`NI@4_f^~MVCdfaS4J=F=z`6(UIul z1RMHLCIJ02+#1*Bp%jT$X2 z{tFsfv1%98E>7_hEA5oo23R-zMn246Jw_O!wcv6N9#|4=Jh zQM5=)w->P$6K#c!D|RAqssr}7P5^!@mHctOI-7vjz3shR{QVtwxWIm(9dIUw=0mI@pOs681RBBAD*G`$+yGBnuHb8~#Sy%mtm91xGdTX49(9>K+)=(do?hjQ;;L6?aPvtb&V7GzGX~S)t)7*VMocuM3yS+WUefGe9B|jez*!qPy z1t`tEaY^Tr=yN!U!-_p$94qF|Gv4^h1TvD`*p}aSxH}22Fp0It>f(}u=`>$hqoq<^ zse-CSL7SBJj}P7(9C|efi@7)3N71GvEBexHhBffU&&|Zg z&-$mI4c(uB>cy_J9)h6e3HTh=@BC%Z>Zr|bZ~xuCzCM0XD-e5l(zY0Ds}`c~Xdfbm zl2U@*prpyd?STNdGcUZr1y(Qq~E?;;i z;;4ecm{Oa<(QyxSVk6`<_i`4VgR(1R&4CB!NT=p4EyR-_(tY=Cc~XG$<^}JQh7k&svH)#SMXYgf2R3VnMEk5?@EH_kLLt$9l~lz1_ny49sCw4jOGW{D85vP{J3t8c{y z0w@Yc8aSZ7l}cGa*$PM5!u;Mmn?BfUA@N{Knynb@3M!>y4me9I;iUbt4{2ee=+F^& zfNd)7fk?g-(NT^nHeS+s?uAn4;$uj*Orsl@1X3pHU}sYI!Nw%~98JzN*0A;sTNglL zX5y4a2yY%$hs}qEACpj91g+3C*6o8hKhzI_QYQHzb2{d*L~q|QPhbvgke)_bODQ*M z3V0bvZ9a{$p}wVx1AgvtCf3i3qnC`HbsM8rC%I{?VSWGFf%PWnKoZUuIFYL=E}utR zpQwC+um!f=V>SALhOEalvV-lf=nMYz~idvp&EJL^wxICZ{!naEUaaT;E z>JQsn07+EQsNAsRWyebzVcDipgq!g5Q&BA|qSJHfCDmHB^OsAZl?0m3x1uwF%a(=7 zt|vaqZc+b$^uv)FpHCwSim!S)-qa7bw;&x@^*vNpHUa7;TgJx=nwtp-0wXH`Bc~ay z^v7!$oe!*l1zh(Uz@_%6m28#g*h$-6pa}Ab6Pj~TSsjy^LV;(Mjtiixn7g3x%uJ~u zrKqqFTJs%=%yeN%6$_j7-Xj`cvm6f4JIqXK42_P@DyWZ$kBKZOL}C;u4Er|k+}R@7 zeV=$in)1)V43SB38-*BUI=U8@T*=yafF5}L*bsrj9#^BtL;rJxA4TUAI+e={AE zmL|Nn&}P;pwE0F#FWSQ_%9Wn$Au1>i`I6Mp-=w07+L?urHCY4J)70$k2}|m{)=Gi> zCNWt#XF%5upd|=-oRc6!i+E*I`{;H*XTZ+TtUJ;87!Pzypcc$E(no~)bfmL0u z4spBE+ERG~RyHhT9uLcMVHFiwma67fN+mVxDdlC=s_NC1Wg?;ykkm4vJC@DOi9$jN zGC+x_@Q}2~l$7|8t&kv%Bpudp8dBVLtF>_qkmk53oEhD|-H0>(OgU;tb>Ud2vGIDH z#gIOgTH3CQ;3VX+#fyy#T3CT>9i8QEm6dUKA%_tQbHtzsRW+`w-|jK6f&@2>j`q54 z9qnpDN2;y~S(qW}$E9)ZOkK+v=^h6u$XaaDS-feTjtZ1RxSL|33#Wp7!N@UmcqJJQ zQdJpCv0Q_wIdjgO5rMdM)HTp4t(C()l=glkP$Mnpz$P~HXdZ}pBGyADsyrBCRd5OP zr5zX%x_p!e_6RxCwg(l{HV0{(L3@Mf+k&b-<@KRGL1<^wQq6KznB^3+x(EFn&C&H`CXaehqcq* z1Be@RhU&{7-&mI!by#gd3ff27?g{M1W!HH>MMC0a zG@7t1g#%wsFdBRGj3E`qH2arPhmVe;L}S&69PWyRp--<+yqBij<6=1;?4gwV^FY&L zUoSX(;^69yA24D$2V0e2KJUQwabKu}?Qa;^XGhk zzSdJ!XbHZ|REoqvbucl0XJQ2Vo#Q);d{7A7Bf$6QqGE8P<5iHNQg)kVmDN10K{&=x#hGB%(R`{P`)~&G~CDHq0y_;Jx{)zGmS$2H+C zY^){=4zXWmKFhlBsfXe-_FvAg7aj78rbS6Wai4>;jjEb3n@2S$>5(-$=0EQyAc0TA zl&P7JFy~O{W~PL22tHf0LK?y6 zYqC+SC-!2l^RrUff<_r~_G0eyptb62*=R8f%Jh?sNg&|8bl`N3E$Bj5kV0mgA(}a!(w8dP0>Lc zj2$*Y1L>f@(bB>Ozxe=#6TwdYNN_^=M1}~KpIKP!Uc)rIAn)D~&hV_YjR|Et$$s@2 z&@k6WW)$YdM;5?B3-b~520Ct)%dXgh$rQqY?Ei z)o+gw(uLedA+)0#QLEPccAO*`CZ$mMAxToARY0ee!$gcWyZBk%8(GgjJ3U%~ ztKaqXnxSj&v?F;_n08~2=Gm=b+PyuRwOggJ$hwhKuBRU@D6wSuN7pFZa(aSBiY!$S zrcWjH$+fBFCs=4wz-*|FP^t7MTOLJa*mq?HbzQ2h_nKi{VP7=4CiZ8|+z#df>R)J+ z((huk@O59fvK@9Qzy~2~nt{LAMnY`auD?$dZ>ZeEI?THTGMj$4!rejYtgxAR#R{2D z!pGtlHq6F-XVZ*b_*3;MO1JB`p<<(tlw&XJ&ogFjuPJSPO3&6HDf@3Dk1B9OcxmLRY*K49R;!(eWGzVAiXf)Err+>Hhrf1PW_>4 z6qJzSM{Syv?snlh@fYa$4_!12WloW)Jf^YN=^hK4KIn9h6y_SmPCH~r)3UGLNH|iR zdl8>u#Fx-1R@v9gMH43qm{j8LKyy!@ww|5`P2FW#DJad?LJsA80KKQ*2m}@X@?#FY zg=%}@r1PtnxI|gCrL_A~FQ<9F88qghjiaBPZzkwkRM$~Wh<#;z#`#_j+7l^KtZ6oM z*17S1p+d~+gtO~1-%uyNzyUQPc5rrts;{!fRhfg0_4A!31vrud^u6vT3R8f*3rvF% z(~r5^mc!1}h$<#TilRefS#02iq{jvox)ZNZklZUhXv|w_6}5I^<3MKAW{ERLn29n+ zn3{u$d*6c%{IWO~Fe(YX7AHL0L+ zp&pQb$p6$uy7W6d#D_iPU|CL%`u0>!-`*5N4l|M6-oyQvBt>6!V^+)FKD$RPeOYN* z>|4^?y?r*)im_-6C(-R~Czq}oD7ut}^lxu3@r2_{^o-Plsl~FKtTU-8rCE8Y>bD4c z`x2xT@8U5O8`fjnI2r6V%Dh2q4rA27ExBm^rFiy$lGLKI)Pu==cjgA3$x;ey)e8`P z&Mq7Glw&OK15sGzt}xy8->4Ms!~G*tvPueaWL2f9r%IXJaIVnc3j3eR7gNP#sy_uk)i z%(`)iDs#C0=c@ibi@SfxGABQ|6sisW3)db@NljBfr++nO*9npTwl>76)4z&%jWQ-q zok=>2#b150*x1$2SUl7?K}Q_L7)tPZjOOb~pl_OHlsC9o)SOauPw5w>1(fluV6H)_ z=Rd0}^C4$5sJ5b&hJl}ofl_ z`Sy{{jgMKE!w=lvp$A~&@RKS^g|;BTQf@+^;!|4*$e^BFDoecjyG>n@O
kD~~;cG_Sc0zFz+^d-$R56>q0F-`M|{8Aj_~^LC2& zeQII+$A`K%yf1C^^%`Rw;-+)k+bMrl>ru1LXx$Itw61HOQ`V~1F~(`p zx<7b3Wv?l=h@e=W9&v&qt5nOBsxkVdAeM~cLFse^=jN;pd*C)5a$aQ{c>D3KFN9VOf|O3#+a38k|o+;d8=lE@i` zO1Kx4UMrCkN^$+Kln#=}8Hy#`OWH4%$O$#(NVr#&o+FVHYP=`mexvkz5;>v9hZ630 zN{3414ChL?*R+4GM9wfw!o8v6VG=o^Mudd>gVNy=IibdS3HK+ZBP4Q$D<#}tw11vN zPAHux;r^!d8i}0Yza*TIANJ#Y7$Pk|TH}3*oKX6{gd0I=P9i6i21&SgD7{=FCzNs$ zZX~6hByxuHC7dzspD&R!bdqqRD2@DK7$D(H=zM31oKWg4;Y=y*B9Sv(C*jO!Kkm=a zMZ%4yv_v8&)QFaF=7dNy{6NB4P})@@CzQHMxG{t)ByvKHa0xe-aHT}faDjw-myR!x z$O$#vB%B?k-6V2C4R;AQgVOF2IiZG!gcDKPLn0^CSSaCUQhK38PN?B2;p{2xDUmb8 z_nSrg7fIxV(nS)^fzpd5azg213Fk=ZNQs;lzYXC31#%-#K&~ z@59hb!o5ewy(Dsmc>lSS_Lj&AHI_-Zd4xz4N|F8-rF|rFhRFZ-DIF}46H0v~oEN2| zByvLO8VTo3xK1J`)L1RymQi}OM1DI2Xkeg8ICjm7k z(*6=Tq10c(`TK#g;O5xadK(Q+>$}5o^&()$;W+J?z%HN}@b2L_7s8&yaY=*^a30%# zJWhKw(vPu!7VsI)qx4Ip318zp!iL}Dw9SEe-El4sz`t-FrDer&NrYLG;_C^Mk+ub< z0%rg-isQ5`=y-3O3+>NBns8rnoD1#G!+C`H#c}n7ML0eNSc2n(WjIcF62}RvaC|KA zERGY_;5cC|juX}a>HZBkZwjyp_%84|&Zl%6&L{j1=Mi?`_*7sQjuYMm()m3&kJ1lt z9^qr8Y5y}IKBVcqJX}8xn2+-bi*P+*362w%;kYI6Byc*g3diZbb=`6Ggbm$s+V;Sv z?l>1Z?<|fJ*5H10{@F8e^^~r~_2Yqc*iYZ70Z8d4oKNRn2U5BX`{{mFkKuJcG~}iGbm4kR-^KZaJ=jn90MDNQe2n9S&ycnQzQlQy zevSQfzpQ(4N%Y*ma2@TJmBeXJ1SXfnxe%t7#3d1)9T)FH*JqT()l)hP=S>3c!+C^x zIFB$N#|evobpH~ZXALaFd4wl%9$^)Z6P^W9{?uSU-MBDk_a1c zoUjSU>AKn{aoQyRb)>1>wBdZh$0t|nVGNpqxV6OX;3caz{3RwR7;%rvhirI|nZ=mV?q*$qL1sbZ z*0a=*_nv`^RU`RValOwJOf8fXjri4d^O1~!NLbeW8`+x!5 z5{UQCKEy2cr6Np;XOQ<;rk!J^YA`z1FL`hP_#%i_Lf7);%Le~ZWCZ=JpW_&(WOWEK z8*35Vfi;Tscr$`~a7Re6>G!7KHLI|_ydBh`o`=~NB0oB_ZSe;V?>TPH`_YLR$ER>z zbUeKdUZH8q;`JHB>Q9^;n)LV)KG>qi<;V_ck>6e}rLlpV$Z5Kv!|SuAOUW1+PT|Xf3EXEgfwhd^^b0 z9PGdl7%JM&Jt87(-!q8NaEy-gh)eu{SRx8hnK<+Xat z+i#;F@>j+zRK8lFC#YbUDjIJXMa*3vg5QfA7{lWuqN9lnY+X1gVlGTozFpsksDHS4 zSkfaDEtnmTRDFVdCgv>D_`5o1^ZU*W4u$B zRnB}$>J2!6u-XLi)h>M@X7H@w31L597=Icraj57d{fupU))*Xy_zBVLK}QQ3vrX&a zuo4FjOJ(&}*ZRpVaFCmtZdjag-SEQl`sMfb>x;hw4b-3_K7KJDEY-x z*RALCbZ1L8C{1>&I6_!WRc3Ehb=CPA(YZ>|KTy{=1dIv@=mFOdW1@N4FxuRizcqCo9k)nY4bLzk^ zu!1>DzGOYYadoo}(RzBjAE0?5qkGUH#xSn;y}4e{?RN7Zvy{#dQ{JO?y5WOP;>h88 zyExX5G%+7sB?Yt67kBBQVBQ-SRrvND3jM%UZE)o2scXk$=tH;laF4sY@CR>*#Y2}W z-89ur8a;}48ZQkq;%=z>e{b&b+`4lcHk;s?534ylGSe0XqA6i@))&S`{a_esq1); zSl+esDBsDWNyY~)ursTwfIcFpV$!%HMdRSVGS+zFo|neZN<8=L_PyzAWei;ilpvqg zMYh#4#h6Mh4Emy+MI8aHdwrU3sT343LuBB3w|s3=Cxdn(ob(}~^F4e+eSDXBEO84( z_Z+%1n)tSus&b7xTyO?6{n*fP#zUtjc+W5vL#UHXpu$NLON3=b)2)vcmspiq9S2GF z3euK5pY@`?-q+p*ex9e9Kq-+~wW+6S3yQPyvP!ec$rWi4NoA6|sAE4IT6C7`=f$P| zZkgrrI?G1i^7V*?A49kqOgP>F8Uisz+h@J^ZBt07{iLt?WcSTWkfxMLV|lc!#PXQ1 z%(AG0xjpB*ge2MTo%PO*fZgvvg)`lNWSPV3aTd1O zSQaf@ZSz`xybnHT6cfqKb&2aTr$rtgxVrdyz)pxvLu12q?7x&Z!x1&@gkTb8NC+7j1hpg4{S=nQYM;qt=CzZDmy~@{Ct&r=Ki;^jY~Z z@`Gfba)P(CX``$Ol|nO2yNCIUNAqFZN9FHy%st7!XzCS>LT)hXw2O5 zSy}0j)X6Djz1NQQ!o_hX%Q<{prx`ll_^k7c!<`ZYSFIrCL00U_ic8>6ECR(RFRE)c zEX;5jM8-X5UzPj>Yp*x;!t=7XwhP@tFW+uM@DE6E6TeZuH{j#?{VfCqn0>FxPQE~v z#cww-4}O!!k1A9J($CkKRg&Yghoo6;_kgpW0%adEWG6s2|km z!8fdHe5CX9O%t+R{9aInh8A{BQdWK~Tv~aZKU@~PM%)~k{q3zxcoKd+B91Bqs~|S; zOn@%7$i@=2WAXeYp&MgDS#H7w)78y&8FF#;qKS`e$tL4z4Ig%uGT0>jYH{N<<5&~CzxA7Ue7rNEj(#$3 zj|VT}h--%#C0i6eDlgkxZ3|>fai4gf$!KuQI;GSd-`ND;^lkZsqW_W4S=CLi%o%pY=A;lwyQRz5qYIkwE~!bZUuN9+nl2rsj__kQx=IO&epp_&^0u7CDoG z47_$MZT4i*nM_=qXH zc$>7xk_E`4oe;x-Ja5QB89qX8N3Le_IkfA@#RLrZvv+)fkCPwGVk|XFID`!@y zo>N7@C)`F28X^;F3(AuCpok@ThPMN5w3_&4w=yUCCmwsoy^&>6+=nf{yo5Mf6dCHp z`gWEjb0;oNrkp^XOu@H$RSZce6P)~pz+E0fjDTy);fit8zK(sd*X6~{7cRbEk)y|6 z`bzNyvf`4|+EQ6Y2AN&)ec;3I+hTGsFt-`4KV0I8CX)gp%6^xzsKpL z&$Ov~jeH|5=*uxNtn?C+69`-q8-s3XZ?b6?^N;lHOz z;QpaBfoYI+D(622b+E&FBJKe>Cd-5EPkSdF;P5LrZgWLt=o2EXIBsJE9e!OW0y#sA@ z*TCcYI!h611aCw>{7w)Xw+h7_0cu~DUtfoj>Nx~TUA=dSC>bHS>A>|~LRZm(4D4>o z8$PAi?N+-zk*|w(fR3xTc$LyyM1vdxF8f{jjc5F?B`2@XSNPDM+o<&|rdq^$oNC^%yyNw;@DHPg; z8C6ib#TfS?W{svFy+-SpAqygWX4`@q0n8KmZ8~A4Wdie1T;}TS=jua)3VqZ`{m5?J zNSphO$5Ql?tW&7fbTg!dF$#)cMtI*{zMsqroI968W(Ce&PN?DJ&gD|t$z4vUG1r~T zqx4*NIibdUckTeC=ex@ZHJshKgM_#rq4Zzw+#y0|cR8Vki#wN3X%}}np@yqF_a91& z+~tHCGu^pUl%DA>C)BWa=PD^}?=C0Q5V>b(lxYy zj=P*tI>(*+lFTpJ@nmHgbp1H9vJ7fF&a5nhzB|sWEQ2~=Wr6i#P#14)8FUxtQMw1` z5kA0quqF(841^VA&@&+Ie~I&9)fn^|=M(;g^9g0;%-S(1xtv*R2Bkv#3@go`4D2V& zDreT3LHlqVR+&M0I8K<4{q&q7>?bV2`Lw?b`{}tSv7eB%*@S0-bY4w4X{$Xb+IY&^ zlg-Jx$~a0CW(qgX%w`P&TG7#!cF<5eLWyC2j>5;rk6NIcwQ4Xe734@mWzti3)Ln0D z0Do>rJ>$(Kb+sOR*g5`Zdo)Gb@T9a!8LUfD`L@dN}##u-3k>vZU z6}p20Xq>PDEF9xDEQZ&YrfOUNGQttxa|Ol1z6#2+B9TbHG%oY}X6P=?pPb zkpM4+WA{4|+uqSC+_p_C*BK$8=sIVSA~7;*jW8N51ghtiN9n`Bf4gYfaME{y_5b|E z8;NqX5{a#7B_Oi}Vr#`Uc3_X?^EF==5y}nz-$B#vzW@ZiAL$M1B; z(xr=6Nps6{v_i0xbI$R+wlyMrcNWW5bHgDJg+qX;2rK?7i8xKd=L_VZ#M9A7^oEuFmcVy(C4!BG)CMSga2pTS6;7+{eH< z^;qM5e(1MzHwMlWy!0c-f99##_u!j;5yDNQ@gKsMCR?ZnffuIFoDJceUc8uKwFjfG z;FSDYk_E$i$TIxKH~Wpg+0$yW%-hI&H(J`5aUUamv5sOF(YT6TmLg_xHia#QF7U#4 zOYXgI(6su#XYVc=0RC(=FTp8jYQi{U9RVA^XIhyRPPaZj0fVkR6UV>QiTdINKiziD z$(NVLz2rl3J%-+n6#bOL zw+@AjUapj^f^xVfYhjViYZ_jl|Kz{!ViJoD8Zo|K8cH<*8EpWG*eKuj>eb%+o+qcI zDKmQ~THGM9D7D^G_rfI&Y%g|koZ8tEqx=)A4*>Had zKbD+4@^L@4jCN!h>7^0jiE zrNeFSm@`PDF-&u7fOwEbQ<&y9Ld$T?1j6Pp%})uhhiP6S92Bm3nNT}i^DDw(;hI+n zTf;Q35*meTULzb4uGvCp8m{>@;iz!U8-ydnHNPR$2-mzxI5AxF7GZms=54}`FwHxJ zone~a6Y7O){y^9jruieGB24oq!nXK*^KZh}VVX{XK&x;~ zXTq`Jny!Qv;hJuQhT)nXgnxu-dJ^h~Yc3`n9j>{Q@UJjU@4y+_qkUThks2BXvum0J z9|7Hgalk-e6i@6GM089aH2Ic^_0ZW1L!1KV3z((MQz;>Vn*bDpw_!}@9sP|=) zAOUC!1UaRFHE=a>HgFBl9k>=42;2me0M`Na?pzaqYT956(p!Kjz!+c-Fcw$}{1|xt z%hYjRPp#118=<&afKubEsAleY3YDBN${}Etv(|inhnEZdbyXIkJq>l}G#gr*8ouKi zTd8wG-Mj;<&=_~q186sb#=7U3)0%pt_1I#hFpFZ50DiRqeo+Dsl^sjHUJdG}%5+sf z1#ZlS^@uK@{Y3-=Fz)F{po@ zuMF&08A22fx)ohLO`!Wn26(G@Ee?fzj}JDQ)R|@ds44mzAUu>V1u-#eHeq!jo`d5a zGdn10ByMR71PMcpJ-ibH6G+cBy0CouVJoN!`7r1eGn0Jn&%Dt2wSKQX>t#~1iffZg zi*q2zx88!Ax4d?byt&`&yIa25nage%8Dst*Z&Q>vT3=@KI#2e&!q+2C7ygc@{cYpP z2otr$)z`<_$qV{bFHeuql@9iyQR^dOB5CZX2ldUQw8ysa!sxM0%UA+!^()c~w6}b+ zWB2Za>>sJ@%;96UY~Tl4Xj4{HF{8Q)`lRWV7p5PzBJ0D>0ijYaW=#wjwIBd`^;b|5 zV}$Vw(_hF+;nJQ|R+?Jdfc~@m9B3 zM`axDZ7g0qVV*c49jX}WuI?p>CkWK6C z=`46EbWA3ieCNL)fDP&|vp1w_Q%iLQZ`jTjOTx>Iq?a>6?YVsmHU0bjL8HkG8N<{y zE8(_*^$;W8h(K(FH}dXN*kBPYe58$Rp|9ceI@i$8^&W5Bwb165HH**((}?HEwaL5C z_x;RXO^op61Y@zcM^wLeyTQJngDN(usKRoR&9QP=YHBJ}4jlP?QBS}2_&4y2Pi^mu zqk^%qlfDvDI++{{!NLduW?jsFG@QMKtZW47C&0IWSK#Bgy!__V2$8qY3?=a~qWcM(3O#lxKEvxV&zJ(Q&_gGOWTd%2x4Omw&F(>$q{1pZz z(v(3ZeV9pE0>|Uj+PX$Q?;+_sl;yWZ-rVC$TK?MzF~zVthLxneqK~s|UXuZW(L*de zaNszLi{W$L$9L&6S4I;My`HRb7x;pd`oN>CcMTRxxOUB{%8M)_gkgsv0(X1V@K>OE*Znee5>WhJGxype)e>oEeL zE-EZgImTQ%o_KWwVj%gYz1Rq7?Is!k*@^VKo}R^h47Lw!8M7lZ?9sjkTCD^yXRzMB|TRWUw}es`$aBPQ>wb9Oaz zs_Ab18eiqSH_^~z#-ZlK<|Buycigynl_qQr1=pu8N;_eg^mwRps%*7x{mGMyhV`?& zqU@&A3^n&iI#Cd*FHg+baio&JP5HRV6Z;-+bo!M2Sti5^$9^vXe=G6}$bwA;-5JQB zz!{QUoI`eRa-(_%rvOF?g~HK}j9s1=)DZ|v3iY*E*gGVTu`3N94K@ZRg9BQVFK_qU z1Dc`&MRg+Y@xxDL(K|QxU48qi1z5lidFA31Gqxx=>UG7?=B{q|SMY>kTw5nc?E#jG zX+Vp&gh?Z7hF1}|shSvt$%kPtC!*g~dXZ%H(D&FV8eBKZ!7V_?jXu!Ief|yfLhotu zZXLY$Tc*8Z=D5ivd&EZPM00CwW}`tCu|<>V`#kq|8~kjQZX3Uj4V*rDn%bK=BA#l3 zk6fQX$c}Y(0S#E0WB*4zP&M~27bHr*9ESR0Uk^#qS5T-+H9C8)607L^Q<>{B>+7Q1 z8B0lGYhgBe>#Hp{5-ILZ`PETW&Qiy$EUcL`&YZG$G^#m=MQt3X)bv@ zbo%hf@0p_z|xM0b&sc9z- z>(i$GuNwr7q_8$*1d&w5ZigCwSD(Dq}wMgIk}!!oCNf*P>tDS|7L>K2@Qv3 zOoc$x9<>auKM9&1l8z;&Oi4engvhOSw%lX}b9g+q+=Lt5nIkPPRH%QjRrTLlT*{y8)7DYMK^rYMhWq0Z53i=M>tx> zZ;Fb;m@qCHj&e$;A^7vbhb)4Y5_Sv(x7V=)2JhKwjoSw69E~bH;>{zDV+dnryXUay zOiy!If3$M34mEl26ezNt)Q&Uc71@|M@*Q{hTtU6vua;7sJRa|C5I>%%1I^$fg4;x( ziXX;0s=TY@p-W(|bN@c1J;+S&cJOVg)nnZA?wAIT2{NObHqv_6%zj-lloU!2c<-35 zCcbfjMy&loBXgH&!%|wTn$`7!(G9gL-0SD$Q9TQYRZtzXLk;e-WH&f7(HdK@?rc}O z!DTv%L2ZZfSIrhz;k7)jql z(d-K#ng|t|XzuK@XDaRI7@cbf{g9b8Z(0RdU8LbP8 zEw&@YpvrrBg)ie+yz75!B0L?J)uD~w-oyt-!>FU-^Dl0h|1h!((WVNmM>YKZ#rgOT8?7{X*(rC+vxh(3 zo4sA4y!9~U?$~=;E>ZV{LCU1cPKI0i1c{54w}$>D?cx`gz}Sd68QweZ*#45@63fi0 zv#0Ed>+QJ}i>4MqLB+f}x3Sgnx|@0wU7frJxrHt76%rJ({5Bi+6hZ--izNx!=**8T zw7M#KZ4}hSm`X;3W7LoJMhE#ueIc11tMON+rcvccuiD)4s`z_Vb`C(1GPO7AUgLlR%7he1KNjW()c7z+th$Dh z>P?8h==U3fH3tK^5BxzX^bZ>q5&9}bFGAn$)V}P077+(2bXSV=KBfEU=WCvGaM+A- zbZ}1x*4<-7(x`;jIxX(pLg09=ISoK_4@AJ)&3}mSLZM`)-VclF9Jdc1@`K@At50T1 zc0X;Ax?#t7>?jZW+}66oa9_1dc+x7xc8hdNOF^Ek=>vUPwd~DScC$|}M>p84Br{gbt_Qx%FIY`6TSf3{XO{k-rG+x9p5Rn@ZBbfc%zM<>0W zre%o_A@W>5-@8Z@AVOo}`EXV3gWh(=eVy!W^o=j<;7c2!r5-|R2Fv3TI0CqJGeRr` zLg?o!(5{&uBrW&$JLVcgSKBG{G=w?=`!)CUH1u=?a|w-f1TKWFT7pG{?OFm~LaDYO zgixU+h$Nh?Em%u=LQ`!)J>e;BK{KI|w%}XBc5Oi?p-@ZEO&F#nct|MK61*VH)Drwbn4=}o zUI%=tEifcZ(GrX#?9~!ju>D#BE5hHj1XBn#v<3ErdfI}ygr<0ZLTkJ~VW76am+-un zAcW8k@6QnLPdHmku#xbTmf#b@QY}FeVXw9zjqo>Z!Ct~fygy-%wxF0W6Yo!$g7+tE z#rqR#=m_cw3$z5ygkgApLU%1eCn1OTC-lPm69(e_*?w)oAB1vkfp!cq7Vl5EMO!eE zrSblR61+d5yS88oOXK}xzA}<{?b38>Cl+zBty?Fs00UA@YTe11;z{a4sDO{zlh(+PXcZ`vYgw zaiEZn1H0+?B3rjV=s0i+9S2J2IIt1>6_2L5y`b|J+q%i=JfIhy2V6ww0oMYBOKja@ zfnmUnbR4*ajsriT<4bMb0_ixg7xyUuKBW5tFVOu1ZQZo#I8YB*094R%;J0)<2;T?$ z6>p}w8PRz`w#k^Y*TZ<*rr@A#K<7n%T%Ywt8o_ioA|CX#=6eM3TB_AuqgH~17i*%^ z`mU-N3Kp7!7HTK@8Pe9OsCYjFZ}W{y7imV3R7svf_Y#}4N&jY5HHSuRG{w8EY65yN;Vdbpc=eET0Vvd^H|J!m*?IIVdJXdh`m9V zh~e=NbpR2m95BRojoPv?YCT&yK57e=Y$xyjGQ-bLHm_q7hyKF5K~>0yswa}^Hs|6^ zwoxMVD9c40_UruV`MN^gZOzL z`BMHww&`w=SoU&?E?9q`aXrsEd+VNZy>%1@;ICwWc1M`Q^3fK-W+@iAcc8|et_m5! zs=PceF|=4JJ$rb3T=@DANl|L63=na7_$d9vl;)x8Xbg3Pi+ZS?*nEQmUGU*bRYQAw z$1`B%tg%CI13sN9&LvCNWWj=o0S;sjUZa}N(jXV&s-jy`C@Lcb>%5cJP$lYy;}H?+ z*qnJPVfjfF3YN7}R)j|_E?=}BI;*3qFq{j@3EpnZ7cc>5fnE73DII6?mh1d|${F;a zSFr!@8=SQOMr$aH*x2nCm7t35uBXq`S>4o2Ea4E`OPSAlA%`qF?@)X|g@-aIC)Z%6 zCrXt%cjJi`Jcd|KCn+V4oc4A4G{z--gr9;!zto?R`XE*_W-(kCPcy~V&;FQOJ)5|B zRL{N=o@skT&jMY3P)*r-0Oo%_5`=5SO2_qeJ(Rio?jX?RAEt^+d@ z@-JzT7UKr-oA||@BcnEkN3W%N^dLRWkpDo#x?2pBraYRGPG9Q7iQQEP zE|x4N%|e0WoHHUZn~*5ukH(rRCwZrKR3Eyz<50G`+334!B0taLCn0?J5?N1_7xvd@ zsG6Lne2+nb|j>3nX^+v;U~) zgu5Fxhhqbjh8#<@1tPaeEFKXY<+o6BQ4IE|Y&z2n zam7cA!7W`VJUZ#9)d`qR#+qs`o*;nMeuCKqV~?TZ=1l+<$^;PR>WJrwCk)k@fjjIg zoK#v~QB+c31%lkMGhb+D|C((-%g@gW?g!+&0oxD}p5cWIZ+sIV7z+Lr3X|ss zXi8o$%o>L=@ho_5xCZ)$E^%JUe0S3j(&5qYfSDE6^j?jI7q<1)U8^x<4j4nCFHSJ? zm>ClS@G| z#h!e#cTpQJ%rdVQRfx{?Je7O6GQ4hMzR}sDBuR_il`?~IU zVU_KI($*dM0uI~uzV`5#xOBLj9PZ0XGxLkHN~?&)o>8Oi%ZB5)SF3MZD~jJY$W*Va zcZk(~dL`VMpjoGAfaU&hAV(o|UE<>E5=s^#KOZMISF{ILmrQ*0OKBtVWZkDC$);|% z;nvi@Hu1(GBimeX>|4U7vLX^2wkf-)7zVX`q9YJ^Bn0Wqm>{6o4<{Y(aUkONHuey+s%vvRx8ktnQOje+g%v8( zBKZ)JEh}Qya~Og~Jx7QSMs1&wHK=?QD+n-EJfL1`IP6#%H=C(SE2CA&-d34MYEc#Bkey>GjnN8YDyNo)=R5c zb2-3s{bSpKp6egm+LxzC81<7Yw$^x2%so>VC{S=mO!2@V7^Cy2msl4*+#FI;{4{#V(dSQ3m})hg1ASRzNLO!bQ};oBj5;*;vxB!yGt$z0 z*zk1excG7Ld2#w|>L8Asw#DAg&M7hyeLu!Kb5ojkOj(R>|MB8!Ur%N}Dz7rD_wGL8 zwBzcHdt#_fQ6OiF_Rl$I4?CB`v8w8GbE+$=tg1wgWEx_Qd(J&sy2dW55%adjknX1I zPr1b)jX$}Gux@pV3nuIxn~DgPmV_E}kH3Pqyos%p}M)hU<0p?k*{ ztFwY*dC_h@=7ZdW$dKG&i1k%1Rg^m%aZq(diHRGKE8qNhtj~evIRbpvxkg5Ng~x5& zx+HvE)SS8f#yrH_Ra`!GO8VlXkr%tqkHKNnLZ@$$DuVlt7 z%^4hUCI(@PA|1XKNNXxgb?+ufx4vttrSn8D;!A^T)Q(R6Xl7_QTu4ZXJohqYw;+YY zBAD*<090v>yy}5`!ui$nFWbycQjzgp4Vhu|?Hjq#+bvSTDky~|wSBMAE zRX>F|i32hyhq(O#PjM>MAEO@Qw5|7YRElQoK|Il=aq092HtU_KPQo7sFGySmt!|FZ zIq~_bN~+>Cj7OCLod~f%z#ejGdvQ|-mZad)y1P0!81#`l86iRV^0~V^gYUpLM@vO# z(mkm$tdGB^$_Dnin&WpM7aGUo5Q%!ddZk7CE6vvlVS23Zc|V|koDSXK>DQoQ-67k# zC>()w7{v|fdFBKR?0Mb`z;|wt);0?*Y}D;3wX0$OvEA}B+S42wuAx#-MX8G4vOa1f zD^}$$QP;~Bt;ghN@!;a5bVF?&-HN24wxFg9n7p^NIr?HXVq*3-S4w?bvahn}m=yae z)bK@VaE29O$;+BQfJpKLv4IP5BYQ*4}9fT6bY``nG;Y0~6bv4+aR!H#9r z$V!m!rG=K0X;M;%(CyMmCB=osMZ`gzI3ujawiGc{%0k96vh=ZjNzMFA!3Fs_S;6Gk_Utv2sajo)4UFm8h9@W6cbc`KiNDW9)U z^;2zO=WTy`&=>VZhpZpNM+_2{m82FQ%rDJKChpFDk!fWEB~+9#3As@6I#ZKVQV}rf zG)_VhI68ZtH>P49#%2SB^M6aYfB?kQ?`pF6)*Qq(`K-E5_Rckz<+W)}&h^p2xMzY* zydR9-!X+^qqa&i`=%cAS?hj;_7mrz(#Kz3>KysL+HR4W%hqk=FQ z@lgjyWQ&j1I8=(Nv&3T%A(d~3nZxOYzCEc=6;O1w^>U?{*KXt%_7LUvXK4CNJI(JL zq_*#gyTS3Td&pew%Fod~`l~Qj>d}Pn+_xxd;)^$qq%+%{%0yfSf+Li>=lzu{=xAVH z1!>4Z7P~?k(9}ET%R2&d?~pESDXjLM=C*rmXX1h5uYEL_f_rxSW*)Pm6 z@NtuX%BkdWs(=curK+f5pAbKJd_e2)?ClHt6E8qN;X=|4; zHB#^>X50D4sT;!X50<=69LH+bXnwbRQ$U)Q=lk3@!wnPBxENC7LL14Fe^K`2gvDV9 zOE>25lS(SW^gw{Bxn2GZs-kSLV8UYW1gCkJBJlbFy0vPk#%&JBpbO=|Fd(-DC4a~j zSP#@&LA$N#lYwK~z?Y1W8*)hLG&(tt?(0W)bkk+<@HNs4Qn-nzK&VI%hTlZ)B`!2-QW2Z*m z1=*wuJ_ggeBCH7(Av(3m_B>7{(|qGI{j)fgGOXr;Y_Cdng6 z+V;Q!wj|#+(KZ<^QOJANxH|W9UUH9FOM`DoKhLH6>7@5_b3)Y85zt~~Cx#rkQMmi+ zj_=8Ldm@FV*~0)(b=-cAy{P)sdyMM={#-Ab9G}xDD&b)M2 z(?M_2m}6X>n}L|ruWh_@_t->0q|>%qY}D&*?VXEUTZfi;>H4)>g{*n*Cuuyj(dech zUrmRa(^@aGw9l7oi6&;!Xr(7q?>=%Bu2tmsNG){nB*(LJGmo8vuX$eyGev(sue$PH zqV^3K1a{qohofPi-&+e^mxGo)zi6U$*_3y6Pyn9wH0%pNw<>I$E>G0)>rF$)-1|MXR8bB&$(GySBmk1m~-}&2Mc>AJVAHLhx z-~b5OkZqIECh)#oc-|F^k(<9N&q!|}QxL6+iRV=}W>=!D-OgqYZ!K8J81Sj3p^dve zJob@s+FsB!4Dd~npY93Q_H!v_RUAiJBCln;iHt5b(W zo?LVt>Srh(&$qO+RH6$YPj&p;Py9(GpM`VfVN(U-SXN1L#?gv%e#iBp(hSAOnI%3 zC1+F}0hKHb=%J}2EGZ~tx?wDeHtv{}by@MGNdr1Wz1K}MR3(bKBh%Oa(;?1H&~Xhd zR0KKs`MNJ%=HVNJ^*9kB=j80{>O;ywR6H06AF?%vHZv1l&5u#7(W>FA z>t#}xmA}&Q`LFokY`LQdbexEMDC=(DNCEp87kB1Z9Pn9wfX2lYG%nr~ad;v04m6LQ zV6jK}HuOO0mlasY=L$R#*e9pP0_&Lk*44N82%S9pbH+Zg{cY`Y|DnF{vF#OAA)wJf z*kjv~b0e_IAB{fy(ZnbJccr2AU;4B{$R=eA)Sd8^o!6gQA%DwF+0?GPqG0S>d=tN8 zZUhSW#E+TYc(uMv#`wnjQ^40&s0r((c)s+%75}r`%>M-#{Q(Mi?O!Rp=hvGfwRJ$K zPTK2Wcr+J&Z9r^$ymQQim+4$L!WGYnemH19a$;~W3+8UxSx?H@Cv;{Xo&-nRs} z4*?8^?NVk6_Z-#c_WSaetlGpbvV@GP?c{%DSYL*|3w;0%Kk35?Om7hg@nF~FXzO1F z8j8*#Nazx|pR$vpe_9!_4S>_+)5l<-p((XQ{7K}iu|75@T(}9!y@=s~9pHiZHm)ifXwD|2W z%{r7|`*Q6Fxgg}}MSj3ZCs1L^)HX@Nx+^YtN!mp%&6GEcq1-qv^?hBL^4vUk9g z2(L-Z9HX{GtlbnD73s5S<;J+ED2y~N%qJ&yDD2K0sXp?>%`foW%(HeE&YZ1rU`m7n zgK4BhP*yCKxz^haIzSz>rl2_gR8=jnN*FjvA2MyA5`M@u`zhNaR4p^*Y^DxeXjY;_?|z^az~3>>*P=!D@?tT*#v4u-w=(NP!@neZ4)N&<>RgCUD< z9TP@Zq?YEW7SyVqZJ@No;;b~#^;2mb#_A~r;Be4tB`IbT&s|NOt?-V-A1@UA^n7Ky+WEm7^jf_n=nQp{gg0D zAuTwMPSB=X&rw5TaQCHqDPrKmOZW8PDLeQD(u98i>A3dgdwLkh4K}=dFU0{k66u*h z3#9FVR!GkRPC=T`9%;JYC(C>E=={0ZPv^S;={}2aoUZe|{FM>ha2V^do+|qFb|*r~ zK40m100hMb@$raJ5MWku9NstuicLy(VqwHu1ZfE4H*5+A-Q~)-@Q5{xsqmPR1GRVx zlp#YSv79f$BzArQM;BtnMHDNROHItVS)I;kg|M!(($|I7yPsopdd@kefo|+A1QlQL z*UjqLw_yLM29@87D#~~pdAziD^)zwyU@)elf`A5EMjlhg;f6|g7@|sT>U`J+QqT@! z@_1O+-9|*CIQui49fCEkm~Yth4cpXyMw>RR4_~=9irm>EFy%lz3RZMNK!?(YXKvYb zUZ++3D7`%6genmE!`nNq9$}%n1v^^c(vrwVM`$nd3MYa2s;b7}Jd5wk7rlU)`Kyo1VPKqJ9&18uQxCmERV0*{zkN&T1nd-i{>;wa^xl zp>H_$NQ=*h{c9TOthm2PXZ0ZmW|8kTXbdrf4&%pphwz#zpq$dnLL`ABRJw5LTxp~B zRWWB;3Kn)`Y5Yg}ku4bp`|h&dk?p0Hx#}m`tWt~9%5jGrd!%1BhfSNQ?hZKY3VUx_ zW2%8p1(C4T{GNvu5Q$+BBd?V>NW*<;$$5(i`Wu^+(nrs?p0Y{POvrVb-M7S}5J$N! zAy19>tIlPDW{x!hMOV%Ox)>Yv@a0!@etKW5>g!o&^Js(9i=}F|uL7JT-xfkP*->~N zy@?%uM(>)W{hgFNE6nJ(zY_)UO`+wZ4^$j09uG%=3dSNribm=6GT$hD9EpdU9%rXzBMFTpzQ+Pl6zO>O( zT8&Lc`^#n&OrJ@FX>>Q*=#0_~gO0m>^Cmh}@{_FkJjeri!7V2pw=9`d%GNa;N7+I5 z)BEh2T8T&n%JegXp`TqcZQXD7b_bnwMJIGaUpCTf|1=;Q!?1_jifqK9j#4L~p8f*3 zLlo>wE?Hk&oQgGMvECXpIOwX0<`h%ll#8o`Q>VFk0mG)EylO{qn?snv0efhpa`ZZ(2mii{uIPkAtLVY!B5EzF379FD__F+?cM;NsqxP$Zd6YIXLH_M{JOAkO@cEa9 zzt~3ack(9?&Z*aF5@zcV~~lei95`l7M}X;=LojX}SFol-)fRty zg}2;xUV*MEaKvCggXyhRc|pV2P<9;}QDtA*324UWQ|0k?LaW}R`(iR>r+Z*84r@Yh}X%o9iOw~*2U ze&68a?Q6Y7FZUX`FF^D7L>NDgr+XL^IZdgBN^U;V+;TGQ(NM+|wt06o#f@k0PS{Zm z!U|BHRlQisAwcPvq%cAav!nt-&MZm6_M0UMm(zK|q%ej!PRPBR zq#%@9CJ9#nHAW|eF|@uiVCi?0gwb^T-J~!=sW7R4rOlHRgq(Sja5e46afaqe1%w)7k`#oTMUrq0A>=2N zP&ziLfKWa*NwIcXGPiy8dqu+#%k<|K@t_gF#c^U8rI*Hu z>j=H$#Dm@e{``@6z7g>19*%}i&xV5U*SB$E4UAxe--zk;|X{^oqrAY zBW%HWgkR%4!W(!#;WxNH;Z4X%?{jmr*pe_|t9U-)t+*N5@IB@^>=Km&^M48rI9X{w z8@^XYw6+AMAvI_0&e~rjJJAXUzV#bS?)LL(ZHYmX0vsrc7_q}xs-XLsf`WW0UiyC* z9~jOzz$rn2qk|8z6$EVinEcHS?}^Zw0pI)Md&szT!im>Q(|m*?vl~^eOlDZRz(Q}# z2UxHI@!NX*QUp)<^>BuaXUpO2wl(+M?r9r;829nx7sLT22^#nhg=p&~OsB45Pb!{z z0$dgRN&o?096=N><|>HsXMxp94#J|dw93PPHHcQ+gl?Vq6DZ!bySfEK;^fRQP&j)=*gay$5tIi_e!RikJ&_h(+jo+h~Ks=FU*v^pBed4G=C?cXC1&cMq?8 zo-yYd7P!EK6f6WwKv>Y-GBgR?0GO+|RbM1lj<++SNih^1mfC~AFBX8V95!{`Fl9z= zzH}nJ<$Gz;?%j;r1C#=LiJ1~@v+(>EmDT1(pslbwZGX;=f`oNgG%A&)Rr`p#j>9mxRFFh?+QRaIA?I?dL>;d?7TWiSImo6zN}qSVzv3|%nFszT-i z`<(mC8UsgLpx0E^h3PeW$VEJn<%@DXj(PJz{=|p}+3*kQMEAzzo?jN)>?-Rupz#@& zPuMH~i6hPVK3P0rjM!L^pyTcBF<}TkS{aDEiB0m@f$5cJSRg>vDO#&&@E7*>7;k~r z2LHijc;d@hur`5T4XL=N5CmI60i^tQOmb`$Bi99j3Nc{S@7~H zS$HsX(P4tQ`r2D%>$v`kwO1owP?!ZT5tb>=Pl1wx&5^+L$meCBDUZ)XktZ*ba?-QF z1CvG<4>!h)d|?Qa3QCG$J(PDRSio2SpK~6@Lnk=FqaE~)Ei4q#lAnkWffV00pyF!t zITrwbab>5Vp1^_FsBeTioC$Xebm}I2YaOGU%cCOV^9J$xMb(w96yvWVjAI3}XAKcI zyFXwglxx7Af`ZzwlzJ$I#8*ZhPEksU@j4b>sH$KCcZ{L)`MjL9|2y3){x4@SyXYug zbXjZo+{B_eZO!Cedc)Uena>SI=4nDw52Z->)u7~mU1WQix|6A~YaBx(W1^W;-vyoZ zj~IIz(FP=EhZ*)>GXx1aP3hQ1Bijc*)4XWF62ot*73-&syr6~rw^^V&z|*v&C$3p} zv4$4@=<1n&d7+)|g|BsP_o*bLbjJV1JH0n>jd}SWA@Bl)c?qAzc>MF5Bkf=CYb9K^ zu;tRvgOtt<&9dxle?2~CD=hE!WW&u`g=tXQsf2Y`IJp-L$ zU-F`s-_-pT&hbL%fS_1taF#!`2cm^7J@LxA^Fe_m-gJKx}K zPbd4Ybv!W}cBQg6LljE(T_2|fuH@<@W6vPh#mc!R5!`d=xO5t%52`J~aZl+l)!=A< zqIVd}ZoC8EVh@YRA=phnY#e^lN7V%tHiMV{KV9zukLCCOk0&!DBf3$_3fW{tDzY;| zX7)bcJ>+}EquE+a+Kb`yPzVCCcbFOo} z&g;Bh&nL7&7PSKov{KFT5p4g}A(sJv#-sP(Kug~BTNJ@_9yDC=C$8mys9Rd+uuXOQ z6aV+CSL(7{1xX$L=c`$L1?MwxEmVPzq67V|O&>7L-%E&EQt= znSE$Ixr_A5|5n9M&_1M7E(?A?7GCH;tu(w1dq5uj-0x7<&Sti!k;iLPue&1wv zv9<`^g|T)B{e`jT5qbz??GbtkV;vA)62>|r^cKcCA-pV%bw+qq80&)2M;LnnAyydc ziZDxS@}FxDNRuQ1jFp`S3;vmUl#iqW=_JTnX1EPzl($UiVc zhR%xtiUG>N`v?`FEDop+WrVs=mH;$?GC~_DO9DDW8KD=Hj{^Ea8Q~2mO94hg8DS!n zr2#Xcj4&6<#{f&9jId?^ZQDFIOx?!j7J&UjUd4VABne3vQF(tu@AEMbM6NIXZX5UTC;9x+94{|t;RJJ3OG~Z3Bahg z+b4N1C@Nr!q%HLi^&aCtE1g@UV4q_+2qvf%7m13{kxN4$Ax_2y9)22fYLIZN z0(qII$b7Qm?l(PQF%|OHUsL6R&`M4 zt*1IMZehG-5<)#EpL7C2D)9(V$8L;1x~LWOu1PIWtnm(5&ARbvff5cFzKUK;B+Eh z^1?Z{h(CJaoLa=6yujHqk^3x}i{zBPT^r(b++Nydtb!8~c?OUo>z|t?;ec^EvHzPd4Jb((HN)T%iB6m*+7;*LM3u6hbD?IWYi^ZvbB#9`HWL>~|L#W%7;$Nd~c z4(-CT+=I*sN#u^7ULus_2e3MGO8R!mJ7ph>9wh<)D|+7g!)u4pML7oDX!ICHwhAk} zn)OX#XNLU17cnv7uZQ%+h?79|5bQGrIEOoadr2v6|BXx*xr=uoxNFarC4|oS7u9DS z1=4653N6m{aa2MM^U@b5Bh+r!jZ!CpwXD#AQB}`=lQrKdC-a)%VmW2Cq zSr_dN3li>7gl;6#zJ&Le`gnJ%gGYR)PLSa&FvU0$F z5^hF>tfbsL2q#Ink0O*MDEFhXk!kcODg(Bo@;TG!qo@oxiOR;N(XyxvsDjESrqNmm z^~|CT(febj(H02deS7r2scEzuLPN7?u>X#>K>0E%o0&%Yqkjh&ipu7u(Xprun2O47 zrqNlb3|NTDMrP3!2q#RV=MlP_Mz5grfa|F2VH#bF%7D$NJZctA2EQlgX-XM@O~L82 z;ODBn_zeNz;6p~OK8`{Mm`>m62P+$p{zJDqgs0H~2G{xiK?s8f_K?m$tgTy7At>n? z+;}QC5y9{oh{n%A%#>I5Wdvqy`Ihj6mJl0q0TN*@x`DL-5h1ofiViL$dk0V{Meo2= z+W|ZnperNjLa6}$x8)vOd~FIi-~OU>?D?D79Mpbk>Z+t_fh`jJM!5O*!1Nl)Hb3eq zyx%2b8cE~Mf+Q}m;NtmTVbZl_HIN|vHVg6dz#gOou}+9R7xz(M1V*HkIDal=`cF^5 z$J$zPpPrvyfJ|Eym^NsVmI)-AIGvj9$9UfsMO++TMj*tA|L1*k#|JNi?9on6F(|*(19dxcLpK2HEMikc$qGl5 zF-iuKq)244p2v$t)iI}k=lMsQd*nA>1W=>PkOQ8!O2ab;i=)#pp6jHx;-;f~5bl|<2-RZ_qMfYa1G@D(@RBhh8pa6 zM?XXW#+s*afUiZX0t9cnmUO#+X%7 z_krg%bAKBPmh6pMk1ah%-c7~?6 zFHylQUltAbe@Sn5i8>41(&Oxq^DQkQjd+n`LA@SH#2?V#@)D!FnEP8B z+|4gu?1k+Z=%?uL%iW7+AC zCb`}rKad3m67)2j@*|%As<=2;s7ksPcFb#~>xC*GNZzj!hOP4hdP%E_`lR2IW=RZ` z|09{WTO8lizA)K@_rf*((Lg<;H;B^&NHKY7!h%RC`-)B@0olzh0Sd@~g6bi|5M~+J z9f7NwE4UOPpn>vWNR%Myp=x45_7%)uIH_~Q$_>|n7=-K~E&+~Vnnk{{RB_2tWJO`1OGCBfF!n=Q^kUgz5=F$&tMdOJEfcgx7VI& zs8=h?4yt02NuXjR#N@sKszO#`ObHGNF*OKzh%pTaSBNlAaAiVFH$q`T%yWcC2{Gdc zWeG9U2vrC%iwLy{F{=m-2{AtqS`cE0-U8YaVki;15n|{OUM9rsN9a$8;Y1iph~Y;l zOpFmj7)yweL6}O2Q9zhQh*3vaNQluzSV4#}K}bf7u|Zf%h;c^POo;J9*iMM?Mc7Y> zxq)z$5EF@Tk`R-KaGns8iEstlk8qt3Q-W{@5vB$q84;!dAq})2AtMo{8zCzZ<~c$h zBFs4MJTYb(;W`m!5#bJE%ql`*BFqnjM~N^*Q-HEW7)pdHL>PL6T11%r2n~raoCqz5 zF#HJZi7;Xa-H0$U2rm<16c8RI#;7CoC&K6=lqJTPAPgnK*dUB0!Z;&LCBk?i%p$`0 zA}oXebc7W|m`H@RM3_W`%|w_?gzZF_T!j5Zm=c7H#F!d{qtJeYlhA&I^U(e&L}8gn zpd3lCqt@c3pmM{`9kp42{(zH!vG9J@K_NtCSgd3hFcNSQ zFcy9Oy&$5(thE4~N1q2=M4ty-L7!iM`k?cGtLQx7Iyw*d1C@D&lxxuUe1OFr`gedt zfLVZKfRli===`D}qW-M400fH2+AP3SbRH0>BWqcK%Ca4u2c$>m0U^t_7ExSgq4Udv zh(fd00+1Dz`Gu5o0kfdY2{;MJgWmrrh^R7aEdYhlc|b9A9`GnSzb=Rn4LT3ljm~chB8tvh3qWUd z9?%V)2lPVce?UK?^MIGpc|c!u{s%0ITOz=pf;T-O;&^&`0!?w_f9>;aOCOPC!t9Qt z92SBE@;`L%NRI(xkRfzRjRPK_?)ZIs*o<}X0v>q>PfJ9_wrx(z9AQ)oln2Ua*Z~Ft zOPJDu^BEZ5DXi7->8XEwW7^g(o;cr~ox=r7=RcpfDS@qP0S#E=J%GFxwDq6&hbZxH zHvHU5Ny&OqNoiz|(o{c?mPARF+nZlF8KJ-AlqdqX|22|d!r8Eu4$3A-dA8 zz??r9M%>2XyshVd&cYJ(nBP5J5(#n!OO*decbwmHiXxdf^w4two*&Eewp(9d>E-3& zV096#Ze)sZU$V{rX@e7fd4|`h1cFnXKxKPUR9;ISy5L|yfKgh%%}KeXs0iAMNWf~F z!O)Cxn*+Zj2}th$sPX=%0|noazx^G5fAZFIB@*`JHC*)kAJ-*c;MNxW*76V{?&`!U zr9l_-7-Wkd`SY_AFZ3mlhe!#(FYm$qZT1pLt3FB`0jn$H)od>;vhWdkf3CPyzl1j= zUv7N_-#J_BEUUfAZTj2>@X?`vKDrEH`Mt8Eo#Vap{cyX)g6=L;dxkNv;=jT(8WV7hfIQRN~H z2>}>yz=~Po91SM%c~}b9ASnuzD)DEmK;`+NHjvsZQUj^3|H;HaOQ2?he_wdW=7E|` zw$9EjPfWK%onoL)pk`zWIxr}J2&_t&X9Di-frPrPx*^_92sE&DaPz{kSi*e)^?QmB zmD$=Rha~W%ycWdM`43MiYaLM9)YiZh@rUkT5^1b}Z$`=!)>4sp|tHG7+V-eStGLZ6W|&F zfB)brPM={O*ht_C1MgJ&*w{@F&0$7iDX_r!Kb`&ZPB0DxE?#iD;Ocz=C|04`B8C4E zQxP)x0M`K!3?NQ{zqbc$|K1(|+B;w>_S)WxDeZOn!!V47K4;|8B8ZplE`^)GfaLEF zqQSRy$Dk((PQu;6%N{&_4S#U0{9{*XPqDb3GNneDsc@z2zqJph2e>xR{daO7jBo@JNZQr5h0o?v^_xU!Eawz z_fQg42*?jeJQqXiRC~W1(v#3nCQ;_r!#Mz8Y4SKYJs)k2Sb^9nZ1AAGb)3{0baTJf z&~w-pG3p-qGd(dorf-n5vxno-G$2DZ8zLu=$68+FtoimJg>H5!aandkOciC$7eE__ zCsJ?`uWbeo;Ac_ydi8oDF)znbjPT7kgDyEcZVzpCJD02f?m2K)mwDUJ$n_56LMYtWTu$Lku4ie?MfS8TNnwxw>N z0i!p)6N^%p%aVa*q;%knd8wERh7MGk#oizlP_@Wk_N~n-m^#A%2 zFb&Po;~uH`Li6!o@=sMj=kR?*q5W1(zM;VZfoUKV3Uy&$H!6jT+ z+g2XO`Tti{aLqw+XSN>rR$YLJ3Hsx&R#7a&mpP$n0NV5bSDo#t^$^bGl{C=ei=Sh+ zuI%5RM)7L16tIc9ysQz8Cb$2`7qsBNp{DYF9d6<%FRDQqCx4S*nu(!V4r1*T^_4IZ z!8n>8-2Ao`8#{~!C8Wljr5(U%)9CdZ#Gj=D-(Ji<7>&53x%kr_qE`{+Z8on*HtsFt zLPk9e!xF9luA9-tfE&sQde?~;#RTH6Xjd7|pS5)XaM7WvxWQ$_pn8bO7AI&5L#qMJ z7+W<*<8o`e_0N5VZvvP@YljSQj~SROjL~EP9>31kS8!+bp~>Oq*eI|bnY={4R97@h zZ_jITH(3aFB&=W`HSC8lnHB6LLe~}STZC>a*mnrsSFlqEJyx*O2$NQ@GYAt`u(Jp~ zSFm#ky;iXE2rsT+-y^hH!7d=QUBP}pXt#o0M0kD$yM)kw1-pzeZUy@hVf+eq1);+V z_7lQOE7;Eny;rbb5MExvt|Gj$g8ho{>I!xZq0b8T8$#a|>^eff73_C}*H*9_2(PbT zHxc@;V1FPCSi$~8h+V<{LKwJ${f+R(3YN7IFlYtKhA?;q%Z@N)1y6)YdZs1+oSwKoac|dwV z26-iNRvi~^JqszVvViZHrRMrZ@GU7bN;Nim=nLWU1s$8S0b(L(C-R%|vrp#PKl z1HvCrOWt-&G&nAnMn~Zcd00j7&h1{}??F4!l2MJrm2o(G9v0F8{gAc*_n)9>nivi2 zmcjnuQBX1i4+V&3;*vHLw&#rPMH@V&LB|B?nQYVZ;KUUFEMCpv?%USC`&(6Sdp%PA zk0M2Yj~c{Rq13i0xh)llttIQgNQ9=i`3@4Pk0N(%$!wc57 ztbZv4b}aR{l;Ey`LK);K^p-{Nz?vW{ccER=)fSeT+q5kIr?8o;OY!$rT5C4HMV8%9Kgx zhrjB5li;sKCD|W6L6q{r{P$G=%QJp^v-ID%Embu6;v%5`%T{QJ++C^;JEWx-qG6wi zavFLc!u%}k z?n00gDCy0DY-t;EH|&0G!l-g{AJVx7I}_@e4RKkjD4_D+dWv}AU1(d+isD`YXV?vi z7F3Tcr6j^DNBCn?{$3{4#DPM^%|;N(y@MD-3jbaq!9xNsZ#dzF^Qvr*&@H!ub-T@A zQ(-=21m|a=I%>xajOfPc>d*|0#3E`mHeS&Uw943Erh~_s9FyNc!^nEWszaxY-e(C|Z#vqMrWcvWsG22%(qKZFdWD#YGj z47OG_Y~|i%FXGH85h^aoV+S60v#rqlZ)=L;Ull>wcPlpkAygC_99*1>4X#2qZ_}&6 zw&@9!dWso-ZqVPam89Db;@uDkZ(z&}oFZsxoC7N+X6E8}a^RzfxF^tD+vnrS0b5d& zs=8;*@hd)64J{oU4*E}Ipv7-6-Z~ypuXZbiE(j71_eFw?TTkW#e;99XCamD`1CBuDky|X?;C!O zBqauLk^5Wv?*?gOu<}60dN$6=g{?yJ?Beu|Y~ZGc4zPqeYn)X!->NZga}F)7p${S) z!PEsY=(5P=yDrO%e6aiz>_LHX7-#?zf`;XkUtMDzj*OHSci{_>F(iajGHEEsseLGk z<6@D%if>7cZwEBMLUn79KnPJd+W0I4dF8F-2$tdJDY^q_L!IFTisMVcudiPkpnDqM zl6YRUy$TD-GQLQKdmXOz>Oqa5XbcP z(tH13EkeCBvLD=8ugCwlL9hzhk~)B{i6YqkkS++xYsc-;gG`4JJvxR#Orq|9)}ZcS z!XEs1#9a*BSj?fwxtjrtFkDcz-u4wiJFZ@ypgVy}m~IH(z8?78mOmE*zhuFML~LtA z~s)8K}IiX3x3811&yt~)dhA_9AOY@4Fs#et^y3w zaL0uRN0=sX%OV)55rVkLFJlY!biX zv`1j~8TzmU$h{-0nu4Jh$2*rHo^Yq(i!M17E{9&|Kw)rVJOrE{W?22e zBU02I=miHZ4o_~^*CY=dxOWM$IhJ%8ZbNPt?0y!z36sGDqd*zRG76vVBkKrb7xqW zCe=xcjR*aPjK-3Z+(e&-UKL#VF~Snu5pV}{a)EEM&+VLK@BLZchWepNS!>BhT(7Q= zFV{IJ9C7$ekYhDr7$ld?X{Kl~aK8z!F6l;h>&9kbf1b?AitM^5f!Guv5FxCD2_dZ;{1jm0 zEPs`?@zP%ZO%Carl+I(`^iB!~cvuQfJRX+oH}drQy*ftjMOC<9ma>>|<-1;O0)AmTgB#XX^^ADCBq{!yAeiFSZQn}tkB|@lnmyToj_?`3K7bg<} zmeR6nx(<8hXj$Alo)|CkgLFBB$@acSxsYMl9F^K&z+Y>ZOFo3l57Zla#|i_<{F&py=i&q^kib>fsrG-#v;qU-hDRxHb00urP_~@ z#MHojA)Nfx(3gA6l{NejNJ zNm7g$!=$w?zKISUb=MWsr}tvANf)yNxibiZcQf*P-b?DdH# zwc)g;IOTblIAXsf3e!1T$(e^VQL#_-pBc~@Z?^H^dY_d5-P7!i62?t zsrB8_dfa$=QQMA3b@rf|FD>Wovb@`2=Qf>=E-yVGS-o%ao5E>HGXMQ4_0_g(W>%N( z1x+iqYP-0Izda*KZ~obZoKJY4ymU`BQ_{!RL}Jlb$WCjsXY4ta-$b#~tNVO7ndZ*J z1N+DQBdpq;{_cwu$xk_j(7b?b@_I`6gVH@--7JOE8gNRbtQLPBTyG&Uf-6dTT$k zCcV8nyjQtK_fEW4I-jktt$C1tz^t$$PcG;AByEAg#_gMC` z@@r{(DjsvmYjsQXUk@|)OnD(3cffm@l23bQfz4{|E!9ywuTt~lT-1^RzO|W4*244k z;b#qWFTZJH=NUiGJv6g!Mpbm`=0G63eQm0P3!A>)bC1Nk{yhE9o(RX4@fh6Iol`6B zZmDf9t}!?Jq?v4WHSi;EnIHXe3k-|Q%l*P$%@%cE_P=qz?=JEgoA{QZMN7#dCxW|q zTF;}{@~BgF&5dI!MQh_pyhN4hn5hb9mYDh{~&q{x*CU!TQ}x;HUcYSLTo1T_1^OJ($@rH*|U=qJgo>mR$QnSAAE2 zQ;06w(dq84>-Bfm<6X}h2E1e(bhy=1==+f?%e`A(E1d3S=BUV5Q<^O66K56N=v2aH zCrM1`k8tJFDpAl5UsFMeaOfy#2^huy_50*58qW;n6M1#wEU#PjyUK4IV;qcmnL|y$ zOb|0BzHu-*GOvNcrz%Op;Oi56e$O`PA0I=kVt92MZ(jPeWOcESpmROH!RP7B;dQFX zz#7aE;!8&d%gx6)s(JPL!xss@>QwH1@!LiFS)dSmb<}OMg?5>Z%8%xsuOxFn+i62d z<5hOc(aM( z>+GujPW$xDTASd#YQc;n+Q**Ge%ZJmBcYU?%(mDuqe!{7%Vsl?xx{IQdOt<)rMkz7 z=kF5CoV@li>O#y-Wz(t$al2CaB`;R&+J9TD^jAd`=barI9#noq92JK-zb!qobo*w_ zkuSYuQ@q#tt7buRo?urpJ+MX8#*t{IiHZ{Y=>D%AJX1? zFubVhBPsEt9JQt#$(H*o%M#Li?uC17ScI*e3KF1V&LfFA+Q{72;g;W#d_m}j-Trs? zzP~LZipf;kaY}_(rDigoL*eAn-!Im*x*erh<`a%$YqjqS3R|_Z7#pNc3@fe+61Gne zw{?clr!iOcW%{#7Fk!9k2mDg|k^ZnIIBd1n^Sogg-O)oi&%Ua+O5`~GToAcZ>+tsR zjPt=jxe>k0`s~(CiM?`fPaI1VeD=*zg<&D`0KMGfr|M1=mBrb~IVQvk0VlYE!@Lyh z&gDsi!+3Wav3}mq&*9!x^h5i64cwP<<_R9oPj<}u-ytOFx;eKVT^$t>hsmWhCkqzc zxzALFfU7+IEY)M9jJ!kRa;NXjmFcpD4mU7{*nZ&oreg4Na^#5W$%Poj^jR;45UO|y zyOxiJJc0-P-TL-Q`6M!(j{p9Q&YY;D!0G+@>=(b7qkT3@2^s}Pez%_6jB==_+0$5g zJ0;cBh3!h5o3633#`+M|(-hx~R`Tw)Sj{iaN;5u^1X0$I6p`3I`y{&PBX$SNmo#>4 zg6wHAQpw5eR1uLV;d7ydYx1AB$30av4?K{vS^_K(YZ~r2{yO?4RVwA)xnzpa3tt0% zXgJt%?Bn8x@ztOh8q17#NX79M(&h)TrMm9P3Pm?awe0hyMvl@8v z&Y)d5x3qCzwN=(o_v)q5x0 zn=Awckrt9+Pu8KQuEZMs9zx*)`vf~-g3_C(K{}}+?83m`}gLZ(HwF;*8)@DhlVVU z{-RBXKbpB;A-_hr&bsteJ%A;8^~1Grybz7aUDSUd+SgE#D(lx98T(k0fL(@`DR9vAgnUBX6+CaaZFHhu= zd|=+OXBAs*x-2~N(oyz%%p0GaG3z<)ltmYtom^cSEY3ThackT?>CBQ})#(>SM0?U*sbZZ0Gniy;u>yNNYQ|{WZ zIh^s5xM9{S@o9)v@#3aj%g6cnkMkN80u2wNdKF5uGfx<1H)>g`1u7M_aA=kXyNhNz zROO9P++hm2>~ifgZwp5Otv^jXIh{c5G}!=k@1uLi>8sCal5TKDvtCFnrHD**d-j4M z-}@qMQ`e3v?|{nBY>N58i$}OELNtQ2QeCos(>X3>9H3 zS}#0gm3`)$A3DhyOV`svRm)?iuFes;m%aFBERt_P$C*G5l(Wrq`Ki{~e&mR{iskdn z00ws^M{?$!4tzQCKCsfXWZORlT&0unLWjRy;TT3qz z;s!YacP(L(Zn+j=EmGofxfa=2QsPCq02Ip1*E<0bHTEbhd1~GvoHqnE2uWFvYiI|k z1a$Y;K54F*?%&amNN76-K!uT#Qk@bO!O~aLvv#4q+1r2kFI#aG}by{gbT8unUm{uavE|D)as!QD_Xj&>{Ec#Y{ArO)F z4vu%qwvNK?Py1(CMEeQ*tM*!?qqpwif6*)?` zx-2_jhSIMtHxHOWT2e?_UQ16v4N^D$C+G_N2@>GOu9A_w|DaMlR-_KHdqiU^A>_ZZ zqEZ|MY2bK3R*^oVUhp?aAb~h~C7hUOS8#4sR^ctQQ;pmVP3@n@foT2(PWt9WtnOa= z;UNg5f1P6d@-^hJj-EsLtFFxPo!D%=Z-n>pA2vJ%MJ1dA6_`R44PhrR1ejDm6o!Jc z>##l244Pv+B&Xqb4{EB(_T=E{p!U!R-%tV=%fIf)U>g-lp#Jgk^SLJi-Mj|e!cjC!&kOqhG*_9AG_$StY z`U;)S20LU;L$t)1Q>V=}_9Jc zuwD>K9gA?!;v*-)mh-UklQTx_?94{OWWn-fTf^FIFLACSfs?i{NsVHQ@XB7|CyFhy z!WiP`iUC+<2;zeZ>;_3*6k5W3fQ-btEzjC_{f4jia+jx@v;Oibw@4<=W`M#ugRVK_I2mC?!YtMV)iCtdD^RaGXr8XpT3iQa(|cL zK6=-4RK)762m|j)1|l*_qGw4u&p4E9IUe6Md(0@z!nmAqPUOMUSU8HoJ z5_JCiGW_4YIsWcL57!57O$Y9(>pfK$7j9qNMYnHPAj_>lenT&QW-&qLeG&ruE{s=Q zI9IcLF3Wf`ODA_t=h!8UV=o?9zNq%=tv;;db9n0Yi76p7ccB}5Qf{2h|9WyN2}KPs=ZR~p}6GIo644^4DVC?{+{OhP9l<>*M9|E z*UDPalDVuPbNf*J?LxJwLhbA?+Bv4ba%BCRWn+lLW8zPi#@}RXxOvn~<>=Q>L|+@M z-!$C!Zn^)e{NgLNQ`T%Wtim+EXPAF~`MLYc;3Jp8o&fb8N=AChJzU~@79R^Onm4^Q zPZ7^fQ3&l;zz9lVo+KDNDbV{|aP0^7+VQK($8Fk6Y)tFtOqoRam^^2bJT02DECQHP z1J2wUI5VDeeVkpvj-6Nc8gJ~eyRo4ZfuTx~ol48k4lma_4b{@~$k0y|T$wOycxOhj zmxW@i^wQYm*s)1b8+}n}FHLE3`UB*u@nfnal;k9wD$blHwbLf8w@q7z8ZQi$$bT%c zdXjGyCsi1iB$AsnJtR4O<#WW9xna?{_6YfQ$qPo3F0UTAL=i+r4OiL>Yi15=7O74a zIgi#j>z8ckuYMt2UFbWsVB1-4dv!JXYMJu;GBO%QvU=Cy`pYY!mk*tGJtS!2A-Ml2 z=l*T&uZFIwA<#pIObp9@qO(zpXqh*1lvKi-I1=oU)qysK{_31cGf7_Hw4+vOid#f+hPWc%vT?1;$hsT*yl z?E7o&<*<+C(hgUo37qp5pgurLUE$MJpL?XM(*bJfbDb!UBfh&djrYy>Kb@dyoA1>GZU$Jfqvd;HCJ| z;(>_7q?6Lb#Crnb6TVV!ZcOm4ezhH`uG*gv6TOC+d>aT!Z|D08iymz#Dn>jvH&?zU zB~`Gjs@fqiGcEDJKj6a+SJ%f<8=F2R+}vr;)zzWPoME_KTOeNkNP0UpZJ^fPK6_qG zEytm=>kI9>si)ji@AT&?DxcEF{&5MqS>QqvaZVV2w)DjlHa7sXc;Q%?g znWMNk3*GMBFq}9gBnSu|`8;`=q48qm=AfqLuXJ16;gcU0V0xgFmLVmroHsOt=|&8u zAcoD@73I2lao_j%FBhR?$U+FC8e90=g;S@>FCt^wLNQmXJ*DFxNDcjhk|^M zf$SV)=wOXrjRiEz%C?WG|ogI(agsOfBD$4x3O++?{+PG zc-C~~%15k=i}{C|dqHidPQet#+A03)_a@8i-1V{CJi@f}3=tkiMwouNg3U)?`aOQs z33~iShs=#3^CnH`fO|%5?WfOq^QW~v*WKv^4;CFFZ1wderagD^0cu5hTqiPG#)t(P0nRj*0vwU5R9yB#&6Q-e=D86{{E$ycjn3_++lw$%@=h3ov8X9xa z4h}*&kx?ni{R8sf>mLqCy`P6${RIERl;qZ0AD?}c7|cO(28I^4x0CP)^?euW8q|4PRZUID!g5~o@L^+TNy#e;GBUiJ)YJ)bgG1B_nK$)* z-z|nmf!67-O^-+qFfmoH$jk59v1gCCATx7k&GqZ$*4;h3qJnN@xexRcg#==CERGzx zw|wp#OeF`_k}WN@zZVt0D)II<^5W;Wzs$;*7#+p5=kuqx=OOyP3^ONYZ2ksiXJuX{psNmJ)RJ+Y1G*f z=So26O8#czh5PEakcXO@YlUg4!q8HJ?5S{i&;42;Io4!gA0cIVzIz3Kg|?wuMFWjdSNFU^wwScXVumZa50V zDb{)C&I_xd5!W+H$|VbKW*!yq>ip&RVz|halT+pL?%kLAD=RGO?Ctwu3L0&%uXBIs zl~j$oP$PU+)@B2`b+sW4xa=He5EPqtkqTMk6g-QF#vSY*o}e zAPo%ghv2L)F&xj@X79PWyxb@*(%vT^Bx$#~aSNus_A7jcwRMh&SY}&Ww(uT5i7Atl z|5)7c2$OQR_=M5o#|Ic{Dkd{YaR>dL?o{o)dzEA`42Mrm&lT(=Bcmbu_4E55;LKuAEqd*a02n$xF$tz5bk%=&h+nfCd}v+G|zM-z{| znizI)dK4XWgRDhX*5Cfe@04TRecv9as{Ixfmn78@7Pf%tH?^UnnmXjV-}i7cvlqg9 zXxU~>OlnPN_nhgxeM^7W#`jMLzpl<##>cVU_P+SO%*Li&x3?!P5F0>XO+sR)aPs(- zU+$hU>0zNXFvPS!T*~cW3U;FUjnW=YWpR}~Hrmy(i4)?k8=@LJ`;i!x2 zgJu6fSL2TMSh&Uduki3_IddOUFCP5Z9vV&A!PS@y!Q3|dk#k=BuHZQ44$1nCgqMT$mbfUsD?H z#}587&?|a(CrkFd-}RIeqN2MeLxSxHxVX6B5oT}y`&aVQ)C}`|6uW5OW#5sbCMDk0 zYG;=}ey_$}QAXx6|Krx>PiM97ocp+Z|GlAMMgNMdFyp=>f-_T(xf>pO_KlBKyC$am zb~QAvUiS0(5-lJYoeNzYNDfBR(PN&Prbd+uU%s8}t8FS{FgA4&eNb&ZqN{(6pN{^= zyt<|)(ZYwJlg~%4m$!Guo1T>RP!A4yV{Y$4WmS-W>-Zjqp9|Oh1a#)6_kTZh=w^LN z0>=X)l8N#9#?n2@AF1b3GZ)>(MJ#oyD=mj$xKY$UD#uvZ9q@%_Oz{dtWeW+#}Et5ZANjS)^|2AzK@1J$t9=JQu3fqEDV&2dvoI1(278*&t{n0x%`In2+h21t*V9=+g3Kv%ceeJPEX&Fb#i3kZvs3^OeeXo9w zoSi-J6Q&MP7-F9TZ;Tr$Dwr^eiCXDi@;<5A^3*gVKTG!Qr?nG3Up~KMFo(s^=){G4 zgrsjK;^Nq<;TH4MfrXCB>G*L8Sb(y!$yrUkYdwV7`)e`%*78MbTb8SsJsc8Ik==5o zC6R20xNkRgbS0R}oGee4Q!?8R({`7m(@>L(Go?jIS@a=Kk9Uch8X7y#TR+afS7kL^ zP;mRCmcezw!+dA24G-mbdtE$!S{W8l{lk8D+a3oh^B>l}3R6z})MPW8h?kO&f;*dCE zt*>|r`{V#DNGl#ZqK4@tmW*Q0fzl%F&H8$ep1vN9KnbyiP|DrCPZs9;r9Q37bWlVWOv3Gsx3RMkO~lQ|k4&bLH2SNm?nHl34XKXGq*Holq|> z*7>O{7tp%-OK{lQX8&bMs-D&}>gqe3!T4YQDKI1<`6!x}j$KSiKCq37oNj+_w|an! z!$7?cEPDKdUK{6UpPG5|+NJt_g~h;~w|BsVm4(sk4=-Fa26~*K7!DNPfxKd@K5zf)BPyR}=s7Nd9%6@cMWaU_u;i-{(rn~!PuXi%s@Z}fd ztd0DY{Y+lMwbS^=@uIl*b$adrhwAP=i*ZjH=B*}7y!evf?JG=Aqt#=b8yODY<>?t; z4!)r^y+=SGC>OED5Pe=z^;N^!%ijaPYkd+cu)Dfc<@jc2Ahk%kz2fz=?|KhonEQ*b zXs5Y7#nxZ+8Qj0tLOkp(%o^Btw48_R!G!Nqn%f5gFQ|>|ynP|Z>`VSDrQ&w1;JaE$ zM?&mxavtG$zwXGcRWqkqwyY<|`WCCr*t`s%Jbgl#SsMAp#e2GegSe@Gm6WZ?hWeB* z^o_rqd^1t*8UvGlEg3bpl)(L;*F&!HWww&WIF8&($lSZHYLPUE=B!|ieQ~J<3ua&Z z=n>-JkS}*t9n`$f^|kjz62 zxODh2$^56uV-gWBle$f6b^SOy$!M!qIjoef=|&yAtmT}1;;wf)Q=D}{?&C@OOy}#` zwn`bqj@@(3SI^SBHtOtoX6!Qf=EcF!nk>mAsxpNdvqIt`94C3-hAH`YnK-MIZ|+ao z7_pQyZ!SC2q&i>oJbB@PQCR%kO?Cb0p%av34@5Lq8(-gCB9ck4yBf*=z~5Nol5S5y zi|B*Xo+rOt*Sm3kg2r<-{M%xWr|J0&$wLb_&RldlF`8&#G?N1*r&soU zR0`r;)xPlb!A!>r%XV@RQ+2$z8%J zwS)~}Ry~(XrE8bEL*vwUemyiYbLK}E@6!=zrhksry_j>A6RP{_51rq=pqSeH%k=F< zp~pK{)C1^Jl%jIJ4>`4&#}LkC#xo>cb$Rr`NGIu4VAFE}xDAFJCRGo&cSI|MwO(|* z61{r)gkhSKdmZ=dGjE&jmxiujN?1GWq zjjVuQ`}xSeC)%sH8U9p^VRD{G3|aTlc`)R8mt&`z$Gez=QwDeS?09)TRFSsc6C(6^ z8k|lhIg}T|Bm6n<5l59H;m&&O-X)X$ec^mHR|?`klYUuw=b(9K^_6W;6EVrKmDs?+ zU-?hM&kBm&)cca1^){SX^ut>2#l=7hsgD-2#kbwfNN6rJYKOC(_)hXV`8e^3*JX{f z8cI>RaraE0xD!7oA#!EVviQB3%EbA;@kNTfY*_cLm*>4t%~v!=gpr0CGtC`cZoe`{ z?t4cWZvXcOZmf5}9IzwUe^=lVpQwr(?ST^LHqGC=e{LQPqShZSJAOb)K!W=vHMvc` zi9MUHamE02qx5-l%E~!|1nT7Fn!&h?eYc)A`=4PQx6Fnq!GW1>|K9q9cjUZT%`=ni zGV+*xbSy9}P&|wHTv~WvpswfueLK@9gCNq2?wO>Y1?kFa-I(IJN|HRUG#ey?VZEV zT!e11s0mk%f6)o1TAXU}?%!L@=UnGjl%|qMyJ7QQnLYAH;ggdqSf zj>gV^lM*y5e~kU=Z+g2aq2Iw*VA!>Y?oeNKT1opccx)9|XU<=Ecx=q)GFQ(on37f> zq%RVrp9w6ykTh#M`@8sBUjrN2Jj2J?jJf)k60WCvcimoi?ptyAMOCgyIZQPoiFs|p zcG=?14Vqq(o!B4w{jrl3qXkD8Qi(pDezhp~O{?en?zK3K&5-IoB(Ku18%4|P`4Glk)Vtha`9OST|J$WX<*PDp1~ZL3KkJ?BrDwb%`ONcC&$qJ+ z#XrrBU5~$^A5*v-{H44z;E8?R2{F#2{IWT%=8swSdK`M!K&dLj6OlyqTaKVm%DtMB zY+|}*G_ytDCiX^`kL7*QVKA*Yt-UII_`rnEK^f?uAct`pWq!(@%&`w3Q#Y+pViVVoR;% zXijn?f=c|`g?u$yEsJUD>&iB2q(olB{IBYWZZjAh{j7P&fqM4s%uwd3r}w(j-&0T) z`#EHve4-x4@YB>@x?omO?k+urP3w~ChZm$6kI@!?-8WMWlqX(a&0#&|`wZ7> z%l+5iPsPyRSRXt{_9@{wnge$1A)zv`iG9T(WB3-jZF>L4x8D>8OWaI+WQvWQH9g?A zt*YxkrT#!7rwF>ygr3o=uZ-(p?`wxV0ZB<2jsSw&;dPG{p50(27vlC;h}f)7lNL_cZn!Ust()(Xjp4rz~d9N6#hxKib|qtjXki z8xI|61_Y^M=m<&^X_kG`14&2_6tEGh6bp)7SwmAqPy|r~)Ci*3u>!VDBP5VOuwvb; zB4S;4*Hu@yyk`RX+0Xa;UcdLRpVy_gPd_tr&Y5#&CUfumt3_Jw@TSD8)un$$-h!)d zw;H@kx-u(Y=g`eho+o~sJwNKeVvmGfYl8v_(O<&)AIa8S`nZN&H}2iJhr@xv_w<$> zG>n<%tLl09_ng0!>&f^7zK>P?eXGxh{8#tw#_?iL{=rCHl)gDGg%(wj>`l$# ztH714Gx&pD<048v#98dqI_61Dz`dfk7wi9V61e&=dR_n8;na^?>v(ha9jlwH_+d=r z%&wfuT8f{QKo^kKU^P z^24RLjn^kVE`4X#mQxk&IIG*YX6-0j@0HcLr(x;v z_~eL|wIzCA#+u%`rXMAoI&H@yhg0^?Ib$0(&zu{#GV1TsuP)BXUK| zP%z!f#p~`d50jfupM__f{)4xFRoAo6_h*$zk}kM<)}JkW-~TdfXR>$xUQ=1-f#`)ZO=A$P+pW4CdQ*1MxT#+>M``TkC z=PH~9Cx0+AzUz?v)`qj!^`THcv9Vmf=WmnY%W+p@9Ql96W9gNzQ|Bce`RExmR%idC^%;^6CWj^x z{5%glU6MYy^orY7=SlB=Y5vamC$Eiol(e~F^X|YRp4Yv;jNDoY6&1y*MkD7mZ`8wJ%-B~tzTelVF<}^=v zv;qRyQs3cd-MuIHznT?n2bZw~+=9Ej&DsCbVB`JSgrgf4*knk52%2!K(S;q{oG&f^jO;bTnlFZ#{Yh^*_1rTodb=(v_0L?S)JsY*JVt!-oeIgTVPd4v9tZK z%RBPv$Jdu>^1+F1B}bqeS+}xJA`fY0+CL`lG&<9os63J}B&H6##W-)PY;Lle`fE}4 zpThac=ihI;O73-Xp6-!uM1LCadAm>Q{mI<=Sw?sEHm-Y>RUh{F@5;X~ovU2?5}U?& za%^ePW^f;W+%x3_lNz6R+ipC17x7EIk7=QVMDC5_9hCVdTj@W_IsZ>MHZAGu z0R8^7d70r`hi?iVyLW zgY1a)bKA^YQ*-~`aB%qydhTz}{;8C$C@meBp1&`9=WJQry2D-jkF6v!HV=#udE7Gd zsHfan#tc5TH1IOT;>QC@y!p+-y4~A5PAKPAnOlrG{=>}p2PeeCFE5;}##?Q);qO{I z@23M!Cva;o$#Hd^Phcu16 z8UGmWZ+iRSjrStA({9aSzr2~NB-%*U7X8@0SdkDhmXhZ-tK+@-NfLFa4)A%{_LgdBM+lLHmB2V7=+6VotO3`1SdF7w7s+eVtMw?g< z<)lyXp`C?BuJ_jcA+>*W@s0P3zt%?y2KLLo4=wUt6T2gYl~zjG{-x2jF7fxR=Q-n& zsY@%y6yyh8+ljr}(zem`U5$(Df}H5WxI5|9y}WZyd2@xAvd>_t5*?@O_&iO5EBnZ1__*WWL9o zy@68}ey)95R(0Co$4U6bOD-#J;)eQuI?ys1sA|7Uc(U!7d04RHiK+jzUSXIeb(~fC zb^i8%{;auSt;rEW=HHt|ryv}3=aR?88ta*wwlr5v5ggs>)gmbM4s&&gNFdrLGDs#- z?TvL2{4HAy0|@v4m~EdSXe@O7^wYlel_fPcLfIA?7sGQ)`K87fhQq?#9H$FK1w>(I z3AM6dm!-F-g&%`#%Cs|@I1y)PX!veu&zjuDwrdHVhMt1v5|4q-{R=f3KF?0a-hN$% z^Y>h$WehJ(Kdrr~e){mUilxJv(#!$TzC>>~Q(wH{`0*`AcKEdmYQtKO>bMc7 ztEXRmoylHS@>Jv9NdOOSW%FKBU?O&pYL2QloXLaJ+0q3JXpRYf#$r3L9>YF zCF>;Pjcjf0^qrizblZ50YCs*3HY^}`!T#Qbbq;EA)$C82+I4tcD=WOdwe`Bi6E_cZ z9Zb?Z-@3T8XuGMg(b%!x1Y_?{&-Ulbg{6%4=KV7hC{7D1x9k}o;BFmktZ!z9k#tFF z*`B#_X*mn0udhG+bbAiL!@vV?U}Iy4v$NwZHd_2?uwj$nP=U+4!QHD$x9qU+_As9! zmuzP;C}u1ijFl&l9p|^h&@4vQBlCDTUS@{HvIOdcg_&t)OT1l8d@zbWC6|ZK9sX%s z7K1*PQ(9PNQp>Nk!|CbisU_91#yVrhczccY&rC7NuH3rUwzg#dgmpZ-b($xIDFjzt z*V3&!$Kv(IjT?Sami_Me-nFgGHPhbxv}=X8%a}>6ja5N70|SH7f^B0yJwLd)varf3 zH^pkDT(%>cUr?Y^yY=A2mZLlUbCWGs*cm!I+Zjxlz%MS=$7qH$f}5V(fUq{9_2}ME z260SeCeJui^Ry_nl3$7Emy{R`$PO%8m*TJ?f#fic&*$UTrBBFTm*%u-U9$apeo>Jg zmufR7H{E7+ZE=HBOJkW&ZpQdE?T7Y-tA&-^PeTX34|A~(Z#}dtu(Ei!b<5%M$-_fC zmSIF4;((-nera*JS!Swf4wp85u3TIe_3l~CYGKz_dT#2tJYK3^YM9r=@7fPH%y{>- zI#1qN!RDnKr1MgAQ`DU`a|Xn9^V*Lbm?al&i`4v7kX&0-?}*p2wDfj2o1B|wy{c7E z8PIZQ+a#g1n8GDl%{Df)u;67FW~fEGVgfwJhZyUcn7n&ZwUXeX}@04L~vQqS}N3%rb`SW#Q+|-!`Vy!)&s*W?R-UGzq_`%%oIYL>7XJYFX_3 zJ!+nH`V%JDfw>0|@mwx6MeQKCi*#rvk|~n`)%Q-%!NKmx!SC9kDO%~{=W;>S<)F&% zz{D6}Y6(w@QZ>(t(=?zKe8IL!Ek%X8e13rr|M`{-4XBYEvrkL_GsJ_L4uh&EfXd^% zoM(j<*Vt4N?Gh3wHgmYi#+jLiOFRTd@%hVPS#}9*-~FZd&SP=t(H7cdP~XV+_rn3+nsnY2AiTg++S&RNWNblkGXfV21e4 z-Ery^y;L5!DghCPVMliQw;1T_+maNy0Qx zSx_H&Q&muFWBv5@rb1T%LC1vvYT6D>9ssTm1J}X@^A>g7ppt!=k^rzCy;l}O0E#PW1!6ejr-~z#Q4ue|_7~G%# z31;#6;F<|S=z^eoSf^)VVmw&0`kkJxE>2UBtf5-RalyRWN#kO<&E=C@pj+eXnwlEB z7<+r`jvI%Et|0*2FAvxZ9(lMi zV~izLv(=tPUWCOK%Q9s`+^Y%1hGRW{*BO^nc zA*j*N__euKZy`*j)k7%tHujh9vjDhuZPY+L5ArZ#av z1l8kaJ05QcrgQ|J!BmtP3Ye7J7I zrzZ}Mc6ye0JPurjr`6N|HyzLiP*YbhT^uyeksZs2pBIsZ5>SDs6-$N(ofjo&T@x;u zmke&lXo8cS{`hz<9ZZh8f5Cv%(2L+z?@(I^%`OJD(17aeLKEvdZ(g?;Txb`V)pKw! zMbP9%W4yfy4f&s*ZDYuV4Kv%DCoD*yfUDgC=IstHSYMZfk-&Y+z$Hq-rRbOC3_k_a z^ss^7y4u^>;S3k^7VqEmX^`(CI8?Lh-5|JzEoM`^J-{p^<}3yUr-Rc0mq-TpdKBCN zS%=5tff{BwEli-AFUd>;lXlgoU=)0AF0V9e_@}WP27S9pX(6Z~AAX&#R~@UCfC}q? zX?dAuXQu42t=tM~Sz^C#9S>aE6X+^jcZ@CF3MQ$yJ$v}cp0)3ugUK}STJi2DV5+_sFb!!I~Ev3BcD|CXbcD{_-3I@=jKO|Ua4(dQR~ z%cAK*SF|r-K)5Hg^(dGNaZF|=uP{~fbQivoUu?iHIS5^w!v^SL<|UB8o$#IVAp+R6 zF3oQJy5u4~ei68RD!8`v{Z6&TWj-y9U`iRa;n2-+)xrbce;Tq24|9Po=TMDxWihyz z!{8odQg+W#ch=7v5QDopQW_~2fh+r|-m$jG(h{#@KG_@S6m!$S#Ry6#wHzv; z2&GoDxg-kuCWVDY z0v;9ww@`HlL1p%X3K&84S%R8RB!Y=RQOhhKC>sO8K2*^GP#|?>DY=tVSs=OO|e+w`*=M)I~(jh4TwJ7$6z)25+cN_$diy@H! zHQJE?2@sf}Etu&}P<2O8d7bYdn74++ClQj0I8cKu2p-)bk+Fs3WC0{Ipw`vXAz|`{ zATt0D-Y3Bm*W8pnE~`;{d@MxF2(9_Hm%T2RA~(pbNoeDg=Ak5R8Kv z+RT9Lb}UPo{<SQ*My75g_mbHQfhIZUe5)2waOTn0En~quxXalEK7xfP1i}K|l&FcOSSf zM{q3@!R%pdVQ3Gy-C7DHBVg`&bd>l(Fb(dg4iAYQxXKBj_Vz$^V-4=Z4&05?DhQGn zLgF$Dg4$`2K&3%K1}??`+|<@_5U_(Qt+azg%@>k|H4xw@Lm~*KUIr#~09=9zxN#hG z8HV7(N} z=v@UtwjLykJP4ZSfXah;HOz*jcM1gO(5-DTf#i1*BurM2Y(Upw3+`73+}w6cNC?1O zs{9~Hf$nbKOh|t9A?YAP@?-}IYbXTOV2%gCymvsCS(*mH`gBN~q02OZZsP#BdmNa1 z`8){x10gtvZlQQCB$)Y-SOr5e16@xwxc>TNNS=Hk!DT{10PfFj2_&Cj;@hB`v|SI0 z9&`gv&^__Ny;*_lHG}RE+Fxf(EF^-SkQ6S5#48#S+(?uNgF6FPy4MR5Oz0Y{Eg%_$ zF0k4j5-&qYexVzl2yS-&T1Z;JJ?&lw$!*p;0TLDdh@p!rhSg9s7?CtK!r{7M=}5Ug z4i{|zt4SdQH?NkIBl3=7qrzgG5Qpgqb%eT@ z9;PqU7aCwjLL+PpW+F5ZnquZc3v8?qFSNw0gyV$P*m%qivlrS69WY1CNjOnRz+8o{ zn1|2<^AdUsCt<$A$=DR3KNf%m3Im0~!cbut7LG*-r(-jOvoK6Z#K=N2M#UhA#Uh0) zAsdUvIKtUjoNz7{k0l5bh4Zn6!bQR)EE!A1(y$C+CYB}4!IlV@3YTHI*h(x7nQ>V$Q|{g^-~5FWys zgom+atOYwJJT5$mox#ou&kHYNZNhe8hwut^4ZDsBF_BP;bz$AYZcHUq345_VVLx^o zyCb|Kyo)`+9ts}{9|@lbp9-I0!`MsgmGCw8R``qXSM0s;ci~6u5A09uFX7+VKSCX% zu1Jq)C^96D5se|5ipGlYL`$NTXdKaoXe+WKI*29`2_jdKJJCzzP4pp7Ci)WtM1jPq zqN&7b#4u3=@jKCXB8*59k%$x`RYVohM3KZO5tA4vnnR2yCW;mkd7@NN8Zn)iAzCcT z5@i!}L`y`=i7Q1bfeLsPakXfTXuW8Y=zACzDk2t(N<>>lrJ^#?cH&NArDzwiidZe$ zO{@{^A?_m{5FHc=h=+(ri7lcQ;tAqu(P`pY;(5^p;w4cV@v7*W=sNKSqF5vqb%_)r z6|rA*Lv)jPi+Edfn>avxAbLoAEP6tGN_;MQPJAPJD|$!#mH3kGN0V zPr4<(O}b0ECw?G)OnO3kDjp;aiHF2*NN>gO#J`GvBYh-&B7G+PCH`BiBhe-6lgCI* z$!27{WW2O^stI#XPv zE);jEJH<=tO_?P1rA(IkQ35DI(s0TQ=?uzu6rz+wp-LkuOiDB*MjAtzD~*>XQ07VJ zQ+QGyB~_Y1$)sdSv!vP5T*?Z{D(PzJdg(?=zVv%a5oN1%tF)9-CM~0sODiaq(p}Qs z(!G=hX#?c|<)E}l+AKXGJxMu5IW0XyX{DT}T#&X=evpbN5{gW!p!7&pQZ=QYazlDk zdYf`rdXI9S@<95SqLKb2eL@+O4pN>=pG#j!-%8(6ey4npew2Que3AZ1`CIyr)R1c2 zY1(PlX+gE5j-!t6bm(-XI#DN3-Kd_OUQ}=DD)ry)>%&7LETB+)mcrgq1I9BJL{?YI}dj@cOIo4?>s?0MLpBm+Ihb7 z0`*eoC2Bjhqw_NLO6N7|b*i{i(kbs$bSkN8>fO$P&PSb(sZXiTI)^%+Q(ttxroQd` znfhzzuhieEpQxWZ|D^ua`A?^gOrK^%GnbjmEM$0^6>S{NMrKcQl1-pZlue|$$lPR} zG%wjCny+j!&5sr!3#0|hrqM!Vp|o&W1Z^hmI~r9+qp@TxS`2MAElxInM&46Q_K2gH)*$N zcWC!y_hk=dKgu+;LE3ZK3)#=KUuf@P&hdlni|j9&ZkImYuxm`03Ei~Ij6Rlb*=5x= zj&9TCL??8)(%tBuUEcIb^eJ6a=t1?-amp>OLd z>)KA=Nw1<;cU9Bt=?(P8t|odjy@h_F>omQUezxmu*ExDyS9{l$u50uk=t8=rOVTBy z_tI~4-JsveX#2peTe>?{-Wy@{Y}@~uJ`m$U4L|a?)tOqAG*HWkYOYr z!!Ti(%FX1KjByNWxvkueVb5@oPhd=BxH7!uK8(o>KY0KnP#z`^XH1t*m(P-a#~{lo z3^s$ym@SWG%$3iT$IBNmk{HR1ba^@>Q=TJV!dS}4m9LPmW~^nbXKY|>V&u!em-88g z@*?>bMk!;Pyo^!K*decySIcYV`{WIb{qlp1L-Iq6!;GWyqw*H{DaIN3B}O}=gKy%WQ0!DxDRxKhiQE@ir>IvPh!iLUiYCPo z#nH$Uij#`g$a9KwkryM|6jvgzDLNx%kt&5M@}}Ze9u3INcuUo&{u-hogILa()Z1>nGt0?R4@lm!>cHQ<- z6QT&+9^GEueo_8W0a4SULb^k`L!+j5&+Nvch*6X%MmM9I(;X8PAC(w2uX}#f!fsx7 za(8NXMpR~ZR(E#y^6uQI)!nPR*F|lJ+St7*ir-xvwKZy6_xA4UsG9D*QTw{)q0BMU=8z8P(U_*L|b=X4LJd`%w?N zA9O#CdfNRg3U>31dJ*+9>gTB6y8r0@-2G?N-%GtUL81xwTm@>_o7EFAP4Rbux zp=Sb<(BsnM-s8pe?U~#&r6;IoYEK9=tS5{a(KEg0yB;Ew-b3$+?%^_LGh>+v%tYn_ zW(spLGn1L!vxK>nxuR!9&#IoaOnwi)r+`_++|sj^xsAEKr@W_vxua)iPfgFBo_gki zo`cLoJ%@XmnMZqCn8%nWdrmQ1ds><2doJ{J^jwAjT-+mON_!N{Zl;>q-*ba`lX zcFzOmBj%4xO^=58qUUAL>z;Q#zcJtUd|-a;`Gfg|`4{tVCXS`2G-jD7&6O4`8`gN` zc%?ndiRH|i$Z}!1vpkgEEFYGi(q9><3}OWmTBu^7ro7LygN zCeaK%@1r zR4lc!UwKD)S9wo)U-^*rSoxz;!x~l&vtF^@vfe3wRlZk#X8p!o1~($>1?KorHW>A*>UVd z)qM5>)k4)Gb`qP%PF1C{GgKMuOx05Ma@BHGE_*e5t!lk$BfCIVz%Evmvdh^OstVN( zcD1TnwVS<%U8|~N*Q**;P3#k@6YSHf)9mx?3#xYZWz{t{g!U?tN~Y>#_p@)PZnE#P z2iT8PKeC^yhS@JwFWJAce^-5E|Ec;@^%q;GS2x6FEg4G&5e%jo!dJv zdQo&zFRwQxIxRZAHzPW;H>)?NcS-NE-sRDG(QBjE_ipIj*!z7izqdHLq<3rYw%)Sn z^4_ZG-MxEyYkT)a*GC`dJrsQ``grfD==0GRquZl9dN220jsBrm7%lCUMaz5T(LK?< z(fz%*qVM$HjegksI9e0^q<5(IdGw3k7tybJ-$cLdeb@VI^!wi5qd)b2ivFwjpJ*IM zkE7pb&}YOk;h6W~`^NQI_l@V+_c?H!I4&I5K99ahoGE?&eSw@{PH0~!XGY)5K8!== z(E4b7bPj{V>|^z@`#62vzWIF%I14$8`WA7LIca_AoW*_FeL0+^eakqxoRxifeVaH1 zoWi~$PBCX|Un!@oZ+l-kr?Ri6ua>i~Z$C%ScZk!%In6oKcc!nEbCz?i?_%F2PJ3TR z-<7@}`otVbpQ^8y)5lSB?)2T|-0Qo?dCd8-?+Is+^Q!M>&ToD1IUhNn`#y92Urvg>P6}_b+&pbce#4GdZl{3dZT(1_j_)Ex`4Yyy;WVxEmLn- zSE_e&Yt(zVwdw}$LA8K;h}+0LtZwEW<(}f6Ri9H|;I^sTxmVR9wM5;;Rj3terCP=9 zRo_(K=H6F7;XYLla$j&?s$X&6aDP_+qW+EhN&ScVGxrPkPwwAb-G1GEgMQ-}lYWc- zu`!nYRx#H7)-mH_?E4-23H@#{-Z7K5C# zA#5$ud5AExNM{hCrby>C!j>YP_XvlJbpAy6u1H7!H^AH?9W#Up#X8mq+oAjj*FpIa z%8PU+BjiK*5tc&v5mrL^5vrm52y3DIzaef&H$(wxrrD&WfHWiI`y(nwGaevNL7E8w z8_;z?0U+Ufpdv)q0fE}lOaRz|t^)#fqZwhdKcadx;{l#Tc-)`f3MhbMHJ}Di2uLXP zr%TawK%j~=6O_WPEutLpU~d`*{9u3?Fe-$0#V=iOFTtVV;e!Ok$urgph|Nyqj8Nxp z1WIjzCOsACa?{fYYk`}IkiI5;8DZ)2wAD*iBbwDMlT{X!$zv&JSZ`sEmXE*&cWoEq z3H!Pg`sJV*?E#@dm7$@qFMPn|3xW8vK&x>%1V6%?ePB1Dp#=(TnvrWfZEmQRQe)$d zhp&OpO8y@fw&>9v?MoNbK1hU(bIz<7;b7Z-!W0;}Ukm489!H0YZhg!Di5l=)h!sWBkw_BU1bw z!;hY}K&6uc|BUyP%?*J~kf#?n94>4qg*w|?d2=s5wrX5V)y@991NHSl$o(kZ9$3u$ z$F2Nql@hhm6=;_}J5>9cHu-)jM0AKCVj?Lzi3FU>6tpF}R@PNXXp@^64EYOY=_JKA zZ^et@o>Q;Urt)LL^Tz~wgj=F5(Qk`(mGmQK0c)3|{(+(Pz-z-_?9CA9$-oXnz}*qi2FBLw4kL)pgKuQ zSEGHNnerE}G-Gioj7!UN(P(K`Kuu&O7*1V=K4nUyZ)Wpm|N;L;WM$)FQ%LQDvDrxQVm53k> zst$>K!ffnY=IJG7&|qF5Fp{MAt<|(_je-8m361xHFUP_V zG0=*kG2%?_E?wB*DGbw`LK{B0VT99Y!zXu)hY)ke1PJ-=m_~aXiV@DB`$91uLfkY= zfDoI8X%Ou6toTgu-A*%^S#zTmkgb5I0E|>-(-vuN5fUXlT9zqP>j}Qmf zwa5M#L5{AwU_69a7$!i73&%7F`C%AAfiN87AryvV0))5-OoI@MzzE&wdIZKpD2%`a z2ysD}1|bIZ(}S)DVLXHw$frG?glQ1s>@k88owvt$2>JGy0HM$x(;&n-U<4Jq?uzjc z!T`NMd+dN|5aN6=LN7unA41Fr6KIiuX%O<^dLN+B2jd~+J75Csu`8xQhy(o@KSDzyg>KCb%YpPM~It(0$e)M_5DMYC7N=r_S8$9A#CQmW@Vxfe zAJZV@gZ{ln=lwArLLAhu_89C-i=cmR(D~^Y49^Q|TABYLG z$03*op)e35{ERRJ<00gOegBL$hWi|m0<%)Ok2ZxDBK&bvxULo8PjCz~RJu<$g_F?n zvrXZR==$?b;bKcbMRm9s9lzKV{siGGKy?1irtlPW|IhFqnCa5}WmC8-!r$O|^uFKW zJi4E~H(U&}V7edSJi7>F|AY91qvgeTnd0bl-fqj&LD-2VoL?7nLU&-iz)}g=2*2a6dY~816^MS#TcJ zOAeez$4m2J1HQ*rAq5x8b@OjA>#2TV_04qYCwG_Oj}BP?INim*I`urhhsVhFOX zR!lzqMN$OnA)V9q%#{JbDFkBT@t$kvLibePt4zC(J$yWj z4ZYN89uE$~?v&o^9_)KKe?o)VLx%;m3liqrFWmRg>0gAM%xV|CNsdMHi@q{Z*XsqE zGE+}zL&Z5+%Mc4Da95`+Nhd5%$xcsQ1%d3<$tsm!`IHK?wAVn2a(W4HVgixQ6fHT* z*5;0TC1;y=6_k%sVm4pvC@5|2hmN)3E6wrQi0~_@kKa9%VJm~p4`&aBe4y zEk)5-#E1Nq>iZ^8A_LbbgyR`m=}Xd3q5#q&_C2UiDe!2S>wnc3h@09(r$lHk(3<`l zg-X$&xOQ7qP+QV`_O=2AQ10z*K%i9_5CJ?|=Y!jVF9VI|0fUcwhG<4rA=;GT*CE58 zxn7GAiF54G0En%8IWPc1#_e|msvMxmv6m+TY4ZZRNA-y2=Xjo*?^GsYZT?!v;a{0= z7q48t8rTqL9PM4Idh@2&e2~54B;t4S`ZtAAZF9|86iuDh5>r=dn;hRB&;dFOc?1Na z&Usq;q+dPhKsF4d#}L%Pj-cgbwPkf6l}a5uF3x67|J|C{N=rxL2P*xI^%w=+uS0*n_Uj+#bsAeh4^UaA&<0x%YFF7`OENnY#IWynJ9Ec^;^NBzM z7z0u@0@qOEN&gnYF@dN3@yRW&5V^+%Ux?fNyMc|n&8_#;xZwAcIM^h!x@^myvUAsg zVd&)b(y}cFO3OgF+5PI-F?WE4rs{V5uAAy{F-Srmhj~8Tp9_y$eRlP6*x-t2WT{j# zlbV>sokId1P%?)?1^HSsGmm+{+U{d|oMGt0@M#$XDU6Ld@mtI0i$EQbwVZ5pY57`R z9sZz+p_l!qLWZ$uPO$z(eH%~PJ9B9e8hgd_rYg1bYPHK_JN*?j9Vvt|gqg zuGE0MG5z>kdt+|^>&(q@{qd|Fu+uJxTljfp6cEm2Z*cuwwd;_MR$OjUbR_W1usM{Z zplKmmagAU0Ov);IdE&*k;S)4Z*u|F)b!os3@7y#Ya^@VO!fZ}tqK#JGLuUk&j@F)W zJ9gB^+rH_rt7oG-)a#H`a2_u3Nj6yKcqW0B7lPUx&{obt}vM zD4bVlQe~3u)96!GR~25h;dmj`dkmGFL`@iBTt#d-Y00aSL0<#C9kiJi6nSN1#D;92 zDrm0_Q9v%4eLSTxsxYM+o;^goH=xbV?k+%d_hd#RJSj#!1(3%pW=-sd|DqiO5zJLoj}DietY7Ls^V?W z3dmPQkOFq}=kG&KLQ6o^e=Yx72XbU5&z*&gwH>lS(D(BffW@ zMEkhf^W$8jkBE3_+Nev@D{4Fh&$XO60xZi~6>K?k%=P%0Lq3yEG{OaMa5#3mM?T%r ztm+pjOLtgAACV2g(Ece4M9=&-=VWv*>ipYA zt7Al_TLYW4uTmueYUaiN zD%aO$?nEOJ?fu8+yhSR=90olF^4Mcz%8m`c zV!S*CL}|xMU%qOQA7l8GzKle)d!vOJ73yNishZIShc~qTw;XMO5%$`?7!+>qh{{ge zi*^?Wt~BV4y?zTp&f2u-zn=Q0W~~>`oe7u<9XNzXj~)KIF8&|N_V~X`V)_z>$)FUa zFMZ{5Z^g0UoZ%OdW!{QOrN=X0LW!YRZC@LE)H{tdHFB8$H!pKFRO>zqfr&S}FvVxo zbJhW4n@Lbm)Jh;U+_0ev2J=iBeSl~$2>Ib=t)sDg_|=vEfBBg+=Fk`HC>LBm0(^e8 zW!I0CwP+dsfJgC2St_GN) zod3m@S?^fQ%mKFtgq;FSICKj1*_=6CaGtsA!9$&dme)47mU{UWnym9Hf6E3lS`0nh zh`J!tuDG_Zq@w>CQr=eNWT1O%IdgtgXV0PGHSi6Ofr(q&!TpZ5JJ)(8 z_om(LT;AO~*o|Vt*l*&)M(20I;qC)x`}4OVL?8w@-@GQ%yp1_b)6_3kru9tZyH|fJ z1?mleo_ZwKO&X1LuO9hYsF7i8jUkX%Yz6bWiJO`cSDP$AvWarZ)HL)ov^=Q;k~=N zEKxN1tz1Z7fO)aX-|6O4#lHy6o}eLHUh`;^FQgDB|3Hwe2k! z&c6LHe*VC`d-1i}&>04gCpnB-1Q0SpJ57UPaXG+&Il>%1<7npah(+eSHur;=^e&Wy zI1_@={9W6Sr|$;q9W~kit8;&gVg=|v>4x84{C^JzAl^Vs<-uUABe4zAq}hel8)JPP zo0#YSD;9w0r4VE#etYG}Q2U5&j7a0V^sO&+HYyeLF%?Mgc+jX3!JAdkWsfKn6ySK{ zA^(=6u($r1OaFFai(-S{8~lzo*a!82)B`n#-~ifOAJGeH&0wTH?>?~GZ}xD09SW?L z`+OB%8_86!cSHtUL;PCzT0&B7&Hp=Cd5FR`lp>ma`vz*!|J{tBt|%(b;(irP8%Thb zgRY0h!>IU&51#Zrh<-QZBN{3PvB?l#j22JZTeXECuG)^Eb7#)Bg@&ICZUgP>09SzG zbBAwDiwHs|i4@n4)l~F1!@&H%q5~8IL9Lzp_iKS&5(dD(W^c}rf*5$rc|Yy_E&boA zaRv}B7omb3F4Ou&L{0#OU_rFHKent~80g7&Aq?eZL@hU)veTM$5}-(-9iw+duDk1}9ETK1CvDd`?aKy2bFSW3j+c^A?t}G7 zDZ;n<8C+nB?B4kqNSQjn&Bm@-=lUBAGIhSp#(uEo1{*lBbs}ShKUm{~4b0dgJMVSO zd$r2D3ml#5(fab`lN_u6K#inbU~Wz&gY~`~b6UAHyKKziOk?-*H?P@#6&9z=`CCd> zm}P)a=r8(H_D|u{9|Tz@>*{nHkMNI85@egS*Xf=+!ap@hkYn6*DiAHIg==p&kM zABjRaR6~Qd*kh;r~FFkEi z1bC*GEnoX-eS;|+mS4qWsu8$TeMm_8GdwI`@OLXg5eQ9?IRxR4&u9;tP+1jj0Ku5M zb;#ZjBT|h~{1Ls`K}T^goTjK$PgdH^i{&_qos4tO+vGy%-!k%}UR8 znhoe`?BJ02dbjvj?Q~Nfj6S>JH4}nh^w=Fwa0bNO@jQe$d%OUl&>gSQq8pwt5uJzY z2>EV!ffhaS8iW{J_eMy-^AHN1@dE9!Jzj&5Z;vNTLg(%AJcKw0yZ|BQfY)fxd*TT` z=)4!6hmcRe3$zH=wdW_|3BGV%2=7OTbHNJ`VlH?MLcR;0Fd1EU!Sl2T??;F^<271@ z=cm9i&I8ZWq9a~_5Oc(95b_=I1V2FGL_AN6a2+8Zo=1pt!V~-fF(*6^A>RovK!_vY zH3)@pJq#UB!1ECDJ@5jALJzzKA?AuFgroDWcpgHWCtiRMgZe`#gzFLLJX}YJO~4Bf z@+aUm2!#{ygz4zIGoFW#KM^lLh{5}(2f?WS<>@fG&&Lrf(WpEhN3KMp?R*@y5{hxZ{|2*>ETB)HECFd3c)(jZ)FB^u4=1DEgU0U4~V|I5x$484`wmYd-LHtNbY`^EkN(z z4BtWbi{LzxUjlNW`#a$nVHdmy-KT*2(06*^yXZa@ycfN%5AH+Q59blyg!AZqx8XhL z_%6tW?!O1mBYXhzBYXtc(ffXc_oL&V;5qc2r|>?6&)|IspTqMAUjU-}U%_+e{x_9q zR>4}f=7Z;6+SWUUH}-_w9Zw5IbJnR+u^j8hV5!DS6#ef*D@hU^7TMby&r7s}*xxwu zUhM*BClvfxnY!r}z+cOrCSN`KjVH9(%bb)Y%Tsd*tJdeH6SDFM%a*Sq1O!4)5mo+X z=@Ro|zpmb3?(cZIp|L#n|xU$Jo$)v3AJVDba4Bo$;dw zj`9Wbf%u^GUcHliUZS&nLER!m)a1sT?pxoaogA@bPS*sN_3g=NOLGIY z@~19ews_@g7_TR+T24SC-{mK#_!*)iq`g+XVVyp$tgtA4YhDbaBx`pS?AESIDZkdS zUvawz=1J7o3Z&qHz0U`Cghy1i1zrw9L*G{dE@^4k?GK+lTeBaA^sg!kZgr?`i$vEH z{WZG^geAMQD{c^*71YGZ(I@cdE}TCX9)Z6U)HXFD7%HTCbY`M(?s%GZc)IB8yaZ$h z(i`w=SjcupXC@f)?>$^FkZ5l_f8PW936O}6{W?dHHGS%Koh+0N5Wme&05f~mvc=GH z-)1HJ%F8FK-k2SJQ*ja%_3QkJP^AKKzYh3=uq|JOZSM%L><9>nxD*6zPR_7GLOY2P zWGkZ?iRTWjp=||y`zG)3p!mi>_aMj{H!833qF$DnapL{Ndq~~-qPFK0>7gY;k$LBR ztLuIB)=$;jhJvsq$$2n|mAWc@6=t%x?!1+bh7y}3(7J-v%|nr_ND@a4(+&B zAiTZpY;#4y?w>?3kf$BN4sMGG3BjKYIv?5*gb&n`gpE$DK$QH+G8W!$CId)RJ-w_llFs3P084Q!I;7 zi%-+e!bo4UEs8CsEVVd{T4e3*j#C}i9(5EHpWS~=(cFLNVuAXZ2d=sNzF)%o!yk(;clA(q1DpRaF0VLR2#}gvoF8b`PP&LG$-NSTMoqVZ9SfYBA;y zJak~#J%IT+hY9l_30Zz3ul`$|WSQ2_2X8hyZ3AkxboH{l)w#LLSFTD=BjjZ*hWXOf zE7P@(4JxV2ul&?$v%^!CF7pGEfMPsSfW;RmoA<+*D$H~t54OMm5EP@)P$WtRz;or&#X;27fssCjwL3M<7Tr!s4*z+ zJOq?__#Zna@IL{$N7H0*A_ge;Kmw)Daj!|+?Ez^>+8lQftR4wfe7vf*rK$mqJd9)^ zJ8s3PN9Gysf-?m-QVpW{n7|wbhzFx;NJ2z`2ZJWbNIEJJrj{T>BF0hC^wR7^ZXCE3 zB@b4R3GBWcZktfy8T(ur>xT2Q~-R%bDlfgqugE6VYUtD@gr6#!#G* z*sJFb%>|>2|8Q~c9$@eT>nuWoSGAPY{ijMRLF)MVi4W=*JVsP~;QoHz1#++Sz49e{ zlvGmVfy9lT1AD~7S~`%g=UCac7upFWV^ff9FOn>LPGBIKo=Y@{vB|fz`6^ows?no9 zo=5z>A)_N4Z#?6A)aBS@Zy)e{o*?71xK8PNgE=13-N9(m4lxcw1xt{e4aaM1uM3VB z*H&%0Ue=&x90V1p0eNi~*x4u6J-8QdXMb<+gL-7y%TZ+)n!3R($@DKUg!83vorMhl;xfsxfl1uhSSS$(N@P0X#9#ZCm%ld6&dT%|GR@9@dE$+7 zGIYjwQTaq8Jx@MBK5>dUyK_@N*kgVt^kEUGjO_tIFpO~i41j-2^Pyw4{@|z1`P+jY zX?1$UEI-)LV0>a)XPVbkSYCJn6;mUYBUh=V4s2bSkpgAh`>!&NXw+ya&-}ZTBcr7M zRnGi>ms9J%MoWs~jwBRs{JXFtBXc9g-3}4RYbF#{+n8SqJ2G(3W(VF=D50Q!|1N0Y zg>z>w`k!prXNQ((BC{Qx$js4}YVgLx;gQ+P-KaD$T(=M=q-?*1NjtTMTg^O=){Xk) zIac=+pvl&W`woI3j<3pHP>ON@FA*usPb(fD!C3827l4c zP;PK&gfY*$#wu9n3aT^(2?&dCvoc@|`f4lYjQj?4C6ADytOc9>B%;C|-b| z@kr2nHHzka&qkGo$Yz76!AMkCDH(kJ>Zr1`96NUA($w?Xx(v1bV9+-HX%M(?Z3a0s zG@wmMw?mkM6hZs5_T>au{b?QWoxv@R zC?NMcgF%kYmsso{>v!K7=*Q@g~ zbka6s{p@TLeKZAstn@hO2vrBhlw3+whYIw+cA457|3LVKRy(})xuEl{5h0hYp_{p7 z9nxlKB^{0OkLc;bdS~qIjbSwgiomFH0h@((D+?JE*({odYILSrNlG((J!3i`T?2*;#XsD&xcV_}S-3{Lp^*y)~Y z;ZO15zO(D-X!UQu6ciB*B)G7e87cdyZ-n*2Xid&k%^lega)VtDo$B{1VX?!R+>Lo? zzS?GadNLXue=_By8BFuUYn~}l4q*%dH5wp7uL=$QI1K{nuDL_-rXn={0s((-_rvR> zL4Ot45OmLv6Zbu^U9dmF-q{IfUJm(IrK%+VZ1c8`avilGV+Rfw$`zhX0}SS3=MV;Q zg$VgUTa*JSO+>kjVsh*2p7AIj^X_Xad3PE9fN!baqzvX2xoAG2>CO(*fn$< z&J|uuGb=ExSy60{)iwy?3ls%> zv|1yNh=`aH+uGXR6B3MKfr6+dKslfm1z%vTN~_+)QUnba6OXg#ER*dYgNt$mF9(4&j5uT1d{zhc4$Nq z=RGu&WFz09`zzqvARO$vk^7454KIk+3*(p*`mrQq>9ld&tsz6X76_ZP^Egokxm{9{N$iJ>EWp!qN}d8U!sxP5xh z#cwgRANk#0hUp)~&EN{z@7MJvRae7RSh!|^H=dlS z8`c>NSjkf8AKFozaS1O+gX`)Y&zz%WM?Kj`I_sDOSLmFL8x)1lZ^+6mQgHkH>oyiX zSRg5Q{3{3inBWt=e`;CzR~sbv7e}z|PtO>S0AG)(c*MXnk{-Hvc{`?tdk-CJ4vg3z zhWUR(x|*K7vw!#@`i&PD{k_9N554Z2=k8n_y6T{j!R&J}minjIMPBt7)OY?6g=Gpd z7Eynj1uF@rnFTonE6suef;DErCW4J-!7Bvkngt~UmzxD;1odXYE`poQf_j2lvtU2L zJhR|1L4{dxf?%9kaE749Ea)U?Gz%OAx0?n1i|D?}=zjWWH%CzzqE90r?xT+r5ckhV z@e*^NeYAjWR1S!+M;|93?z@lT_;Blgb!4$u#tHi^>l>tzTk(6Xdh1xj6W{ zWk1KL7x0qB6A*wFIEx7otoy}Oy#Nl5QD#V&nKXCxtju{S8S@Y`H+x}P!jgnknw4)8 zf3Y6k=|?L@)wtWZfCpOq2(zuN4%~l#-GluVlW%edBKaU|VhJhEAFnS>-u44644SuB zvU|o4{D2=BclEbg{F{JTzfb zq>0$H&ItBR%498yQNP(O%qBJj+P(vh$>fs!2yJ0MI_@g@wk*abw(Ca4Ea>svMR15u zPftQNr(U(5@r({EmL|}~_#Vbt;8|DN)r=C(Dsd5Hh9Tu5O;_+pJk+?y(wwZ*Y_HTja9qa4EbOWG6weR_!NaO@)cPSG0qKp8KgA4&RKu4}dPMo2S&T=8!tC2g zFx>3xSWJ(MG4$v^>?~s*0f*_QkDvTu`pM%_a=5Xae)7-k*@$H3S<)AqNR6 z#UZB&+T23A3ATws2AE?}$OyqcQOHjOoo*rGR)V4sDZ#sFpMh>6aRhndkhuig&^~jF z_6cglA)5($xrJ;eXcLFjFvsGMg9IDhLQWG@pnc|895O(#QXDcuQ0W%(6G08yKLnU2 z4v{j@EhLGUpIgX52IBgea&bsE!AiG~ zfkR~heT~T#3L!5%VPbBD9?%ZBosR!UZbc;>1BTPFGPgoW$AC3-9GP1YN5_D9bR3mi zv6+qm8|he;TcM$2KqDQib1UZ3F<=@UN9R^7r(-}Z9mnKKicK$;!ymloY&(Swy@NPh zCbVUD6&@;~$2(#xl`$R1mB(jzojj$4#|0)?nIDPfAmkjIHlnCGVasBZmxa-GMIw!H z)|jbU;rER783a7hM&QU*qm)joJ^}a)i?|GQ1#eqW^c0)>r9GGFm((C zh?#oWxIvhG=aljzj;V)_&~6X*%WAN;Q|z$sE`Q7VR{7Q|2$RCaIuvZ+Pmbr*6a)d4 zOifKe2+$*V`AT`&5y{Zw1)lpUI0%zu_?9tMkSphd&U$kCiKt4NiB6+EUSttyYmctP zwpV*>JT}9yo;lIK?CkaSDrPfv`&;N|?4$NI?Jn-#{lWF!y|hK@xb;pc?!#%;MYLOc z2Z2Zu+LhgZx%{iCkO})yzY`A;3)br$@NqlafzYojx0u=;qnoa{tcgu~5422c3J%*l zZC}KJ0BF~sjC<dgM4A9(30R$+xscqZwr%gp>;7Uvcu(obrHHxY;p`PD z^N4>na;EDzNZ}V4x({*Y&4DfZ0w-Y%&F;)m58b=v)1PrK`rZ(>W@ab*|2>=lF}Eg))nQ_6M1{ymtRm^ zz@-PHY}>fhnM`m(``N8kyQ|=a-@cpk{0-jQa^RTiWNf?g+>f^NptrK#zwGZ%9A zVbl{q+Jj&;m0s;&Cl zeQ`3E&0DC7TD>qKb@uASMGKeCUXn3;33`SVY;44K_j%!yw{NHM!bz5z5E-(V9W1r1 zWZZc1lk!~`1=MZ%C2N51PipLXo4MDQw+g&ttpn^yINBmL4(#5 zPtdM4O($s6nw}uINo$%x@I|d@CP5@Zf0E!!TGLYm_h?O8f^TR|YY3i4qI7~UYfae% zw`ff{1kY+sxdi`3Ytj)c)|%E5G-*wF1W#*C>j>6pP5A`>Rcl&L@SN6EK=82Ew1MCm zt*MaUds@>*g5_G1{*qMSk^iMQ3a>2mSvI^KD@@+g^1%UlHCOC-W>3~BxhFR}@2XF@9 zJ;1que@FR~fG#VB#R-5CK;riSdGvmIO%krL5@k zLL7#)ZY5lpCW=3OM!G^qw&d9ACl0O08ozKJ>me~l_}roO-b|csYW9X4#`!0Ab8hzY zo7Nz#7!S^TnCZ}Pl9I;@judzX_hQzD#{^6Q))eSNybaAQi}!cH!o-jEaC>a5>g0*Y zcM+po8Fh-nWh%+-=h@igunVH7A3pkM!f>*P97T3gJ8_> z#T(e8V60)EPgY9F$>XzWFS@0kdIzGp+kr7=Q!l}3h`G3Sm-Dyque?B zQx-C@Bd6e?fJiXdF&);o-n@=AV+w#C&G2)AllDYBJ&dZgrz zg0uG+QcluW!S zUmY%>;qE5-Ek8TQRbY-gI%W5n;Xvj98f?M68?d(Vc-iBrQ_80@VHqEL<-**6TL*c= z`?)fA^ogLbKyxvp`2MG$d+HN{% zqU1=p&IMK17Vk{I0tX57_pwPu(<#7f{H0&!2VorK&R#fY-on|4Y{^-@&VZCZ5B-#z zyT4$9&B_*1u&0}E{9_^UzOR;F>1ltp{2emqj|Lvt7kpsvvB>H1Cy%uwx-)({h1$a) zN*~&^YbfJh?w;X2G33Jb+K&1PXxVdR`*-X(*LrX#rA}JH%JnhDOfC15KTSbXk4$F8 zn~rVvz=$Y!#Pa^U_o9gcu;+1-Qm9PMy0y6m1m4a#$co4qOGhNHqw5cFVp6o19rM>$ zxAt~?@Cq$!K;TwRU_^XPJN?e_GqlkI7r}`cthf~Jg&-*%Cj8l)z*h&ajzHElR@O(; zDe&5B92qMStfW~KcfB(r|K;N(gR1UGCz6QJd&RAx- zjoXvDz)4J&-K%gNd$qj%EjZo1TE4r79*}!jnXxbR#Dk6vS@zKnI{J-W? z^Ir~(oV)*XTh8@x#<=T`F0NXf=Ied^(aZ@Mkp4q%7*K#SGY%3s!O8ApZN3?!0!Pf< z-ZHYFbtHVGosDG94r~lP8zu z;QpF(l{;!08N(|RF<1z`r%_6igvD1E?S@ln-SUGia^ErMf1sLDl%o!oYkqb z)6)~?%*H5ac6@c`wZ~J+jxftH*Yz&EdOQE>RD%nz($4>g;C?&*2Eko+{!M~4cK)9U zHrn~aQ?tctC47AYGji`;U;0ttx+&o^T|UBzon_OGLu&uHWlSC85NQbUL09pvG8*FVNXx25p9AneDUz( zBm`glCBYiL_-ld^f%sd3^?dOU1f6{G&jcI!;$I2w=Zj6#01xuT7J`TQ;vEEs_~HtJ zZG7=gf+zUmJp_N^i)#tq;fosx-sOw;61>M3HxnG;i(3hv=8KOKJi`|sCurk~PZI3p zi{B;K%@>~|_;Vz|1@;=!8e1tc|1+!Mr+VTz&1bxr)c^Be*(Me|6Ks{hT zU?t#3fNg+31NH$90Nw@s0nqDtYtRiqCEy@n8sJSpJ)je?67bJ}ZGc07eSp}V)Z7Ie z#fOi4!0eZbCOT>!%n(XXc{igdX z?sKMKQ{|4wQHKZTBs`}S+N|+x?-geD-*)!wk?VH+prnx9sp4AKuJjN`2a zPlyq6!yW9rdXvsP-_>=|39Csne6#DLi}aAoNn%v zC)SPnU0-!-;OI7VahP1M=hXVo{cI&v)1noVC!5D+Bd!s@rPRW#b&M@gNb5JF+Z7HN z0tE$!B^917U#C`h=6D`0m;&!v#_1M@!Tnz3mSUJSCk3nncn(kZg4YjZqs|=qK_vJw z6qn?-EM|{x592Gm9yY@8mtB3x7BoN;<=0_c`QJAUpqh>~jeSB018V))eg27%aK-b5 zWb%^3dlp_IqAojf1 zTd=#M*m1V}2(!mhKmC*%nO;u7=lv|ncr)X6%rZAONC|8A>gc}3dtVP-g|#?xQ!{iC z#>~yZfzexk>3T+=&#D?Z?Si>(9OGvqH#In#(nNaJyhW?oQ3y3OFZ_!y795=WB}J2u zZ3*Abu5gSAnfYq@R@Psc(eN07;cv=RJ^hd_efB9#MTAj6}4w}Y{ev2k?NQsl*FuH3F z1UfV+uVrLxL^uWLZxcfnL^wkNKS)6S7}MTXpG2QbBq`W^oR5A8S-KX=B%Nd!q|Sg4 zuR(}6XaXaHpU}o}Xu0UU>IDeAfWn|g3tz`vGjh7( zj#KUL9K*f9AZ`ex%MN=ZnKW%SG(y>q{fz2DV;7;Qu6^va+lTgNWG@#L-S6*&q&e8P zTAiMlk+yotY-Tm-gYZ%W?X$6t2c#j$U@*^@S;kT{2OkJ*iU`^l*aD+&QYd~nS2OzW zg=8`oT{+8^!T4!xs_29bK3x+9_ID|LVe7=3kY>G*ULhW+Z8#_uPIRE zW-D@vveqhc)*0wGN^`u!%$zQ`7bf;pY;`^km-Ld9g?F(0`o`{_p0hoekoI0d(yq5K z$%B`AWl!mw7!hhbJl5QM2S+F z+yF!8vG_;9k~e8&zMfHuWIdSpe1_G(LHt4&)z)T_JNQm_EIy9Eh%^iMq0SB|cz$|_ zf%%_h)Or`^(>`j}eKFLKS%$TVNNAj6ThIKFJZq$V{MY)C9On#h6 zI5AB;-VYY^^jY(lJe`$a^s;Hk&f2}L$KO4F@v6JGKk`96k+>lJne6q3E#}v%>-HUb z`@Q!sT{D+fS({qgJM29xUc%m7apym{&r@-K|HmKxK6-Q?KK0Xm^j|;x*T4Vck<{{D zkA)SNJr{lWkAFO6!&hUp@e+#d{8^^+f<*KC!laT;m)ToCa82%F&ivOd(VT4;+~#iY z7SAi~88d&!MfU}-T^gHG=5SE?Q?B0_grD;h<{9=aur9bZd5bDhw(tG*f1PCT|0Qtj zzOit>G$t&*yDRF6)08iO+>mY#pIo}f?ff<2k{s9XultmIPmcQ^z`#%1iaFAy!K-&P zn_t%KINW%y*3@8tRE82B zGV$?F9~HcNNKZ$+@i3b%zi9maF)V5Q#TouMNT7_m)fx$3xs3m(%s9e$W6wSDcB1uFnGy?F>A2R+mLQYg3UX5k^?lJAFZWhh^)8lp^*B&DYl|dp6Np&mJ z_L8qBVG1;0`Q#-Agc=iIxGnF6#wiQ>-L@vdfEKDyvHAL;-ZNAWo1RO|#3eH6@J9`DXF{=aA1 z{^0BB$r1ibU_|M1u7X|gqX)GwZ-KEC`I}U5b+t2ZvH|n(-Y-uYXlNX?N zR5m~j-EVv}@6U=G84HBQ6kRZV<}B6h^li&=O|&hU(6?)=P>5bIVkG?LLzRu^D1H;p zCp-`QMSN*M(I@Y?py9AFe6mzv*=YPXe>vWz$K$0iMGyUf?AWDdK7EZo6&iGxCRV4+ zbM0Mwv@r;y zIJBM(2Ux>-#4?u|a_3NL0cNG7P~JH4R!8q!U+n%K4i-C4D$l^h=lDeEHG^sA@$*;z z{O#Ur-w8GEM=3?>T+xp;@uQtUP4X65?bPa+r5-7l-^lbrriIs>l~h0@Se`p99qlC= zV!^o<(}B}xuZ-DkJahe8pU51lb`QF66u*86@+ z@yciHVtCh4JCA1UMy|dIJdaBcno7zYrr!=P1&{>HKvSojuiCGdV(o`T7y(dTKuy{b!eRTYyMG0?Aow&!$dkNUblYt9r_e;1OO^Zkj8 zBp1#5fpNjaL_fCG)_5J^^ug`tt+6(($&`CD$Lt^DIfp_Xabc7~PZPzo-&`_v+E14x zt&K(W6J|bCl}TmZ;&@OMuG9Fr!#PoPVf6P&kBr7RmGqJ$ayNS#kA9(XmnC2BMeoH? zy&A570e@N=XF|=0dDC9E4ZY%lY#Sl*vY8lO5>I+K81dDt&{f0%+5k0ZQ}eVgZ~2%m z<9iP6RMr3PDh4jGH;!pqfm)2H!3N0te5q34{;Y}mF*^7I^kLM4KHOl9&mx|U)_4<% z@tn0O!9yzSI$|uEoOXA6B+Wr4M!oUE558S5kk$XNqvLiYL0x&H4l~_v=GN66Vzwrx zQoL)X9=QT(^YR0%3?6l_ps5(97u~x*IeUbe8SaUi@ovrur&6CJ# z+naMV2Xl)H#>O~AE>pgkx9}UQ7%!Eb*-1kYuQ=7%{ZIQawLUud^oj=h)ovV9XL#*z z(zjGKaQEOdNJwifYmF|d$2$G{miZe>EqncQ<^I#1UwV<*t zucvEPK0;9pmJrL|9P(M{OB!y*pB?g|QT!K{PGiUTcZWO*P(k>=vpfv`E6dYJ^nWcv#FoVDt!t&67Fov=`8Y&Cxl^+LW z@Nl+HCDAAK%69@Xcm!LIjn19i%UldZ#gvYY=FnAn`w-G&_y)Fiy&epFW z`V%Ya7X8sRxC zt|dH|#r1^iSX@K+TDEVEgy*p`6RxpOE@^0}!3f*lcg;I}aU~|b$MmgPS(vqqLt-q< zuY!9@TSu71gk?VQnb8=fSh#M5e}rRfiJL;6*C(Flk{kN0`bFWih4RdGrcO~D!f!ae6AI42=o2!w-S;*dvPYhgsG9N)^IGE z%t`U3{@ETl1@b?;q{Q`uUFuy)=$Rm7;6r8emU#Q5UrifNIhtPb+xzZLcPt$^15nSh zB?)P$CI_L4^CQIU`pe=~^IQ{9o%_D97A#5JTyrn@x({l5|KHw#jy2LCRp2Y+)DX;4 z8mJF{ji4DpVt&=5e9%U}rx{0S3h<8dK?5*+57VI57@CI1ni%wB;Alon6#p=mlf|Fq zdzfZ?n8vkXgtfucM*@zv8}%P)#{Z0_=J*tlW%Rlig2v2fAq&ri{ShzykM;4EJ;cYI zYkZ&OV`L_cP1n}<5Fd}N4>tly&f%XLb8?vCL7#D6ym9X8pyMVJ5b8*SYt_!hSJS*Q zF*K*0Z!PZO%OZB}ogX#dk6i~`oUtS`J!5u~A`!kT^OEN!BG??t#pRGF)GcQ&rQvcz zh-$HhjoU7s!tCoP_O>Xz!kKXGz)HrA`DVJ>MG&$(2ae1x$1`?ejD7d);Q6ir%27W2 zboZAxZhYH)b?8|Hsy^Fw5hRShHFy6!A*KtjmYEa#@vNmEf3#=Lp3onoVlVsbc=e$`7>GKlFvnM@cNdkVu zzNi$O*dW?i7avHKK38WS)Kz!^ z(|o4WpRxv#Nm_YIc4xz|m>RpcLG*{Z_`Se*_B#7rT?HvO&0lr;Gu9xQJ64{NP1!hH zLj#(4=!3O`fH^G6o4akt8pVja^j%YcbG1qx?ir-Hs%tx84WhdHPRM4U85&ec8${`K ztVNYsXTPqiP=KiUNZ0m`HOQS<-;uonRx&Y5Hi)w8;{Obcms@B51Qs7K%?(}KNo)46 zkb|nD59aIJQn&-fV-c3(#>v_dcZ;#97hz!US($K|>9qdRkhJTCJ;}%c61DpUO1sCn za=wOa6IVyh4>Ug%pi+4aj>{Rcm5;4>TDpq0-=5oIsE#ln3R=LV;>2{pIyjq zx6|G`o>X~9rX1_uFvY|3NXk)cyTi;18%GIpd^*bCvN!GSd529{5(uZsw!l;E>bMh8 z9k^k%oclIB)yHoNUB-Bk&?X<;E=-iell(_8=B}h!<*RB}+*mGMCF{;$0>EE~o4S8Q z^}f3KOpIYj;*u0aIx=0*BQs^kx`?kF*c!h*+II1bj&@3BSqo1Drs1&IlT7?UM$8`3 zHrSQl4t0^U{CXrsx$5k@IMjd@d^CKi-^aV#>zSvmOe$(=HbvFq@~4uwe|j!*{gSUi zHas*KpSu@R&Z=onhybeNC)?DNvGlv(X4)O1K4)|9C*JJrCo371&)NM9_E)gMGOcQI z-DD)Q4nozBQPqhFxQy(=iVfjVu?N^%iJ@$Zqq0xiS=9^_}oFndY-!(r;`Zh zEYn=|Ei1M}>m{S(jmnP3nqNK$x4ytBt$|^C11XH+@UhmG#(l6SZf3=PmuZ=EYUyoy z6fPLP$ar;Zf=F(!!BLn}zdf>s@qWLC=;SK73C~da82{y<)Md|6WAkJ=sjc6CD*rjQ z#($2j?Vn?_{c~)6{~Vk1KeDk42fw>kTFs>=!2j0|Hiq7_9y`(I#{_-OTB@7C=8_GX z&%9*AePx*gt|n|=g5uYz{)PkvvWa)O*<6lFf|!YkwRevV@n z{CU3;M5u!)9L_h5$co1HQ1P}9hwFF^ZHxNX$)n0<9`MhR= zXW%VK(8lK-CD;jXNrK(*vLvV!@ZKfpfY%|xK6o<{?C0~k2x7J9BEdmE?=nFrpLdmD zxPbQ&!682H2Eh?N?;QdU{ zMZo)&AXJ5EI-o?rvk=50>kfiG0$v3{sereWAXazx5L5_wwFH9&yoTwtVX`-<3wO2h zUzv>&UK=1bN_c&Mq#o`9I&kdO$!w(Xlz=cdcxiw%3DN_Kz*h;_kK;B#?6dRw00#i? z0%BjC=k)=zug+5fVqcw?2IvIT1Cm0i1RMfv0~`kI0~`Uo3yA%6o>v#MpUzVPevRWa zz`KBYz;6L70q+5}0b)O&*9Z6$;9WrM_w&3iF#GL1CE%|(P6H&{Ne?I>`2k%3+b+%sYr4Z!boW9G<{?X@j(~9U*bd+gzBf+okL_I+JRdtoo>J6GE|zdz==YkS#na zz5^MoPPetcLoSclw(y#cx0A)w9yPu21E$5ZQpU%SQik=?W)zw#?!z0+dMWc6Hma;= z(Q=#mRQsuz)5>?%k+cbqMXnC@^b;qsywI>4?_l{zgcMtNgP%yS40?xc`|Z&Ucvksn zm}osR&{lBi#JX8OEN0sq@5%9l(zySUmH;jj+$A$@sID4Kg0^;}VN<-CB1bpCcL@4q zG^8-NcQiv5+&@Ph2~TV-XRhW!>ZkjO&?xYh*;i|z6*}%kC*)6vjA+e_%jbJg*P5%t ztlKC2vXJZZ>OIEolaegm->auks2hVT;Q;|1kU!R+NmfTLeb&jORA+9$OC2{p6aY2j zgReaHA36M0Dy2jYgB!tvOl`$%0Hl;$2#&+c0XGYG#}DqSc%>qx&>-F`#b>PWXoX|w z!(+p~^)1RW9&wtI&_vRimD6MIyCB>Q!CM7!kBZo|OmOKKb?mrAJBK%KXzs^!GNE2< z7|b76*7$$&jQ{p$R@E)H${)Pqg?R-K<4sAa5XSDK7ydltsqpH9)Lghtn+%GzMY&iR zD^hIATT`fb4)?6N@Q4SKtnVld_#YpB_e&XLR27$9xgXAht2#0L)PsC%Ovp5XEs@BM z@%%{6p!coZd;Xq!_V>P>o9+d(?_p76rf>4~T6eTkjs@h-f_?MoV>441_tHFMWLq46b&0b?V7jIBGc&@b(ZlL5l zFrMknkNdncKB6A>O@V{NBBnEu>ECpb>s~(kmC2Vj2a+ix6VoVL1)GX&#@Kvhi}(xV za}U*tDf<$aiEJ5@HG;a<-YH3VkUAoQ$=*!ei_WE2^EB@Z48w1S$)iR?gX!Se8Azs< z38CL+f?!GVqC86@Mdj{4-bl+t6DSszWX|;L_3DR{U}eSxAFN^=GtnD**uIsSe#XJ{ zh$0M(%=;G*uVzODmX*-8OtuS>|4Ysd`n-qZnqnj?Y zkIane>ptpx(Mcg#!nVJ6Uu^6qTUf6~cJ;=0RPO7`()*Y!^-Lu1hsCsH#K`@#sT3VP z`=R_+tEu1dYaD~LAjtKG{8l4uk7E@n44K|2mD|`z(RkIEyDR zzMuHMhF^T1FSMC?rbJ^x!uzw%+w4Mfq9B21v&||t77J!2+J$^0_ETrsitRkJSzr<* z6!T}7`iDH4*_z6;;NaE=(_L5H&__+9aO_WR! zjF-Cmi9CIHau=~k?mk}Pg(NByJf$vziDLQq2`=svJq0{Jsl-Pt^78YNOFc#7eFW|< zV#!3_1nKyRaxa0%$Hi0ZC*e(S7rRV!A1~l}$wd>Sex5#(aJ{0v@opN=<}_**%1SSN zpT?_CQK@g#@{Bf3+FfOvQ`y*O^HT8I^l6nE<6Wn=EzPUa*msxb)F_lTFgo>(wmvUq zB~Q_&xob?*IyG8Fo3hVnyPMX?(|c7a_0CFT<6T~wLThW&^m$ckl?r24sKmhddaLX(JRc5`tn;q!rRbF~=FZmz}>L9x)X ztwgYOEAE6y=(4TYEHGMJ&Aej1tHn*Q&BXu`e25@ z`|=6%$YrcFFzS_Ze@3(@4oo^2HYtMVH^Ckt0t>Beh`)A33IORt3$@a(B_5Y-(z`ch zClYUAHJbepN9T*8udu2ZPfzsKl!A2L!sJCf^%PSgZSX4a)el;;G4*3URCnc|%x|eF zQgK#waNEVmQm%wJmVYBT8fCb@F-+Cpc*6VwRz})J5gfKJ>^DN^ zLFmzWK2@?ALQl3!l{aPmzY}`bi=yw-;zPNnnU1;rX2Q%2s0k?G>&&ZGIJ1lvd#F*j&4 zC9WIiz72I0PabZ}1dak!ad&f%O!;OkqN)#XpzYR1Wc*{3deIxZ>e(eYHqis^x<;~V zaM(Y-h_$yHlno9;X^u>OV_7X_Pli|7gJF%D$2xlt|9(p0 zI$`6Qaq?n}QlsKSZMSL;`2zg@(`SQG@xpkau)5k%EzCBgrwh~5Rl-DrAxLQUHhbeB zy*em8C@9gKU2RVE7Mg?7QIxJqOgESfiRK_xx_7!6rx^_1i3X%WN)M_IG6WfLeqy3` zdXPCiD7(5ksM>6(&Q3I|RO#6`%r*y^6N7|7hH68Q8S&cbL54(ww?XA?NQViMUM);C zr)LWd-l{}HVm4~8yt7r= z26G}L5PB!33sI1rZKzH}D0a0<2>!&x>>%*qYE?qBf$A`*g3RV>vr4E6Qh8S=3Q>}t zo`@qfk8UvprJK#FpdhmWk_f94vki%;QdNzV2Qaj&rB;8bRVwq7%jEU-GFfenzh7Og zyvASZXRWKNtMT{utF`)BYyIo}>wrk>>!k$irLy{(IzPk}*46sg_|>2W{~CF{UyWQ| zTkr2@wMymnR;$dfUglR*BbC?4t+n;^sg=sWf`)2qWT;3ktMRLo*4E4G{AGStzgkEl zt(9B-Yh|_dXtTzjIIIw{uAca6rT+DDl2KYyTUT$bA+aGzofHdE+z|lE0(An2F)Zag7vkf}?@aY`rAL#6K zb`N&9achC|)LLX$(o zwuwYx+lE8IWJwl@l7~fIBAw_!a%fjqXxM=+ooJirb||pnu4Y8gZWD!BL}6}WZlSk_ zMZ?XZ+q#mwLUk71Fu1ohcj>w;BDXoiI+1QzBw8y9TWc8(4HJpnL~ENv*Cu!2=yuoe zu;_v)G&HOkr&)$A7EH4*go<<)2%tlw!^zFWa3OS#$Re5(8oCW9if)T8=ybX+QL;z} zfl!MGS0vholaejNUCE)M=H_9P>Y7EN5GT1S)G{n`>uOFO?h3^@2SlOUEX@|2s}o&l zPS#mMF%?=H7O9F?N2}vvBO~MEBO{~Z@Oo2aq*@st6CE9?jE#v`#zv}uDAkd%_!}J` z9~GxmMaIU*#zwQ`XD77jkE;=eIDlRTc6(6TkDOIRk z9TOKBqmDzZF+`7vkBW?nQpT!cRZ&qfu~CsR%2+l2$HvB@EhSEfRH>t*m1eJX zOby8*W23==3s6BcbzF2zoD#A}M=5b)Tr~P54(HLO#>J{|L2+@oTy;*T*a@OHD0zq&iYBdq_MNN>a)^QXC!&FQ=p| zl%%HgN+b@6M@3m#d5VXJM@p(ArPq<-v9PRMQtnY9N%bu6E%#U`xm;deo>C^cEa~;A z0QB@MmsF&BqgC?lG7q$clT&)jdQ&_rBxPkOo}S=dSOGaC9-fkgo)xJJ zFFR6DlV_PnucOR?X3JA9mqS`=)^lNsXDS3;m@1JhOif8mbwFsUhORC(^|Hew#ly1# z7wqVjI8sv}d@3$HCAFeFMS_aUa3PLfM=Gum6Ha|;Wl%JEARj9@PJZ(;%K3`vuQeIV zP_woGZR8Z>>$JMOA_!Pms4Xhe&+_4%h%?i>U{h|@CHuL*Xjy%dHGp|dTm~jPOqgrz{k9x43+>CGUu&&$ z8FWt#loWezjTH)44%Jr!^@~Ek+B%sP`Vfuz`PbGFw94d=(`v1$l|ymX)cITe{n1Vh zbgHZt!pQ5O#%uj$Qn1RQ^{xISNu9I~7iaaW@xv8D5z4J}d9^bCI_Pp}eMsSl6KhGS zqH>7kZzVmAcA@C~v6T1bkgdP3e{i60XrQ}usC#H=pnu5L*F6M%=NugD8|dzLbdqXx z*!l;c^oDGM4(HI|z`)QTlwhB;6Z#Sgvb!6Mz`@hs*GH$>oc;Z%%r?{sB|GRG80>WP zJ4xk2Z4M0fb%KuLPA8ab1Kop8Tc>Scpl_hxiH19E_yfI+bB3Hl&d#B}PKOgU4tDkr zfv3+oMA{n?Ir?maL){RGnsDMux*<~cpaV5JY!0W>F*rCdIM`|H9CV;^Cn`aO{e$3f z4&vVs^!Wf<>9%$D4cH*IqkCYWvm4h2Ne6~-PJe%=ldgE6ug`%l!YPjK&b}e&{bvK9 zx82;f>6(W_FX)<~`np2Hl6AvS@?jRJ_S?y!(2>c|v~CvBZPJgSp$9~BbkMoOp~E;K z)D4_-=zl1bGp7+%(Rl1fs-j}?PZ@*fze)v_5Dg8fj#EX(L+wF*kXDI}j*p3rQ^%^~ zV&bR}dL|w!5~?jm9Tgo#s)O`SOk^~)7Bou~@^eJSMMbJ3l`81bNbtl*LAS+5LI=e{ z$Hb!=s9P1j(J`^HYIUS41|GXAQkyCz6kt@ODmFGQDkcUBD;}-JKpCoIsN&d2Wn{E6 z4(b=05ggEsu}Wx3G_HaUWYi`kK=n~jqEXPVI0@PjYBUyV6xByTZAVAPs-YHRqT*EX zv5_&+@v2x{N=%#z8X7PjjB!x2F;Ie$xIh3k41u^YYAWri>S$`|u|k2C zLX(2q+HNg{hAr-}H??=P7Z+RGi|tMJo~HKpDl1~E+HoH0u~&6K)#B{Zsw%3ar?{iE zxCyO5AiLFG3?ZyNO*j+Pw)d1mAXHIYT-?%83L#KQ6VfyGv~;xhSewvxdq+!EN0q&& zrQL2VZD}g)=m0}0)ORT)vx65+m3FkW6!)~-(JUie3%IGGj-Do5X;oE^73#eSS6PKd zo1o*{F+qcv?Zxf(QaeO~#Q^cFr1?8$Ep+szLQQ%ugue4Ahj#Y_gb9%9nIgF?seocG zOL3H^R6t>0PPv>?ES;HdHNh3G%=%%iy)&8Qsxyv`xZc|LY*E88;TQRfFD8?78F6# zL7hS8L#ILSL)gMXTn^M9Hs)~6crnTOfx(ZQTZN{_`O3@sYh{>@E zb6(6n6RU$%n4cQbfeWD{!DTjh3xzlx(?=mrG#d;m%#fjX4fyX3-fWtAnzL1?TvaVJ zSEpy2F^%;Os`mC4LgA)E9?Y$UD$Ki8)he2ci$`6m>~xhX8*PInNJz3(n{nah z#Pn*+chiN5Q1&Dmu0m)w3$qR0*_d=!C#p#C8@ART|LmK1*4qX;olrF0 zLxYTx>h2qKK!4dBHmE14Ea(a6fP*wwzYViS=%>N{fuW)PZkkW_IidB2aDub554waD zUO)5>R1*Gnc496$*w=4!qKNcuKNJ|LA_r!c-OyCfl!H)3IGIkMiRfT|Cu(s(DfXdG zXjRf=g9Eni0q96*&TdkW-B4Jl8Dc|iL5DjB`f+xDC&V5^G0y084B#>bp$VZj2cUXM z^1&hKV%s1t3Nza7e$skFgF_BXatCaK-QA8p2rxkMKr~!dcR!Wl>IN_|#w^+arXg4b z4%)}M6P#>;4!of2!r!$}bIqZcG7e)dnA`;=xlPn%vFM-?b(nIxUBG1X0H%%5lygFd zlP#icP?5=@VQ#lY!#e0nx3I9V3(cVxOe4FJF|8d=) zXjijECt8b%=Qf=V^G)JRPVP!>ruIUco4Z8Kn36Y(L>6$M0h+0cl833O+ryYJH(Nwd z+M#H$ODD3RIZSRto1vn+ESR(o4-bp*S0oZOhu*e?hPvsJEht0_)Pyd%EA&FB+gePb zEtu>=3SDzDYF;a{=t4ooIL*AOXoe>PlVxBd4&j<$+# zGF4SYj(3lWh}v5WGbi%+q~l|1q1+?=c8+N+ZIYQ}5f=m8BX(NHy*mlJ=vxJzlK+EG zFDdkCK6>qc`GE>9+o3mM&P!9$to%Gnevzfj0^Mh_SjzHCbWm+M-hr3y|3XdmG;In;9Wq)5c}A@OGeo#M}j zXz8#78~x9QJH2jo`dk_8^s!^EBN^w~Gw3C|ZtHis((jP=fE&tVs88DCHBQ#!@aYwQ z(B19g;c;t7a?9tI^aGy{=*c^a?}kUzfA^yczku1tqwcENkqOD_$oK>p+X>OhaWOFo zu}P}LsOUshQgWO!VRn2hrVKF4RmsUwvtZ~atK*Z@iL+y8N6wm+7&nWCzYVtSfBPf5 zNH*#JZq%lvlwa|XI4Y~E7N=Cg7+st?4(4ZBYFS^O*TS?E&k72h@X?i-^jSGruqY}k zDk#uvOZ2+!Sr*-nk{pY+P`e}FlAo7vq1Bh|THOvySqbdQk~01FLRe#2g*(bDG-@j` z3Ugq~WO$dPo4thw?_i&FbxC@9PEeA!s>Itzol}ySjqzzP!$k5(#%`52$%C+LzpqwNkEQ&YIz>~>-hlerK>vW+nt=MoMwmTK zjaXNx2@DJjYV!9BlFIg36}0jomrDbh$hZmb>-6#Py$%xuc0s4h=aOE@7+LS2(;*pW zcS`I&zIf}nm&X-29$XpdL%FnfV8G{kzs*ZFZcMLu%qN4qzP6l-Hb3k&y}4F@TQ>BP zXiG!FAJ^W!Z4Ig*?QusY*&_O&!QQ^M@3t&>%dmJqHq)kT5%o6M-(KtWl`Lh8=sGmg zI_Q><8xl^gZTm{LX^ZGugZs#-8ng%1w%w7bw}?J$ zNI0=p`IRgK)i$Hrk}aZtYe?u=tN&USoZ$9FL!@Wm#3{3+QmxdsSvfGkAxaJbiJ?## zAq*1`mRrhk4@iT8%7R>v!BpUoWDWs|p->qi3=Rq>FRo_>tFs>b^0`iRB;GM z428-FVVHoh++7^^>8_EHZ6n?rdw=wkQfS;5yCJ5VYyFp+~ZF3`7V61 zt6i6G&_x&%TA3Z%e za+5qhE{Y%x~zjqi3=Nk}+vd#S5F3Yp#89Y=5QYf|%MBxk zL(ZJJc&7A)+~{Zy$>k7`7z&jU!Y~10xzBLi(P!%Fmew8aog5p>A(J@-B!)s|gfL7% zSZ?gva!5smpu(k$zhei7@Hqq|hC*e8Fib#L?h1~3N5#HP z4grawP#GZ%6A+er3&&luB|5r4`kl}7jYba1=Maz>3Y8JUFacq?qd9J4^ka{0dTeCf z^zXmtkm(!(5<{UfLKr3>Ecas^_xF!Eod=xhb3S|fZ4UX2LqK9ER7MEH1cc?rUNMJ! z{PC8Le>nVhKmdol%^@H$6e=TxVFJQ(f6Q?Qe0=`=wDZq?Wv#F05G#j(#89Y=5QYf| z%YB~Xu0Q|yl|{FLqK9ER7MEH1cc>Y#&KU?=Ifi`doUs5>{$+p;1G})3Y8JUFacq?eL3#4zAwIL zfANnezaAOkkgqueB!)s|gfL7%Snd}&?vWQ`V+Uj3`b*)?og7lgAs{gnDkFqp0>W}* z8J$CJ-Fo}hmZcvzG;qkr90C$Up)x`kCLk>LEsne4)*t_v{Kv9Sg1o&sB#1*mVklHb z2*U(~<^Chb?fu8QcW>Xl_UOL{1#!r~a|lQbg~|wFn1Ha{cRB8$yYuHq&(HtEE`@?a zc5w(u428-FVVHoh-19kZ#rzvL7Tsvr-IA2VAuSvN5<{UfLKr3>EcXqLJL$&q<*zRP zIizjxUJhyF5Re!Ol@Y=)0b#k9bKHBE_w)#RL>FKG@IwxHokKukC{#uW!vuuo?%}vU z?3pxa|D??FC9k}~Axk&}B!)s|gfL7%Snf$2_bZd!-NW6}0)3u-nnQdz1SEz+WrQ$H zKv-^fj{9l%_V!=fKVS5Rv@{O+1BZabP^gR$h6xDE-Oh2RwKq1t+qlkeRZkCxtl|)m z7z&jU!Y~10xf?m|p2qd-+t>f$#z#Ir9P$x|fW%O!j1Yzi2+O^mR~~xw zlTSG0Q4Rr#p->qi3=)yQ|?|moy-p!3ezUL5-7z&jU!Y~10x$kk@Zuc%-8hdGi?X}N7CVMhL?MgynYSxTm_VU0b~Ne+*yVyqQBTa|lQbg~|wFn1Ha{YdP-!N!oq? zbM^Oe9Jg1IQ6wv}vdWf`Sysv_8ChQ$k(F$+vm2BVLbgaHGO|aqXZBW+P4>9n=bZO{ zaQW$ed%hn3fpgBs-D-BWboP->e_R|yKLnW21-T(WBLJ+Pg>~F47grJ&N5xG%JcyeR zU_uw3)uFlpLgboCl&;_|6KqCOG&W80?wvW%ePiO4jr%w=j z5MV+VwCUik=2+#-st6#xd_0`~@@?iAaf;)F0 z3LwCQF31f58UbMSAgu2U?(etmM_m5v=m_x_0!-+F+z_A<09NnA+Hrq*`R(!rr`q;* zh*}6Rp$l?DfJOjVy$tL2WpD2#@8%af6%`OW5MV+VEGi^>z z5N!}(LKozQ0F3~!8vOeaVr)!jEGs(O%L^hK0!-+F+z_A<09KE|+G~uC&WP@-y1<7I z5CRZjLKozQ0F3~!nhw?<=#-UlmGQ1eU%Lho4FM)}L2d}p2mq^*kr6}_1enkTxgkI!0IUZ8tcJkD1FwUT z5l~Y@5I}$lU630BGy=eCJXlkMU#EPTcSS-qCI&(k0!-+F+z_A<09NP0IwsG_X~^kA z&h+>=#54q$&;_|6KqCOGc7pY|)A#Sh-zhqynwlV@Ai#t!$PED+0bn(FgbRY6-h%$S zk5G3vgb)On&;_|6KqCOG2LB9!P*uI6>g@PZN($m71enkTxgkI!0IXJpwUp}6km68C z;s+BGhz}58LKozQ0F3~!dI;7gL+k4+>-9{#f`Smc5MV+V zDkC{L5F-#^LKozQ0F3~!dIr`xGlqsvhSNMHWn~a05MV+VQGo$h9)LzCuV%Vc=am8MF=pV3vxq%MgUly2qGcJfC*iY8v--}!0IAc>le+>2hKA*=v-fi=!5_hx*#_MXas=O^RQl@KXpp_ zl)Esqn;Qf(1enkTxgkI!0IWU*YqwMV{g3*8Wt9pGLzF^*30;sI0yF}^>V8-Y_xt%t z`ni-dZEiv^L4XNekQ)Lt0>ElNSa14ORn=7`c$;x?L6|{+30;sI0yF}^>MB@sRkgR% zv~!L>{reZrp9={=Jcj@ix*#_MXas=ODzFw(IX)ga&S#&|)rFXW028_(Hw0(|fYsnTIuM?o z|2(&!ZAL{wY(jtuU630BGy=eCPgqBJK7a1{d~-p@!U94D0!-+F+z_A<09HSTwZ(H2 z6El;#t5wO#5LFOhLKozQ0F3~!+630gCg;!loo7mwlaYatg8&n{AU6bP1c24&VJ&ms z+WMQdRe#s1QxIJcU_uwx*ksm)GL?FO~F31f58UbMSIavQV zS6CQONY5u1enkTxgkI!0Ib%9b%$<1-T(WBLJ*kgEi0EqetD3s?&e9wL$!X028_(Hw0(|fYsnB ze+X)773${(>;VA~>=0l=7vzQjjR3Hk8rA{Sa&k;^lK1>PJt6!cz=STy4FMVfV6_~q zJ>^J9&XdS-Q>v&yP(pwSU630BGy=eC5?HH{)YtRY-}&?A)hmcM5MV+VJ7{Snqc7^1kQ2_VkXuJ;WUdFrf=_ zLx4sASj`J-dtO)9M%TE{i&Ik&ix6N!7vzQjjR3IP71mR(0Rch*7De>GenHSffC*iY z8v--}!0G^4{|XowcrtL5`;nU);v)o@&;_|6KqCOG9)LCX00V;^!=Rg3eLaL21enkT zxgkI!0IUXY%Rqejvizmi(9OjK!VLmU=z`o3pb-F8e}T2jmk%F8K2Tj$tg3=gga8w| zAU6bP1c22aU|sd$!GkXk+$Q>%m>~Kfz=STy4FMVfVD$r7GdkMHR>DTdU_Dy5MV+VQRto5#KZ2aA5J-aU<0kIDO zCUik=2+#-st2baRv2pow&E@1((}DsBQwT7j3vxq%MgUk1p5cU8S$VU<>r&s)08tMC zCUik=2+#-st5;y%up%paAUjv@J3I{G3jro{L2d}p2mq^PVLdE+`?l)smyCJM%@BDI zU_uw98J2Us!myfPcSbejcI) z0!-+F+z_A<09G%+dVb;l{jmF|7Joc=0PzC?Oz48#5TFqNR^Ny9gZt&>J>_NAHu(4u zHV|M!7vzQjjR3H^9M<^dmo8Oax*ub#rUqdQ0VZ@oZV1o_0IM&-TJ2Iz4Oh+0-^tO@ z5Xlf=LKozQ0F3~!8a#^(F+OfGUge)=Y6_7C0VZ@oZV1o_0ISDgZ92}#=*T!}Cvk89 zAprpQH*4Ga;G%jjrTO_iu zKqNwd30;sI0yF}^Y7JPkXuN#s{Bm~kimNNc6$mh)3vxq%MgUm-64tISA3tt+{H$_e zZx3Pt0!-+F+z_A<09HSS_1i12XgaQ1l8 z!a@jA2r!`wazlVd09YLk>%#C)pVmL^%6X`(LwG=d30;sI0yF}^>QAs%|Mcru^{@Z* zyMu!vx*@=XF31f58UbK6cvS#`f)YmieQtfr z@4iS%LVSS$6S^Qb1ZV_+)qSv*?90hX%(*C};qMQj0Rbj-L2d}p2mq^dVC|pt`nCD% zhD||jZ3saKFrf=_Lx4sASp6E-+OKza>v!Ksu9%xctU!PXU630BGy=ftU09p%HZ}@3 zT5iR?dj}B*0VZ@oZV1o_0IM5e{jQONBbGz-qZ%b8gc<~x&;_|6KqCOG=72RNhrYgt z{`&b(`S}o^Ai#t!$PED+0bsR0tn>AQf_Q>-3(s_QL7agA6S^Qb1ZV_+)j_cC3UYSt zcP`DIZES>?g#Z(}AU6bP1c24fux@m|a%J{P|CsaQB7`#pn9v2eAwVMltiA&4#Va>% z@ZT^ni>IZ9h=%|Zx*#_MXas=OH(*VB!`S$~@eirW*jR{42r!`wazlVd09b7d>sVuV z_e1yJ!K-iILaai730;sI0yF}^YIj(_b(fHslo%UyoSTDiga8w|AU6bP1c22Nu%45M zj3kRZ9YPo%4?ze4CUik=2+#-st0Q3@AKBggUw6}|YC1ZIY6vi)3vxq%MgUmd4QsmY z%*?_}`4f7xvk-a^U_uwElkSc|YGC8;IF4sei=KyW~S30;sI0yF}^YVg4u z2xew?=2c7St$v|MJh!$?GQ6Fh!6-cp$l?DfJOjVtq5x~ z#pY(IX4iw5j~^joAi#t!$PED+0bq4AtUop%9Q-`^%sY4M7Q`F`n9v2eAwVMltUiGC ztpfrAN`mvJN!ZyTNFcz3F31f58UbK60j${xw6yfKK9Qu)%s`|=fC*iY8v--}z-ld6 z&uAqi7$;OVU*h0^xC8+vbU|(i&y+L!5&E6S^Qb1ZV_+)!=I>5PN%_dx4_!9v%?$5MV+VIqoeO!)fF`Tl%!kedr}00Aa+L2d}p2mq^n zVV&#C&i(LQ}D+HL(1-T(WBLJ+H zg7uM9e*WuxK^gVLLJ8k=lbU|(i&ElMSZne1_S*Iie61iPgs6Z36S^Qb1ZV_+)xEGL?EU?_;b?f6$2F?AKH?ULD)io30;sI0yF}^>IztsRn*pAsJ%Y@_UTiIw-8`L z7vzQjjR3H^7S>N|b#%0J(($s^)*!MVz=STy4FMVfV6_gc*K|fl^+pRLGM$|vG9kc( zF31f58UbK6_%Z~kXH!t>dj3(zP>ZAl4wj zgf7Sp0U7~d^%ktpY+b)jc%4i!^2QB_NC+^Y3vxq%MgUk1K1l)b{(bm+QqF6cnGn|? zz=STy4FMVfVD)=gXTA>$V-Ay!JN4xY#3=|cp$l?DfJOjV9R}+!VW&@Po=#QbE-r@P zh5!?~AU6bP1c242VO@NBYUs`l9GQU+k0HLw;^00z=STy4FMVfV6`Nywjcz~^v<}6&%Iq$8@}6ek?dotZSc2yl$)(r39V+i zij?^k?|6SF& z{O=wm^-$7ayP{_JGH0q&N_&p?(Agdvd!4)f6=^#!ZSzT=2!IcZf6nJ;7vI{T)}S*_ z*SD<}ES=jkv9A_Q9WkkQ;y=967k+-%Mfmvc^fMtv)#V{JtHwEeO1>SY6CdS!ntGB7 zr>`G=R5|qIoM)NmVJNa=nk!1An;Ct@Lm;J+yY=96anPeYGYPJm+1uAm-$hKFsMWl@ z9uPa>RN`b-w!z4B*`rQf2F9%D?ODGR`T|y2-+)Y?Xdzh<1GJyW1vb>ZF^C;O(tL$sf~-OL)eQ zyg$XZQ!<4R2%j9Iw~?I)4^b!G_x?ufR`hqg=C@qH3E40azZ?Al1r55{$tRb6?PjYE z#XSkcf>jFB9Gw`h<)pwz?l=4|)&Wf5bUHnCW^oeP`q@kC|9lI9>vc=Qm^0 z)MlUkSC*BhG@08hN}>iTJ>lXlM;7Ehl_t1w;PvOTJEsVayU{^U72J! zFaOQptwab*H`~nHcZPvlR)R{##>)bX-iL+@eTuRKv@G%Rt=;qE4+?(k3ko&TB-g&x zv~j5A+QWAX-TkCxnAxsW%}2J(gM0B;Jl6`hh{6v!gLd+Nwkr$4Ini%zCAaB~-~5!P z@!84}4|pGQAZ=vGsD@K%IV0za+ofb&>-0hF;dd2jXPQYVw&pxtjq16C6V62jPLL3Wc~|Q zC$tmNj;CJm(|56R$?_bn_x-#=LvJ|&T<_}8p!qTR_LF`zRur^<^9#@ z+wox79;4G7f1!QxV^fB+;2Ts|B_@xpa0x^f=#B2rKkz8pBvSWOr2e|W#rAH=M0@vF zv;{YQ^ujf~*4D>gzXUs2FFts2tKzq4R9&bx6HzLQcl3*)K@)7-}kZ1m^+X3WOx(#e-l0ZXDS&_THW?8mgtaO-X!-- zaxQDtW|r&_E}-$jQGec^vHCK>sLzsB;xQ9X=-c0;r`^GzmBXg}Idi?Q<`yuLI2E9)x7X2W& ztk=z~mOSRhV^U(cKYp9UWVA%nPLXG_jzW7Ox_pS0=W4yFW&#(VSN(v@felegGm$Q9 z*{=tWl&0corDgIjR^E>DAWs;(rQc9oqMm#rMZ6jVNu-W zXK8cWJ+D{hzhx&yKVjM&F=6>?ibJ6lUafu41`#TU)fI!LOVyks7w|Z`__Qf)8Q;sc zJyWdy#xMN%Dc9kDK3w)}|bHqOXx|jAe=`*tX z90fSOrPPuygbe1*8@a)+HYw|#3oh#Wn}62(kD*lEr0;e1sX5Dl15SpSq3ZXgZc2ln z>??O`{*1=mnmge?YO$O|ihJsYOxmh&UeQFit-$Ac-CMod!Q^MdclAh%zrLcwxwjcA zO==S!a-t(|KSoA|F{|`<$s4Nt^XtXc9eyDlO|90U5g(nrr={1lJmro?raKkAd15_H zS@f_N@5hUA%H5e$hs|hkHeyCtx|3aM5Vsk4HC-QtpfjWlsMec}x3T zho{E%IH^X9kEA2RRRrc!6uA8;>7GdK@V+s=V9TFfF+UYTo4khJ_F=*Nza8nM+e6j%S;ER|Nx`}Ueh;J%<(*Ib{;c=m(I{OqyX*45 z7^(M{hhLkwUDvR<)Z9P6Ip$&!Qc}Ls8Q8TYzZ#poaAxb0)!|3|0>AK^JTF`xyJY22 zFc8bz>-;>3FOgaq#Ecj=A=E!mhRbDdU?Y zUwK?{oAouxp7R9oUK@^VdBPd+;ww2z^jOTsDdwvr0V*5OegdPE6$9_8EYkhO^H~Bt z=2{-G1z4|csntl_uDRa5RxLi*bT!C^gHif^9bx+0He+7Acdu%Bl?UoLd@LJiRa}*v zea4uS?w=55aA~KfpRLqdzGfJ{%AUG^(Sf&-a_{@(--OPI>oGZ-FZL*I?MXeAIp^~$ zuqpcVpQC$1dSl}*_IqpdwO=_j*D8K0Ce(=wF$|2Bu;y(=I^69TcFk$MNz#>8_KZP$ zTKO0^o`c2t0o^c5&z9_Vo5X%eGF{3AdF5|BpQubYT~!TA(|tF%w+9N`7A@~N+pm9O zi@(&Ufn#WH^yijgaF^?yzQ}}x1$K$)d#mQaqGHtTB^(@?S7%h@ z%QF8lNol`g&S`x9Pp}uwsizz5S$`O&Q&z(0~|DcTLjK9WY>YBr|N zqmh$^*79umdGraDgfHv$>73I}5V*Z)(7Yh6GrwRbd}L4aRi{>w#-PnI(jt`bYH=66 z&lHWCobapj2V;_wp3b6Gs_Jyiv*e1s)7_dxUmVH~$(;+uk{cB>j}qVFRkEdS5|iHy zvn7=J&VFv4Bk|Zr%A82*PDO7NOsMGGkvh*S^h+5a$P~vliPOo&!Z}A zEJQwV5Hzzh{bTB=!L9MLPkQ8%^7mi1!*YemfL5`lr}ghlulvir)W?S=fx(^%>uJQMf+J?UA{3J?cep%#YDEmaM%> zhA7F?zw)Bqq$ZTOJ-~t|^!13R@%&&ZDE;oTaZN+B?y<{Fa$cRdp2ocK>dW+9otk!a;hKGYvu9%exJDSlvbz&LxN2&*<*jKMajvuB zSFPsNEDVP+@~zN+%WBRYA>(lw`9q~%r$FpE)k4N2{qyOy59d7wMQ;k+rf|^~AMq7i zP;8RkYM1yc{Hshu^OM!W!hXIvq0M_DR}Ysn7najCS3jQ#>P(NHhOx}d zv7t!Pfo(&cGnn;XU-Gv1R!fp%x`p@K<%6b&T2Y?bA-!3ZFL2tqzMrQwx~6I|Qoe6U z*4w5)L47(>#HzwS;(N-sp(3Lf@)G4MKBa!=K8hXTWhA&Y+x$G}Q>utK`s@;V`hj=e z8ygR;Gjl26ce;3b`sW8qFTMoK6)s(czz`*#Ykh7#?hHrMYVlT^> z>b1XLe4|ZrUu1?2i3u;BCW&dil*?sa8(Amv=W=67gl@j$1bXrhUQ3GLt=^iwXNl{0gSBoYg8bg{ zf(hSy)+{V|WUp3pWY_9h%Vo>V&QJ&bIW2b9=6ammw0FeE`->qAvbI(CjD^IXjnlSC zO*gaT6es++@bQaG%0@%d#DRBWySX4AndIHQh)fnz;cHtC@)&v`0s%x7hz&T zK?B~DzU|My#R3ocM&o~HP;oT!eM^gR#uo>lM&y1UIpg^(s{IW2rp3wB`UsKj*{A#2 zx-q!SnvD%l)LoY{y==*P*r$~UNGx_!;vVWrEG7E;uw`X6`}5U!>N!msK2wvBcXU}w zidv3PG+C*sS&&OQh&%C-q5F*4#_fLxx*G{!gI)-oJ+n>ty*~thz5ZuG?`kfq{I{|j zhHBKlSKFzA?$;&Rmo}^Nl~Z?c;&1Wi|yo^3b393jYNJMwh8RCD(I_Pd*`aq!UrOl$vHCe~f$K zcho_IqR*HHKKUtq`YLbR=j*H`n`#jTfm}~5&wuP@EEx;=CaoD3)Vh=RUSBhJLBb$R zj#wjt4gcYrZ?lvsRR`j@?&`lwijFjm&52ET#;Au>lgGP$R{i}nX?acgUTOVAwa*_8 zYx#Feq~(2|6}55e!}~0*tRHeG~cNxDGDhW(~eLOv?FT84?90CT_$LB{4(Z8n7zz5m&^M1 zZ#dEFL~+gSWz*O46b?7J{-?o6cZM$dvBp&;UEZ7bG^l5D{3kZ!JBM|0z5h+k_XP}x z`E0zg%<(6gzpe8-TglvR&@1`-QVO9$?sWyZ>GyPf=Y$1VXs%k{%TLneW-8RU9#M5p zEni8^FgJjl!&tn}i8R5z<0dCflUZ>aUXj*fc<0*cUcj%hP^|(_+83k(KMqK){x_N+ z8DUw5^OYukW|vEWrd%}26?4Vqk;gx&y_WMG$6Gw+P%_bYzHs#H zPeP4qh5iLNprrHN-YcUzRsC=ycE7DZTtmoX~o*SNmPq$;-Tc9HqNc5}z9j52u&vb2+R| ziMapv*0Fsi?-$cO!f5vHhONF3OFM<^;=q!FlG(uJ71>;wO9SgX-a)*(bjJ!syh%Jp zb468@R0lU2*+Rkr5qBAWzA*Ims$`V)o2L#8$T#nUldHDMu}rEv~e*>+x$s=k8Ux%c(&)yMvPV+_$}$ zZ{aiUwRC$?Z2ZK(=$bvN^gdi@GOpE2_F=(`zmCq#y?Fy)SXX_YvUX%ho9--({A!AS zQc5xAl}pH9B;T1HRN#2)`_V0Ng7ecIZ0X)_?=$y}IWQBQI@uE)eOq;qG`hNN!b|MZ zm^~%gprG>R1qC`!x>z=er&kewpSc6v8zFk~< z;`Q!$aQD>h5i5eU|M)zmsR%o>y05sZc`3{uUw2rSCvbFkU~kPcYq+Q_!hpBS4mxDLpwSfw7aaFQ~y+Ju}PMR|-D~a0Ut+IvAX2tOnj_Z`GNLHo5ENFJ8w?=frmWr)GDVHub*J@H*Gn-TfdApF+7gZa*_hru}F| zBj2?Sjay=t@q2D2U%AQXKgg%0&#BVy-?(zh`M2%7qi`&nU*aW^jms3N2_Gz|g8daF zq7vNW2`bLFy=|=%A?286`|s8_#n(c~yABlPcX7|O56pQn;GC47YzrY%+|w7RFs3p7 z!ou-cI1P7nLy~{$nHZP&Qwbv6;$Vky8@5X8I=5%6T=J`iw+t+u#w)CjRUE z_H+5qkzWhGq|qNqm^?o}O*8-bw!iu)-?W3*yLtU}_}0Rcp$^B_9(}EPfwkNIbU6c& zE#6&p)FJm+WJOh+MJ&&DH(m3mB2Y@%{uLc@n0S3$QwfKcXzSW7W^&s+<+=VRPp)*h zP@PT-=B2&i@}ucj=G0x0(pA3}^@%Hjw~wESHnmfzE50P$aXP9Vlb^cY_30;bUFFH@ zCuQwL7sh7Y3BC!=MkinW@-><9$jI%D#6Q7bqO|2gn5vS!^^n>&?_( zis_l+T!>wY&#%2I6g_vR)Z9FoeDR(2J}U@*d*+|#X`#BwpN0&Ye>8%8 z)cBUzH^_L-G0`(l{urBIf019wJRNAiv9WU`=FVmLU+YD}h`^1*WZohv#z-rci|JGT zra0^e<2yr{ChH^kWxmf(`X3z=yA~@Q*(h2Z)RN>bF7CZy`I}!@xkB-3Eppj&mFd3U zpYvh5U1YL@-)W4=ak+Mfh^bzTD7(sOTow2myxxZ&u$Op3;7>udwKLJeOD--FzI~l9 zY=vP;9=kW&_h&e!I*wU-sy}iJ8XIwtvU_r{Ue1}?JSHymvS;U>lXIHe@sbq}JiF5p zy4>JkV89#iJ%Ssl#(CgzW+T>d>t8P~i}&%Vh6(q5D!y;OzUo(rZ;s%fe%RBvJM>xSp+tb^`-iQ0d9CE2; z9|-w&Z1^mBhaj>9UPJZM-=Q`ba9?q{aS<;B24ExKLyBuftZ*rTh{ z)UwZcCLHlB)$O_D^agHSG>qpet9;01P3O+lb#^y=#pBuR<{0hPAGyJcR|mHhLXA4) zE?8IChMiWID*J)I5xu?_RJOb4@zb=CpLDvLJs`(Z(YhtMr&;FVyJIiNYUmYb4=oDtwAf*-gF|=rE(flPamx40XN~7KRao^jq4%g0$0mJ#j!(3A? zsS*UF-n(gEzxhx8C6?4ri;UUt#PGp+2`!?hbH5h zAuB&MSOp$D6_ZQczdOW{d;Iou>~i9}ipz($%7r~X$ePFZWp%d3Xz6mfrYm=HkdzNH z(DKhxY24~s;JdQGcUt4wp8%b&44cwOmIlTIFm5zU2repPQ@a`dgOT%Gh5&GR1l_7WuW>cIu}m@c18w{fqv< z|L=xx$!)Ec(2UpyzXxwxd3V0wE*496S0v4fNjzC|mE(+ZY_UrYPJ@(NyVLc0s}(vf zQ=KnIo5y(kYA3gN$)#5n$F^>sIMeR#;uktar1?)r;D`Fd6kA-C^OAv&9(xQBJCAMb zOv-$IdP#hvp>p_kq&2ZESrHvhk@CfR#E!wwzP?$ZKOeheqQ*%eaQV*Hm*4o~N}T4G z57`zeZdQlyu>HWb0{XTA91dyua#w{*Inlds?6Q zd_s}n*mU$4(d!IF!jRM6&i!feRp4uF`6|;46zi!EcMTNo2HmL=jvvzN!yyvg4PX;f z7bc3;H zy7(6_F1xRcL(b<^*{!XYc8h^_M}{qdvwxrAWzy?yl9HHm(<@oT<64@PAJ1oa`h8W0_5q<@LAa>({aw5l66hA5;MIujuD-l zJy>aF(v!ULXGG4a_fe^mkM{EZ+pa4(f`uujE#+3tvl^%Uo)33=k3A!c&5g<#_e@#x z5^c#iI@>22@6=@3vqH>sa@Jmwv02Q#23O5qZvc0Kkj%S(zwm`j*Ub8lKZ_R`{T^`c z3KFsNKPtsfi#6S;#(9@zla&9vbMWMl$SaS0^~0!pQtKM)8`m2CeD35HYW}!Xx*6uq ztzcT@Y&~|7;G7$!k{@pUR`Y+a1$JwA8Kq(Fe(@8j}+a zD&YgmYni7nSDRHPbT}rzrh}Sam-p$(l2@~;) z46LW>i%QehP7APw_}lgVK3Dg2$km|ioYUYdR%x7HMCAXU?QF5gzZUBeylwp#Ku0mGjO8dYEmJ{d4@C|mVUuEpD z##G%Eo&Mzf0bg#f(x}Uqf~Jm|^W^!APxp6Z*^9pfPzuehIBz?64Q$-bl(~`_shbpW zpZVA6L*+A))bZ+TNsTd*ufmgRi}Y(HFU;_oo?oBrFedIBX(ckSVu?RU6kNN46K?Ci@d-8bnxxc&NUw686b_c%q&P-1PUG;y}({>=T= z%QJQqa`bPxh5Ci>^Ji-BaM<+!ydl)S^!`qTm*+-i&B`16LW>cZAGY;L7C%xRCYeO} z4Vl+)1%0QKjM(40kjdweGm&`ZlJe#6RUY?0+3ftdqq#Q{#+qs5@Q^32nWf=f*M|p0 zG_)x`3iex1B)@)LRUTfs=O02GfQzg6$wVNTp|v!j-co5ia{l=3IeVD_7h)|d@$R?R z+Jb!#uHrpXI=oVI-CxA7aDcJod%+Lq$+OWEVKVu~)egfGWjP+g-vuiPwW$S79c6@{ zUt^`9=CNxOYD(X&F6Ghj!|RF5dryEXOK2IkBjuubf&Y1LRl$WY*{AmJYAhd6`YXI@ zavplOe8nf$sO6f?oM?r75uW9I<^%hi9}}M#_YNLbN>fhqCcffQ+&AZVNRU3@De>N; zF6}ns&cECz;X3MNLuYXui{<<;@H!bCj%EDNzzy`)n0n>s5U(PX^ISCbPebYE9eyT9 zOOkV59wefYokx9kUcAohEIewamiJG|9TDsO5{W*ptELIu!wr*P?2X8~XRxdzKPSjO zc9CcCiFJQP5x3Q@YDB?&{PV^KS*Nnq*#?^ku3<3H=Y(q+T8J-?`v|^NPJ^;*XQNdk}gZHU$_1< z`}$@$?{h-5%Em#slP_z)?-!jy!-_ZzcqE=rbKHi_H^*KbRvs4l9Tkk_i}ht~pq5CfV{egxa5?>wo%?7!`@Mu?iWHK*Ix47T! zALmNN*>-GXGN}D`j$z1-hP|6xx*&l~UwYN{i%H_4x@S*s6j!7{6o0D`t0^m`ufM*sx zF*DIgINk43(&(d&#Y&erL*_wtm5Y;>-6az74swx>JbE|g%PXJ9gc=dj5x0gU9UfE{ zhtOz}&a{4sxpBNi|9qxF1($h+JMPUt{O#0Gi?K!nniRuD$vaazc->~iJ)J4}vejcx zmc~BRki5Ii^evCIDQjfFss zwD9Ad#-TZW((eWjeD14${`a9-_S^}r+sPklttu_)-F=m{3#FRmamWjW+U$d?N%l%0By!Vs~B(XJ~O&RnxCM3R+Sd zW-Z1sE_8Jr$mO9g3hJD2UF%xu;N7V;s^1bc(lLx;G`ZxEu;1*F1b&{iC}SsK{LM+z zhyMk7%3cy&zwtOoD`ky}>(}48%Fk(<87I}lyB9Joo@AZ~*Azaf`S0~Zg)VXSK7!24 zO1f=&ezD*AKKlvAwmDu7@vum7lcr0Ed|*ws_0(z}f6nU)rLJ{#WUBAo-T>95HPOvq zHYSoOJ+B$q(`7l&FBmMD5s#JhMluH3xsBZ#{JoTMF+?~Ur-QjLb<|ksiy-mqUyE1o zHI#`z{x}o7@lazovB{oOpy~Pp_qAL(BjGkp0*l8^Q4M;Wu~hP^{TEFVTP7%zlh-m? zPXsbP)+jaG++MU)@%|}BRimYyIz@1^dIeusO~>+56@Tv##S6MF5e=S3x#H5(`c_N| zles)^l%8DMn4mVkCOB+D_rfYeeBfn$OJCoorSaU2!_r5UN1r!8CiVqSo;laN8Kt>N zBw53Lbd_MX&1C(0mtSaCdF8yUDGmQpcH61V2FutVTb&6pD`E^WFD&v05UN>+uy)2IE zlxICv#JL!y$B)zo6X-qus}9#If5os~_ELm>v2RleH)1#1O^}IktzJiJzi0O%J43l( zsM_-;k&1Nu2R?>5-ml)jNc4K6Sn9)RYSnYK|23JIZma*Cz;VcQf1vFV-SqRIdpj#i z(k5#k60()kXG!0cU;h*Es&2t3arziIN`Z|OYCdv!=ANU>R>c4jyyifSzsXWs@|XYD>YNiZ()@d%%C4+@&>p^VQlEan%} zY^0Na`wKtbty7|0E=JM*L25$aVjOGrd9zDIVzC4bDt0ZNUh%p?0Up&q#*Yt2N?nA_ zZroWHH{B|`d&c0h@xvR5YNS8AeBS)ce0}@y<6sUhSAEx{Dv@tCe0-~ay0v=vKmIX2 z2QNdWjtj}u5B)ESR;PT*xK6|KPpT)UVBrLJgTTD4R0%1Yg)Uye^DbxbUm)^Pk@v2b zTMMRJqi(qV3wz%ZyEAfxb9h}j$kWTPz0)KsxqnR{Gcg)(gJ;pP%RTGM{6E)p&zFfV zgX7KjCagZ%YURbvX2kCrF!E@}ehr9aWFL*@?;TfDgos{lGT7=Lukdj- zzh%swrcQ?^Q9RTwZ}QVfOvhPIl=SKmNwv+`Y)A@$_(vejoxEPubT{3iYDTdTSAtML^#*4tGArNR zp(Qb~G?U2QKKN6v^y0bDkie>W0uqWlRcp7U#O8kATTlBOTrs{ajele&Z0bR*yT&|^f~i?)yzi@81{*u^Z!sVN-Vo|(p^ue!fUAMYHpUBy-~#d z*5=FFeGziqyroxbOx>f1$~JYy-}!vMyopDX{aq;XVOiDhzQ6p*5miL{9v&n*Y`@() zA4ggaXK`m%q1bqlGUu4N=eJwxy46nZ_P zoX+7r5N=8|J*48A(ezWyAxR)=Sb8F}!uv45HR$h6j?O3*%l;NI`J2DFe~_8gb>^zd zOq9)(|B5mxvG`E<@>hSeBq?D|iVrUDx}z*zMm;U_*zV8CGf%&M)a<|YmN%f>z}(ye z_dyavjX-X=${D%ev_JU_2<6xkdtwr+`DeU?>POrJ68!K9SY7c+L>G4sMB@g;U!tPa`A7>YSAcN;dUFNT3fK(blGLX5QqcZR%bHl94eq&W6My}=%NPakjXSQ7Z@CL!xp(V=P})64 zA(_~zfAzRAoa&eG-ZuOCCP)*!x@G)re@~X8VB2*w#`2;=2a8PAHRdLf{4c$wyS&>q zA_NRpUz~5synA^YH-_!YlboJTtI|SKTZz+WW$G(0`_!aLtP{~5zR~)x{&{cm-CsK% zy2=Az8FS4J<2Lo(7Ls-J_&e_=-YNL+<{x(kf$P3Ie)ms%_-}099)7WLIbBZlS$ucT z*_o0`%{^JxRXLf$Z#DHd>h7w35__iQ*!wXkuw&`e@Nm@AW{>psKMa$x>JCoN--WBc z5|O4ndCrutVfVPg&Fjn0TfDd}5A4@yR>ar?+Hv_*7$0=&lbOENxxi-3(|Sgzb7(%D zoa+i_ur3>3^ODQBq4{n_g@gGw(Qo=8^ry8ag}nW#9a z>Rl(HkyK%p65)TFgB4mF<(9hp-A~5_a-z0ol+JTF=7?TQHtdadY%D6}%TN7H*eS5x zo}cx<-o!_L~~_t5f_!d&@uwM2|^gNxN)A6>_#EuS@MHoE_w z?(pnc*2$NtS#G3Nf;zf?=r3QG9}&wgKa_q!c7dGY;PpqN@p)JCW0Q<{s_2Y2w+F?u*iJhS|=B(6#+rCnDYodwd zl#x@@IhK_M#V;#!$y1|R?ne51STUq}Su?Xt1&QUYFgK*!@Xd5mm39c^{jR1KmGtAo zS}mS~x7r)tH8oy|6I7QX+Nz_sL+D*jmFOw|kF_@er>bq=hu2`6wkes1+C`F?#BQ{e zv@3-uLu8xhDTD^LF$q!8PQ`8zN;1z=lE^%d8A_rOMTJuT`+lB!f6xE@y~q1~-*J4) zvFvs2b)EaZ_qy)uI#0`5_nP6_p|SVpR||IAY^{UTiK%m+yqBt3--JyM$=SYFTpAZ# zzAp2_`ph7+u4jWr>VXOQiP1@29m6PRt@+E$gL50>oO$r4QK~N&x|d$wS?cF;m*ok~ zc(rM`@|^yOu1BHNM9Sub*}!JMfek}gYgr#bQLgG`gn{!D-|z3gl3uT6t=HZWk-Ps? z>&aU0V7<{y8qe!fDR0~(8tism-!GrU5v@)W|K9MrN%JauX?2_5c)_&@0gLa+Uy9lv ze<%!kAbKN3+aP2At^L+_=D+rFJD1!@cf5a!bJk^P)N_u9JG#XYZJPG(xcS2&;o{z% zsQ6;#4FtH81$(WPy@AH;zdK6z|-}KlU!zQu= zDkUdnY#NGEeyrc*XBEI?*)Y;@_1?aBa*DGxYrllf@7Z0npy17W_lB?Dkt)$UzFJFD z_|Wt9=1qBDyI)Qq>eANq^&bZd(AqN5tE@4*%&n`7YZ@Ylb{e+y?G;FCyQS^ks_k>A z@d3Xb=Q@uyeU}o6t;g47-{Ci5SzR@t-g){>;|Alkkl0K(CK-16IT-T zfJ7YYj0lVP&fGis6tNwrTBroUf=|}#UvtoJ4f{6U(Nh!GZQY3+x4(_G5BIR`wHM#{ zUbx3OfJ8-Vo;*R>IXN*fr!kU~pN}`Uwqjs@2m}E)d0xGC4UfNa1s4z!!YnK;Q84cg zlJW2%4(3loO3KPG76JhUbAccg)zvtd<{i~Ld>9iD6hy)Np2*dtBn-^+f)o@N<6yoK zWXH~(D0%Bv6x_RpTun?wsRs^V3tzutB4T3L*sE7qMO78HW7jTh?$akU>+xe8Jfi?1 zZ{LoCdo>U+-xlKKi5XF9PO)MHtD+Sorz#IC!Q8A}cSC8=IKm z5|Warub&?Zo>PL@IXdECz6Qj}*%>uGejL}?yB9SzGedK7b5ZpzTTlfhB@E05j5xWt zV2tb6(GRn;xC(gMcTH_A2Igr++B-T>FyAi%?pZ_VbUIS=^eJ9fUyt#DIos_V9I&&& z!MKX5DypEYjI$GoIJmb6SzKB|`v(S4aGx1cP*{i#kBngV?%&72eYc3tzI`~je+2>0 zU_mUbtZ*=w9zwIWM!_=`k?@EJG~mn`9Nb@sfO}jKaGw+c=1NDv{o)9Cf;$GD8-(Z` zI)sAf#~}?(O*oi`8(IAR9p_uM3f-Zlg*Uu-fpPKj;@!Qy*wpkis-vrmfw_JW5{ZN` z@7~3kckW>HkPvikejdMT~M zFatwF)Xm);1#`|I#>b9fbnsO4AHRO#;F+i>_25Aq%w>x3tzM18X)HJ<7 zqj+~u59;RWiOb5#Vc>af2;;^L+{x7y2XiMNVEzrn*WVvEIC2D&ShEK6^7cl#czD3{ z_UwqdrY0`CX%kA>y&D7fNg>TGE$Gc#x6uBfA-uV*4fj2D3j49Lg8umV6N|cd5vT6o zkGgqyU^H7>9NgE0kffw=aDOQx0`6%B^OPbitgM)+xj9x*S&1qrDxzTS9%ONO8H)m6VpEbDuwB1_RIZL^3in(VMBMICx$!TKDW3I`!@yW?*E5gZu4~ ztn6%z9XzL!w0=Dn6&;PKYiM9o@89DMjg2Un&kdQFoWzWe9!1Aqzs5_-%kiANJPh0? zg@9*`AkrH)pkU4_gn9cm3Z8w1fakvr>~EHn3+L8eEf(> zZ`_D;adV?AY-~7~D;SBnbO|pgD#F^ky71wbFHwoLYjFfTL?Gbw=~}erNiLF;(~LE@ zVmN|d0SRw~T3BY{84t^`lCn4?CMFBbdL)Pn2qt1zlZx{G0!wi9jdcm$HI2CsR#8YEc|el}PcS5WRk+S~gx+={vsoT?^l##fx+CzDK8~ z6Oj0LCeFMYhSEdQ(0gf_SjK};j2;?^g-1rCQ5OtR1H(WhAb^h3!>*w53EBu4-(ZQs zV&Zzy?w(DUtXwkAxUmtDmiEPc{nvs4%!6_9XyEFadoarGRYe1lC)zQV^|=VLi} zgJ8g9AQ>5R$lP2V_zN0G5%dtQr$38*_{f8DaUVsDjSH}Xq7iiXC5j;!C&td1hv(#{ zB4CanQ1FE@0ij-`yITcOQDH$@2$gt6wLYeI*a5M#3rE7k$p|RsppYk`R};U00{#jV z?_Hp9XX9Cqx8vmPPeHLhi=I6vhzkh2f&v|mho6_nW#!kR5|Uq#g#{Lbg~b#Hg%}j! zEwBJ1>go)Xaa|P@-D0GmfQnG5bWmvPu)2B&P+-+i6;%#USihr-OM-}iz%VvEQjgTt zSs}9j!Q26gr72=+N<(P0C?qP159M3ch&8|0L{o0MMXrXv8i`S$knUtC_BdmP((cr~Sh}Iq zfHDKh2PlbP$%oVq%RHo6NWD~8Lfs_xW9Hb*i8;~L)r9-NNk^#~lq#Y=MAf-V1hcpW%9+X5- zF2EWIDH}>JCrj?JDFx*bq$x7C`9;l*J4b&He$j z-`)|o(?5*qg@&N?#wKuR8qo$0BF_Fe8_NRe;?&!Nc8iK2A{LgYMF=2HaJY3wM)Bc3 zP+(;?;?ftRu_*BMRStmSxo0;<863j<*GeD~H&Xz~-9&DZw_#*(*cxOupwfY7@Bm(J zlnaEx%hC$B0Ns@M4g^GZAKtA6NG0VKdh^^_~z_ zvOtRUGm91LcrrW{#P@1L6Xty0q~z%y>5ip^S~A zW7f7fjmUwrt8T_sz)-Ka!9W;Sui;nE10r&ELY%-5`T>UN2X;WNAa(jZ0C9k!VPI>6 z(e3~huB?P9aIz!pSWd09jj{^bRRnr}@lR#R1pR%`*p4pN%54UjDul6DenFo|tj zQL>@}qHym%c25nE^TZo;Vy_OO^8+a13xMcurs6jp?NPgk^LRKYIZodekOdMD9R~rS zg0$jm??BtZ5HfgDgVZc8p^F`zSo<9&!ZbdL8Ut0y1Vf0jw2Uq8-h)#>>hnFXL+TWO z@OlWuL_rZ&unQ2YEFkiyPtcl`U-*wEAhhlQ0kw{VkfJW2Q7FiNP$uJbK$!vQ@!>rv zzeUA(fiMt`1XhftwFPYk=~J+ZAL9e1>TFp#ULwBh`URZuW~_W3ikF6|z2PhAsN&j(`ikRGBJ zpMb`@dth#Hv1p9nDa;qcaYR`WRd_jq4TExZ6_hIJAV4+G>an^LKt!|yGMop(>##nq zCk{w02MZ~+SGZf?VyFU24+V?Y?4@904Nh~@t3jqW5$Rvpu2WJ1p$Cgy~bYS zV+Z%6)DR$+K$$SOmyX~2_7z(=<&XPi|8QzMn>?W&*ug7U5l-+5R@e$1tjK!s3RXlGyn+>x z1Fv93#F84;q2M(M{BnAZjpWh;6liOR8PBoKJbIx5Q;`_ZguTk6mntxoh$T(f=RA6) z0#li|*c7TtA`?YgvFLpIYX#C)qG>CZoKJtNAcB9)rJq$0LBHnGgA~Tr5(O&K+_*kI zoN0+|wdbNoe(|P)_UQKDS5+Q8M}ek5WPgE0=FtljXo^IqCTt{+UZOx#B4#vUAM@xH z3N&TnR1@|ykH*E`ibdwrUnz`{iPTmsDW5*6Ft(LgPrsuuCQD@1escUp{aDp-=j4<{ zJt7+rJ#5k6XLkKYlL$iaOt?Y(o=iM*!$%Znj%_;WV{HW}N68iuP-o#hu{-js-?2$} zM8o(g{f;pap~YK|s;Y)G-;QWZObE$IyU-ZX_$H(vvEz1S0@|L#GWYd*7#H{gaD@vC zSe;BU#`k7zHn0g-xWIs@E1<*YCP~l(u5f|JTPz9ry325l%$Ywq1pVQ*^6yvur})J`81NeWkB_5+ZP?r3f9(JDkNtlgV7TueT@L;e z1c(LObg(b@ANzm(WB*@)g8TjvnBadL3Od-PgMGnbYshe5z+l0V0FxIk|Fr)MoWJ+{ zz3)i((pfe{J(jV7eSa~iuSf%RzB`tZlGvM@7PR7qL6s-Z72vCp&~#CgUW7-kPsRo zf;b_3h!+@00RU#{>|yJ9@}#}3FUiT?+RpwY$=1o<))f(`c+~3NGBeZ4ZTI03_u*_e z52cwF?t717cxGa`=%M@4N(Ulx(-K04(@GO6UxqZNO(y~(%G*}FrMP&zCSO6GN}k$Q zzRg8B`CH>l)wUs=Ya)&b=^m3|Q6Vla;WTia0(K-B~w!gE1QrACH-%FYL zJoW;VX3OLomLkW+L>nYt-mnlAjS?9e>K9`_etk$(a!>*xT;iG<8KDf;4u7WfzZhDA_V<|KKVr3gHrgagLiRj zd7tff_uvWgVe&*E2FDV${|TfXBvOwL4qGG-iBhkNn>F1qyZBdsKtKL`i1op{@>htq zXa4@68~Am3_%UYA9;d9`ob5<<&OW}@9=7&ABp-WUaA@UP+&>%w$25i~Tp>n@%Z>}o zX2(qr^-n8}t!!*ejO_@?Ni4n9aXTdDc4F)!G=7d^fNY1s1Vw>DN0<}_9#39`HV#%4 z1eldhHUKu@3JNGpRD=Ltq0ItT4A^XRvI?+k0KNu6sB{(vxgQ1Fz`q9g(^;d)QD8p> z*c503Joo?#1>h+FPX~Asu$dTGkqn9m8-r{L@J!&(1pX9&cLMuKz$QT(;GsVW;7I^a z0eJX%V*oz}+OJ_@k{NIt_>Teq8rFDn3D{2qHVxVUPlGnV(*V8(;6;EP4>0kteFB3l z0@{xU{_(({1ll(R`vG54_@E8&pw?6P0G*C{V~`+@STGz@E-&1_k;aj!1jVRzv#Ogz$QZ*;9+}!xhZ6T_X2n-uonS-5wt(|JN}Ene-Zf4 z{f>VCumhkC@BzR-0N?`ve(rbt=>Shh{&)Vfv;N=t&kpbi!2ijAcF;bIe+|IbfcB&Q zE&ro_$Dab)r-1gO03OEcPyR;%JPFuLfd5bVPyHQ#62OxHo(k~L|4;r?0Umzd7{HH# z_8Wf3e+>AK0sn^I@uvZs25o?+0slYw-vIC;z>Wv_|CIl-zvIsb@O%I-3-Elv|4;tQ z0z8aIJHWSt_A`FRza99u1OJTQ@izdr0ki?$0QmpO{|tbK@y`MHoPWeW2l(dzf2ZH^ zR{^#Pv;kfP`2Wd&CxD0Xp9A;NwU@azE34#p2V7(XJQeb}D{(0&7GpYd<`&-fjGD!@|#o&oT%zf^#yV!#G? z7|#rV&p`fn{+s@ezbwGZ0=y}}%L0E{fR_b$Q-Fu@p91(P(0>2#_)h`RKWM+?cl`T- ze?Raq`5k{#V4Ff4;7x)5pZqTYc=&xv0KViO@h<`XCBQ!bv>yQWlYvc!Ho%ji4f;<8 z{SN?mDzFy;ei5|4_&ffKz<&|=FaC~y0I&m~4e;>u{^b868)-a*MMoQ{*{e;d(a~n9 z(bWe3Spz4Cz^nFNZ9d9AZG=zf34-Wq(~-T}>;4)7unFQNlZKKEBTE655&nRabwC?Y5pa?U2xJ2U zoX`Ox*%SdMp@2}PA>c$G5X(*oIN<{XvljwR2*SV4fzXW+5f&AeK)_|2>)~f6sj&Gg zSo3@=Gvv4~TIbGoX~D&7OPcNU-9)<-wWuMUdnLnxYo>d~q6Rvz$?FwyRG!TZVpA-6 zn;=;oZ^u_G`I(gCLiH}4AJMJ~Ki54d_I~1}yJ2DX!t;o(uwx9j)ioKecBhwYRz5V^ zN9$Xl0t0TWwzfNYm%nhc$2O2Wwx8g0)|=3#^_=u}ywfp(@7UMPa&RSryVJFhGi^De zaEluwZ+CBF`4DBPBI~tVznY)L=-xK&-eI$y9S^fq24uD&BZhRtz6K%d_Ugigf^|}L z`Nys&mbLMwRhFcbV6yB{1gpFOu6pTdV($5~p31BAoJ=1|T0hyT=ui}|J$#DQdkC!{ zbu#4mdS)*~);7Af-@Qjypy96ulbZ5WjW|x3k z*iJ4Oy1Lp}yGit`*hd^jY(CEvexOwaz=#YFN0<7pb`WN~OG8J8kqpUt<4G_qvXI-xqqjT&A7( z{21_1*Nt*~)Ludx^igEdc_WE$w$kH#(0G>nvk>kArR^4##gE*|YDi%vGe!B;$y~3B z@Z`>1->v(4-aYp3yd@|z#1bYn?88sAeI35t?&>ZVckT>xm(#>Ho{3w(IIe8WMmTd* z*v{!(;hpQe%YNSJGrHzyEvvJoiOshrM|--rhMVYHR#%Tx;@v;TTYju(3Otcb+!HEBcDh0KRK3nIGR-4f5}>?bxZ8&G6eP1pj_1_c-H`cg`{CwY z7eCG`?pP)($4xB_p7#-sY$sQnAcW8Z)rkV9OI~Hm=bj;p7jfN)>%7ce)$^u!cKGbN z(IH}YXIJFzSKXf$^Itl7gbl835vmF~E>rq-+&{TwN=GMLv1wF zo*F62vpjRN+q>X@E;8Nx*z+W9efH>qhW+KW9nn*>%S{6duetOKvknDi7se@urL;*f z&KvUA9^jK2FzWJJ2)L|0YkjmYTS;KDP_wU)A(0dwMlfTDhl*q(H-?rKbCR1hGA%9r zCnen6evN8rcc<`}x7?8qPkb$y8bi{}OSksVthzrw_33T<{FHRq$W!~gXM+#2EiK=t z>gvcgyLvjWc%902RoyykE=N+}U?aMdCHUtxbVu{pEbG0Ey=GMGT^GL1%as?^s^0NS zkhq}EWQ+e^kt$pk8_p9rlDUCAo44av;Ji;2b;{+O_%rPtawDb${lGb$Ae-s)iu$$n z62?PlwBS`rIZtfZl+^v&0dh6>GbUMYp?uw?^d!#Kq}bIQNV5f1wQui5n`Ms|M&tg* zmgQxFZp^#ATCq{rc#;wf7=0tFGMk@wE{}h>(zN`=qR-}}zdOy(^e|v9*;{u`q-{j zpcuxV>Xye5`B0kL_)gHMeUom`cPD@QS6>6Ql#8j-8ouHjl3V2XSw2@79n6oV9`PEn z4^*8EqWzqod|O?+^7Cv$d(Td0Q}eP$bXYlCLUMp{MebJn^o)ayuQlVu@c3uBdRy$X5}Jg0$pEZQN6l6#Vr?=$$mDmlsdAqt$Dup%*s?-g=;2##XRr&E{@c^ zU~>4w9BB!KPl9Y))O6+6`1q@`6^wgPzqGp=YJ};Y_Rq7lJ>0k4#5+0O*<9GX6dT?* zc7Q+WF;ObEsKJYQ>w8i7M}0yVPEyt2W2Kag|QLl)2%j>g>kG)TsX?`*R*KG!!7 zpOn~e#a~|E@YKmq!oGWN^!Nn~UkK7KIv6a(&V6p3P21UfzVyH=Yjy{`V6vQEc~O5R zN2$W?yiSn&$THb;I)2&1Ewa${_y>O%?1-w<7V^9^d+=i$EkSo%hlldkhEJwx-F^4% zUsu}MmEr3hVx7kvNlkrJ;oE}y53e;k80eR9;D_yqeiMhp;mgJ5dTB2ihZxCqx{v2r z_kBG~+51E~R7XdxMcc=emm)X0f45}J#XSa2pNt)`%|~}t_?d9@79WeLSu`qtue6QyTcjZS`bnz|Y#oph>KDOn) z8c6ebZIQoY(skhHTQ$d$Hw5m}6XXLjv%I8Xql69Y0dsuKmnpJ^D+5Pi$HIbpQ9=bty}J*%ph`X=FY)toF0a&hWWaCc2-l zYI7{ym2dj8oEZD9<(K|fnq|O%iDp?p&xId@TVL-Qs`%nPaxpc3v~%5;mv0Vg4)=4p z_RTtE_7?Tec8BCC_ORTuY2Vz+>~Qg#?6MS-?&SM<;@QTlH|v7r2J81zM4mSvGpYT) zBk}2-(5@$mQ>$t+9v^B-eRc^%s??z*4!(Ae(U=XdK9pV7yzE}ylC+w9^LF6!Eosj}#%hB9^#kRq zH_mm;C#!6^5X)wDFy_QKcbxOZwo4yw(W8gH?Y^ObPh`-TzQM1;?CpX`Zbw!g}}Rz}KbWpQ}0=;H=;Rg<+`Di+;?kMw%}Q`KKnVlu}V+$Jla=M-Fx6=zsu*% z{-a~Z_-sv6O+*crRnn#eQu&s>7qfOZ)SMZ8l>Xdt5Bo_!8PC=hui!_Cf+DLFzZc)r zN@*84zj3NfZ1*LfJ6WXqoW^~p*>^owV;*ma6Df4u&e@Kf&vPalD05kTxb|w!EaLpN zH#bXDo3j3Gm=h7)XA~iqU54WdokuR2teI}BW$_$p?}zeyL@SZ@7okLW2dRW z4O6WQsiJsE)vj;1FSxXw65!2vku}a1Toq1x%G&A0JW(txF=5MDY|LGlG?xyEXxjvhovsmjfO9s9$JayuKb^Qo3aQG;$Ie6^Q#!?c6u-6=D&xl4xeR>vknx2c+L3*)$y zKIyS}E&G#5Zuk4!3h#|mDxXCDASiFzFMQzem&fy`)~hA0N{J4rl4nQ`Tq7N9TnJFg zrqX8>Qyq=Ebj()8dZ~9kONvW!<^4*w{wHX)hDX68BMx@Ku;9A7b;-p|-|^wT=lP&XaxUEL2_FV?qZY6g+DgL^Gyo_ge8ICZx7pi$j zVZ>8me`(j%xeykP#L1G}GyA#ku2ISrr|#<9qiE*w{pr`C>H7(ehHEo(noqZK`Chdy zb@;?e7=iik&!&>}k;hu$I)`Byn|qz8m&?MXY1_0dDRzl>d4{6Y0*6cPjrB~gxz;%l z#ZjauAC!Bx@@@<@ZP{}eJLAEvY z8PcoUt%cSVEEFEguajykOT1oEnZ_%Nm84h^qS))X2J&)=)6&YGXV05D>8*NVE%~s> zL2>7)VeNQy$eWeXNvfFb;gj>ujkv&CRJb;^dLnJAqXUP_J%4l3@C={h_Ay<5-zP@c8vwnD?!yA_CUce%=|1EXo$JNpy+ z?se3;cl9oO-{U;(qV6&9WPsho=pRdjGT7H`saNa1!nm>g_R1pLy9Xcw%3%o zJ(?*ABPCbo7vV*(xO{Uvli&61+j^_h|1ryujG)i3P}pl*BL7vp?cv<+F1t>l=c8j07 z&?P^{H+b6I@#TT$rP5K)xT@JD;o_=2w4At}-rl=Yw>z!`k^5`w^hZA*=_q&nbicyH zQLB*kB{fguU_ZC~;A2j4Jq`T8S8bNlv{BmZ(+tPaqpBWpv%1bzflb!=F%=GBVjDa= znMa&nX*6^BCzccU;p;J>(xU_!Y*+QS9cE zzj$4|99Xx%ScMWTF4?F2TC~Y_ws!s1CFIt&m&y4mppU!r<6)LC|AEt~F9W?v5&t+C*8;z8wJlmJo7OYbEYr3-Xv&4(C+GwNv zD=N|jckh?AYY_b<;*MZaDcXv!+o z=PJw&I+PNo75*%#pwyd9!4n`M_T;Q`9PLFjdr zVq7?4rXQXv#KUjOD<~x@P4*hxDW!eGe#JHYEI0vR(!{aha68!!O~}405}o>Lb9(bS zxr!CqBkA$S1zPPNQ~ARbBRTTi8mZC`+l>U@eGk&z^vd4fNm(oKtA;eSSdv5BmxW($ z%R!@x&qt`S`GNK$UbLWD)wh%LKYy;&R`;|goNaDm?hK38SWZr0E6=Sk4#-Hi-?}}F zad15&lar%xxsflsDavZrQeSt$jmLdJtHrmLCuZK9f6qH@DeQ@x*OPvKZTdBhzI}0u zldNe-;j;?y@NjSKXfY@A^5c8_rx@mL0|SDJ`fIo}f~+=*E8g6NNW3g%ApFcQRilg9 zHu0AWjXGW~JQJ#$T`-xgO~3keAgL#ttzx=ZA~xfu>WFIuI05j&HE^cOi<-4)DegJ0 zE2rczqA?!)jExEY{I@+cZ@(VPn|~voS$j_85N)MxAtGS0-0 z1}@j=*))ZOke{t(NG+Vm=SjcyKrm_ejWHtrLtoXr&&K9@YoJm8{&9U_gXN%OXZjQq zZJH&z6=S1Ut0$EoSzA7pz{(tGKM^$lVV`~NBR6V-ho2Esc^kjRloSVBCcCt;%PK8< z`K0u~iAxpKw0jBS4wcbz8$UNyjJvFUYH1 zy41NzaB=sf?)Kv={-=lST??NDnJ;`a;?Vp?C7&wc$j-gZpE?(<)x7zN^vX$?|7fj? zCLZ4Hf$3J6v2kP!vo_VfXNf(VN6;6F;8|^0!rQU^68E);Uaq6F;~Zj3cI^FEj5t#i zIf)kgc1pl-2uM{7l$3%~Gh`P{Jj8{^liT$%fP zK6(j)JInm`N0?Twe?wh4VOUrM{aiQkZUDShLt>Q5QPl>Y-H`GA2eOrU7X&E-VzH6`KO*LeQ8Km*1Yq`D>=5t z+w|=>pEYLLCx?&V7tjEh7$DCuSeNCkOg13ba8m&EiAi*zCf5i63VF`{VJ@ewr zhZrx@bnB8C`&j25@1-36suL>xM7u>zhr(;>vwQ!f+@6aulE$B$432Kb98LTxb{#A3 zTi8-?ELAk+MfmeoAK|SWLwoV-<8I77b%tV^rJD+R$K0)1L(|7!Y=U#KGN6PNw zTg2&O-@J=o<+go%?UObzxg+1=?au+%Hzkg06Q{WevoZ(BA16q>AMT_ao1raOPbt5e zn4XF1djC)(`kk{y<;v=kxgQ;!&wpNXOZjz_HFH^vPvLw2Y4N3$y4{Nw*?#lLH1%_B zSnyocHgWl@{;!sS083hbnWo9$j|)6QyIyY{@%~aVnxA^{ z<(GAx!0q{Q?wa&+>68|;e0Jg|U){~C8|w$< zf}V>|_Sc#mYkr!z=~-$+I2U_ii%QHvE4Dc9@e`NYE;>ikZ+*D9``ge3mi?ho^-_gl z$#zkpraaa3H93jRR^Hn=DgH(3yfdfnH!+Rb}+3&$) zD>m^TeB_zMpY^DIL;9x>k^7t9E8p`wdMd40OPjg4sqXf+J@a?Zt~|I?b?sJRolkoK ztLWPzN_tgsXv>AXmLaZu-rViE`+040F4`Y0?_2LwCP=j^G5X3{ns8IKVkEktQerHu z+Wf>|6+?Xn=6^|rqx}PphKu}#k3U|rxn`m{GN-n|)oS=wAG!2df$Z!#cKvA2$}zh> za01{!Z*|FMm;RSyqyC#sZTXHFh?=BMrKv10^Q8*x&RX;yJyX-*_&oiQ-%0j8Ev=q1 ziI0N46jzA|YTYaTeqN+KMXYUV;~k$%yL0MES?s6xH8Ry6?-Ge?IL^7k>HC=92XygSRS}ZJhNfE&K%2t8-F9xOgG6 z#7s|cbVo<++X&|%`q-H!WuB-0RM#eM-a9_IPS34bo^Ki`Ve094GQRxi`W64t!64|^ zpr$xa>Bd7v1d8mvoY{H_uBf{qLpfqw9s7diI|CA~c&uI6F7pi!OOAI)P}Yjtbj5V0 zK!;|`waBKr=1|7y{ZDOWKQE7d&{ZnAV0=T^@xw+h%zKVn-l(TMGPFcjvEBRjsH+z9 zW>?trr6(Fr!hzAeCnqd5n=Hl+vJV^oqI{iVY{wCP}BIm`7S<&{RZ#quwGYHE0^+B}9X8Ss~!SlKt4QkVGz2f3RWoJ^l;|-T` zLnn?|Z8KHfmVSvNZ0%-`N$$ue?1kIzyH`@i?-71PJ`vu(N%`@Y!w1yXpPG+OS(U_) zuL>Yt8;}fGXgpX$%~tAML2F#J9n!ufosiI%+Zt$@nsn`r)ThsfTtx|A`hsY0Z93wt zMvC6oa>N}uT{x}jgy;^mgA)KzqpI&zY>!=9-@9a;?2^L522KD}qfh!D6?kX}vU3%7H);$eUB13WN$ID7jB)Apl&O&)F_zx^>f=KGnHoy1tD^Tm z#I+{(mWPFqUXLZ5I&SfG_5NwIl}|@^G2B8~*LCl*)~UbP`XER%v#mE+o9yva#`5f` z3;A^~KK7bP_Ii%r&gGmJSTk`jBQRujlXKrgf1bS3+S?XrQ2o}MnLp{$g4f?@Fg1vA z5{4d;4npa>2EA()JVz9+c9rhuUgCxIQxEiFnhim_bb3hr@A&F)!T;U8zX>lE~ObQJ!&uG8_) z#j^2fEgcc1v56rul?m{2*%Ecla+M-=HNGPCGPP2bBH<#n;?3LC<8w9h)DX@SEUTq9 z?=iCV3A?gdT3yH3j)n5%IL*e+!O6wV!|NotzV*3;rHCc?9}&TmDg~}L72M$FW(O`W zU9b1ijR#z#+ufK88e!cE?h09RL@gZ$D?)iHMp@AQ@?_!mSRpQ8Az~pWaQvlN@{oWf zL*f=sRF^oFucyzr*ZA_4j@48#OEdAPf#bKtMXAZ+R8z?mNn*pWc!Me9#*nyVg9Ly` zvI`jV8DA!{Q#&QtCCx>tmjwjbk0&!M7#3@yfD`*oivf%4;x8{@2x0alQQX#b|CPJ0 zAz{R@gL}@LIqn+beF0^TrJ?_;Cx3k|Kl|X&(4YkTpuf6t9fLPO%$rfp3dsgsJ>D;J z{9v+#B~dcj!c4@B7;}&d9EpE5qWbWz{L{Z12wB%Y76r;QA|^uM<_ckD)kcZTkX7w9 zB2F|qNnM47bA)*pr#xBh3+~e3Iu9=K_-h&C(J<}A?iYBm^8g!MtFQHu7AB`Sc7S*u z0oP^YV13P_(a?z%6;Ph;CbO{r4MU!lYhPZ|e((Gqc;R{oSPd)06{b=B)8NYD&@O?O z&3z_%TyduT7K8nL61Tv0#RK5Cnd$LPMpw6qUbBcf13YZY!c^>~MW?A@0(kGRi1^Tu zsR+0h8oXg>xC&Y2O4?hYZNMh3J{uWHux6PG<1QiNFsJ!GZEP8>iu4pi)^TavYWAeSc%za%2HzoHEu5pKzT4waJS{0m|o!`mJIB+TI zeY|*BNg>ul$vG>d0lc>{CU(YMA?D*D_(nzsJ3VSk{Q416e;9YD{~p|yX{{}a=2?en zD2^Q>Ms;Cd3+USwN&3X8F6?IkouAs3IOQKUBHd06rP^6t8X7pj73+cBNX;#FkKI~^9 zovBE2CYlan$wl;ZMUo4VF^D}VqCZq5xf1&av9coiV?~l1QDg{vQA96Lq`4EFhOl=< z^kPMl2az#^eJr9^DAGKMQ$yI#BKnvjEr2LHg2ffnClqOcM5hrfrI^iv0 z+%s^UeEym1ccl*cfc#WdwzEH_?Bi?a=?AU?-!U1H)%?*uE-p*&FvwODgZ)PZ!N;ql zix=mp7CkN~W-!v!wic^t$d+nWRIEqVAJa|>2pbdAI1h&zyyau8N<)|OR89qpdCEF| zyk=3zpo+k`MuPmZBqBEVTw3L`c7r!h5)(vQL?dE5DjVNy*m~&Pvt~*}OH0S?#>$>s zw?$h7!F{g=b8`P`Q{wK{yE&?5nx(M8BuXS`P+UVND@5QEtG1>aACI`$v5-|HNe%W< zthJcF0LD{$&2+t@Tg;67jACS@9B+0^vs0_A8yqakjn40ySTDr!v^r(~&!{1v=dQKh z1AATZSFe|a+Ci^Ri2c`Iza(`O=JtsE)m^?^)+2S|EHgRUWH%>Mf-e1ZKj|znU=({* zOnI^$|JPR$5qq$sL{05qUr0JV^Rd_+we5FH@7w`ju9p%W5Jp?0!G4~b`(X`x4zGB) zCpv$evI0tr`7!Z(REOF6wuK9CUfoDg!-4GUBL$jMBpZ3GhX7Zo_)Q?nGlzSHZ+YQ0^Eyt1bnX`m4$4a69ZhdHuVdn3Nf%Zzw`wpZu?MAeA0_5ZqSITfvy|?qG4; zzQbzE=y^(GS>PtW7ylY3>6uwAPOa0iSy_KdiD?{nw(Xv$YO0vUbJlT-8nUogE8(gS zI%7fECY;kssPI8QS=8(hHfSRZ`=Cn}HM@k{+Xz2=P;JW^17U-1f`lKs-?HY2uu2bM zhaYNaNih=6=^+^Vp(d7;W5O!E1YbYY%93I#Y|u-%=@$~pw)IbvbdUiT!z57HcynuB z;p1&(>O~TnYWW*g3-eUV{$v4d+n+4(bu*9@7ZVC!#oVsJo`f%#(TkL5kB9;9u~%jE zQYB_KvE)7Wxr|<^G-k$QnuI66p*-oj=`mbe-(S@^V&lO4pGpxk8I44l;+tM^htBkm zWof7@td^S& z=IbVK`JsC)YYc_sy9o+@sF7ujkuYBmLER5+vZNdp_Ua+n`JuL!6cgdO9zwVuYHwL% zCJflKD;DtQkjbEUoUxh6jV^IBvp=-Lw?^FJd1PdS4GZ-WcV{{Mi_+LlBK0CZSW5q- zM7u={c#FL%r3Wf8!MJ#fy(p*8D=|}vi*K>eGWu;LW(JY`4!c}NPg9~jAO^g{?v&B* zE72YjGu~m@W%Mj1S{8BY9adFF&rxD#5y|hd-dFS@vca6}pUl;i$WSj)OV`ZH`;(?) zJ2XV@{+*^9#aV*Ur&g3R!cL}ax^(LS<|2{&6B{X~FDlWhi0TTgQZ;#Q@jnO(!RQyu znsdVOql6Fs=!#`curS{Qfh#a1vXI8YNa9YeroUBYHW105vC9?o4a&?$V!&tYP6g%Z zHWkdRiM7M3WW)mPBfl-qMS zW03cG+WZn;D}`iwHEg=jjD4OY-Kl}W9jgDg@tRc>A^Y`(#$&k4#c zVXwD@34n;8v4|vdS5?#Jlxc0msd?;Y1)T;ym@fu7nEzx^*x)CD>kRtrL`|-6{0D;A zvCvgC7Y*_+th1VKugn}E27JZtRMMRRLMR3~p8sT7xcw)=_zc>2f>I=$Geht_gN~k{ zlz_v=p-ayl7+WDm{le-i=_i%PhKbZ~SZ^ieshSFw)xtV&MOhJU|467f6B2n8e2*L4 zAFJs02m`~tpdtdvF zp<(gk1BYXXKmk4u3FTiFJAFld=z@0$5SKd*40c=TI=k8L*Wa$HqymVSo%6s{lWgoG zy$8*18|yc)(nB@1wK>j-rsXCcdehR8SU6KxQiFgIDJy&X@%_Bg(wuy?`^B0iw?u?R zzzx#x{mKjSkH1=JTWy)TPvG3I2aI#iJ*0Mw)%7~2OSPq2< zr9vEpEGZF%qw~9;v6Q#-{r*1h`+k1E_n-Iv^my)`d7kUJ?(4qp>%O-8evC`p-zRpK z84(Nw@P_zig*r(Y_<*%? z3M^}+1NAh#=admKVA%G6- z+@4BYU8ju7rP~tA4ZEb>Y4eHbCE;PAFDa-E6}cP8i;kE`B*Qn57ziYdA3S#e?b-%f z)C!nGdRpcOuqtVrU`?gbKLfD)zJZlLxCPeS#r1o*55K`}h2R3F`w`!uEx_H<=pz8I z&Ub(nwg6iM`}(LM^x@%=Ae+o1^z&I=|m&;Cul zY>0xdaTgDA+E$^&L_{pPTVHGqn6z>2V`8Vcm8`6QIlHzE-qC9VeDCY7AA$RB0iU4Y zYXNY_Z@@Vr;I3R^`+h#KFYW60uou6j@I|+zVds5pnq7!L)N$a+PZKT~QX_zGLkpPzB$`}Iu`UkeZ zy2bXtpm%k~M84eCa$2@tvIDgI)|7jn2Wr5NSfAd)y2t&}AvE)~@34LjVJ%$O*`t@* zSy$1Y+O`AoAK#D`WB5*l$^L+IQ05lShtNj=&Oflev5Ozx+1ba%*Y{ttzPDrn%YKm* zsjRGjV13su*6(DnuFM-r{KonTkkqnG-OKsRmd83{2jhSECbt@klN}vHSVW{!egs~> z1>CQb!2tlz`v&|8ZCs`9O*v|9N9^Y(CTI2Aem}G>emAsSX_9zsrhRe>62w1pY2_A| zx>Vu^0GGObBgjOzIn(@@9ewqL_lIQNB;5{H$Dg|HmHp z*y`~?cQ$3fr##>I^fA=qW+=Q-U1C{k&yMca_{K>5CBnCg?^jgG*Zv5cv;};~{n9@H zw`Bjn0MC}(|1W`iZUO((olOnREcgxcmT?Gkd}?Fkf8bJ;ZM4(*Zpo|E{L{b<+5-F0 z{gN6mn3C9qLX<8j| zi9|Gwkfl_FSXgV~>xBZufjuTo=eMPVa<&APO1Z04fXOUXrdDmswva6nExBJ(2P6U>f-t2ifZhn%Ud5h= zb;pDqbB0m!wEOMdN$+QjNM&0F;FoJC$|)LZx1Ta}dNs)LU)qh7ZjOlj?Hg);m?k#r zr6%@o;U%`+d*~9mnoW#oX8lN*(&KAeQ?&;A#?zP>7yDhh*HM|H+k2J%cdEpfKy--MI!O3m2pHoYbLD_OrJ77udKA5OB)RRA+GE7(IIgIka7EVP4 zsEi1(K8``uj*|k!rxQLve=P$)>rw6uT*lbto| zVSjt!O!*J)-AQ2!!jBaGxrYINPk0QE*z}}so%TL_y2aHp45#9Z%cXCZJuZKeSbj?; zF{#|JoRJ)P^&6u+-rJu_?cu5_>;cm#7i?28F}sKNci%L(4-DAHDIK~E7irk*;k6ej z-2&6|25w9qSncVkQWYU7R+ThF+yuEyMaY_UDh^RUM!u_JFU=|*kGM8LcERLY1D@XY zXP`C^>O2k5*z}C%qq@#$HEYVj6M7(bhAlsEXWVG{f91}Ao%P1q@{0#u-O|TxcR$$+ zd6ajW_1chG4+q;IIqA>XZT$mwN>o1-K@b;4&?u1R7B!+`uL4ov>lnEPqCk2)VrGo| zKt<>m)>q$C;7vb)V4YxDXv_t05gknwLD}dEyyoVDt&IX;s)lC#fes6 zWemS+cLwik?|8LguK{E2L(rCURQQ`?bbQ+>`rEC}#=^$b7GR9ARbgs?TYwkDGV+y> zR~e2e0k|S3Xx`S#+YLvVW#shOv2QxaFBzh<`v7M;?z&ZkYNC?IRe&c${4E@KGW>q@ zWF);IkE#5(JQ?&R-zIfO=lZ1dYrjUO*Vkv)J9=f$yn2;A{1_pgedv%VlDU0 zM!UR%bqwKPc3fTcS&eJ#kxU8o4H2Q)!KfR+4(@V`ntj!M*D!(Z!#%vpzHR|zwl8eL z4yU^BQWyPgU)TpboZ7yFPwAigf_z(?#=g5x=|B0x{oABf%`?C~N zwr4M|K0B6>*t3HxyNzicL1-M^MD@NQFRA3Jvu=!|d6k_WL6wV$);HvZ|K>RQ;InPl zMwn$r>PJcKAk^eGq5i(tc#gmOr)@&b3nF(CYRS7HjGyf%B#lrF;ry3=LjE(M{(AIp z2*u7Q#0dNjjV!=bv^~!Znf6RzXwKu!8D{-n;~|gJ$HlbC`2+U4tm4UtE-KkaHaCYw z_bvPdl^iH5q{n(X88Jg8hsuuVvK~)HtWwG6Wrc3B@XWyDYRLyMLd7h{XW&J(lupEeZr&3efmJ zoMJZ+(t3#RwnT5nbxM`Kl%P;7O^hJOv8w~t?9))eZz_$?7q$kFO$@C&-}~`xC4@R}sk*WM7OB zk@fgh#J~hO2m>7dU(ygw6XZaQ={$2Sh(du_A>8t3#neLt%kd-hU_QJRmzjI*M&u0& zXqGXrpj|%?k+=V)UFHd1u&b230r2E>K%ShnWT~vs(iF55h#nekqo=Iv=i#pST`Y&_ zu@%d?LzBdl5z6%M;65cZPFbmD0jFkq6;NUNU(4;$HK2D7B<>NO6f>U(M6&mq8L6WjI+BI*bTO&@yuNgMLBZI~~= zzGQe=kvF0a=5jE~{bUSXNT>Wx1MsJ&Iujvfny~qrW3kX{BCg!6D6E41)Iop1ww55q z@u3R8#P6k!{JAA!hsG_P+D1*S5RRr^t^iJ}O?fz11vKu{$9HLy*9LM!S-)IE(3=E- zes$UAWI1^Q7ax*~yNTl&umc?!YSIzAL8LhxNCyzy`8tpr%NmrANFF1LW9{RBdGnnw zl|d3!etV}4u&I3CL6w}=YHpH)@9u|`?}GxD2*`h_d=vc|_6gi2Apgs;#0};9t~T;s z56s1{0WILAjl9tV^Y&}t7ckX9j`zUA{ThA}U^7I%>)DVvI~8@Bn>}ZT4(NZ1nhI0o9wjkgI)CAAg(4Vp-UqH~9|N2G zX^k{3yc%wL3@QI;y9_%X;y@M}1P90lQBnw@e0=u^ZD*Dp!;NlZ_f062F4f3**A@Nl z8SHOAoTP8z>ybOGjOEZvN3kO{th(ihv{~{bc7)1$p&U^(OP;}w)UrMJ4q|wgyow#EXMKDJu{=u_Qni1~3MDaJYXG!HgKf0MgW#NWsM1Ep z?o{;Newa=`1E=66XQXsL%q*bcih!vL(ykw78-TkiaN3>`B)CAyBw$bBQ&$?G%%|?V zk_mKfRD8O?L06>OD9k0GAw%GjEAnlB?4=RLYQ}-LjKhcYYb?(D`4u5)F0ljpXHr{CNm^f3HBdA5v`y zW)|4+T)@;HX*UG34s3X_eXBaD+aDPQ-HLl9a4-OQWe9dE5H}!jHvoBW2<91xdri9) zNGY5*>0lu8ISuNNzNp(v&EWEZ~XFdHpG)_OO3Vmfw z|D84>fke@LikkUAUW4BI_;bv- zFy7@!plhtbpAckAgofp_Ae^G0S0d8+4Qwz7rz|+12(=1IZv^1AavdaiVENurxoY;} zdqAs_7sy3wLXu!%HiEK%Yc@X!Kl+A&5ZquUIR7hBdIDw=+;CLTD;4QJ5fOQ;yR9!3 z);%u{F(U@>CpeSkK^-d0*BrQ8m4H-lZhiv(+XRkR;FttQJ2;>MlAw+p+yx{zpaDpN z+6Ay@XKQ5Jak-UtSq{1!y>NhlJKjOPO2do_8m z%N!jJdJLSQI@l#{yPgi}P|1ye;EM-Y>hb8t^5`=0Zc7+lJ#IQwLImiD=7MNQJV5gg z8#qH^L+-me)atG4|4y82-b0oK_d|t`2LUyn*2>XFJT%~;*MK}y98~B0R&Uq~ZU>p8 z&~-X~=vh$c?>L5{S)8O0-k}AEjMAv6(3Aoxkm3u?%I#iJMc7;>s8i{m`ef#3t*pjX zIM8k{l>=e*g6+w;72G-0eRqEXoo5Z+Lf~LD#5R^e4P1hkqLJ>SFk(={K0&q^WCD=! zK@Gfumtv5&MQclsyFWAdP&xrt;R>VjElm?j3C`WE ztOK3x_iUVL1NjluBWy`fkGu)OVFbOBkT>4IW`l65g7Zm8=4(7E8=dePN)=D+?-6D1 zOl)ZgtBM5~-Hf=l^KfNC=*EeV2IK{YjE+thk3X!(^$Edy;HI`MdaX zDB;)tlIXC|@zzd=9CQ$U#G5oXje$~*%Wi{AQJAka@ z^z8c>T41#TTX~1J5(Fe*Z~T%jckdwe7cBMep<3#VihQW-2UGCGA%gPa5?9LN(uCE^ zW%^?}R}Wc%bmYd4EuKDIUk}Du{m9Hz{U1$}?b~TOH(zgJZuA}IX4GxWC4R)*UhYbW|qy|*L zU{Bc`?5so^+x{Ixoh=Qdy=)2N#|>fOJ%v@N5CexNhIfLb`skcg8Y{C^?2-oz;X)O5 z6m^bOW~}$|g;=!#YD&A8@2}9g)o0_}<>R{x5~BZv|NDQ5Kkb(t_ygg&iNE8>21AG- z7MBQDUs!?9m1uufTvpWiEVeJeDs6+r9FN&N+3romTu7w}^Nx*?1BF_*ggH;ghENXz zXGka6`_O!IW^K$fI4iXlSqi3B-^|sxw&1LS6e*UooTUnD`oR8YDF{v3_$8KCizQ_( zKZV7hAj^PHN)jqy_O;xaeGi^I>F4I*a?;EHo4bd&HTP2gp`#zX=7*8Nm~WKY96LPx zwfCwiw88UVVZqHI`pb`uJ|e5E1I_!U^M+e%WNvO*9REeRcXdaiU%qbe3ux&#eu?pQ+O=2BVzUd{+(Lb&I@YjK1qQXWKG6GzKA`=wqYrAg z`@m(Z59Cgs^zbCP1fM+R;-?n~sbL#Bkk3{>y!nTIn1BY{)2#vLLz^=p`La3UhX0cz zE@N}V8G^-7vX0g*b&T+J!OxDM3TamFwKUh*N6XQj$l49xiNY; zITx4umM5*!K0^}qyFugpHfBQus_FW1x_Q+FO*fJof}JP3nwBq2fuuE%)Ph@}6`ol^ z8N*gepGCQqjzKo`(t!|cq?{K`k?Jm2a&d{_nm8U=AwDshX zgWYt%<^-k)BLjX{lu#s|tx*UVP{2Ifyc`4UFkn{!J88#d2F+c~TbJ3k?v4cZ5@gIp zFw@L7Lm;amONLfZ7bAc~gRC&9Y~5p@3x_O0K_19N`xP8D;CQ}Se+|IhX9gUv!Le<)23-MG8V>l3=+NLS2+mMJU1S06x&1ztkkZCLg4yZ1)WezusAohbd00Wf_3|871YVT$pq5-Y&3EtRj`v`a% zD!AsT1aN}h3B4OCr-MvEKSDdEe}^eEXfqkK@zQoX@%rFie{hhXhd?=`rVFfAsH4ch zF$NXj%AyAy0(EircE{vOfFB@B8tNRV@CkyC&e9zO2tjTzr~st0!3iSBJLvzQoDO1R z2R{H(HUPwE1-1Jq&3U4Qf?NUfH4t3LN1+T3h!6+Cp|)`=c*o04GC~c z8-{mm-pXnwnE0hc*7!n8L0DibwLdLDE2?1QnQwoguU@%%f#FX3a@1jZ&u$ou=GveH zM154tRogT50t6g3T^qm;xDg7KOi2m-7HB9Bh*}npz#whSE{I}W+&%Mpa-_Yr_epR2V_fg%L|ESn z?9#5`@daG_`1tVnmQM_te3=!-u1i_gr%Nw&pQGo(T zn-T*-%4b{pEdWbX(T0lgggP|R5o>w*kX2;ECcjf=9bp?uav#5 ze*YSv)fl?vEJ^1D-lBUIcka=woa%pJ*?@FX+6q_upp6M1j9$82Pi39m-GBdWF+aTN zr4V!7ShhU7VS&p0i*TGBw!Aj`;NV-+R@zo0YfGEd9_8RqEfg zil(Hc1^PlGhYSw7xWEl%J{dZL5d%f34%VTw-@;CY;8F#o^sjRuXa7QUXCY);v=vfwHiE804;t?YnwBB$KpqEh zDWComMOh+ysOQ@5*{gOsPF5^tZcf_cUFn8Td@~3-jQScxTVef zLxg=I%~q2E+P^JZiXHe2SZp&i{DEQU0WId&8yMxLE@Zc-1`NSpGV|jv2bUJCg($2g zv-qllSlvdHuPZR>Js5m9Bx=)nsaR!5AHM^QKg`y$+HmDBZ&37mP{8&Y=zR@FLVb7B z>&LI!$8j^S+vmYxnQDLhY5_OiJ~cD`y8SUUI`*pVDKReJ{f8{b?~+YG{c#&|A%Rbh zIZG!bmL*7oFFojN3Ok7Uv;uv8?O6k(u044d?Ipo5IeT{Zo?i^5J7vWtK|Mjno%B9lc2D^`sm{)K-*S`x zM6CvDK`!%M9~nM|G}H+myn}o`3tJDtJr}%t5BV49mO>B^7(9GyXZvbVnV6<7&c4}I{gz856@Z~MVShJ`LD zACjgQY2fr^yMuf;3tJ4q)d_arK^~fe>4Y|P1BP-P*$XT^#hBmriKV&j69Iaw%geN7 z#a3=5<NNCiGNoLpl(PoDECmL>stBq9_$-=421244Efoc=RYL?TAo2i7!Nq4V@B_4W z12MzSHq(}e2)>W@n8+u9BqvJ~r zQlt=aEFc3&1d$gCK1t^!#gZk3aDz6p0MxE%eEE{+1o&(z*n6Y@svWPb^(#Bx3)aW^ zYF%rpz6$NWGK7bZq+w_i4*|b6*8HD^qHuiRopuMqR z4Kx}^WC0KjA~VF`5pM*c1^c;dm+FvqA7Fi<4W9(r>X2$5V4a~23m~>l6EqlhKSrBW#!h|8hCJK`(FVg|md*ne>Nz7ToNn3;kLAx?s6o z2AXKYgWkRg+S_Dz6hrG~u&;r9+Fk{C!*>uWL3$1(y#gYEs2bS8giH_Z3J{dMwGm1@ zul0cK#x^KVx3@t78&I5;6EO(g+-k)L+6_R)&Bsp$gg@MzWDY_rO}}N<7M9(fGm^ct z(Gxn`J#jC!3hW=T*$3iVeUMg7sRp{%Mh~1A2RkObNEXw1srg9hCHxHsNY6$9<^6xQ zfbZ9Dl)X^d`p>uX5yqVbe7b$JY+S#PODp6b3*E*I!n6YWhXVZ$c{Be<3-gH!blbT9 zi>3%^;&zm8)Y-hei=I}%_v!y**|>p`iB>iUvg0rGJNbW<0N~}_BjVsMga))95A;!4 z+L@0Z*hjQbC6vqpIT)a`$*Iuvxgqg+5blc=>IE5|NFB4rNIAE;6FTIA+99m zN-p>u-kB3#SnH#x)9c6K79PLmCG?+)#l2wn*{wNU92tEvwWjK7274y+3s2+x9J}bW zmRJuG{?r_AuT$L8$})yzb0K_TXulY#FGMtfm?@kma7^ihMoy}#gqotdzlJEj&34Gy z>=gZJQLpeQ^m`>VMm9?|ZMbQ-#JERo>6kt(dI|SQ&h~ ztp-ZoImV>ls?ohAJR-d_i#>PrZf9lTJ&zvYLCkcIeJcw|I8vh8puM{6g~TA&smw@v zX-TDaD{N7fF|W3sU86m_OAo0(G>=@E)N^s2V)hWzWcG(ki{+#BC-h(XnY39>a7W@v zVA*()!^bqYiqz*5I#lOW7uY%P^B?1;uNL3Rx!qGP(?$QcwJ608>&Foq<6}*kLvb9D z@$Qe|MGoXex4B@Z504rZMikblPj{Y_Rk1dts#>ZqsYPpasz>P8nTQ@&ccwqvPm1;= zycNjwzSe(DuB?+%*2wf!adKty0Q9b zPh6q*$joTWAF66>lS2sZ|&S^-bu3d%Zp|zs;gEUli@re z+%9p=ce(s(?4dHgFmFUIQi`H>Pi~pD4-oCZJ~9IDB;EjY-ydesQ^6yIa}P7KC-VSTdijU{D$n+IpT6 zx()_826KUKR>k%ir{qWuBoEKF;ECYG$nakiqgP@)F2<%3t{de|7p&YiDkE0JJ|xz2 z)iw4yJWm{ydA&Xx{XTlW@N@rPjeq;YGnqnIyTs(B%H=sUwatvJw5{T-(yWb7<~utw zj;WNHj{3+27Iw+?e|%l&Q}(yaAqHD*dvgaz2L?5aT8ojlRi5?qNdXs8cXm&_k6h47 zu-tj-#p!I~)!3`y*)j#}1>wbwL0or;cb6*G`-CSFJz!I?PfO?2#T>(t2e3c0xYf~W%_nRJK=@EMB&%DpB5yWWGG1zdm>MWnW9X~tjzKp ziW?=ajr8RxhV~l8lH7J_^77#vRk$z$ssuF&lTlMD$tWz9Oh{eIW~ykbNUR)fM0NL1 zQ)h(VxqVt$%vj2~>d`i5%;lXIs23j*?~)Kv+5M^$xC~q>{v%;jH&HLgO5KjjUheF4 zXj{zaZ=LaNiQYE~Z!NV|v{Rp$jns`!EXlntgv*M#O2;Yat0v)J7|mE)IT)WF3uYyR z8+RJd1!shL)ZlB`yH=i}mWCMN;xkg3)>w=T?y|{8vuRtxsmmTMfn^~%VWStgQtPf+ zQ}G=Vi#_{e;4z4%Jy>2r$$aHuT|wJx4#r{TSUs$wny`_m*@|i1X}NRJ=fWd%@-ZcD zJ@jM2lF5?8GMd^U7*Wq;>__!F4Huj>PLxnV2-ly`UomhqPBbByVoXJ?2*lVEOD<*} z{vPV2)WDp;p}^5#RES&1P>4gAUW8mUG0q`ACu!~qQ#vZ6C#xzaI+vI)b2Gf6_+DXE zU5$Tj+jD_|iqZ9{h()eX4xfUTT9z&8Sn2BFt#EUC4Tcg%eU!X#j4(+$PJTf_QtJhw zRqyM_M}uT5C2MYbS69cg@BK)6W%@%V!lsr^L-7&67t5VfpA3;D%;`#)E!o1RhX|4W z`k@@1q7NJCwVyAYcZxkQz95-G$QG!!&}IurWR-qDjmNDNE?ntk6`{hGmOd1Ut;R zHj)a%6=S25mU27Gglm=>1$5x;mLnM>RTG%B#!udR7(~R>NH)oOd3N}m;`M0xUTr2~ z@$ngZiJ~5OyE(@1<4Mc0=|CTK2|XF}l}mZ)X4!q$*=MZhVn5Xx`s7uSCf~UjN@x%1 zhI{tMQPSFYax1)87F??q6?6gRISAeqDwT-;ie6yy^L}` zHugQ1Bkb2HH%wz;_G}58h?-NeHW4Pt#I|HhloxhHJf%*R(I+YC6Kq`dj}T3Y&DK4I zlO}FeEW_;1*kVlb%!s5Gui!xHVftTJ;@j@Q-pagXT2frm`@0Hxj!~0?Pq+}^eHHn=WUles%_03IOoYzT&`~DNuFCGgk z4&klSI!3}xhb0fs`KG2<3@6TdGk!hAr&D~c;%Z%?XnE&->)Ok8D}!dAq67Qzg4%rc znL7TuuvkK-OO{(re~8}aw)N4hI_}|pV^T%>E+(BW>LK`ZmJyc?lC6g|!;knIL>LMf zRhZ;i@LIMUB_7XnS#kY%x{t)`rS3)Wa`R#jkqC(hZ46(JWsmcSmrEK-6iAm#uS)OF zSjmaa55LuS>mxkmP3py zK)6ffocMycxkQ&lj9iF9vUaB4s*$6qkB#FANflw0U=<>UsNJZCIoV?`=M?Kc8pIW~ zk`kR`ox@($-`?4mI6cbIE;FVbY1n$a=j4i0b-dyY>+-5cW-CLmcBae&=bWqrS~cE# zjjBZ-?$Z!B8gbg+v(OWD9ur-c(3mEZK`rno8m(%%-}!vvMfmIBiHx_MpAwPv%q83< zVl(39SdvCNEbWb?6g?!f5b<}TFf-nqplRr6s9_V*!+uuKuh73SHTGJb63MnUQ8dTp z2G^bw_Hf%(5sv!l%cGvwDisa>eRb*VI{mt_21cjo&*hNu7uK(UOx^UJjJ5*nT(JDL zrmZdfxyRtjf;FtkX-VX(Xr!dEq^wi`PG4J}=t>kz!%Xq+dT&!5Et5v5m<_xjng}m0VTCdq&s2>o6@#EizZvr>ow(eU@0s`#MceVw_~m zUxF#)EIvKEwa@GWgJfGsEm8_*Kw?dZ= z^%s~Im~rcg@VCT;h)?WG0zAFq?~ljeBg3v~_36o(#F~iWimj+l>Ml!b&+Vo_LV0R~N)}E`lr*-E(0*tFbcp0S57v-ke2t|Cl@+SBsOhA%&7W zlT;f`a-1vPDQe3*Oa=x#$Z0S#Vz=ZXIm8CX8O6s^>VA*yCW?=lGW@T+v&-nf~1|XJJECDs8GRq=@rNaUauLuIE*j z@eT{W7snF13^Y%jxRudR{3M6v1be+ag97Dg(-?pQ3|!j zUDj#$yd5zh61;Tyj4|n@8}5t)Q*KYv+)b2v#Y2bda~hd@dza0OzTRl8D<%#(Rk&At zDt;_snyAwoP>sc?d*l1?D7|3${brZ#-AMjHmLXLkL!seea*=&;(+T*Cb@{LgficXa z%v8i@0VZbgOeqeGF>Xw=`iP?rHY}~u;c{$BUuw?-_5qJ~g?Md~nc6msiF22e71gT` zbLfo`${Y%vExm~$bNAI(y`O)Sk5eT%Og8zet(UjdH$I=U#S-wQefC6$3fBm4y>rAg z@0{qGx&H7y)e7dgWi2J6w2|qNV*QMeaJwECJ+dCojZmSjr~}i*A2oAua3H!^lKOpR z0zO7s##LQv$wB3P%nvUh4m#Ygqk2@=H3~m63U_!pG$A@?Hm5gdz1XtUsGG=M#Fe}c zE6yR!C#RvpiqpWknhsc3+c%wdJf@^&X&`6HWRLO6i3v^)zSlXNI@^QbU^B*Z>qq(u z_QH^8buU_t0vh7 zRLEgJdf~$g4>KDQ6vW_@ykA38uXbWm2~4i*UeuHCRV7>%&nrsC{N6YjJCWnr!e0KQ zrL`xx@BCb%TQcgA!vYHPF;oWQeKOXjFcS5<;-@7<*RHP&?HVV_D-@VfP_S20suyAGp5{p0nLh^ciss6n|lIRw~1K~0IEgqt|2cZMs!v+#1u zQpb>dyHkWhiM1>4t3dMGoIeZM>eW*9+>8|C)vrrbF7=zew_NCF)vtdbE#HE zzBAS?4wumjHoa<>btQ}xO*~9^gDNf&($;fU?qVv0+v?h@o|^U1uT(G=?JJV!_`s`E z)S_o!@3fpym{Ht!c@X~w#Z`+gF(epen4(+-LOzDKMT*8w#FoY3)6DM3RkppL4iLs1 z-pYI)T2FFaH%ELL@oK-Wr{E(OmJOo)fs{aHp?Z^fl(|T$to_;?#tp%!{hC znc@Bnt$Q5d3t?R6WBYjLKH{$Bm7Vf9ga5SBUm^YCaB;ZHt)aV24`ZL@P2>q%NleO} z3st|!^-}LGktN@--N1*V8eQ$hU{Mh+m*!n%*^nb|tnl7mBenmTqKboR#K|(}3^zH? zJZ)5vcZfB)KXxcJCykmxt?GZA@eWUahQXEDMV^NGEHvK}I+5*rPxEqiFRx67;za*8wX+9;q%hgqJfp9nCwTnTlbMznKZ61H-*v0tE-dJ~YIGw7kXu4#ENe>?! zI_#+5>sxZlzm4mGB0;oZeYxUuEO91e>~i!irrjK_;T|4$Jf5@-wk;FsTshj0DTslo_^d2Z!sB+c) zPllefJjYL1ia1J2;+hHJT9Db{j?MsgnEqMiiv_{=Jv8_=Leb6xf3 z<-=03Zd%bQaynE`mo)nPkJaH%nEI=Ry{B>(>zMSV7VsK6FRUHyN&1A(WjF_8;x(E3 z_(z@HdB_sAB%2f7=RzWT=p9_D>plfLB&+tT$!H8|x9Cp?c$3?@K8_o)^y&`V4A@HA zod}5w&&=#8BkCsV3pX=~h=s~T;A0XWingrG_k6B{)p91`D2B{tbsom0qD@Q+^~&vb zz54WS5~1v2#O#lSW<|wS>JMYvK6X@npr>1f$qHb#stHCR9FsEec0(JfYMh*Ti$qBo zyMo{@?Wl-rZGo;>2Q1#JT!LX=J{SDP3Y9o!NuNCbrQiNbq*sZTxp$m5#e2+q)tkeI z;?v~A;V0>5<8%~!xyJpAkKcmdsvq2+!#~nL)1Tt+6L2PAe}H@dM?h`BLcp28)qvVS z{h;2E$l!sHnULBLYzQS(Gb|*mDQqBAKQuBlE-WNeK8zC9bRqxT>N%ftP3H#A#hvRt z7kO^~dCBv=WX*_tvU!ALgd}+^h;p7eLO;SWV&Qzq`8cvXnJ*F>$){2p85yY=*&9iT zbc||>g8$n4tK_fw(aF*JG3GIu(Ht?9n1vY0-_HET_nXge?Z1`$rhkF?0>=f)g^~;T z7kV!+$M(k7#*W1f#IDA|& z3HuY}6FCy~6U`HC5;GIy5|a}n6H5|j5+#%LlLnID7fa*~FP^y=d9mc;!o~fUY%b+r z^0|b)Y<}72a^~gs%OT18lWme6lNXZnlg(4|Q}k0ZQ&v-EQqEk-zmj|#C8^A5XVPlZ7Si~x%3nS6XxG)ut0h;PuC`y5PuEOuDn6SYnI4i}lHQxn zml2W?mywy#lmX9_&y>up_0rEglSxTh$kfmB$!dB$kX4(-kxj{l=g8+s=J@19=1_9@ zt|gCjRR48tOxgFM?{&@VXRh~NXU?6;gXcTuoyi-^^U0&+>F3Sl`s9b)C@Ju{v6>%O zP+JgLkbGmH0Dgl~upexwBYy*1#8KE(C|T%OxW7oVNVCwUkfUgS;X>h9VN;RhP5GN4 zxAJez-1ND5=4S6rj+^bp@DjdK#}c37u@cD=N=a==Q*mbTOiBA~`0bEF^V_Sp2TB)8 zn{F@M_9+`H<-4t4hP|y>)>|%FzFNM&e5`!`o&56ryR~;HcNgx=+!?sre#eIrNm)%Q zsGw9NS2R`FRPL_~sc@_`uav(Bzh{0AUX_0@A_5S`E{Tj_0o0>BrJnD1n}+s=nTF(M=0=WYo2JNS z_=%LJna1{J$v@g#R{yYR>1|nP9cXE4@oAB4&1{Wpt!-^@ZEBT#G}gNR(Q0eRquxjD zj|Lu%J(_vM@!0%vGjDs}o_Xu|&it*-RLNBB)Y#1G)WB5S zRQ?plG+2B#)imWelRV=yV>9D8n>kCF#lGABj^iE2+{`=2IiIR& z?~DGInbomXn=f%+C|~qf&a5=8Ft2K^I)Y8e1JqS79gJ? z(TprigUEQ~Sw>$*Rpvz|Ehbea3+6SZH%v}U1x&L{oXjH3Su77&nwdM8pE29A6tIM{ zNU_ATtTE3rXEB$ubnLF&t-9L@Rj~WnZj0UVyKPavC?{46Rs+@td$d^5tO~5pP`0cc zYiC&%_MrDv?s>MSV9(l~**$OeEbc+DX|Wlwon>=kD_|RBTV!Klw_x{Wk77?@&thlc z@a0(KKywaqAUL%+-*9s7HQ2kznX)%)Z{^+sZuH)Qy$`tKxd*vIx!3k7a2JSaalheq z;0BZ3QaPXn|0E z1O7GsQUP1E0eVru;3tHjf*|@Q1Hlx*%AZ68D}@S#6@;>c6oe~pi$6m1sc6pKHgdcc5f*8!FTPF&~%p$D8K zDi0JKNICHA0788BK(qK8aVc>T3ABW*M1e%9!~=;+iDn7g5-rI}$x_L)lFgEflCzR2 zQq5AF(r9T5yVufd(zY@WWYDq-vMjP9vQDxovV*c6vWQ<;eu@7jMb+XU`rzO%S*oRS zm2w4gZw`jai^v9R6oobrV_(~ZN@ynC}0<{ z2-OZOT2(~VKrKquK>dxXg{qU9t(t;5i@KEB1NG3u1?o-;rUeuV?;5_Vm zxI^7nLqS9J@SCHHI0a1uJVNuVW(wX{GmBu0@6beRJ}+Grgq zy$&6OPNcf0`T58V?$wja7|&&EgFaMsEyD4GWAGjkQcTO$SZa zOe~Ifn53Afnn;<(8!eiiH7PK)HL);FF=eqrn`N1bm^+!KSX7!dTd10IT6CBzSZJ9y zn{k>&9X)##VJUKy(-Lj@;OK*cuPxD5oL0@2S(Z+gi&pVgYgQJP&#Wwt4IYy^UU~5O zv6SPL$K(6|I^Jyk!1_&fhqdn`H5;^zflZW6hfRUapv{^Mi*2)QhwYjz!cN2vZFknL z*{;-X(N2VDL9``?5>trr#4O?i;v1sE3ELA{C)Q3lowPlfbu#qi;?fcOEc*icL3p@^=kI!^t149_A>~0;GY#R>mTYb5|H9w5KtNr z>L=yT8L;NZ5)vQe6zLS$9Jm;`7Mv0o9~>H(66_SP7@QUKAW$LfS!i=8OBf<7G;}Z| z>-^bJ&agM3%_0AXy|)jGar+v_XPUcvdYS63CaMXelGI>SM0Jjt8j0czjn_Koq(Uhg zm6t<~nHuLr6GOv^;!GMugWgbtnI@zL(QwdUC`55WUJf~aYfsMSd7jVp{a(-W{pWjK zzw7#T8TUPF_PzIBFMF-E*WUNq8CiK*jz9aaFWSJ^V7*3*J_~tz%ouwoltqWI3{SS=jcJ?Frj+wij$~-`=tP z({{=Z{~a+qv^z=*-V`{>t>wY;0(rIEacA((mYoGV8N2*amQq$;R#f(; z%>Qu0;f})|M^cVNABjBDe#HMs+mXm}kMiL1nDUfzZFzOMzbaT&S{|*6R5_|jRc)$n zmG4o;QO9FNM;XV;k9Hr`9_=`qcQoZ#^s$0tEyozg-yC~${L}G{q<94|T^ zQ;|{;S@EeNxRO$7UFlfqQCV7)LD2)M@L2Pq&>8I}>xJ{j~3yPiNkoX*rWoA5))K zPdWRhKId%p*_N}P&UT#bKHGja_*}}lGw0gQb(~|I&p6+4K0#fe_P{}Rx7Ob(zg2XrIR4@PN6H^Le>mP= ze>?iN|LvkX+S@I+-`p<06LzQiPR`x7c8}XBcVliR-1WU%-tOC8+8*4V)1KF!(4NuW zZO|G%8Bz=#hBiZtp}?@-(0#YX5Od%9e!~6r_e<~j-|xO3`5@0&YV?2L`+(9xF$Nop zj71O5JUC-aF;+idJPdvq{qU3V%)^+6-47EUF&>pZTK|ahDCd#((Wgfq9o3I~I}$p| zI~bigogR-<9y>mcd2IbS>~YcKg2#D}Gak1*?tV;p;`_w$iS|jsla42jPuuTgJuP@z z`n39K+f)B8$F7d9@~-GE-{&#UGoBSZ`}C~*ng8>m?&{|m&kMT4x-+`hKWB6o^+fix zKVRR|-QC{P_9Ej2<3;(4;FsMmVqSE=a(uD=MaN6+i%&f{FSIYaUwZuc=4Jbz1%F!q z>DwFK%Xnq|s-QRT)u-Ob-k4s;SN^a4-?YCff7SAe@%qfGf>&*?g5Pw%u73UIb<69v z*DY_N-$cIYc+>ud(O3Sm`%T7%{x@NLk$nk$1${YvMSZ1x)qNR#?R_16+P~WV^8J|b zG38^%$DEIOAIm?Me$;;a^pOGvI`UKSC+#Q4e*b<(e^`HTe?ot0|C|2q{0%^J=0X8mS#3Xf7uky9j;8j6n6L+Ph@VgVQnGhoG-9!oWsNaM{7IE$*o zdvH%&kJsQ)7Fkp&)nE~2>1LT_8EX|=6JXV6S!^Y>>ZD4oGp$+H0oF=uHyV#7pkXvR z4YN_vJZ;=;`mKs-Q8p4Al}(>bqfL(uW=pr#+eF!>+DdJ8wvDztTfJ?+EoK*Dr?)fM z_1Vz~I>91B2mz5wNQfFD%0AY<(Z1LobI>_7!h}Tc(C^^sNO$Bp3LIk{Gwr30^^T2> zeU7PgIX%{?pKfqUbfOJ*8{9ugK1eyZc(8tOv74K-VX$s+-=F~J&OuSmx7a-8WW0Hh@hZr)NvX^^Z&SQ>E|s z>-P)sm--h6xQ&k*FBl&ikQh)iK5M+^gn$W>@lg}pxUu7v6Z$4Z1ttdePcTf#3Y1R_ zn8=%mO>~=R2$W8YnwUCK7buvhoYX(5ev)AlYf{uC{X{IdKd3P{F(@-g8C)O43(gGI z1r-Om1q*^%9Qrr?A@q=}Z(_gg`3Cz|@@>t@*l#?)E&e9t+kkHk-(*dePsS!^aZ)*b zlWQi|PtN4Xzm;-oI4TaEOXEtpHC!Dxglph>hSEdjp}Nq%P(B#*2hzY^@ORW z$iwKodY+t@IYq~#Pf6u@PLWLMpCX;&7Va6Y3~vnAh4+N(rqUxirz)rNrpl*!MkGcE zB8ns2ruRj#rU|CSPNPltoNky_Gp%u2;`E*fEV6HUK%{46YNQ}CD^eL*AK4e_7R8Ga zL={IhM$u+O%?Oy0I3sI@e1?8T&y4;V*i8M*&Y3+kL%vgf*Z7?qzlJa2C-M#a9zJVU z%`Dn%!)*ENfZ4p+ozbb$iP7|EmVhqs6!7NI=12vsIRSI@0=GGyb5rNi=j!Li&MTf5 zGS73Kbe?iPHjh59eqP^P!`#IAA@lX~Y4d94OXkyyAa+6D0^S1J!o-DH z3o{o+Ev#8+Sg2nZ8`HlqF(xZU8PgMk#U{pP#>!)hV{2k{vHDp3B3gX^B3^uAd}h2P zUKLMINK9x<&?nFnqY_z(g2dFs%tU2kXF_9Q50SE1u()Tjd~xyO%*8c}c}r+ZJeRsH z)i3E;s$XhY>Y2n!5+sErWhJF1Ns=-@7AK`HQ6|+Sg`}jWNK=YaXsNnX`ij2g`sGAG~!3@k&i(k(-kUXvlu=**yHhGeobJu_o71)0T}(oAKhE>p0IwkmOzWL3aw>8id} ztkt~Lv8xTM-PUxjF|3JQ)3-*jmbF&3R=!rZws>vl+WxhMwTWv3ek%US@RRN*);jvS zzMm4;MXd{1m$|NfUFSObdbjnS>pQdhv)neMZphkDzd`>qYa@N5U}M(C5Q%alOQhSV z-zXKSL^N@#s83WQiWP;3Ys4zCPTaULD_fE+&6a0pilVan#5LKC*?rl(oUELh9Nr0e z4qeidLz7?Ns`C0jbd{w?OU!RX{rEQJc8oO1pwPtJoR@yeh*3NCJZ8h8aWc}Ne zvc&BwnN-%dqkac#N7N3_0^SalynlP_4#|#Ad5yeSZjkGDWbM-Jtlt^+TUMd|H_ttp zyLE;1-TFee-TK|C-G<$rd$6L;qRgV2J(9hNdsFu+i*{m%Nmai811o_&&i zynUX(>lI2xvBFIeqL3(RN@7b?CA1QK32nc8zvq6#eyo&U+P7a&8ns8cQwK&4dGs2Wu|6?T+&G~{UN(axiWqq?JgM+L`fHZqQ-9!or?I;K2U zbFA|i?KtZ={Wz_XSD9IvRY|W(tjem2t*Wo?tm>=ksp_u^sFqhJR;Si9)~IUgYXm1k zPDoG4Pe@KEPt=@fJfS<0c{287)XCJ7sna`8rq-%X>P~sW!5zHX;@ZqwX>C?*O|7oh zvrbSasngZ<)b-VQo(?$8J54_wb-MF3cE*k)<7yg9L1)m*P@)UmFlUdg=Dd8PlV;cCy-#;ek+ zsn;^ENw3MT8Ll;6qqSzWvRdiabgi-1>#wtJ&~IQj+-~$;SKUaxVYpF$qyGlIjn(Ga z7S$HpCTL5&DY@Bs6T6jlOM0vLmhx8Lt^Ql|KivKZ_#^9&*grD=Q2rtPqy7)W9|5-; zZ|iUO-=^PjyTiH@a));(>W<(}=AEoN@;jb)-R@@HO}(3WS9-VcuCl$@;AW5-Y7F&; zegk%ocTaf_yDzw}yBBaj>%R29{Jz@*`UB4g%KNkj`iJrd(g%_UDx=aEWh^!(8Uu_x zqueMkdKxny8jP%mo)2jcB@aU$$sYzh>U*evgmr{;)O0jedy| zC3qI_EbE2av;Hp6=c+Dw7wvifv%Y5m&w0;#p7%ZX?3O;4Jl8#!cSrSv^u)f%>ehGb zdpuu6y^z1~d`Ww0c+vPm|03XJ)=TA6yTiTh#cbV_9-bvmm-*vw0d)M<0d(V2$d!O}Q z`M&0T{d?Ve!~4$nJ?}$4@IKU^DE~nFEAg+szXTuUAC({7KJ|aZKG8k}dZ+yl5k7 zqe-okeMHyJ+cjO=I9WP5YNT|ejudq&nk*&j$h65ca|^6VJNepVs?^-#kMouhmKJyf zZb6NpS~P5Im~0+puDiPN+Lv1!|CnqRWhOP#nb9aw6e&26G%O0!HJq13u+-z#-*7HX zF0{CG{?hr~O}le{waCwvS;{O~B3cuzi4!r3q&e@c_U355sLyN8H%xB&GD;+#Ccd10 zIb(Ci<&~C}+r~;GLnAqnOCl2^*F~<4T+Q)}^9*B#xrcd$dBy#&Uu+?GgLt$lwo|Yv z_!I$eHt*j{&E)ZU^U2DvvM>@4|6lx$%5!+rr+9{AJX>A^Ps!8sZt((m>v%!DWxTn( z`Tthq+|W4A{iwT9`X~-3l#@#S=lA=O-fPeNTjT%np5oUZ{sZvucmHhxPD9SGP2|hs z%j9NpGr2|FLe`0OB9TY}4_!!P5^ISpLIl2gE+Hjkgq$cOiU|dwB+3XCQ2`!&Em8m9ykM#( z8i^)CN3;@pf@go5Fc3zfljtIPh+d+P_(1d%Bzw%>!k%VN*wgKu?cMB|_MZ0M_AGn0 zeSrN$`w)9sFNdt)DI_Hr7#YcaNvY(3L@7BaIpnEGRCJak?oTZ3+z+12!NdcJhY}BC z%FYAWfzE@Shm@t*L8THq#4D4SQE_f`*tBW?gfx!=iYy3q+)DyfrRsV>HFyb9S{THnh*bV}Qg4cBZ2t3(9j)mfnGU zH53=?gamkFf7GCXEd)8N;*(4rYL9>ylbYqsQXq_``J*Cp9W2r0985ZW3 z_lhgvycBWk*|Xw`vylA*Qf#=_SB)beqs>WnkZd5uhSd)f-cC3hBwY3Rf3045xk}j=^Y@MgQbTD zIy4iq44Co`ctCfj%}ir1PlKEX!t}HRICFDx2IPcjdX{gi)V(4zDJ?*Y=GT6#>kolMqMu8XDBTWaO zaA&4vG8ZuuAtOUVW?K4B&@pthsIBL6TS?E0t8ft6`>!V#qE1OFFYny6{jpeCCstoR zyBD353_aYZoFrotRRMKywtHY*2)vRf?_4tY;;wMq!E4RjKjxZ_27!ZJ{Z5|=tQ#*2 z_x;_`D~0{H}|0Cs21h!To*< zoI39oFr&2W{(a8f2E%L4ePgr1#1@3@Z*7br5zfGq!r0r+-|u#_7{D7)Mo0KU)`#_! zMb-t7ZAD?66_J*a$xO~*u3C}4cu_(UN+1DZqysTB@j-G_C$;Uo@{c@;vY$>odtI!% zsnMLhjM97Xd-r%wI9XNAo*=8MszOIHjF>Yh{MPFy7k5!nfB&Pe>;Ki)+cyliP&cK( zl!dz)7O}3ea45~SWGhGoVp$Meo&v`{K-Z?sUYxNiH4~Czq%l($r7wkk)q{8|2eK>C zIiyAfLb;Q~wg3{I=*K=%0o$+ww_U%KtV|=AqxW{ z9Efp7CeUm-6HbmzTa^y741_yADwQ_+%267KOyi4u6Xk4=(i)FSU%s5N0tD#P#Is`c zru?Ij)e~q3N2S)C3aYC#ala079h?TP4_&g;YwEng7jeH`UV(Fe3#USF(;;af8hqJJ zJ~<8M}8KTvX3BbLCyh9@)w3^t9qfuw^-CS7Qo z>gqrSB>DLu@nVU%b|;*Pvt6u%cNyVQabWXhIA9o%Yi7bJoRCfM$_tt&EwN|D%wx7& zfmw;RqoWYdM$d>E6E((81V?9&NllJtX26(3X-tw=Fc*zUTb0R7NJ~#&CCpr$2xOgX zu^$dAf&?*;G6s^CEQ-vCp-ju5BtyO~%5GCyFn~E0SQkY47EwyVtTX=6k&7ZzA`!cG zYxspl?La1%AMQBA*l>ff0SQfF_7uhz#tyYuum=uE8WIBuO~(2k$uJ$7Zpw^4EhQ(x z7s(^ajc%OukLp^24sU{PZSkIQEET0DwnNNTs%*9*gifJz-o^Eofzj7X#I=xH(?Dg!5cEdb(99q~T={e*WH@$`}JpRC41 zA#V>J{|;(@Z&L4YI`%=3`Q|R9Js^cGB*x*uKf`^)!Y3v;jE2E-1LI!%Z3ZJ35wGxj z$OBX890S93EbW&D!^|$ulV(E`r$Gm4cQ^wNah|k3?`pdL5+&JbYb`2@fs>~oO;2v@ z?gjUN{xB9w{8 zuE=ykJY`yui9s&wGctS`1MEqTPD@Bx3;AKes%0| zC(#HsA2DyqZ|~*?ezoSIyXGR(nD_Pka>#pww29#=P~hf&P{0CG{{l)eLja3Ey?6Vr zoHZP99zG&t1bd7R67ognVD)OiW!T~{*abB+%RLOLT|YfGvFV3@{RfruEMpKQE-xFE zoH7bkVn4=b6==u(jf;Olhd9Y=n`F<>f5;x8y7vC-Kd3dj%FJIIKKGHk7Im6o&_Rvi zdtzL_2kB3<$e=JEm5|fi-yKi|jJ&2Bwd`%~hS@W(jrwNRm$1W8Pe*k4XTO|#xs~DT zvW2`5Gq*GQx5OkRMlSo`{yam*@gdnSL2@QBN!}zjWNGA(B1nAFd{P`K363pU3%N5C zMkjbNHW3cf7$*3P&pXe(l~(bVk@*?_@jUl-8v7kX{uy6-o_jZ~;vJ*rGoE&yYe-|i zM+H`$*W62!y=U}%#y6bTJV+z@8MH6>h4Y$MX|jF>>kEG6yyi_B@tG0z1;2S-^EOTP znUVShzjt2qK8^UBA^n0sKCk&JP4@SHU$5#5{^GpmQ(EuejQTJ5pXko~O47&n zaYUS$u?V?g?iMq_;hGw-2`NI013`g6_Y%P+ptnc%b0imy0vDvL*SaF*WIr=)H9VAE zmI~ba)q7Lj%>fPSQ0h0X?lc>D5&N#wy#jxM=l!#doj1?{Jey|kMdR=||42d$)G>s+ zYUwJ|L1v4O(6$~^%}_-_4}J~FzkYV}&dbmXheLs9swPzWfui{#R4`%gEiaQF>T&Qn z8mYWCbY9Xn#St_P?dO@4Zno7?goN|u1Mqn6VRXpZ{c&@ih7Z~W4p#7<`-Y|l#IFeZGAP-xiK>+jiAcewpO`XlTe z9O+Jj20QHe@KO@qhF8-~Il-dF=ldm=`i1ozU_>`TL)iQ#>38Q$7+R&<6PM zLi7W*i%eVsHjoDzY%&|TuER`MjvH>e^0idc)icu)T}8W`QMO(Zv;G_nUAi2*t(jLE{v() zU&%1ztPV=C{$Yq&*JjM)lGQM?c-4jOwMUuR>jt0l`eVNP4%G_3wZBk3tL9lv9+Y%= z#Qqn$tBi)|k?x?YNz4y3?h9L6H^p$5kAA6~wc+pYKB^sO7DQ2_zP+(mG3eT#h9BQY zPZ{z*lka*9ukaVy;)g#04$Sxq4RE+J+4KJ;$mjW@cr%{ zpqaepuEAka62BB5`P-B5r3WeQgTirl$U%*BvY#)s|UoH$#LJK z+q(zEYm(!F8M(jVCl85#N>==Upf3-Ivy$U}bnW^L|NDSgksOzVpj!@#OOu(&=yumZ z@rz_dvg_JC_RSe2|uas99dRaTK4m+I<7CB8u4{|%eTN`7Lfi`1T0rQK z_*t@Ioonqryy_5F>&}@to|tJPji&r@qGXW^Gl)@m6+cof?oMR}Gj3nSZG6eAUa7wi zkqx%%xj@M7aQ&GZwV~^-xyb&+xhY^{RtwK*$XdC>r$P|EEtO+@lYI zCH>p=KbI4k4Lti#9sgY8;F*8!=YM@3JtzFP4=VHTu>aHV9H>LF$R_U3p-pF~FJE%C z3D7AL1|Os#lhz7R0P3G0)IV1M{p;@^*gxesjX@KifKEk!NDDIOofRL4d|US+-_{3z zhs3u}dfESa`2W%k%0!I*goVjJ9N3=Zzx4eWaDM*Z-~Xe)|D(YFpC|x1#1%h}tbJhl zdQJA{y^4(^;V1yezWy!X@WVUxt^@J?I5B8gp&M@BpIe#LdGf_~_M;;&e6V4%e&&&K zCVw+X0cEm&iSvwqJ$`hN{y z`=!MG{?rxix}kTf1kwkjhDVeFI6C3{M77c5)C+w10-uXZEq+<))37l~@_wM&4fn3I zpj`+0jGs$7R=+d;=bmMWe;V_U4V^n1vKr#;52UET*^*<`e8xA&D&7d&ptD z)`pBjxkgk@eSeHo;@5J-3HPC2%k@r~H{L*G#j#uB=$c$HDfi`UvNOq?%%G2pjDyF> zr+q9DE_+S5%rW6&iEyzJkOv=RnqxHY*x`HlISn{HKoPfz<}LWuyO!b>)nH==xXob~ z#F_hB4jxw^viG-i8CSqJ55^bB=aDyY`J2V&bZibgbtjoh$8Hj-C8%BQcr4gJL_v3$ zm?oEN|KV^0{^#amjW8?@M?jh;S7TqhzXN}@SxI(Htj4sQO(bfz8-`K2PE?2%pc=1> zA&d<*#jG*n94_BRV;hJqBHhRm$qLlKY33^j{8j!(A0 zhSIb)8n;{xD`z|Afm4X8Eo@l3Av^2*Jg4#-U~WowY869$StKB=rGwPjO*AnmoWcCL z7q7-Hb1W5Bo4$3{X_!0v$h1IgKNCuAag;jKM9n@8!Z5-LkZ5IbEwiAff>vsffsmU) z-2qXE?cH6@t3}0TLv;=T*4E)Vhlvy?Qd=u;ws@49rG?$!IJI}{OoDnuX0?uQ1~75} zpDb$Zu)E4JH`>`vhT@`E%&UN3>k3Czs0#%;NBSmcE#LaM(P|@Vps&k79$la9+t0n+ z;H%EnkaeXVAGp0%3iRWfF5b^1>*FLVCyg0G>zg3%=vFh9B->IVb*78H4ct&cUB`}( zBYiORijTQ(Agr}EC)if;z?CT=Ipofa4r=(YrqIz;^z`Jw@bTD2z9ow@o~)0z=6^?8 zC4*|6MG=7#f(59kw_Q!QIw7(?%#LK*1SV}n^wiUVQk>g9?JV+%hiqI7$50^Ib2rIe zxJmY4p^1dWid{1mwsf6_MAF){knuK~W{0Rib{?RCC3j(sJLo5vfd+!Lgxx~Wxt5kN zGMaz2W%J2N+^GU};t(>QNFWn)CN7*U9FGAH1i%#zjXU1L1b1>y(U4-WagiK(sYa-! zh&8OR;n?`)o53YB^@k0eaKyR^Yq)xv`lGO-mk{QoqNvX&^M8-mEBNL#Zzhxb`8mHh z+m2p!Kr!0fDd}LuA{fM0llil=&AjN76qm{7w%!Vk(-wj8OU`Vk@`Ap|Gi<%nIYX?R`AmmR z!q4E@p-DW9yHbwMv)BwqomFF0s1M<9c?19|0H_hb7XZfqP!9l-bz@Wm0#pD%0RRpF zLPrDOBmfMk4g?qjfLgZBvo@4nphkeP05}IFx=!UuU({>&H^&NOp4esUrqE3OKp8bqEKP`iG1@5+YKxxf$Zq}r zddP#CW_rkzI&KhYmN=-)oT3_n&01Xn9h91L1R}eInr~GAv~SGil64u?)T~yj2adC^ z=1tt zRbtTs{3u*iO?BT2tYZ(yz2JAkR*dv>>b=f}VakbqKp^F_p3pJ5Q|1?I0pW^OIo2CR zkD8zv*}+olTIQfdD}e);;?|X6waKCNgy1YO2vonhcF;trIV|#rRgAY?Oh$I5M;InU za>*PI_Jy2#EZz3amf8!#Fw$TIoFx8+Bj67L1yEzly3O6}Y9?R%;_(Ap$e#mdLfN1TqNt4A7K4sHUWJLSBNN z6NWhqUBospbEi7Xi7u9Q0*Ue|R4_cK|p{y_goDYKY$tS$s2Q2GPP-R%4saWpX zg1VznOo@t##DnFep=j`RmO#tvpqLgmFStB|mURvy4Ts9iGIof+3ykNGeDCLq??Gka zEK~m^Tz=>}gjdb4fY%#@S3Hx-b$M-iRI1@vGOdceQ}-*T#k2Wlt>mdx#*ie5Gf3qp zdt7T{wo$^h6g!OZAVc@y-bQ@YPbPN5#`jUdMKTal3+P@G*9F^h5Lpnn#T=P<-(d<( zKnimyBU}U=cTN}(LgWt2h{G2Xv_Qf=9{RA9Nfqxug37HYr~!#MNN4Y(8IB+%EHn5y zMTB!LN14$vM4df>M#q_Rf5fuY#JP|OAmOpqA9DS#BV1ob0>pmJ9&HUru_E1;_` zOnZ1_|DNP6(7dztFcVQiRYl8By6h95bvWwYVd9%Gi0q| zONyN2#m}%;<6(6Bk$gPMD9kDGLSulMN$9_qTMFhk{(9Bnw)pQOVKe~|IwWAV;@oqj z;6iS4|`})&}2;C_dyim!DcPEGSY$-Ez!!9G`2krqw9k zSB{wHxr%Bzw2;lQOf*~UN={|-?3HGVr53h<&KnRxeiBi|_spTw>lCj{ot9DahkDne zPRB+6B)8I@Ia+k)<3ptG}^02ORL5&>q;XPa}^~iA~ zXJt2sdS=CeR@PezR+zN1!Aic!1GI9d74Wf-JPZq}LIndhh~{PSYaDo&BS`c{`t_0g zN2oD5c?{bi>_TNfaED<_TzNW&esPrwQ6_s>z($2{H&BL@@)!3tqKw&L&f%$uGT3R3 z%hGJ1%o!w2-u>LTI4;->@1!fH4vIn@t)^F_c0UaA_AEgitgzB&nL5~LEhmqJ4(hF; z(cDmPZ0DfN{U9p)pr)Kr(on@@)Fj8>s&|By`B<*J7~^oG>`$6K9){@Z(hp+w>siz) zl;vk!9|`J4hWcL^Ittr!(uC^)PP~%;(Si438p8FJFW=h%;kw8Va23(MmZc0KC2!A8 z+H97z)9mdOqz4N(IO-;Vs;NOmDjG&%BV;r*1e(zh@B?OutW+=r{7fp1;|~C})nU+E zG|>#-Q1gIN&L|pNA0L5@XX|s#y6>48kfSwwyjuLX&gj6yJ z;c-P>H$fS~dt-I_f>pM!_e-dlDyz?~tIMvd%mz{Hoxop%C`O+Z$j8ruC_Y40fY(pJ zxPRhBeR9z1$u6t4y;gwn{X$UHEJYYQUO_tD-8H@TL-TRvW)dX21YKeSgjD3Puz)e( z3s6btX4d8AJ?OjA1StCF0E#tiYp%UNh298&5eVlKLTi}1k!8mzW1hJOm1Ou;V^8=~ zuaL~gf!=FITpwcq;tEMmyDRc$2PsRTz^Q@nQtLBv+h=7umUxmp-JiqN3BxK7(`44C z2tmOBz{Eub0O&OX00MEb0swmb0APTv0Fb{O00>cuR#eB5AXB9Z1TdmHP7MHB5ug{< zv1Wp)1j$4#Td2cXX~QRg5K=@4iFPzL2TvKmb_v4vkKX(t*&`6;~v z)u>T598?XXaiE%dRE->}aiV4nRFjUXIXOVI#tMJ`(Qm$e85TH&x{Bg~Tg2tf{M@>& zAA7h}N7h7v^(;eC@%{jSv+2;h zY70zg95JD39y18$4VaJ7%t_U1X})As==YQ$zFHJYR}MW;_MJIp%dEmscez}#+kMlZ zG894%BilFg`*X4#_-tz6M3KZ=u>9|vo%$)ClWvQw^k2S+E`419f3*?jBk?d(kdk3? zfy30n1*Q&508k775dydZ;CpsK1>BpV9~0q6372hm0!I*APAB zW>gSRHzYOVV3s~rl($uOnL8wDgq)meyuc!li|1oU3^e~d)o8!3x07;NUvG!!b!mi@ zp?a~4&W|3>|EU*`(=779r>L9r$+sfdk#V%ZF7i-RcRJKPrM3BrW`FbeND<+U&GBx8 zsiQzsF~thDxuBrMUNZ;@3E6%c_d;^=46l7MeH>X;WvzE`~`Dzc8Z(3XUPl=^O-Zt!AlAD{I{uD4#qWM$A zcW6kmpGnL@l-eLQn&7CF9#$nX+isF|H746}0BN*2=3T{j9pxWn`n0=PCS*QS0GZba8GE{5w2_h;2NO&_X~MnwhIJk% zA$E}O?5182bVlUB9PaQG^=|32-iB!+Nd!z3#AKzi+PXf@!F?RKt~tQ)C;>a3P5NX| z9Px|nMLrq3EuSTC6jG+kdEgS(@`6NM^MoADA{yJ*!{kH{)k3QPB_jE zCCzEY1YC6Eq{K{*=_SywxF7g=GdZJ!hL6A?S2yT*u$%Ki26KKh2XT?@v7KDDX})aA zbe%)e-6CWo3a9VF7rqSxGYIyHi?Dl_>d~PflZ+Ie(VpfeMD8`x`y}P+wR|VI+a`;Ux zctaRGUWXn};^5+wWk@tL{qc4ey@!_1*c>=rhjY|_1J1DBVBmg3HOMjn6Q zS2=+u!uqmm*LM$x_ReAeEBU3iDf(a6tEVo9V3>MCP`Snxd^zym*MYg!y4G^}yVr9T zy+m>#UaQ_89>OcZv($Jfc;f24fosZ@7lk=L-$qlW8Zra)lUZ+Dr1@hsKZ}Fu6W{#o zaHl?;WzRD=iU*PSnsrI$BjT&Eu1YnWX_YpGMjk zSc-bC;n;{KkT*v?C-6)e&SO}tK&zPp_F@ynyBx9M_9*U!c8*}N5cg6NQ@q1JQ}>LT z%~6Z8Z;n?WgFy!Ck=-C*D_X~lhY;6J%9d!QJC#1aphUEJ9o;~-T_NO*qC^yaH4-J; z#HbB_%LLH;GB68#Fa_Dj6f6aR0st}uKz1Sp02KgeMF0i>(g2_aKrgZ$ZU9&bfF=O2 zsQ?%PfDDLRwE}>kYNE1-0$@Fq=mkIplxRSJjQ|iqAgdPu+1>ys1%M0yZ1l*euK*Ms zlR^9}+Z*Ear<%U4MIMq6?8F*U%fG4>3JZuXV4G0y*$nonK}g;QalEfLD(W}aUUuQ zHY$^(94Etv(>-vW`dWU~Z{Uz}OyM>+uH|_UeF4c9{AVdr+RSPEUnYS{LGfuSlX-IG z?O(En8WCuN9@ZsuhTb&zovOHcP9Xsw> znb=va4Q@pipi!yCmyzuL`2nHA5HT!kMCSLJFNy{!A@nE zZ6K|egO4a~yd`w_sv_lnj`J!A@RtQu4nR#6<|6NPh|xx>Gjj;qAR51EX6nOGG;0!k z2Z~^XBd9Net6Ao54-)~>A6MqfCqhC9>;@-4&VBpliC$HOx!LZPTP!H!MZvt6##-$o z+bzMKN_SddO#@Q)TBUh4ZO~1t#e?EtK%)`=V<5TM3+&?p_%&w^umMxw%3s)&>=zk# zQ-=au>{Je{^+2#jvk-A=H54&3HbDBim;Ig-Jb{yfzr2ze4s$b_ZFB8sjy6oFT7wwXe>DYoxy7C*i)g z-ZVIUpnsgyK=C#Z6YdYtc$o8Au4N|DMEt=(EF-cfS&ImHC4|g?IwTaWBJen*CQ07~ zW}B0A4iXK=nkf=r&hpakmM-5kF(E6|{G|wR4qxuZC-J^y>z_t?$vr51cnAh107 zc~|(4il)sKfCgE4xSEkAb|2X=6edNA{aaV`T=c^-#sLq<-d8o9_5hSg9X5G}V^FIq z!g)Rkg~e+Qhq)>=?!IQjz#O+8yqYAz^HdgDg+7F7z4f_-np|U%*NEz`J?t^`z;$<) z0~ECq9h@n}9u6NW^PvNchS1~|kD{rM!l-xMWY-uleU9f-<2lrLHZ`sfhpE2{OfXtu zjv;nF3lTd7zDj{-D)0=tp!5eqMWNJ#!LZ*oElUDIN-( zrpWH+FOx09ZZ0!^rQ6TX^}nX}S!|P_nE8jp3BxL{dxSW+1KoN{XKuJX)gLPx7pb6D z(_U0i4q|mbr6ogYUt+$zr&myj^XGV| z>|n1I*Ji^GD7P0@fwiL)rgEM~Evm6Ha`%v9w(4;qC5I67L24V;`Hjt&sio8`gTnc3U41ii6^SDAFYF9l&2W060R> z7;YkxYRmSfOW>R$V5?QRNpVKP_~iN`ZF3ns&Bi7ej!o;@+*Oa>0bfbRwOaQ^ckWI1 zLuT|=m>6-+1SPq9sH%K~sCzG-D=noJ%}3OibIE2+M{>N9{cJQFbPhEQLam=E5NvhK z)JT-Cj-`P{Xr!`0|9nVNq6NMi*E#wg_iN!;SGEq)<0b|6at6N*@!J^+7_e4Hi9|0TO zZBkA3qd7v~xMOB$Wvq6MV{IOvdrXb<W;No>vbj%)GdG#D`vp{F+wK+k0JbMgSv#W>!6GafuW0E$U6L263X4*6& z2|FOT`VWFHpmhlfMoDufqSiUjBh7=qwyv2dt2ZI&>CtJ9kQ*5`1tABXGep`t3Hrk;BT3R^UJx&5;TKsJ~l6#yZVbAR?Io*4SY z0jVa{1Df|%zyK3{ywVzo)+irs85gOx1yxXC%lyq&Y6_6$`o3mI8e!#-!hUbF*`peJ z2}7LdVb*{<%??7!$nH<@*_*Vey$#V%n^@cs=+4VmR%Rj4_(9b8Uraj<$6QfQvA3(H zePr7$_5;20=m7?U;5nkex2<9P>}Nn==nVhw8F3F_$h4xm`F8J-qEr7BNa;sTUNQe2-YMnzD8lAO@f*Z}v=nHsM zM#==c!jQu6zb)K5gcg{KzmRZuhbx?nHg(5n^ZY!5cM zOH?nDc2G1`4b`ar$S_sFsrDC(s>AC>JJskK($(rUl88Ef75{D4XzQ zS^D$+KL@08%&pK4S6E6{mv4b>Nr})J+6Sbu?=10fp1)eo*Wl4Gg+e3mRHV5T7!oep zL{t%BZjI)=)(c4-^F3D`Xm|5ajHE2P7ysq;el+h_F;(JO4J4;r@f=1WSssU@*}Y^S zZj*~5fkZezLyhw-7$_{jhiyaPvT~@n*!SxZbO=DTLJS~0*;kwiBV_;)wHrf*hr3f8o3XKc3O-n zSHQla3iMO&L_{f7sfSVQqY51=7g|+_hryzAbY&|QlpS`?K=kJU)2H;d*l=&;f@m~m z`=VCO%|}?5!JJX&C)f^?fJRgJFS>%_P>t=pQHsc?lo~V*)6;t@c%zjh1~D#@ zZ_`IwQBrIEXwc?&Niwfwy)aB@4Z)PSqu{Bsv5@lH&^sB-ep^J}oA_AjQD`=%vtg8+ zZw=8;So#XzNbof*jHJ1OLWXHD+K^zv@ z!YIQ$?`3gkyaSGzmNO}Tm;)ax4~q}t3%>sgpxkeOk72jWfsa)#1{k$=fQL~G3#=9R zk1jAW#4`hzfF6fdQwV%9e~A!nfq;+{i2>YeTp)_2iG&&{u)J*I zY>FZs5mXJ46_)`bp{L5Yu2?W@R$c@cOw(Gkz1l8LZRa$3ZGUg_V#RLpFZdqUI2fa7 z{U95zj@bPF*xwi{iKp*38&dX#!-e6UG}zV&Vmek3B!T#dHN;!sa+Pghb79W_d&&}i zsG^#taS}Y{3~{8pbB8yAnvwfjv^f{hGT4%tHp@<1=?}Mqcy_^Iimt(#Ug*y>slau@v+Ba!Kb_LvX7Gpjp#lXvD z(VdiH`Wg2D4N!wZ_spsMY!|dzc>Aye6P|EG^v}jN)u4@h%Q#S5xC6-I6Vb#=XcDwC z8ZShP_S_*7@?OMsA$18q3^1DRq~}mUDw2W`^Z7Xa8}Q(<-b+{Pp&rw=K}Sb<1r_!4 zCk1e27;4Agd~w%6U!-XCMM3bLO^P#E6j6UrF=&;`;~<33Aq~G*U$z5$^cz}8Uq|*L z!PX0yrHiO<+#00_?CJrL# z_kr{MA~{EgMO3biy8sm^GCO|XGEC>dA5j7;2vKzChaj?|M0DY~#-;Iz#uqKumu0^B zeY&^KVg7jP5f~wvYNXnPmKrjWhg_39Of$&?dP~8yM^q&uPdO~u^gQ|xkrhtoD|#t! zeZyV0@VCu2tsE)VqPX8|b^#OiiNXd^5?mOtPYt$<4jETqgv&y9fee6)AigHlL^TZ7 zc_wPmA`)Q4*iV{`~46GYjFyEmX zw_L4OYZ#dWw|xV*cw9q1gYW1@I0XRVUmvN39j7FOo5}o;>-T$P37OP5eyEEY_IOld zDDKs?zhFito4N=&j#XW$E<>_-T zr6*9=DDYoQrA1o zPl%Wnc*TJUO0`0pzdaY6YyNgJ+LOE(Ujzom$yE;QEO~M=(Bl1O9X!K(q=31_UW&{;z$FK}(h>0^m?66MQG2Dum2&vWB zRR}UTY?;oYX#*hoFv*)$IZ@h1cPZ4&W#choXXu&&$une?(Qx?}#6HmX@ziqE_aXIY zDR51z6@R_V3c{l{0^(w+HEb%@gcyy`wHpbx@J0Mh4}2jtQyk!nF{IxpkXiF7EcLO5 z!6&RvlNb^%-M7mum5t9j+G<_Fb!j|l=5W*MEQ#Sg>lgsYj&H4uB*w%=)Zu6W`^Jpl zu<5KOa1KmSYhn&}gOOy8Tc?Vw(dtu5`3Lw(gaX>^X}}$_Lg~?EHc_q}BS)2w1+NA< z`5z6m@p-q)&@>!wKj%X<9OGQO5(n|nB^Bu5xLNQpss3m>NGnKz=?=W!-j*x*NG>?m zq`~3^V7jA1H<1Tq^H-B>3QV$T+UJhe#7p9w`pZ)|<`k>`Hi;{}l=jwp$_B7-W>!y( zu=~N^(h=4UU{SycRxUte3D~gD-QV&y?C6JYcPqGqwKnmsu#Gr}KvK!n=3n(PZ4M+P zhauP_AxoXTN!~#hX5oo!oP5J35Q|5~>juGhKo$?ea~z23FA+KwYqr9q{EQFCg$T)+ z5H>d>(G)O|2B|<+%q<+LqoZBU?GJGSOEZpdR;E!{W6^9hSj$%ae|&v=TvTQL{~S1T z28N4=VFm^UWI!=Qv{5k-GtYrR5yTFNTB$YO!7xWfQ`4H^;w`l?v9N3#5EGGV@X}gY z&2TX?wXv|TTiBwhi>?*z>aN@M_x_v#+WqIptDHIKJm;C``uV&+*C#ynQw+n|BS)c| z^B8;_4unwg{I2d3V$8H)~xdQNP8YewRF7N(0pIs%mzLO#Q~t znm!Ba*R7h971vMwwhk|Cm#LpN8Px9}EnT?iU$75$bL)uuxjqe<{dz7i?4k|SsGa19 zsklFF-lpU`a1%(!La=bEs)Xd z2H8=4sDDC3tc)LmH#?n#gWTh`+NE+f`w=0V9Dv1=KxVdc>hAkwhak%%neNt*JUw-F zG@DrVV4l>IEYF16TvTL)FzsAJ(=p>wM%z|o>J1gObsW}KDeVz0iLXI^gRy&LHn`Oj zNxGj?$$w1|Gp*$1BD*#W&2cR;stAVsy{r2mRAnrwx!iSQRg1jb3L6#?(e?=#k8pOn zJT`L7OR{8)G&x!A*;>2bn&g6KFldAc^Z2AVYM{U@wDk;@o65u$z5si6aBHw9o@E@Y z7#EN&NQHDOjU}B#@DwS4U95yFj>*gGv-ne77<;&Y^^|C`pkHTnw zgL!nGt@BGaH|?y(2!fcEUbS@Hl!-CbUZ^Xj-6|!gDYd|CAaBbS%!pZN-Kk%PU7^Bq z3ZmuY4o$1kJ5YS=0*m6OuPd3!TsvJ@6?Hw;%rI_YcdTzcEJtW&INKo0z8C`d(MZPs zJLI38WERyk+_siMoo`##gd|O#m|H-uGh2Qd1RP`w&;=*uj)&b;qyAo@nqB8%hEA(@ z1fWhI*x5=pOfqVc9dt3!PYu~Hxz=gr*=L8=qnmD!P1K4TZMb2C zJu@=~gz3L;l#`KkHA-|+9Vj82KsWGbhu)z&=tdk$I8ow`#{|17K$ih^)Z<1qES?rv zJX^>n+JGDT5f4Bn&=xt!fR|F(y(#s?PCTxeLBw6)BXcEl1Th;5?72oHDoGR`+Rlcg zne4b2nk8AblP^kYmzM>lbMSD^DZ;2{B|wAn8Nu$UVMY5A-bGy@X%EV;Og42X0vDld zjCgQ(3v8rbtG^b?TA=mTklg|op%|0r2-Y%w2?qPJ;G^*kT)d%bnf~ZXtfL+t3-^pr zWsI;nqzUZa3Hu=;qP4m~H+`+W(3;WT+AdaJpH|wYBTkTLu=af+2U+uDYoVy9j5KWFB*W%Bk+{y(A@$O>Mt zx=9k;a0_;`xJc6F(Z!5U*qNCw9Y4q33=wG((Hs3-rfP&HwaY@&*SlEUIiftAI$5D1 z{rMquGFQYb#zh3Dnf!rnHqMcHw)evKCACYTq*qpgoejl|xBj29{jH9NG5W0`GmUuV z^~m6~NBp85QFNqu(j+!u@LO|TFJ4h|Bck6bb+uf{MTk#RHYhsW!>eq=Ug`~-%U*z! zmN8{prWEKYgaayh`&-E@>*VJ1{6`6>c`DUhV&cUAj2HvUq}SR??aYdHz~RiRrBwyN zJvc3unp!VLvEz<*%#)imU4GHRAtY!Bt7Oi>lcXb@FT!mf;&TvCB+S{5`ckphTMMf(k*Q#%LOjGl29lif1z3 zVvcQH)--u86!gSoU5AconrfqughgVG-GADZdvY^9MOoX1jI7yeSQQiN(*@HyTo0s>tqt32F3nMZL4DWcTLDtu&KiX+t zeu;YmzW}$ElKBxQ<{LKpUUFtXN-rsEWzN+dz09NdG(yzQ>4J9+HK1ejEXgn+s2#rC zRyFr*J4KYO`PMK$Eb=3&CH_`*_9MS=>uOH-J(y4sAwT&2rb}6JM}FX8DjODtmtHV* z&ySuHc_3_NWH*$qDr4PrYxsv@gJIUPDiUsWDj&8@S+}3ND7VI8KxiopY|IeyvJ{)Fu`O+dqp2utnYzlV_oOPEvf ze1A8#zEJwzWRhLAHR#55GA{8dD_^Rw$tm6N%jBXBcLGX#4TL2=`lkBLI+$7<91Z&uNeFZY8DgMxjIrzZck1gq2q)cZJT~M<&wZQ5z#Pb#j-3BfPsc8>4CZxI(i)58 zP>_1w|EBmDdx*Zh_e}sGDm}{@+#|Y%UyUmm-g2Ldwi?_0!?~X1QV)_{-}XHuYu+UX z3V4zTnmYa-(wY3~5DIuxe46Guat-7+scF}7QYhiZ+ednELyllOl`-<_duLvAZ-0#* z6{n5*JOKde2%24yR4Lm{zoU-$jDf=)nXXBiAvEcxzqY;g4_I3cVZN1n>(>e}dKa;GC zt;1{N-@f-vu>2GL{6V3{Z{8=&ykD7l+x+HL`OUk`aKLGVSIN6AoSh-#)ll4n&dUDN z$$+Y)N9Osf3*EL2)pgKV9kB?bZxMErYW&pNgE8l{wHESWOU$Xsi4V)bdjsmKI5;(j zj13$F^hIz?51>T;%+)bt{6A|2f-}^`XU4eWvtK5?Y{w=4Cx5t5n!_rq>BX{ zTZbFhaAN?$ZN!cLL2#>3X(a%g04Fv?V-SL)9W*{;>-GeUs~k~zqi1OH_G-W36j8}^ z)$MV%$e&sJNx@ZfU?DekxT6LBfzT~wbPTT{MpScPY@+;n9^deg4B<6GG@A`rPI8Ha zz(G?7q&Z1FCu?{=J=i{CuK2&M%Wt~I9UpLAzSI&CK~V`+L2%o-LZ~Z1lwM77a|cPw z=Y8S4VdE)R&>N7_il@;p8Y45KgO#d23f1ce3UwIrWpB%u?x21ORT$c*UAr0t3U$vf zs#*x0<3GN?ML84twQCbVq3)8hfV693hMPOZ|E&5Ke^>Q`!f+`|n{>**R8kdSzFkZ# zsX#l{40(Nf60y1bjExS}zobFkwA<5e-nI|Elr_-?!yMCDe?a|_FzBuVrbU%?&-u6p zzlojx=_w;{vcrf@IWT*A29wlTF|m@0ch|S7H(3Y$iw|v6%MRcZ5bv3i!WOt3ees_B zpvUYJ2jV>&R_{?GHUM=SUpk*$pP6H8qrg)@z;|8hct-PgYS4n4-Q~k8*_hcwY+5IO&(yR5_8)kXw^biyywto0}{0e66uhEmn>gXie{D zJ5xGZAEXJGm+@y~&;teGM&j&G-}JVQykyR|wWWx)M`Rc6eSC=ouNvRVw1i`2?tlxQ zC45dre*Zc+^YGlNEaFsw(|e#*35TEh!=)h)F?~+=@k^WchSJI{D1p*oCOO$v6tIS% zabd3xy3L=^Ok@ll=9Ij)Y;9h(veXz^FmiW<%k!}LUG`x&X9>Hjd5|%5noFnM%c4{b zBk$MUA*XN1lO;#ku`3U$^Z9(Xv=<)NR>hxh*0fE$ls(TTgR3`YXnwLpu3;iTkQHB@ zn|D^Z&n&&xHWyG7E^Nu8eQ~I>@{aeru*p7x{$=cT!nXoc4}njm=lqzI94Yzv zN?@(ju3lhtlAWYX0M0y3=cfq=U?2)fGuz?(o`XHY-%e?*W3!KSJRxJ=8Aj-ds9B-?!RyM~!|@*p^;upIeY`q*x%V_spB^yu=*q}-KSFFdM*c#B!c!i*Jz4wM zS+3N`5!Fxq=1${_)E~H#t*99ePlHPoO-h#OOU%sQM(6Y`=KKw13mfF5oXl*%)nf8Jfxd{B-~my&ukX(z0IhO$O#D53|4S+oB~_ z4(dy$zV1Leea$VZF5_q)HTJNdMmas>2+4dh313hF^>hGJybDbIB;Gf$-a8p`+p3tv6h$&?z+ z-!WtWXLhU%4{lejf&Gz{uI58qq*cVGJw97?QB{I_O4G;r`mLU&OW|%OGWF|*unQ%p z3+%w#8UDZL=o>EI7v~F-sCYDkOe(MJHpUSn?7yw>j{>9 zzOS33hI|4IJ?2#oL-OxE4Ojvm%L{|jRF#a}uSey6`E-S{J`DK6k2`6zF?XL!VwI~+ z^7;uJu#vg}52nK6glcg8Vo`P1R-{G^gSVJsaEAKD z`JbnFWGF_XD`$_XM8|nsP+I;2aLAxI2^fJqOi%5QnXyY@bP__+3jdAqSHxvJ-?@@j zX>aWpDX~k>Y4m8Bd&~K2W&3G;ZtRirKYo-P$v20lPK2KT?FWQdB~nrvH1yia@M{l{ z>&&_?0-=`EJDb0j-P=|!bR|RO%)6u0HbdAS3j8OvhU7zk{|S&`j9)ockZ%p$FOT&! zc@04&C&wqi$ml;d5WdYeJ;ubuGKmy$Nc5=!!@)BhO-Y{k-xaH3e?8#QjcNlN&>hXmvw0^!m>_KnBSzn$VpC8TE za_t+@?MYHdqqM#5&geZgdujttG)$Qim^dU^Dj(BXt2tLJ%{x=L_m%4UgxI9%&B}D` zR;)gSqNp(k*v3Sb0zoP6^XL)0U9H4%Qyc4=bDYE<@vd6^+ zzNyN&NcOmhW!J|`q$pTp^)b?JZnoImZtFu|9iEwCrP(X`0+H5QXR>oV>>7{n>A}l= zr7BxyN~N2S0#@em2dUH|3vA#-tQ_ju*)H9FraJm0^nm!Gi`=t)1&>>G+BvJb)xLtZ zAQW7qdb{u8DXN7TEWF0(bO8na>6Snya+X<{*=Y@(o$21IEwJ#t zhR?P~33fArzGUe4C<+!$J?<;0Yigevrr1lv)CoVAB?_HXP|_QLHm^C%P^Z?eL`zpl za<3x?y3(T@=yfd>kbB+w1a(F3wGcf}wC42Q{sB5@Ph_Xvdmg_md6q$<)%7Z?!;*AN zV%O$sgmM7?c!;<9XR`+{0Zkyz+^i$th-<}k;=UZaLsx6u|xI^6Lm$x-;)dsx(1HJ!ASoJdx7EFWQ6nEq#4q8pM5gDrJY}w?4KR?^!V1Nzry!2cTls2*lKbmGA=?``7b|U>_n;fIYB>VzrCOLhBlqX#u z%@tVsda;dq(ayei^t?$LT|fETlldxcuiA%?qRegYM7$vHi-CGG40&^zJgD$!j@Rc-{&jnx(@{x zt5)?re2!}I#P)58)`o#C;Y=Rb5>4uX#qm~o|KiAcb6`uDMhq;D?mvpYw`!p1TU2Yh zBS@Rxsm5e|n1Jcq84eqLp1Ww}DCy(^^A&$M?b2%Yyia>#QZF2+DH?Sv)E3hY4hmp?bDY(HF^^TP$JB!$AXByng z{eAa`lI1{h-jSEk1LI%#>TOz9mlr+Q{=no;ii-kI{+hVP zP-S*TZfBURZc-Y*$u&+m0)tzJ{C=U-{7>^}P*5mnF3ERhzyb*N^*t?MrP6=7?LSF3 z_H@Kr9(w*i53ZWhaoO_FuK(oR7;6`YKE1UomJF7Jtq9MCv*I6oQGJcvbAYG(M}xV2 z@O7}g0LWYT;epmLKFRkE=|cM7LAW3A@Cj4jY&)- z3IVvgVn&Xr)gHv)m|1d(=k<{~M_7@H_^Nfwbd9tpD_2tPgtr$lW9SU3OmNKsVr7F} zPw;miC5XJKhkfCt0u{CCMY&D?<#z%smZ|m3Oqv|;zdcIw+Fs$bjs9|4G4wG6#xS%C zert-bgQL+R&?39ICRCmdi$yZS*DI4xSzwNjEEPyGaC?>io?KE(KHIZHJXUf(#XfU^ zQT9GtXtLXhf>RY7MT_#D%%!|?y~`e^voobOSv>l-tE)a?Z?r5Lh{+kHyu+iP3nv9r zu#?-yv!();nXW&oc{nm42lTdGr!5cONW-K2v4eHGM>v zINU*L^d4yqX>_QTn7W+Y5etOaj89Dk%mPMr zT}%wkrmO7Rmvi9_S2QlDk%rv(!t{~sn{MRF%d_;^eMiab$(NT-_5+}th=(o616R8} z8}U){;&GD-OR;6TX9up#Y-$q-1w*<-TZI)?UWa(AZofH6C1nmxB* zXEMT-vJX#L`BTl*v!6)M@6zN>);7JxBqn9WCSTaGK<9Pl=z=NKH@fKMqeTaYB_7W4 zDAmKIhTr_Y`T2hBBhK@Fiz6D23cHodQltfTb&z(B4LR$CkkE#eia??%J~K3h=1OFB zrbyiNP-1rDh6z?@zbFVni+RVp2?RZ4|7Z=nMtuO$jO8!ALG-kTuiWh1Bm>$B?27o} zVj0j566XbMc!dD1!`vHL{)${QJ?wUs%v?IXeQ2^<4W3;^3yfG(TMKyhI9RM@fO?#u zrKlWt#Ro_i|Hb#It84|&UfvHtuTd$B2?l85*+88>7#nrc2LbnT@Ap-AhhXeeiauSQ zbr1@UQ{C=+_>&A{V#NTil?sW#1qeJAQ`@W6AKPJEii$*dD~=;~Hz}IpVyT>_IQk zqm-cW!PucB0!|HU*xwIh%lcvL^)3A{RxeNw{CMUoZY&shGGs~hr@e2 zcJypr4}y(IzYje_#?}qFf!Ms_Bh)bCl&R54cMW~3_8J-IdSIM8-tnb(z&MvVZ1#1Z zjgcY?e}QpM8ZswqXTQob;MLL-a;~T9SHX~UWSny)iJmDt+}tl=6XJe^vVnDdzw>Ik-2l)S10}k)Pq-6z@n%lqTE0{KJ*6e!4aCdV650sxSYf8qR@SFfRGU5#U_18RD*OH93_L3e_(Q)ka`^IDJuHOn6`}wej%ppYx zc^~FtYM}fv&k~e}$N=U_b|H+k1ew$*RK))ddU?c&wK$D$Km?4i%*^*BiWfpWj< zjk5~pO;dkJROiy(JCS>SlZ&Rtf7foN{n2UZgSOUDM0GCp0pbP#;?i-~`q2A#gx*1Q z+I>KG@dtf?x93x$Iz4@*ex*_tcVB&qG5u6$KVrzRDfe=B`U;L*O;pE$tX8x^6=P+p zlZf;}Wa1yY8nrO}R441)0M$`EFhF(w3oR?ofT>w~WTJgCm) z>`Q&bXbBLwiqSs<-YDK_yY=7FLV0}>UMkvsWCyfe@`uaN*117bh}RvFleAF_XfIB@#_H9u}vB%YV!_Io!>A(r>tRY z`*^HaK{@-eC3!<)5 z=iSq1+tWp5)hze)!W9^u+jP_Puq%si8v(8mPC#BDrzP)tG3+Kibkf6mmVXy>_b}=S z^Hg^}T7=wiA3=-j=QVK(stF%O9!;ed{0s0@6JO5tr(r08`HpDznN3h##+?}wPV zLK?{j)=Xf<-!+mw9|NuH(cb3SozvXh`@DG!qdTd^xcfg$PbzhxX}n$E>6t-+M~jSj zAU^6zVWLoVi@sr*k;`Mn`@<#i5m_FwKei3TIjTmK+VVVHsqPqyFeWP!6)0ZWXK#$U zHcPxatJIgB`;(b-7;@g5v*!9NS?2;_>o=BrCm5j-LB&Q=gx?zR^RAw~b7A*cuYCr_4X82cNlHNw!f#tw(qbmn|9xk4fpUjh=SU7(1{sdFTNZ${)QNh31*ZUqao9MT!Dru>Z4eg@k36P2^9VsF!Fa1F(s`_cE|MvO)DmmAJ z0kT`KA0R*@Huo28-7&AfD8CT3DnlRQl%c~h-u4}s%+_d^C}bf;UUbowh0?Gk=Ia&P z`kJ(Fo^nw2qz1jOy-j}sW!+i%d|zkw&jV%6tw#iykFuuBU+AN()}@5!+ADYU6?`29 ztMl*m)l&TxDC@=lRl!Kh(5yZ@=UR()`_z(Ny6vN^UC{#_dyfjpDj5H_2FAeo@9DJ*53T*z19_6_tDlM1c5Dz-C6Y?Fq7O{g#{x{=o6IHN>H5;Uy5El? z^Xb|Dq^gU`*8)tQiUpWlJ16Tep1u?~0e@Zo-5j!?SN|2mqFYP&Sha?){-`Rp)V->C zsA^Tg(2t*XF&z|P*8BE>&3T{9jIj+aHEt+aWqI0Vk1?MUFMGKABP&VD6K`V9T4Q@f zSMmZ?!CK=6m**zT;fjWyt83d57(;+Kk^mtrE*tPeHr0CAaDv^NM%BHH(RKc|%eH#; z|7{pQ#U%6KBPv6%NB~k$zNs>}9(U}NWrEutt|_v52<+ZPt_?2cd#e9-&()_p=~k(U z{S`hC_=Y9&A+3T9E*0U;hMvM_2yg!SL%@@>H*|lzHkCpviyTk8#BbV>0K*Xp`c9iJ{mX>sd|Ta8P9_}DsP};=QOyyg%#mgVAWgE^6B`W+XJOfE*Pl9e*{%B0znYz z*A^(0q4j#KDDQUiEx+f9W3NY-=>^@pdciX}wy$U1&wFNe3l}F3?z@(Dq36QQ$#MNX zm#=@FoaDQPgt1dKyzd$Rf@h}0Nj>)MeLe49h@MN|dHSz^p=)6gQQ&c`1mSqUsEz(* zA$9KMXtL}$U-W<)zAKXLs&(og1JJf;U;zB{{}_Od|G7Od0KJO_2B2a(RT2~_N+s6PqOD%=vR#IzCx)#=ieG$!UX?e`fhZCHlWdt%c`@e_Ut_85B-PxGQNyF)xE?q6aerSxmv}a>>!VdZ4Ygp%X!vw ztD_umqSJrER7w6D|Jz4*TgaR0wkOX*kFpH~;X=vPao|(ovq%9~`rbOp_AS!e&`M&7@ z&E3vvg7SVU-5O#h>t%yOErt!J8@iri1@L9A;!PAuqdVE`jKUW<8Sz@8v>TteA-%V||07IiNjd6KhHoGVX0^>BGHvuPM06$$M6?E%M%uaOP*KdkzX6#6)HOZ0!P+EG#~aq zaRkpFU<|i2yvGxJ=x(cj*j6!iW3)S^V#KL(TG0pb-7^9sS3aWQxK|Af zycQU^0WYBW&PLks?#vW6`xKh*T86ORW+W613YgWWA03X*{_}fe8%VO`%%~}!N_Lg8 zfl4@ILXis>0rl7g0vq3z3I=GUMQ>!srAW+bUFrn5shntp4kX*#l5awSW?K2|5(Rv% zc&P08EX2W2Tw=NmLm86RBDqjS6mnarY+I%u$k)|$o6cyS&eKh99l&y}J7m-|oVi%V1MN5qsUcB^D^j1s{Y_k`+MOZZQ!3*8Q-37AV^lqOX({bNb zZaIttY#YSNQ+3~#JmtmON0o2)l&$KfN1g4Ys#r?iiSv1L6$RYN%7W-(<+1^9CjRs} z{eC8zK+dQP1W>NCs+NJ8rshe->7Tjj~CW54EPPv=Q#OAjB1U0}w?akN@g2n~@^kY2%sSi~+t?d0V&UG8+|-Gdre z88SC8%+|8jm(;P|IUr0mex-Ah#cGSXaOGjvWrycTRvg8de9Pv&tWJi)X{_Y$5U*-> z=9xw{pRBy1QE~D-+Wu=E-mZeO&yz56HH+ z=X&%DTq}|J$$5g}4HdBg%S~jMlufmpTSHp2xWtWfT2=k&h?iK~S*ZY7Knl+2A?icy zl>DMgLyG$oJSMJi%~VQ{QGu6Y+}73;H16=RUHqitx{?BfapDqMcck$)^IXCj(vZrt zA;+)24+~mc7c>*G~_^kgW?;Zb(eiPn;;&{98OGO6}wn z1-*lu%dR)_2a#fkcuY>lVN>WSZ_t~x#*H@{%F}x@?>`QQYrpCPd(@45Xm@YWhqRB$ zHgil~2an48S&lQE>&Pr}ve`WX{D3xRAj9_Wzt@_S$weOZY{CAb_CV5g9558?pWf$? zj<{p^%E6+7WC~uyV9oEv-t!MRcwXnrDwh~zw!%dF-h8lYV2m zj3;RYnsS|gmjiB(o-`MFhUe@(s3BwAsYY`D@=$sW|6}aTdZfr;*Af#`hX)^5Y>?b$ zzi`_DcU!sGeDJE8M)5>r8`8Y`(&=cYODhi7;1DF9K~7joHg}wctUbJXZgK;SgzLze zkr)ZjNE!)7IrHW1$utu88tZ~E5>CpXBbmi32V3N-uQcAFs_&4iytYt!=I}|m>UWd7 zsp@X3TB)giBDtHYw!WnvPgSQ=(?zB374;~py5Y#GP*iP^UEhnu-EY(dQLDdeYyeyG zrTgY*Nrw*i%2l6A{*J1?O;xw)s+T2yNL8EORzFBpPoS#p%8Re4)2Zr9N5%|7)y6?I ze?~Gl%4_;bc}@Fxly6PLx9tF(20cirP09qLD%`bXd*^dbwXR2@3co4Dhpmg@eSg3I zjcDBGCfOwt>`S2>v8W(RX)rcd^4W7C8P8ng^5_;%b1@NXrn$uMS7SymK%TSriv-A3 zU}?q!xvpymTKI662Y!9Z-j72z4S60;&+J0#(R7j{6>({ZHj;=;c>}~iLYCxq7?;M- zUJxmRjQ?0R(YLAu#R2#!(%L5$791Q_?UHfGVke5qkk7*|ZleX*#e3ytHQD)&ysYN) zRbR?EsVY37*~(>#RKl<8sgf;lD?~^(z6FG9>r|u<#93~u!p~CLxqEUYQ>F4ag`7&v z_G!NH+YSseC5Uh*k*{aXsv+()6m7GQg%MvoXBUpKXN523hgOUaxFOZ}$ER#w5V~!= z@rIRpo1V51(LljPF+F?${6H1XrUl@|=Y{t8)LRNm|D5f>?1i(>$Ts3=++^o&O@NK~ zZd`+)%kWOy?aS(=EvmKoDJzqVy+Xm6g7Rps2Ixa|)-yCi5;olZeGvQ-hx)zX?gUO{Bb2+6?0EJbt4P5|LS^V2)0PcVVGrNP}ein9WRo2yx z2a~NR+eSkRFov>Ca#@MW3MkuR2}SOdu(PWwu6E=mm!Yi8r1aUc1F~G!L1ise@0C#V z&TX-nomLL10xv;HLG+8Vi`W(SaI7LdqC|!cDKZsn^XmIRB_>cJB-MyFA|1%6n1DjY zU{flZ^lZUmliDR3+FoJw=6#+dqIzq%Lkhz$5Dj~nQiZyp#HoVzr0p$F6q`s3T+x{8 z;uaisG0iZTQHq3Y@A;iILrjNHVo~?Xi)6S5iBK9=55eqv&L$(p9ZzJ%JrV~z`PRBP zAx(UY);duk|BuNt_lU!OKre&P1XHE)kQ^WkNK+OHB?;*ZLZ_1T7xi> zCJkJmT`TF%{<3fXL%H`F%EGJLe##VJHg$X+qVJ@8uCnm`gb16;hH(D^Syha>%nqj@ zh>@2aOfHSuv@{QWy7SVONC>B4jbG$@VPotP78<=DXT^nVO8-Y~$CS*ts7=LpnlGrb z;(|6=?yS6^%8m=)B-{zRFlC%qulTL^Ue>pRcD<1F(2Mu7ZVY;5Qt5B*d#zUo)l8cE zoA963Yl9q<%)d!HagfbpX+seZsaKp&yI~Ez3v#Cy&Zqs&5qg)V?hgJ5zH5{dto}{e z8Co`z&HP@NonwSPqFs^59)Bpzdn=1NX#0BSisYXpOMJMCsLPY&Y`N)j$Andb9>R40 zA}1b`(?{4IPeTZqV#nK*c4t0$cs{8>qT)%U`sxj*h%72wi2&=x)o>EPG&?C_^j43a z&C`?sk1uvMkzJoq+oYz@HyM8Rw9fsVVmqPC;$( zG}19rOPxpM3RZHCsNzz&g8j_N8d3SAuY%Q7L9vx8@SuXr-JRIgf@0%kHW~S+dBqcH zL$W8r>}A-ov7R&j4_Rydt}u%N3Aa;M(rp{!SBvuZ!*!Q_^4rU7GqJBDGz?EmP;xR%+u9-MA@Yw_krwx9 z)U6dt(w4-ZZBOyU(hqG&n}D<$szniHAQE%aasHK4~#(*Qtxt&Qa|nIW)fcZ{3!qhx9irv0rU2jMahWzW|Av(g^p zhB>Z+le96yJgcJWGE=lxCA|_OEMKKK@fW6ZsY-mX?R zYX-Ny=ZS6u!#edtq3A;zoY0u7P>nd;#w5~Zg%_wsdM|e>SoUjNj zU0WS~kI+&j5qaTZTIhf43K)$n^1LD=&3^}ij=jRi@ehu=a?(83yHY=BTDs{%a9Yw0 z8rmW{`am%u?fIP)1>`*+GUFxM_a|3>QGIYsm+53V)HSEdB}!ZPxwg6>sBrQ~$TV;f zYz+w<$>V(;(A4LZ5nf=Z{AJ8JO_6`BDlt$yE~G4G`y%P9qOhUVC6uhuX-5OQ;Urbc z*`NJudG(J$P@EoPFQIXBrR&_R#p>#qI~7HvSQjH^tA00*(=bSYj#NAqW4mnoD`rq5 z_C;uGp&>LLW4|t|@F4%q*Fw9vsQjI&Lc8WZ=B_F^9v%kFW$^hy=dBe(2Ti9;?ACb_ ztJK}DIICIrMabrv`0&@MJb{;oF&9(Z#My_67>c$?=oCl}T`ccoA7&4b_wm+*BBwEN zxD==!EM2mdhmHO(Tt|DaFJBuz9MGuQZ`8_GE=6jla(8FYeZD2lPHZeD0gv=SMs{%# z$iD>r3ZE***Hj0}g?y35wfKK9~fABz$Z66x@R~BG(wn~_EW<(kpIGk7BzZYPtu!dvVDjJld1OEn6vHpyIdD}@>!x&u?@TuZsgGi7u+Go(?+tb$Xr1OJSDqV5))By!6ExPP z)*j$zCS}?)Bu;(9f_oG*2VDDhqX|ooT-D`ZImVFTcO^ADFu2s!hG4laUIYg}}l$l8N6oVKXorEXAt+ndQ>kneM!+7S^=yIe)u87-_K2kJ-d=&2=rbn3pYbmAg4 zD_65sa|<6==%6;FP3f|Zg;tSuoel{{hqsugyHort&>m3_;(;ispz-h_Zb*_@bP}5> z<2aJSTuGkLf}%SfN=0fKw;Q^DDFTC(Y9=~!tC7;(@~C+Wx}Uq-mbwIA^%y6uFja4lsPsVe)Kzj8dOy4PpYY;GF#>PnC_RF zUi6w%^Aa@n_oj>nd;GDREbxlgB!|dATS}o`5I*nsA%Vh9xq{Sfd_77$8S|tYG+Af2CHaS@5U}RZhKZ$x; zGb9Xmiv=D!%N-n&(Hc+M5&GOy<{!gD;R{84Pq`7wp4GCd*cl^UV950y3$`yO>@7Kq zY)rt);``-A3yHeOq>_^~TS(?}7-81v4&7o8PU~d`S3+s*RZ+UzFG8LZFo9 zGbTT{36l>t+Fom_-OX)~PZaBA!=pJSa*zBo%@zkzy(6Zcb6F-+`fB`${TfL|& z&ZoXvi}-`7GR&7Qa5L>0zQoF;j)L19jvq;{fuq7dDLZ`Fz187vh-P7TR`2o9r>!g; zdEJ??txZ?CafF2LC^&S7|2$uXMDCHpu=B*JY4(X{HH+x>7dx$k=olTp2fHh)A7LeNI;FS0c)PObQCOmJaer8%$FGx( znCnRq3P#08@G~wxl5>JG6pj8=;7VM;Xz$u0Xxnj1_@=pwQsG8sh>SX?0dZ~}b;*pq zfUH>B`->$eAIbBhgHxG^=tmY>BKOUc)`tBhd*N&LdBWQGkW@s#OADQm`yQ7zgx$=} zdd>d0umQJYxoF#Iy=^iVtt~b?FZ6n%Y#bY1XwRBMHW~V1Czmh%tv3QZ%)w%1BTu$0 z8o8U0&&#?Ma+sT2&X+!6OwIEm4nyXfDWEmstS@fEAKzu2)+(G>iSHCEyhnnriGz6$ z5gZ@8D#Q^<&30tucKG3N?$2RRmV))u(voI^W3p|?ZbYj$o?Sd%W_Dp6E5qkvO_Qf$ zJ9+l;0<=%c?$&d(jFi2t`9l_A%afyAi%xE-poN0SzsCveF66(c*Rrk4qo zvzW*O!E%5U@sY+ekohUBT27K2R$n_LI54x?;^rpHIr@=C_nff#OxAS7e@Yl6IY>U+ z+nQgnS)H0Ec*7CF5`(vqfD-KS7whU8gfeUNY&)7wN4OZLfPb;`yM`_$$toZlh6_2| zKNr#9T8}<0C_4Fz6gvcRc4Ajb7=p}bjC^?`$+jp z>&?#89M-HW^InLAMa}#s6U$y;VlOcB0_{z)todnS_EO$^Llm%@cG+XiI~j

-Z|p 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

k96G>qTmOr4=I#zJF?(z82SBMT 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

nI;h%!AU#q-U*i>f$`9(_AWKcJBlp3! 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

<@pIZp#sod8}&k~PJ1K11iZih$pR;3Y)f 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%0Ad2I7~ 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

EJd! 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 z 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�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

ZUQNxQS!@v(|>4A5UqDq{z3PH^Bqi3%?eU<8j0 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

p+C`+Y3D{AW^ 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 u{1baX1OmlE7qv*G~&~ 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

  • Bj!C`Kh`^Lw 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 z zh>41Gp#vx$f2Z4n7OngQ>UVJJN-9c?h^n#l&TVs{1FY({1=EoSWpMr`-@bu=6Luht z_|4R!RdNO$pJnvBH#j3yJjL;4M>YvK z;XB3eFnosFbf+H15H3V5pp#JDRU&3mNrK}^7;cw(HJ^1niE+(#x^T5*HMvPmzW^X> zH?mIv$U2M*=kz36=MZHrqJ3N&DlvC?r>v*Zy|v9Kz4q)vVuYu6KzZA!Qhz&Tg9_!) z=0`IYu!-H(Xk@@u?p{!)Wo@{`9Mtr!GHY&3i@)(|!i_=6H~y4(V{Gb;w^MIuj5pp+ zzVXlG8&4$M_*2Y{+v9Ici@l)%^j<0c1%d96@d$rCugsYNWRv{tJF~yH&HgDnF!u=G zONM>-J697f+DI?E8*Aat=+VkQ(Ly#Z$55{YGNc_JE|OkMUL44EZS2`ZT*mayO+;CWg5XWu*_kwpkh3y+LJ z`VzJ3@o666ZFl0heumQ--F@xJX_JqF_*+-g(m%3u8Zec)fk%j$JmOm|!?$Urv;S8N z>+26!2GpmMK3I5AW$c>gSsTC**we!cLu1PP88`2QZcM}C)&QR^E~bsnxS{nt@B^9%JESK|}C>d%Lq;_Rnf zk6u`#$T(~~?dnzkeaWf7Mtj6J_@YUYaLvL6*=W3pw@?|e_~aX0=9r(%E0zf3i^K|PRY%&cBY`rs-p`TxKZ zQb;)alBGi~%?IifkFi`{YgWtknjJRz0U6M`RIHYFEE6`PqDPL^t!yLt60UJSFsyML zyF5C2#8}eiH68yq?9Wa))VyMufBxc~ao<5kQd0kGUkk>Sx}ypcx*y zBtONePO>Llp|JEl=E_5zhO6X=3yiWOW|gF07#L~(7DEOK4W>jabhe#JgRLT-TF|>h z2lO05#X+Q*_mzt{0@v*r&-O$)owvCG_n|XF{x1`H1#sG?;lr{q5eh@K@gUi#$zGh( zOo{_19VfuhKWQx6^_@H7Cn8$xQPl97foYQ*LPa(n2b`PYlOp^N4-L~p#d&c2x#O4E z(XB?0kb8v|eMI1=(A6Q_WAoxRLcGoZ=xk?_KH(R?&N9`W;;|nX|#CCHa0+;>0q)I_D*#s%pExI+cA|WLK=tswWVQazVt&fJI)4 zaS<5(WIjq7K&>I?$C8lhShFfPo%qXIx?m5pH#q~Ks!b>Vinc_g`LACl2nPBwx0R(b zcanFi-ZjWJxc%I_Iv;ltX5lKGqCVK03PM>lU}9hC0HhA54mh`S_AC>%S$LRGAk zr&+zq>2bZs{CWSCT3?RTGm7&J+{3^tSfivm7S9m*;g?aJ5N<+3&+L*?d5?zZLfF?q zvWa=2P;XlLsAg3!`mlArpDM1PxX1;%odRdHeB=}}HFH;y&crmD+7us}rzySs-(#0L zbCx-CmMhd%&YVhT&MI6!uDm^FsejNi|DffHM($oWcW;ZN`a>fQ&Kjby(xZ|%753L^ zauicY3BEL~a1U>D8nFaF(tG^@BftDdD%``uNbAfxX-EhU2yDayENKl^dDS7rrW9XO z-3SLI7Msz9&`k%e=?SQ-!9W_HH0UIF@z1hnBfTfXF0a301TJ55@+|GRxZXVRC+`m| zx$CQ7;Pabpj#>qpPs0oLkPxH?k;UNvLI~a|tZT~6eozocprF=t|Fh}-+37+RMonL9 zf50AMIe#Wf@FMC(eR{ciVsRP07Vm?svg$uIr5V{TGn4rzZop^KfT84h5{EK+XI#Qd zE-I=WI;M%amqh;HW&R2R-_)mEh}k5#ah`%y8pE&ImEn1RD5QKl{pLs4V0bt>bU)HY z^|=zhMWYc?J?ZTb772}RbsceC*V9!IR+?u)Ntnq_Txgr(DG~|t7#@bv*kf9RP8}RqxFFw#3%-Q!1vi~$H@To%qH_48 zmyyeh3(d?YWyy)C{MAdbL?m~tCJF)gEjNtshNK5nLJ1K1m*&Rwzw5z@2Z&$ z{eSaobyCWkScuc!?9Ua&~$6)`b%=a z!>~lMdo3iI&;nM{7NLo&Wr&I5l|%Dsqb05LSU!I-*EJq9j2j>Q8EDZ*jYf7^M)C6w zkwq~3$4^skLlb|K* zH~6jX8~m2mLT|z-{I@QatR)kt6)Dyr9~>P+Frok=4D=ZM3YZ7S{}s>iHALxD#)2 zCj#6F7k}cXHqmHbyZNp3@1DQ<($cjJM&wFut}{MaXFTRIzU49oTt-)&k?!(8rur)V z^b6rvS|5x1>JazU=DHy|U@F$!RIlMRYk1w7n^-T`f9*stDLgi?-lCn*y58~^_q&Mn z?u@V4n>bbc4vdu9Z)P_U(P#fz85qygza8;GRF` z2Bzmm4>|PngYDlvtGhgPx_-`7kc;YjIC`a_WY3~(a7TUMJ5{oIFA+#}ZU> zBsp?&;g?zW6I_ua8|`FFI}_Bohm0$vyj#X}NQY$P?|JTpy#R!o=IyC zLL$*ccX9z;bX6A!=`FbEh+Hhx0&>4l9IyfoB%7(^Zr(^Xo@ZP9Sb^NqSFJPoc|Qtw zdP^1sjIb1E35hfm#@X6thOF}Jblk7{gxpzh^dEXXj@%Sst-*7XWxB!rSMe08P>&}o zaGcZyqdjScUEZD9zP?QWHfsW|*Gn^_$KzL?=fGK;&duUgnhi7>#|+vqZxfCNmAFGW zeQCg>bx9uGUEUc8d?(lO4EV&{=Y8$7`D1<^_GOi+EONAcr}7C_?kKa%&!+Yd#?A&q z4!`KBQXd9m4C@TG(F5{6G4p73Q={6#^W!e!<1;SNwdtK zIA*!T!-9-R9y2UVe`AJ45B;bLxyqlQR6-Aa1Y!u2|LlG#nOK2$JlPhmNo0%O?I{LX zcO*hD-g#~T@0o!TQrn^AeMk3KtxM*v&xPaf=;hhqq2A)Bm6K^>LWyv&Zt;ux)bF91UzUduqZz; z7Z0VFMD$z{!zEgb)OfVVMYO){5TQ?RX0_ezf|LRWi+m-kKfynUWvH#-v#PLRxvsom zlrzet_lnL|MNHJw*!m?f=kOY7WxkYBPsB|bxeha>p{gh)hsb$VzAIIav856>%vW^+ zP16F?6Qf{oYI7uW#!tF>qJ~Nj9EocHfKCI_Dt;h>+k^$C!2y9o7=8FCW@1*3bWS$3 zE=|}vIrBSb+*rpZLO2u+u4A3I3g^nTP!HeL!<2EuIACHiY?Yo4490Tpts@f`N8!W) zb`-n>1`+4TE9``@l$!B^PPoWjwpl2s@Sdm<#Ug$(#-AHO{~_mBv4F2!*TY+qpEfPQ zmau&?vwbRK7$vq(6GBV%P0>kJ0QVr2ZTfRLqMd1&gqMe|OWjRtheDrvYAI4AA$v&? zHRD^6HsuIUY$om%`AOy8aq<>0sLk&+l8PtfWhPC+od#$`_H4wd#+3IfBO9sl*inBBH$q?OwzGLGV)K~G<`KdF zyHEpDIM%!o1>#ng!cX$HxhqJG-b|`UkesAbEfcS146(+p${OPfpg~535?f-Sqf$2n z<qC@&O9xNXFw zD62&ruz}GeQb#~2HlN045q5-uKh7pityCsF&3Bi3q>PYjWWvL~haBf1@or`>)0`?xz=N|l+i@3jgbmQ?^|VBbutZ{JK#UD(6ghme$sItSxkz2+ zQZ|Q3?rVfs)ep6Kv(IIt2<;97wi{bSOh6a0tSIUmT`JeXnyC8==zDA@nG!Kms?IbZ=W4N)!i$p_X(86 zAOwEM=YZYbNoS_8LPTy>B&Aj{Ub@xrnq`Uv(ePSu326R^lH9`4gZW6V1-D2`JFa+< ztBs8vWs2n3Jj>Q;F*{>O8;<0+>{f1$&%PVA6z6$#`hBKzNV&mRglR-ccx00)DDb zj`KvH4`}$ohD|auEH5?2){Qcpls#!j$+@_YaD))1Y1njl9LY12jdSF7D)YPSWYzg9 zUFTWW{|4vqt(W>gNtYb8#O}LH-CU%YT-$%ly24qqhM4%~zFS_=cVW90W(M5tbGU5w zI_B=I{g%(_jYt{B-{;G+hA{OoqjNACOQi}pPFZnj#PO&MOzSl#*us1ITm$0!U>MP_ z6PvIl1qUIr@S4F7URtHha*9_tt0p0R+}^iP)iL@o-E%c5NOlDveyytH4JR2to_4sc#ghMTMM72=IYm#oV-ZhjGb^qPkWAH*=*T)vmjk2xggaY5 zubuwo8Xfr;BwcFh?rq<1{@b9J?sZTZa>g(2z~4kZ!Y_!2P>xjRZs0+i?czPLF>^k1 z=1{3=(9b0zoc@v?tTigvl7po1Fl~w%0hDR>ljUvM%O_=0Yt&huF!e_FV5yRv`T+V?PZLhXJv7}h$%;;@>EzTiohc7d$I2{c21>{E1eR#PNh0%Ghrfw@q((-B zm(<1U_X_87Bo*bLg-9gOXTrilnF7^u4*t zJ-nU;1eRbeViSXja*3gzGx^EYwmW8PPNtq0Qo&!D;yZ4pTnix96?FY6FA}0>3xb@q z0;ejNEEWL}mgS?P!XUSpmmh9oFtTqcwOw2;MDFOMJKCsNDejPe&+Y(Wr4~k2LNN)j z2td0^PY5bjIpU#ET$>_r8}AZTT*bUWh=1i*5iDhn8F3^arH$T4!w zaAs^D7|QR*Y8)kY2v!qin zT9sOIP-as>YAB;s$H|UQbMKp!O|&}QqX?+yb~0KOL8}`oBDC7YXq7>|{|~eZ(wvo| z18Lr(Rq^qBcb~c|LaT2vS~Z<&cz*i2|In)W7Og4V&%`-m>_dTv~&a=y$2~43c!H#^_)KUs7?mJ8$jRo2X+ab8s_IQS!UABkk{ZOnYJRZa++X;!~e=Vmqmjee>{DD*oEmG6WqBB}D86+|71A^nv zAYO@(`g;c5N4eab1nBYAN#rI8-9C5oTHiZ5Q>V)2!(;JU#|!2D-=KhfxDlK1916=} zftJ|uu37rHv5T0Rc15SZ4Z%UEC^D%xK{L>Kid_eXBHs=4;duSh9c9A)kwj-^wJ;*H zf0ww-tR~oHUfKbcv#{J3k*|?Wkw}mywR5m+sh-&AJ!%-{b~4GrV&IGmouE|Wo(|*9 zwGIsull*7nj7{I>mkIN%8o44}5x{5|%cxCMAxUxar0U=RlRjKD}$+9>xX*&D#Z(K6=l*-Hbozv`ZKNXhz@N zrig}wH4DGc@T#iaEC_lF9fLSYP^2ShU=~H}LbN2tk&)!jXS?v*{Ek%QK9-64Z?ND% zdVu6imnK~|)(2=49sG&Ql~*^vT|1^MxQ)rcmw}Pi^6eE*QD(?Qc8-Q!DtDB6AY$$s zn1YL|*u|_%^S?CiqKhjiwf!f5oX=i?0df6lK( zYD+umt?OqYSyh%uh`^T3z$sSVWEzt~62rk9PNF@2~SL)s6_MAaL(8Iy1}!`=F2}`bQ*nW9V70lJa#Ed=U~kg2IVhix=i20W z2#h2ACt|ucm0y+Vp! z!grNCMmvqIDsy8O39JnZ6m$J%?4ZE&6@~IC9kGNv@37vN8|vym8VaJ0>9OcbJ2>E5NG2_ z{F``}z;i=96?kzOqvTI73g%M75#BNc0CV3o5(M%q9oJ5B`DJE8<{ikn6p`0u?AbE2 zPgLyLp?L7fTlR?_m+&qKH9KRHxBjpb>C+@ZvHccjit5_bqhw?gr`TJr2sBg$K-zerB60(c^y9)-L(*nH@+lZXm? zXB44;Q=`rpx6xpNeC6i`>;HydIeW3Pqhh*2>BZORo`0lXEmEn|xFzS%F2G>i1vlSn*-ICxg zO5rJIPdMJ1!gD!ZNw`py%5x)|CDcyChfzLB=qW-P$mrve(ASC&|L5Yd3KyKjwkAKuwg0c1H-!Uor>_q+u|FAhYQL$#@RacL3gZP6wedn1x zP4n6dt{cX6{vXt7$IpDN_N_hc>NTzw|D`rwJ#$EXd~LJqOXCXvztpLHXV$4hYj?W( zjLXHJ)hRpA=Bazu*1LW%F7f}YHXJ|ub>Qr^i)XJ~IUD%s?4fIC8?T?;_VroU_h;9+ zLQ9?uRcs4MFNX3OLqqn5w1-06iO|>n(6tMpE5T6UYUofX)Yuc+77n@kLhGE@megOX za9@*lUd!`d8`6AD>$}F;`{{2s{@$wZ*l#bT0tbbxNUG=f1jYI13HqgsQArereTrOm zk!@ zFDoWTrNESdOfgM*Jk&g50+gAbFaVY_WSxiOZgb}p9*Of*!Vrz1I?WYaI#=wy_$}ykTlbT%! zJBMx8_U~8p5Pgz;KDReXo>b<*Ms=E?vqr{~@T<8+_)}V_rcb*J zVD8stB|DVPz*ng^xp( zUDVR{t4587SawOL&!f5b`^7n8^{A zwy8VnT|(!mx#Z>SbU@bj$CzVuo^8^=W&IA^UD!+jf!YSXlN!m4q?R8h{;!uibfs`s zh-c!AErCI;wPVXn*K?U=rY>p2s-CuI#!YALih8vg!7 zdm4@OvHZ!GJgfch1k!Nddb;mzv}+aui${A)(doxU6-I0SK~9*^nTGVvKuSy4j=Fbq zuS;YR!P@t|RE~-RR`Q*kEzbyXsmH_A@{`Q`NjH5MOh?1<4iZ{uctIaKiO+Y$}S$cHCyg=7U}n=77v%E56Cgd<+Vkr`h4%tQ&l;ZB?Avk zl`S$;<0^Z8&QggXFoV z+)}TkKBP`*$B8^W8eVh{StF4He)_UIV3Ez|Vg;R1ros!37oC%Hnm4-lW z4E!EV^c%x0@2AWiH>Xod2Nqw^m!DKksxsB#1WE`D(W{vzZ_$it@3&p+2-(UaKJ^)R zUX<@l+?ZR|Pi=a)B%(n&$NjipcXTx-&`U4L1q%=rjR)e^5OR`LKf0Xg{+UUiTduYg z*wh?{j+u$Xgbc&~P`}xo|XY%f_*8%NXbSTaz-oY=ZOWJ<6WR6P#yYI^9%k zl8-7=I$B@Q+?_iAMQdS_JIdqN$jZT@_CduwPZZptFrmW-W*q$kB3eGe@hWB_@g7bE zGLULhtn~7rd5;=?u`qq@*UZ70=bVOxZ&kyG=k^2 zzC26pdW@)>Mid6d6%V%m1-6Qhe&f^3@@?=Z99r*Bp!s#b)tin|_fsf=6#kaJgNQZq zKiEOZtL^H5IMA8MXsDJSFz%kV+4s;q{`mNKo+QU7Wn;Eq&dW@_LuX^*NRcdwB zOFOu=%VO6o6aKYW|1zG&arHTgZtCnyRhj%6lt!F@S*0oV=l>ncHNy*6j63pGmC!pO zF0aeUN)WaHI(w9QysFJ_G#oyPD)Yio%Dis|RuyMUycAc~Qde5g9A!-nhiP#T|5i*k$A^6S&V~BzZF5 zGJ-$UXHU#43#*$5+Z>n)!n36L(OK54IB^h;!gb=mNd4@lpLV#?FeIh#6r7i4O*{Jm zl_|8O2iXtaq91JVnF5I@vX^-1XMbYeQitN?r5=E*YNv*=Ho-)!jXhJkVwue}Ty8#o z-i9MC|I?Ak6dW^^;&Eyo5j<16VY1`ZI|;meQzFj52jA@|y-5Wt=`O$KRX7%YwA@Y4 zK&=`1j9zxjELlO z?xTRo8}?XfZ^=S&Z9M!032%S+Qc|8Sk zxik3zxnwo03<8lxjU0DGes8tH1qHa4g*0-n5}dd1=@F)5Aa8#8I}L#YqmS@^plVQW zDkk_86S!Ocm*LQxZpGh}_>3CvccZ~~kjqMdy)}cDOVYs)Ghit18p69ASQXdKoPSW) z3j#n3)XAHld~qCB44w#n%Ed{2sc;2h_wu4~qWzS60K;kvEzzr&%}*7bvE-MzF$dTD z{JE&2F^SR@5CuWFeplAAiuaK(xS3U_%0$3$uGi&4*I%_F5|>YAV=ZQSJJbCa)eqJ0 zi6UHz{Xh)R6$Wgg$RpAqc+5vE0t_~?5UFD+d4-V2SJBQHvnwuhMguiOUaxpQ6qo!T zyMP=*xB4+hp5HJOmlVa(WHYg9T@3nS!YeqfZ`800nFVDgflgH>y*ZA|m|f;!2u@>2 z-UC|^{3ClTlRY<5_lL)4tnpHhSA8t|LGfkfj2y*htS)#PfoUvGn3?fx)WFcip$X~_ zwA6&>q@|YmNf-4s1!XdUm1gIkKdb&DD{3#)QjCGp5e=oZ(k++A4P17nEx*i(8@c)U zPtJq?9pT9euWLwJmBJnw*S$=i`gNb!x+0s`bgoB4&e2m7&=eNsGLy0&r_P8O^20R~ zY`^!aH}5Z1DGw~bG@wgeg`W<+-}QOhWo^NL`SLdkeA!M3HJ~^a zbushH?Qq*|SmfhUt?A1Z#!M9AjvL#|+RIwCp63FiB%1?;hm6*dD-^~;d`mV+U;a`- zz3`X#k0VVaR}Q(l681v0XhdgP$w=pj3U6!dXUbFDoTjzyjxwhvOG6RL-Yg9<+L4zQ zIUHN-QvK+QPOj#8nzhU|o2K|8-{Sj#djoZCBbLl_eCN6O3hQqGjcLbU)uRq%{#4ol zmU(dyi=q-sR}k(BdvTD&`NO`5Mf@5`&<-lKddQAi z$IC)7awYyd7L1V}5@O|t@!!U9jEtR-ACqI{P5AFO=2-c0`s>DD{P$Z&tn788p}GQY zb);*MCNpUkWxWT;v-iwBg&%|EblJawD#tt=$Z>>AJI#CvUwhSwga7ELWySN%#s9(3 zzo)mYLspWQay^1i%MBEQLp-;}dXlSv+t#cIAK;UEqHtOjlM42dm--u;mMsbU;ZH5N z;f_BoUuql09B8%Yc1S5-M<)L*-PM)UGV(Zf2pOdXH2}HuU(+fW1~E@Mw2`>6!VgYX z5Z1RG5HJW=Vyqu0d#)g}NgV#mts&ikA^q;j%G+w@nW>U7BDHdquk_r|=Y5ARjDbVB z^s}MKhfiFX_vh){% zy_JKJs}5f-H}!p^NVrMaIlSrQj1UStaOGZ7Q8#f<7Ac0~y2`n)V`en;ERo4)RO-w3k@`ISRJB@&7K+LQ)K?wAcGZ^&l-iiI7njP>g^ zoGq3^7lg|?OLcD8nwyJ`J|n`GmJ#ed-*@m)QxbBe6YM>w5AxYyi_O#_ai^5RZ}zIF z9*`JokNN%ZjnyUuZPdCH0qF(^;*-OK>n=!a2ix|M{@_zXM;iyM?jWXl$dIXB_N)Dk z5mUVqB_3GZglkG|mgJJfI8x_&H}^ZwR+6k)5gJ_;8ht-B2b6(wdex?7*x_nf^A9Al zYM3ZqZPo;~Zk}TOAgT&KCk^JkauH>i1NY*&wZ`_yOB|5SU7}abU^JGr)BRUT%SdaN z+r3A(uvcUCNT^y+_?Rg8ju!uU^$2a!1vTnwN^@wAHwzOHn|H0IHBRefcTH#k zn)PAG%yAAya9E)+tWCIpG8fUp$>2-Kpwb%U3L3E4rRo zi+INf9)e$^9HaOz_+Kx$dgR?l>Yo`p;g8TX>c=iaOU#WxDZ1lLUEKAwrnz?TPm&Ef z{JkY}$U(&~idGa710i)ing+)=Q9!yVDI$NEh=ZWvv@N5Core4oAtnO*b1vY=^t_1w z{yt_SM=)8gp`E)ga7hWxpF@Uiogz0Bb^cOYOYdqMIGX?p7Q_@`(8giQQSx|ZJdp@W zVtGe>TG-GRe>qo5=}DX5e4W9XiYpQj*6A>J2>K!+SgYlo6*X`?TL&iU8-F0ygCv53 z_&XJg+lChB=~zaFU`U9R^R0sM;x3f5DS%K#TJPB6GBPuHkDn#}5)q=Q!hSM4NahiW zP3D&#h&w^goP@nip}lS6_j&+T5-S}lhWETl$)cszfi8d zAN?Tmx`G!eEMIQ(olgTb-1$lxjkSxJNE-;YyTqrykG22XktD~Y<}Kt8m7}KRpYn^b zCXWzD{3r=R;_kf*n7^4-X)z3<-8-9eF;^;~9Q_c*qJ1l9dp+i1O}7=4`A|?^x{&i8 z8>gQ8eNHTMA+HpRMb#>Wu~U-MD7q-c6iC1eqBBngeg zeHf~3%-C`M&nvQ=)ZFpCWvS+1ZG%FQGTg8K6O2qz1N<+0;PkK8ZAwOc)0Nl4%L-61ZT{*hr z;)BgZH4tyov&(H5X7;urN!i`F-L?k^VwX@H<5kS-a=lKaS;ipy_&M{Aw43C;0u}Cv z*^9Wvomth+7-)1r8k#GH*!Hu+!DIMS#li zt}?$+YARnGOCfk%I7+v5C6hf7U(k9SIGQepat=9if{z4r052lm2o|uUqnb*!uv~Aa z`d$Wob;p7iDInu)!=P4~)ZKj541{QEe*~*xA)5L?3REb6vKp24^>k(^L`3EFDtZ03 z*#1l!NK=)mfm>NmB;Pciie3DT4P8bHE(kPh=sa_-UstF)>nRW&PPK9-+N>VW3!P61l{{fgS+nTm67|Vz*VQTZemafVYLQq>#6H=Kx&TqY zce~zYxcVhxw(}MCNzK@XH9)olz)4=j-7gbXJ0Jw_pruQIRv0Zr#C#&3 z%3|UToTPR}@&+{5xEpL%m3*q=B>QBoOU3+a{>EmFxnRQz4cHT!VwWS1nx*72*R=angNdhZMvj+KJZkjRy@f#qZ9 zJuugScN5rQV4`gs3s`aYtCJOn?!`%b2ix3`wY@_pwhgq0>1j8Sfd){wsGO|0;w(Zg zPIj8t>8w%4B>X#`6Nv}^I*()b3=K-c`nhx2MMH8h?{bm>MP%c<1{Ayl-IY|2q2xc( z+5y;lpLkv#EJKU8HI5t(n2%4u{)%yS6N&!Ua!^{xgyC40;I3)jlMQ<5~-NNr-+)4#d`9cQ@aaq*( zHL-tkpv01xdtY#;1afo|>!nU?X8u!B3xhzU5yhHFuMyk_f$%Oxf6esFCdIZQK+>2D zjr78Z_#YyCqpk>KgtcoYk}VZ%c}x(yh=OWqC81EZ<_6@_NOnEtk?Rr4H1h}OovM*o zmjJE$6U;|(knROEkZ++;LlGrCbQGi0NFGstZa|UeImBw3OU@~C(&YzTx_MK)HQZ;A zto?FzhM@1nI5No+;_faeG9ijeRfr5l@&}OwH~LrHG@ z#DSU5`!3r$+t0cR$@dY*%`X5(oOVL_9PO^@R7YmD-dDli7r`nKHW1ibUD8Bv)Ccj|N5lbJ z)8t27Ko>i_PCo6xJhKw~^N&6W>1cBZu<61`(gN4>gYS2J=|?XtkZSP5j(EflpcALr zA!ZX12)Dl47t`@T)3HSbXBcax}X!fcFa@Hq_!1IFwY1 zk}Y<@ig`vflxcD;oFAAbl`qOH73YD2E9&n+;3&=iWqzeu{g)r&KgkVP?u12txEw7H zm`Z}^S2?^q`hK=|wJ3k7sMv7HP)+fxfTEfBPV^eaMCnP2@AFst)yu`R2s7!R`nNM5 z&!>Db!`He}SaI7)@Dh$U{msAA5-NO#j2fanQtT4>|I^-0`}f{)4f*x|ZSPM1Z+q8> zz0+dvK-*RCfP5|FjRZBOS~^6S00j-(vRO2yc$)k@d(MGJiWbyW)fr zwXQ#NA(bwBIrc85Vp{|qLG{Ka!O9c)u?M1WhxB6<7al)zZN%zTW1g zJzs+5l5Xh`NTTeD(Q-zuKd`%J4{!q=?ZWaz(DM8y-8Qr(-l+T@daSG&`Zqw zwicX0sDK!8?RK0EtGq9!ungKNbJFdhD~^3zGwB{Pv6xUUJ*{bf(bHeyX)OFX4(6H2 zuR1Wldm={8BA&Cbb%OL#&iwD;N0BI361ad<=+?)QiL}nq7WFcdIy|wCU~0!C!ccds zat+Q^f=XSDbhnBnA=qBW)fEuR=s+<>jU2f8RYEcS1$0_ebYF%igJed!bNr-G$l3Ov z9McT8{?`BK95L61>h~E`!)K(x;vk(vUD3c2O5LAax-6^SB-_0L4+uRlU zjNXAy;OJjn?sTOG1HZ(tqZrh3^&@!g3g7)fwNym|WLA4sg}1vWPMOq}sdYcYToun& z#=0@HkVYP-Q>gNif@FvEx4-R_kW2!x?s{wB_J#n=c-dW;NVloA4h*lP&bqPL0fd7nceRad9ad zf)|X>!9Uz_vvz7<+wg>c(gI-eD3?8P)7SD>CY`y=tyYe4Zj6pft=CLTe0D_jU-JNa z3k_+GPIYRg8J{hy4*mN=pXTp_pWRxWlixXMCsb>^<{Lq07r!GC36nRiBaq7HyucQ$ zT5NWmX9p|6c;SiEomjJ6Zuux$Ggm3rOr$_GVcI)~AnXc4anJ>`W)&$%+&eilRE4A) zQgF96?YP8fWv$msRsWqKwH8Q@Wt@=I%iG@KMX6ks*9hvTrY#gYmM_ePE#V-x3s0te zX}(`QR_i&}p}PrB?W15d3GPB#qUlV47(tVBlK;d)=Nbt%C!~6j9}t&-?2{ z`3V2i>x>0$wAXRFTZpMS2OE|+n{(($h$+URB8u8Lmt2%U!Ja&|?+KxfMQ&bB&Yk(&Lwqy;u1}i$l%i`N^)Y6z}L9SR41An7g>=AxO92`;UqE0&nENN)2rWUyxpm;LMA~ zukWQk2q=r1yDR^b*G1Wze;Ah%|6H zM!}NYr|ArwHD$1%#j&BxS}(*tc}&~Xs|EGViB6)G(+71JUvV?}U{{J5T6vXTG{rBP99hTL*pnZepiG!@m6^z8yDznMT;WlfJ!=zLoWzvIa!{!2=P|0w+u9 zLiv0;B3p$rXL6esL|KQE{BRlFp!<2MF*lJ?zvzS0^n|tagb$NFU*ic5Sf$Zf^LO+F zcA)=|QlHusg>IoNws^dVWo5je+N)kC#KvM5vAWab)^hZ>8r&I1HGIAc^YXV01p|s) zuNl!94$^gTU?}mW+1XPXzqg9LMuQ7UsLk7yMbr>7+JFT(}jdRg0vV02{Fpkf+N`dyYK%_Fwk?2G%!rsew>G3WrIhZ>Wwa#&f%B+)g)YN$UVKU>(o7;J^h+2p8eKPlF!cHc%bK;(K1|ai)W) z?Q-YZWlGMbTM8X?a~V_hM^1RyKK=ngy+IRiOE08g?a`j-r9zMd$T%v9Gp<}N;*V*# z&O4;(HZn6tO{f)+SB=64n1S!9X9ll-%&ns zss&ox7lwMN)6mNy@>Nl3f*NA5?g*s&)l1QldZWVFBITym7wJ=-QPt)c%5`fz&``8r z%7#<4Gqn#ZXFbGa_|?7x)?@VdRpB%GmA9zV7{Vhpht{E`^iq@J#wnW{p<)yn=lb^R zIs(Vz34hf>B43;X*F64*>L6APm&KQD5U?H)4%x`es@1Eu#Q9DLbwiZsFcwv9!Uz56 zU6Bu-(R2l8yfDaJEp8h0>|)rkfX|9C&#>YhL_-lj_9DiU`}NPE`rUkbvq>JgGF$$q z^M#8u z7fkjJy^fQ(k)kmy5xE+Ul(3G^h_l`b;m83EIgAZkne#5XxRz*t3?Ge#%sT$21DP3V zl0SCZfJ!i9kdXm4p}_({?{T3`B-KP{=Tg`=X@*XOY@$r>4=l>lcfvbHZo<&m0{rMf zBGOAhAg8&0AR}>=_fl|sgP{-hVJdp@UYqQ22uP!_J5Kw`)zZb2O0>b`~v##WB&_qe+C zgo|!Q zK@QvRLJ>I-sFQRg``x}be4t`fQNDD#b*k=?nBYuxu87{J^=_$2O<7sBPqH&!_dMfucQHEc z$MMGKn+(O*#UbbqZ(nvSW8GmmY7LW38k5xQx>g z=p-#~dl)2aH+N*#1pv=iTXsm4#fWuehHMfP!4(eXBQr>Q1Cg&diiEU@{6xe|pkqXn z$5el(yxIgZ6IIm;^p-@3Vr;w1NHOLI_#_P)I$+nz>EE?G_<5T35%SHz53}!-A5sJs z-`P1293^RUfUC9_FJG@P&aYSq-g0m5pEMO+`0zN$Q0aSh>tN3xaG&t)HDV~P075PY z4p=wSU$2m*eh|&li#iP*c!>HCAe_Wdx=-2Q0%Qy&v|qPNdIOEBVSy7v$(|NlSDAWD%OfyN^G?ZzYK&#B+YH;m_g0-%_p7VQ-v$gn#}=CgD%-8TfS59s>HkQakWz;D7OMEuS={ zU#n{P)u^y=weR5lZ+}ObDc@)(AZw|CF}0eygqBWjm(?(@+LLdN78`m&D|Y?afL}A^1_4YgKC5 zU*p0l|G&=d-S_jkqu6y7o3}5HN?SD);z?SXQw8shB2i1aGz3r!!!(wosH_`?3_7%c zYsh9KQPL4HcL_gt_gqWe6|}5}2SyHTHEwPQq5^iy=29;+b?w&8^?MkLkg6hj%2*>2 zJt!=7>EN$d>9`bCG|=U&yA7;0px?$Iag3>|o|k?jzPOp)yHfMQ_J$2|U6j!gC`TDj zQuljL{ag0VtMUr*yW&zx_f*mP>Yua4C9u6g1&G&7e~}r9;~K3f4wqECJ7+}|y(Dt~M1(>BSs{T$Nw!eLQ+)3mEp;X47IsKKmpMs%V*HQg2 zumk~|bS+(dNb-k_@(+*D`eRl5vTFXBp05P#a*jUxDd8vpQNP3q@AFv{n&l$3D{eY4tJW&vpR+MX&Goy-q`! z3jS_c=Ci*R#MWM7N`{r-v>&5o$%^b^b1MV7V+E~Hs7IGubY;uklnL#HWn|1={TzAA z+dO~Odatl0a@`l=?9A&B_4l3xoeTYz-G5vMI8>rLF88;x{_Ff6XqGRslh}7B)=$i) z>?-kBEY|D~m<_l%$Sb;r!~(~g*Ou+s{R0{FfeYfsl5Dm;B7r|PgnHqL&msn=I^HDg zfdlm#>4Xwlej%G8s*$FZ`n7tlGORBfG#bm1MFK3NXrQj&miv0miMVFeh;Ib$XqD}1 zfuG_HvN`TO3>@9&i@C4&#!6!dmh_nIZv}xu^xTruV>!kCJ;CHj$?x5eCp|!oCo}5) zayELsyw=vW)3~>>cx-1`f1C<=GUjZtLSO%k6?EaRL|CnONy^#cS9CcYOoK|ti&KP3 z=W?LZJ4)LUA&Lt`FZz!{1jCrg|49UMNCe+ABwhLnOiJJi(74|##UH3XqCdRv)#DE* z{@AM}XrRMKhJ}q49{t<)Po=qXRs6Ln8grw@ReFPfFhJ zd!3f4NaRC4JM=Y4WQsou5_wX}ViIXmCFZvH52C+2doJNrefGA$h`MybEou(C%Fn{8$b6I zY0M4rO^&5u3Z&)s$gdY=o04nc)=-$^XuCPZtGvh09cP#F+V1ZEQ$bJRx!^?Q>z+w- zFLM)aTg>+M@JLN_nfeJ51Tv`!3bdVIEZnkclz~!{XUoCQLx~i+~0HVY?IgzdRk=FO)stRxEF=aqA>s zHCK$T?kF-x>cx7TB8%AE5PbzR9wo}^1c5Q*A%bDGNaInT3I#t!eA{p&BflX12w$h< zuU`!I0~AUj2$Ma?d3E(d1nJDpp{@Obu-Hh)D`EZXqZ49ImWp$4V7>|bN<>7OEun1A z7LMu;?$p&LMK2W^Jrp6QeQ_gR6ZkbOK23lYmSdU&{+bNwoEl+?hIt_D(qug;E{t#5 zD6cCp{ip96?()ROdp}n8GY$mkKr#-@7eeVLa6qNQfkAw3%u1Yb0;^o5>nJTu!75(~ zD04SQ%nk_6bjWK@ zi~h#yQ=KB0ezo?8UjV>cP&r|0-xiOvkTZB+dy`q1!eEcvwYL z9)(_f)=%`!F8zsuUhF+-*ws6#2XtDUD$B!griyfuB`gU-mB4!w_?afYE|KT_1myC5 zQJ)RFiXmqDo8T%1^|}6D{gb^1iw0-^`S~K#Kt!rXVJUFi@dJMZsM<6n7A6wmAkWLO z3|R9rz9)EI&w8_$n!b|1QFA*1$>g)8qse9?t0&29YKbj_f!2j}D5#d(mJk#jY!*ih zv(3QC$Wv73w6u=I2W=kmpcWnkF{zYa3lD6FTZ-{~Xq){j|HC5ct7KJUXNb!-Uc$&X z)C@w?gi^GQvEXvubh$s68}5!9hqE5(G^~P`%KwFqz6kJ-fjggdF5C0Q<1(#se^$G$ zwZz|^?YTXyj;yOq-m>z-aw!R+++xrNL>@ZD#K69O$i0gby*BLypIU_)+ zJ=JTrU4dtK`rtdK)~-k2=HNuMYT_p0`P+Yw=hvv3>YaKpzB>D3IYyocHbs$T={i`S zRX=P6>WltUjESV}SX22;aLE08gOdhZoF zYuqyZo8#>-R^JiO{sd2fSG`|9X*)P~(z3IA*=@Dj{Nfh=PC1*RFF#RurTq?tFuW0= zcu1}Ar|DDcfpW4?tXf2D2b0bX&K8!Q?@m6rRHD)!~r zDfGy1+1?6l;h_N=DaY44;$g&XrKvREgM5pD@}R;(GbrZA5;*9=-Xyf=;7$=gi2i!kAXiqO)0bvNGbf)=O%{+z-j7$ zDefEjpf3P35JaWnH>RluPSwOzdX1DmzV>0XU4#3=b-G?Jl+Cy!B-#dIqAckAjfs*b z2(cdnsD!(Lfx{9X4>qkc6ERIsm4_Kp2AW+N@XbZUoAOOH?lPnId4;-x+>=e(l`t-^fS?tn&ZG(mw}^>4;&qSNEMiw}q{` zg0ms}KjT)@2LN`ylYZ6s*{RfUY|)s<#4)Q76U%ZeskZGL3(EyUyyQy-=swD*Yvv7AdH#FFm(<~AF0gdQr|)3L7bE+ z*~FJS*qC`KFwc~ubB5-&rT^3a|cw$4_}7b;6Gufo@} zYd(fxdnhhYbcF2(`!=}t;Tj^v2Le#HQhXr&VeKoFw_=e{P+?Z7LKpS=Efj2;VO#9e zI@kI zG3+&ssp6A4*?vquEA7YSzQ1v1L&mIynrU~+bwBDH&-QaDpbA%$6TEzvz4izwyLN@y;-hNqp#@=`r+=o)SMC1nhxr_wKy`HVoedTk7D z!TX*e;~JNW%^acpG&6VQS!6qZrU5YxzdRJz_-<}O7*VGyY@mXuq5%dx8=qj6Lmq_sM&^_20XaH_0Qb{-=*rD?ue>3_J%~A zq>qCAa~nanlpP!wjyk<|#6Z3@+8Q6QKdr1$1GDd{Zowba65rAAtS7`E%)9z4I!CK7 zLvvuY^j$1O=@;=|qO}-E@n5?j48V{Q?9Zwzl>eY0uP6y;D3n(^=j|- zS4L1RCaavC{^0SrC&lF~HW~$uV0cm~SL)R|Y+T%xtwiRL%V)3{Rk8$x_ z7V1fGxs9ixPg+OZjldozcpr(^rzwEX4!nm9G+}pXR>*ji+erfBCwtGgkdbEp0V{OD z?H&LJrT{N$dEL!8&HXD#nl5D|Ab?vz3H?7xCHP{10+Kqdlz9XX*LAl7OUAFU@^`@g zhhL(Q@N|_H8K=KqSo`$A)L*;s_Pejv?jQKduU)tg=RP!e6R1!7n~0(!`gCfYoBJ2t z6k@p$0%S*M@U2wBW6|!R{m=7)_7U{452Gl6(Hoza`# zo1bgUDQoJ**U`QmkA4C*;}eXzWCY5uhf2KPSQG3>lY6dx|wYlvHsJ`$61#ni-5nE8VMiV5% zAZ)8i7+03CctR`EK`GduRvUGl$=xwIVNO^P81YbGM8{z}Sv%p^4bubP^d?}ES=BVziL-x>RJkovb~++HwpYL@lrjfBIa0CJOS9l&(#Y`+H3V^&<8*7V_4jLL6c)_0i=^~gDI@I>G&B3 z_5o5nRHmB}{EO{*`&Zq)eGtSgrH^)rL2V&I^hx-NPz(n`b>R$BFxpIR83pO__@y2l zpN1XyQ>>4=5$#wv6qQFA1@zM!XRFQ+*jIErMe}P}f$2u0mvJ%>YGw9xd4WQ!!x94O zFZf5aPRJJSkb&7gpyXumTiYU8TjATMMqv!~RD-G)(BilXs|wr0x?vM3tV3ZWSCNX8 zh%l9A$v5VE?Snq;!vzS$OXX3tx!JMJrhu-i(1Oby#L|%Iba@81kwrn>8N0VqQ_Bb` zN*PQRE>-W@^B&OY?1)=}>>IK#fv0TekqN^cUnEE@dy87D? zYoSz}u09j)++KO6V0yqITT|yS&P`zdglk@>lrw7daApky<7%Jus$7HxC(7DDs+->8qTPU`2*{ zxO#B9-|5s1&N%lq!6D|m@e4(;Sq*Os-BC`fI#oRezIaB+Rg=kL8TOg-ei7I=$f}FB zoZb@dKq3AR=?@ggwRy6b3!SOfS;sf_MI}}W);|hItLevK^T=(6kJ%9{f3uxY`yyxw)mIeQUkYons|cHa^xp)AU<%VV9DgEbe*Yg_aeph=2J|n$ZmO_$ zFt%-9`j7m>t#?9SHa;o#(=?3) zuB9@xL(F^znmC{WC zkYJ2$zj^SVW;g@YJal1yUU1%nWZx9T#DOnVyXOdl5S9u!cjxJ?}Z$kn%jsz0NenV&UznkwE=af21Ol+5Li z>~@JwxI|uhgSpE`B=$3)TQt@~8w8j>o@~+w8qHejN-N$g#$Z9tJywZ=7T6Z{;j^*( zjK&#itwuxX8azoaY0$-U$UMjk^;C~O(bgDuh%Eer`gdqhdiU37ZMzbV#kI$5<5~(4 zQdY%57c+I*yBvdyM1D1Ii+zZ#p>$heO8Pli@Ux`WW})a z#gtqR(#*{izI?pM8jkYUydRf3Ve#JrkyA)GEZ*_ySL^mA*FTsIM3#KYFrm3LJsK_+D)wIp(1SC%*gc6xUx(usF5` z^6`4ZreV5dLj)$Kp!o{Nb7Oeq6on4loFTZ;2Ik7_kL>Y=N|&yzI4apt25<_s&rw}G zYyV+<%2+f-!W0T*we&GnZlSd>S)Qr+p#&yFBXdZ@=6c^=hTplT)gu>z#=Ogavo@WJ zcMtzU^YU7$XP3TZ8jZFU(VvEH!pLxMWfjINjidx=gKZ%=BDAQCff>LSgTQ<{tZxf4 zwScu!ExBQ`dvV`$l0E$k8+?Nk&)0Snv*3TZ#)VVZnEYSox^Fr69d=zM#>B>NF2(H< zQ!}9Za$__(TSTN>@Z!WvOwJZJUSi?Qj>j_V)o>Kh;TAx2+Xglq70vOc;nLUyN1>Ey zGR>EyfsQIk8sun@W+a=ANoyq-#x-9uw8)c|(Ap{UNm{8_y=VfzM{%7JzUk}#+-z-L zr)??ErcI!G%ogpn@r%=06zWwQfvg2jVs2$`+6{~AD6QUAli51$WxcspN%0Q>R8sc` z_Inpyd+bvtW2`N3hl_Th&5lXZ^;PJyRxJT_A+`{dFyw>#LB);Wxu$H%msQ$tHPjZm zA3-!e^dxsQNd+DIB$`)CduhgrZi*WH@zY>($39O1-D$`=Oh2ZeOB(LO*Vt-gR@LGe zVxg$ngJaEuyQJpi(?ylZ%vYQcYAoCs_oS@7rDsd~7l>`4q6zvT60k#wG*=HQ9oOCM z?H}AxIJo0u&mA2fvRkksr`y}@($|tDewcLHAQN=jc_B=N$o4tD+X!ziCOV_{3}^42 zZqekOw=fG!o+XmeKtx>ac1<}20pwGo`=VN6KlJywG;s58?Ct&Z`Oq#k<%p%(y=O!D z_1&=YHX_ip%68F80jJTqmuZ^{ex6l0{(`E5c91XWRz5T1R+NS@3zI%o+7lNw&}A$i z8YY}T_s@Hl_>_* z>4?nS?|b*x6nN7}B0OhoKafOl6LSCN9dU%ee^d2D6&bBH#C4^!c%!*3<>Ie^Nak%XjWdT$?#f>Xbc3eV0smTT|n1aY^T_Z`@h>hFQKHQN`wr z-Qsf1m2CMFPt@NXvwR`-$+V2e?;5MwFjFq|Tp8ea%l9LH+0-~s%8AXoQ=aaLGInk9 zU5wg0Fd_%=Ggwy-Qd09qmNNxuPs(zJa6qKAXDSXniUa4_0i-=svFaWL+TlF%pl-^8 zrs2S99O%J;fUcv?BeYs+yCJ>JGj7U%o~^3}kLojVF6huWSS7tLlxAXb_R{2>R5+2h zlbi_e3JqCxQC(ReXxya7?2?rnoqIsgAF%GO0qgbk>b7RWbsg-AypY*tKZd=8G$(j~SCw}n_mA3dZ08!F6F#YOfp-%=H@37Xy`bGV` zg8HabIKP6?pAyoRrHlc9!SN=tkND$HqXXLFt{2cp2!A;JctsF}7u)Mc*9NnL0G|ll z+ga0If~yoHK`k0%<#JHNLIBR}qMBG~{5!D7?D8L`7a(}ZQFN*1dkQ_PPKCx_ZyVk5 zl@Pl?6E=zW1`Y>*r!A}W$3df>(_T>}yO#sLi&seL?9!ItMH!IqaOBUm&_WSo@2Nu+vAu~Pis0SJ503*-Ke z{WfZ+72A2adi(a`#cae=f=1um<5dMoi|q{#&yBaS(;%A?tnX+#ZkgJNO`!T zwVLt<(l{^_TRz0I23f}K5iGbV*3SBAwHlxDv7u-t>BOFq!{T}iF2N7+B`gvzk+0ZW3oUh(B4b@q1A*D0RXjd7 zh=XnlKy(!jY?zQVf&w^roIiJ-wx`bHlB3Hi1ja%X6t=wv0)w=j;UfP z1yP$>r2U#4?xl3_KS%OwwTm%atdzk`KUm9AE_90X!_xb_ni=Q+Vom7Ka`?A^&z{uq zkWk!z1(z(8{h&e??H}5*zu{Gif299|T=MpZgth%$#0)o2RDBgXQG7?p_*vno2Pp*R z{NkBkW6Y&rlYAxCv$Cb{LXngA`PZI~n`pP|aW0mRW)WY1oZxxa5w9gyHmR zDjT*5zlRUgTky&x{CD-gZb0~MROR$Klogs(pW8-lI#RP3Pqw>4d(}wp;u3Nfm*6Mc zGrf|Ww`7k7y&pd2m(rj&jw(u+IKhVip*LxfczZksy?GtR*H4ky?EqG+^=kp@BvA`4 zqfKDYHpCdL`tlQ6hZgJUwnAs*}ZF&U$?x+e*N*YCi?a8Ex+!6Z^NQD@#{`%IB(JI z6oh0_VAtqL9+q{%U6Y?=0zJAWscFI`-Ci;%{5bc#HKb#1cY9`70#pGGTPl=bbZY)e zc~Jm;=*hC^1$W~(ekeJEzjgLCqF+ywml|R6^7se!(NAuh@|U>FQl%i`UrFHbsWe?# z^NOL6mvc$CMJ4yH5H8cJsqA%Ws9zeaEAv+jRph1j_oeGQPGxgha5qL#n&Yuvog|Gy zl&p{;k#DfjiG${n<)k zZQ49~;IHCu^9M)i%C6wm6Mro2&Zy+bO5tQ$MU=82-~PZobq%`H7JlCLoa!V@8)frP zswbjL_qsvubr}#(U?!>XzA-A3AAU539SG0?q7HS?RIjAx-RC3v&-li12_qI=9Qw}* zM^DqZf=xe1cY@QMxS&1JqWv;YdqSdUm;X=o+qcKO)cb9C=n=jVPS3Sdsn@g_*CuCN zTbCKV-+!BtL?&dNKQwz{SIn^~qGqKMI$cFS^@dl^1*Z@k0$5ozCw@cxYrGtMMR5sV zg>AIq_N#zCpGt}6|-l*hj4+~?5?e809%ZJKemx6y%+0WJKFiO`@6_(cyNrI@7a;QnNJs_T&Z;Z z072sFbKks}^_uZi&CB@7HZk5;@cb3G=SrRD%8BYL;c7XysYc(lMSt)%0{8*0vb6C1 znnT`tv};y=I!r&^8~dgpZ|wW&Yar^yPZv4YeXt&b7@S{K`}J{} z?J-vi{i|&xF|D@UBbp`#&f?a#kN;xymxZHOO|0+44`7m;j>aB3=6KN;>wOurz!-58 z-(^nGj$GHg_ki!q2LX4aBR0|y8@c4(QvGX9{^wEof276OGd|(`m|RH6nh!(kzXl&t z1oUW)_xgVQo^$5AeOQkF%YO_%|Ff?-8TM=ff7dNJg<8F77x7Qr>0>h}Z0QGALt5cW&l{Tx-G>nzzTt*5z`3Y-z->M|0v4+Ng>NFfY$=iXXs6EAe z-evLHRaP&`Jw{NjPSgx$`VRE6(1q*>q+5C^=20?3=Be{3EsdsWz8A0`t0?&p znJ5i;3LXWS{4;G1e37}TX;S~Jhm^?bm_QuZLyX20Bk)M_uboW$UF-9V6KjPt>kZ}!arHHs?%S+KJIPU zS+sMwU#cJ7TbLU05LEIw-QEJ9=AZf#H2#tOp^=R}0mSGe#OO{^jIK8pF*=o!aR)Jg z$S)2>17g^hgP-ev)5@?~dppm!JrnnZ*h;%y1F@(YzEEHZRxJX0BL7e*9EAYR9*WYf z`i=iRCq2I}>-*T-3mV(AgNeQ+)0lw4IBurOZ$V^-ymuF4sH_}^EzDzs0 zgCX^t2SelceC_UkUtA&7t@}0GW#=2}JIIk3oO?-rS>YH^^-9{tA=(=?F3+&FIGgDz z{^nY=6lY2~S5T9Hb*NJ!TzK)ZK-U&8@L(TPjQ(CB3?(AivDhqgr5OgtP-#?x36U-{ zB3)w#Gz^m-0qcli!*jF(KJ$3{e~O%3*!smIb)SgTr*0uAJ|6Lv7Ooz`$Sr zL5Z6)`1Hh?)LV1xnfkWJ;;J(c(K2gk0Yjp8le7;oHK#QcR;IKv7rI~WKJSj2G=Wsh zHVR|RR^VE0$`D%SNb!w`=56_umCuwHCw#o2Fsh`))e2w`ulH+7f&u zYnvEQeTHp5(XH&FBcBrF-Sd;}iGXgk_)<}tFi@PUTF%|4`$v-foRonRviv=-1qZ8+-HbO%8gRP8YHP68==Tfy*T=gN zJvsK2mx0DAJFiPmP&S6LHxnz)s2RwHa(P>sOenS4|Eq375WY`0(M!LaEfKtgSR%nn zsf)g*^JFVTm-tVa7lOMdgO*9-m@O|}b~UVEta~0JlsKb=0bQ6*Fogk!O)`B{q^1bFhnx3XgNHq7O7ZYfsY>z+_0?;*A0HstQ~ztoO>JAbUcuNmkrQX&0K z*=gQFQ(9dVC~N4J#)Y=EEsF!)hsvCFO;K{&NllUc;Z#jL(^y>@R|vdb$uUM#ieYM^ z>m-;fGyH{)j7HREp@WL7x--;TxIAtb>gwVdQ2!7K~1_ zro-0VqHkC&-rPRi=j-C|&MbKv*lc%O%>x==6Fr)yY|?Ev8qP9eJ&Y5#G0QU}?sqOm zOM|kTt!0XR)jF&lW#~Z?rh6HndRx}}GYJtx5bJhx&qct_Id{g9@Q@4fbi;0z;Z0M5 zCB=NPmW)y?)?x2#CsU9ChfNGP`tI2}De>{eSARf90{vsN_;fvO)KnUT zybW1(?->U7cv9-V6rdVDX;YS7J>W9E<7;8SSy05o;4P{mNMPGN# z0ainFtPXU0K%U3vhWOo`uu0W3+%rtK=XBSK3C0=r+si($U6|mRakKV!JChHETZDW+ z_$bJsTGnRH+@vq}?=rvc=GGcA7KvqQeX<;J52Zbe0rsr?XoBZSwEvVU-UtCJELO(X zFD)V=Kr1>Jg3=WCmw*V2tD{soA5$SZ#%SP~GREPf&0f@>c;#6_e;CgjRghnxA8Ku!2JhU6M39-S;}2T?Tn=S6}^`@lfEpgq{WKP z(e9sisk`x&9cXHWub`<_H@@;G_LYwB(ksGyJPEqH(!`y@-fB~9LJT=9z57Gpi&f|+ zo*^8Uv?I$u-i{FhbJ-uiwCd#6@gWXw(+98}utkGBA~g+I@xo}ZSWS%noAnI(Mb}Nr z_#2Wif)t&*IQ#;f`P?uU9eaoBnm|QK{H~_+U;40%J*m=aU@(bm|LoHN29@8Ar{C7J z`DN;aTo;vSdMxg7RrwAzFbe9wf=<-#YwCP3ZXPW%e7HL9N!8XJHS}Q=d4Z9pX%C@q z6eBk?t%>ug&h1bWM&3vtS`KzT6t@%~w&I(Q$L&&?U#+1Jhth{&XId5aAU*_U!1P4i z9##3P>P&oSqYr%tJ6FZ6#D|~Z!zbfFCGctueR$Zw^wLNschi_XuK30tqxoK6a}+x8 zPRr4^??gP}Xa@#VNo&a;MA0=rJPY_Zo~X#ZIRwrYn6-8bBHeO{sVigp6!|_vttXqfcph#8t((YM>%=qox_Y=f z6-4%fx_;&mRN@^oZt)@N^roGOngc~;)9^T07g1%;s76}LqN0*Nle+u?t!&yv2`&8Z zG1{9f?}qYTsL45Rk(_b@U;aY78uZME8GI&6(A6mgFW)RxE$<_!a%#mSOFFMxP2PhQ{WLO&*>*k+NFNPlXVzk@6{IP}fG|z)LFg4MXSVe!lh(9W* zf>T=tv${lHpd$E_rmqR-5krg-(B_h|#UeZWD$ZU)Y8{6mZ=+PBEIyUj6VYh~r;yvq zp6fxpCh&7^kvUL+?055*Gv{hH;OWtai6WV^g)k830s+?D(b9Oz$D9}P=`RCk=4j80 zCc|5pEJx#^x`wbas$$o^P9X(*IO%ZBfQE;0^xOj6aX$c!QZA#pj*C{78ucKZ z&65F#Fi=C2jYk|qhA!-%fKp0Sw&Wc{sxge8jVj7+@3%S4Eq(0~KIsQK%f42HaRa&r zUsa4S=4sBoi}};oTme$OUy9!aUvcvrP}So;qy5H;{idc0sH}kL0H1eW1}gO|I_bu9 zW4BlL1q!=FjivPVA?RvDL?wxim3l-Siwolq;a2ghtV;F;Gy3c~{C%ON6B&0?6p@91 z*23ohOza;S@WOqn1uJ~TH3J6B5f*Q9_RZhFF-Hmfy9{Sw#xd-#L(6>v`Y3rImR_UD z>vMDE{W9+PmpVpY9(M2Q8tbd&A1TjRCUQfTCdvN4>bi1#i--5in7c&1;oj5kkF!j< zz7M%#Lt|wT=UG}N^3Xd=fEZ{5V!)45YM`5PW0qS@DUXxvEdr#~!;GMCtn`s5k%m3= z!^cnCQ+bC@;mwe1z;HoJ!SZT|a;mFICfiV*Crhb41rPGvG0B&b0 zXZ|cW+Kh}>*<>&ikeldwsnnv|i*aObe7*w8ant$k6mAJx)VGZu2uFF=y1pnIV_w^W zgiIfNjZ1WRd%z3KgNn)A-1gugz6_0!s1{k_zJ9MW{gK$$spH1ePrm4r_b^z1ZZw(|7I{s4yOLIwRvdjGVcV zK?!8u+R0yypzT#~I;rO5DsF8NO0rre#7WuXPup3rCRB_2Syd@C83OeWI8PWs2g$-*z`+>`L5dG&CY-OGi|Kio62vPaS|Io!5%=Sv+mpfL zSv$9HhH#Y>Jak)f_?cwWZ>|Gw%^yP*++!{OG)mbstR%MuC{p;9@yVR&g6`@-NCOHU zDMh}!lV1>@G&X4g;1ALsR3a}{)|k7g)HPsVS>uWUDE4hg;>_Dw_Fd**>*SwoNjjIb zjJ|LP#VE_z7c`cGrI7*i$_`(kFQ7WO(#>t9zJ`&c3c1LKs%EQ>d!<;^yx#IM6)T6h z%agG%*orrauiJw6_e}ob)cs7%qFHADfT&aYggu1EElS-}=zH`Eq0Lb4Q>a_LpQ4~0 z>a4oB)CM7qc9SpI^oyD=mGIbCG-PY~^5DVMBqwR-(W&V%+%8xgEj#|^L$I)JC&fmG@)+u<$ z-H(a!JVl#P=2eO96=BNpM|Asyu1_gJ4=CJF(rEgpl$b~ZRhGJuCoXP?4jJpJ-#CEH zByw{z$?#HMdE!o0kq@#RlR1=?Ls86Ddd4lKW=9<{>=yKe@ne)+uZ_0nJ+hwrs6^Dz zF+lIzM2)Y$T15Vv7hbO)5Kg1gxHddUL)65p+{9k#f@dRAUA|$YI1xz-6P!+ujJ-== zxj^6E&+f)GAMxsgZBIYP{|nchr2JL|{nl}xo(W@c8wq1pPoeKynw`Mt?x?H-QDzzq z(iP1Sy_C8L-*b3wVCJ)Z2k};TEi%11g0}z$|Lu2_ zHrjwOZ66sZ6o(mQ?wOwFOR&`ZXag3e_-A)vHvdRi$+Mqdj{!YhJ(}MGJ!}a4I~SXX zZv>vri`?+yx0%+^zTv#;f10ATw;~jOzB6{h| zS|sb5;C^LCs!^umr(8L>mdTlXH1=8QNOy?F0tsTygW8n`4v)Nz#H#R^=U`y-R3RN% zAElW4pg)$|itch8C1=}4XS^i`n|gLl#ZbKC!gkMWxH7yZ@QRP!7xUGdUgJ+@xx^tb z0vfB&`QpmaR+G**529V$3)7G~HliG>oTiAVx1D5mreoj%*n2pB>rSM zed}dri=zEbu^hL*&t`i%-gLD>^XiAjjNvQrohqmN%*o;Wgg^SX22oUMDZJl_9grm( z+8g*|+C^lZ_2Sn8WZ_wJf}+Mf=))X?n%^k!0TbUj%jGBM0G=trez98|Dx$hNO}1qz z0qCvzkygY$(7vN`p^jQ8IwD$}aGsqY%Zmj%ogwQ>%H+pgumi!DM0+stu(YScmik0A zyZamODvn0=^@r~eDnTtfS`Z9$FF}^EFq?Gafp@P1(1K)De&EFm0@I5|c9)&AW zlIFS1bsiGeCm<<^8FtNE5fhv_Zq;HdNO|hy-_vON*=P=z-jXOif%9>(huBC^zpHH* zQb6h!j+RuVk}rF#j$97-t5BbQ>r~CdBy9u{ZSSJhzWa0(0tx0p0lEe&!V4#KrBMlp zEYY9`Xwa>abU;eOUlIBX<>G6rDY9%nOAF2e!ktP zPt41XZ|P_^5~(lwtM{?7Rygq=MCE z4JgdH&)etspZS(F7*}N8o^`6UF^Z5G=AJ%DKVs-Yvldxh?#?~H?=fzkX35&r$nP}P zPs_-Puaj=_nAk9u3A_?BQ{pnUpaPt&iOX>G)0Z7BaCizy{8jD!W~#NCAvAm&F?`hf zBwfm(rjunXXtxJ9NMVYQ&?WUv0(AA(xwC_Nk?9$=72g?<*cHWe#oRxFuqCljdI1NS zjzO*<(Mgx401bjN2xTCSXgy+hrtsV#N+QS{A{M~(VDJLj$dl%V)vawqV>e`54qMz@ zh52!p6Zc3mM1ibd)Z(C^@dn1=)|lpvXEo*f{okLpgoT&Jx-(Tx?#60&{7gxwquXQ8<7ChCU*i7<16*;I zBW9^wx9i-_8nq@RV>YMm931v!$=x`=y`Nd5eFTNxilM?Hsmfd}AAqs+?1Rixyyz35 zs|9lvQP#%RRkJ<&v6+pctu^h&{Z}o3UN2oI%UBZ%5NRdfm+YY<3&XjrF`jf*3 z#Qp!{rR{yD=B7Q_%I0hVizz8`<{4V$^Ks=FmXh_;GJ!1X)VZt_k46)=Ug~lwz`vI9 z{Jn4qYVgNYG;%e(#0Y5ZPElLELqUyk+69)dAXld=s4+7+qM|D641XF1J7%#4*(dUI zJ@YWTYvWBV6fjf(E-0DB1}l4`q!~nR-Z-wtBZ+`IspWms?%@g3g7@xy(`0^-s3B6{ zrEXlKlbVDDj%Oh%6GkZ~`uKVVIV|18*<`9#xU&!iET;Gsfo3*ug_!vG*X9m!PBuko0u&eK@D;?mv>(L2dPPPe?UG6(G73OQdQ=7<=tXc8TAiQ zWNa3Qg~a&XSQ~|GLmGhG=#)&ro~y&aa7oA5ky+E7C^S7WTXG=>^Hw@Uq6ydnx(K$clmx9@P1H%|qSv#VNL7vGf25VMO#o$M* z%oErRNL2L@{mH_4l+O`&8TidLz}fNho!WGQN-m^0^&%RT7|H><|7qI-Df5vG5irK3 zik#gJMjCEvTm@J=%+;ip07^Q2z*q+r6rc?Vhz5X7y4LpQ{(nF@ej;txdx%i-#%Bj`Pi-yDZA$p{w zyX`3U(YfCX4Zapk>Ahsp{Y5)ry!|aMBcKHUTEN9t_R`uH4|m!aH;L*@*7TjyVDugA z!;KeJ;0nCItu&<(eX5=Pj;gZC4)8qAjLOl)FAoP2ZsP!6j!bYHA-uI5Dzc=LLLMHY2njRMX}MS%<3B}$}QaJ zqs+z%{mm4t8sFlHHyivM<5ajbx~BC4$tbm#kCw#gVh+V<@GHG%^5}Q7E1Vp33q`27 zLZsJd9uofRwddCLU0eOXTpL>lKcO?@Ebe=oM!5@Zt%%3Eim zB}_b7XJBP7KhBvRFpNX)4}i831hX>YDzG;)kUIeY4AMh3R0Y_8 zAvuJ$lW0Mhhw~k(%@?$>$`~l)s`QCrb2hh5FI&mJ(ol%hBLHkY-5QRU*F!>(-@}!b zbPI*I(N-9c=R>zZMoSR_X=5bL{UqBqGjJq2zjw=pB}m_UkmF zNv^ytS@jXjycztYO1eKPA~It$sslm-`b{+rg`ux^Kc1D zE0No1n;Eb`s%r3%&kBwXW?eG8!-q<=nrbA(e5vf?t;68B>}muh#ZQP;wRP z&G9|et=dZA>l)1-(n+jo7NzFU6BT2Q3JRE5v~ko?^dw~`==oHGg%1H!cpNk9Pgi37 zPBzL8j`pBI^KO9uY+){X!^reQ?&d^CO9QLe?-{dO`}cg>&RC5^#ES1jVMg|sCPTJ@ zN%VA|z?QSin8Kbfu*#1T_CLSaD)ZM0BeAM6h7*=+Z5Lzf$K;)G-I$;Mt1d;@@Uwk9 zjIDuN`B`eKwNQq+G40kZR`8A4{c0q(&d?$&7QB==Psb=)Oj1q^?Bb=&E}mO6+$+dY ztn~u3UbU|OFnrIK^@}Hc=~TV_LH;bpk3Z8EPB>@d7T$;mtK-49iOwNaXyK~!q{2HS z`C85HN$LOD7h5xyJAA_015WWR^@cLlIdQpQXmDc&p}m3_%JFV&yU+3PN2l-KR$pk zw5JgBlBfeo6Y@~70wJ*fw#^Ga8v=;-C`hf)d;a_U?P!*suJM}v4+IWLU4zh1Nwn|u zqz1HKC)xJ~Q&1${kc6Hn5qwCmC~6=^tXy3s0GrE`ud%hY&9*%9T+LuFE9&&Az*AV1 zst_bAIOELF3C|ri7=ym|N;BMrgWZ>i-XUzf+cZSa`f%F)ZH5%nG4z+LBGezF6F7+= zf(YD3X`ZzuV6TqrUn<<(r~0w^mKbh>0{i?1np4`}?BsQdCALTN`9iajQdSK+bN+&W zPn=9vma*?DKKTt<+1e*7C)LwZ<$t+Zv)D%Qe$CR1K3Ne!dKT9bMY(0?tM!o$YB0h( z6r8vVIB|}GRmHHq7c;ufLh(LWPJYtqIea-rD$)>?oi?yoSV z{-k(bDykra%VwV+lkQ zIxwr2R(>m;qoBc;ok{-~(IysP#W{T>d0y?G^L^O2kMfT1>G~VEx6%Gp)IrL|Qah(T z)c$oj+B%gj3`5%R;UapaGU~v)rODfaXg34o@pm_Og$szIxibvDFcb3Y^!pRb02#o| zu;8KyOs|Xo$60sV;1G95+)C8ve_$+4Mt4UHtZH9rO79oMZT1NQlg7=X?CE7rW&c>o z=Ip*(aXNZOv+zTfq|=j+&NMG&nevq!B;)3cV2i5R%!as5(A95X@3#B3_0O_*JN(+x ze*F<V7Vra`We{1f~%)By%Erh)Vn=FP4TVf33n_&c#8*35OI4!Zbkzd=|FW z?%)vZDU5vU&|zBi9~a2e@TFt*g~_kqrBM%eCmB{dE$h=P zP(8jG5B=R9#^TjcY^LT*{-ky(Jdzt5@gJ0E$q6d#5`P8q&;!hGc8d?Vzhdt!ap6JE z;T;roYgg)1#K#1&knL+lw3Tl*J9a7n?=T62b%`{Dh*>jM~889iEQ(<*n`H}Y#?JvUq8m?Q^8#+F_zkCrd{^2=0-8|N~S!;qt}}5ao2Fa zEZj@B=fJx8{tUk>-;OZJ0&N~Kk2gTL(8KbqP=adph2)W@^R=Xtw_%VBvaHb_TZkP) z80Z6`RC~X-u~jP_)Wo2u@#)&Lpcxt>eT2-3Y%|hW_DyqcV6Nvv8WpXvOT_ws#~YyQ zujCijaSWrUaqsJF+0YIuDt;NAc*f}1tej|J&Sr*`1Eeeuh0AS6AID{Gtv?^Dh8qjZ zV8g?hb(gO@SoRTt_t$8vnB}!QG^q9qkd+{fvW)}Ba}_dEQ54_Nxt=fe>(=MsBO))P z3=0!`=4O5fjCi!D&;1W7BV(k@_Pbze3vnM~J_9ki5|F!CfsR4F0Lj{Gk?{Tibi8Kw zRMqS}_|5;M71_;=Cm6o?0Rqpds%hEPduD)@S)*H{TS0eb-4{yz>> z>3o`3O?=Om4ou?p5#M{IG-C=)_(C^6SSjYN1CL57ZQvW%Td!xgW`G9*98 z*JR)@{sAtrbX-R;8ER>zTqRJBn&3uyrGCvSR8kKC*aKiBCBTm8nJ1OXfx%{s%dR_Q(i5(zLD z9^8(aOAHmUzZBi3lV0=ym*CmA3=zFlac4{6DgASY(bu?2wRTZ#|4m!HM!9;LsvotV z;-+KV1I7iidipKnZiAiUDaFm(sDl0GxKH5Nxcir2^C$#GY0X`|b_|HlJm3xrWXyIG zVY~V+h|1V&3`!>Q%MTg~uB*qdO-B6jmKHxNxNqU8xp*r3tC~<}|p$L`K4CJMRsG|6@M6@bjFo zEsNX(+0-t8GmA(MZUDtLXJzejgg{I*q1!leN(z62pQuSeiwfObQDb)u0KOrq@d=vY z$Vl`OU+Vjw!lLenwF`aPU%g7xo%nzYhyO~4RfD$&_iNLckGdOU7F>)m+s(#oTa;bX zNXGS29BS+v#zZE*Eq%j?63Z@ivTR(2DUg%d-7Xcn@{&b6;QzpR=M$RdG;R}X65YYq zlL)l_f26$&d{bq%KD>9claw@VcheNo3vIYm+fr!g1Q6Vo=6`&QA|9l8~s5iC0f0qqej&i#$# z0#8AmWulAqW9rp__kdoJ*Q+7kv+2aR8Z8c8#Gx8(h#hT=9UHZb9a)o$>5oZMJ|=E> zoY4vSZLyDYF=*0`ew{?Oq3;TT27Lvl6b`&F1e z#rEG#O8A`~;Y3==KwX8q)%d(-RvOvVtQQ^ixJ7N8h>xg|7aUVS#a@9~Wc*?Xs@B-d zZACEyD$Tm`6Y9jJv_n-4#6V=CBt|`%DnwV@lo1wMEEw(f8^UHvcQvv zHd}kH97%A$SRY{&`Ua2po~%oTwyal)bs}V`;Bm2eD!Kr93t6%1a_DnUAoTfm9Yh+A zt3M9?o%coPbMf}j@z1rhE0f9&*trvblVd;EOsz~zI#4OKBNrAUGM}u=?7l?(jJJLX zKle&*rM;qbPva!;jy4!O`G{k^mGz~wMBKR^MeZaR3cY{UG5aYo=UDLf1sU!I5g2RQ zW>MH`5dNBj1$n6RdTVVLtG1BNbY|^XsMJwAIS0wk;81|9@*N|GL=73^LnS1gf8bPI z0hQe0-5tP`b5HrgnZ-TxbLIHg0;0jRuUas-x3C@i_T=yZyTdTw@cjbPiORL@Vq#jk z9QL!%w=6O$Yz(m}x%jLM7j9zK@8LotgX?;>7!~z8+RgbQQBb8-!KH#@pp(>gCe{ z)u%JM@AP~mpv}j4eq)#h?~5MJeYn;N_`5$|8y|nSJRO9=_o27I)UKN^Ce~n<^!)T} zD)Ol%5ivJpW=Is&MA70 zCYgdGHQ&w9L6l3R(POvo*MJq-1y$!-R*r6$OM4_gh#XHO0WYEK{8!}HH02MtkTV|h zon|kWc>R7+twkA~sr(^D=k?>qhwZTF=`mt!U3w=T^ZY-_UFlQ*&~8OBO~`o|tG-6B zMfuI+6=}K@-_qyt;&ZXLM9&5PYNV&2?E;hgu#ci^uaZhMFE)U@dIzZ)2)5E1P^R!# z2||L`%fT)~1upYFRhLv(mBuOpN%4?o@o&oTTXM%`-+t>^P5C~Bfap%>KIRgyRElrw zE)kLTi&0)betgl=2SgWWtINlt^53~zjFR?2D22Ly&f)!5dN$qJKA$2Jg*N zV;q2Z7>%&d>a*c-j%ozqgPbOpdWi57YM5_!(cQ3pxfPwA)#K}`r$l{(obDI0&ND=a z{n>x>K2<#dB>9I;BQV73i3CA5k#_8p6b&-JuAg|JdQ9_WCF+oHZ@+(nFDiT6Z(1i6 zs&8=UT=2JGwEUXrEfyo9euDdTvGfY+L@19PcPXK}e5&roV6cJ&8Gr$67e(P0c?y0h z09p%$v+~Y_Z;rYR`}=(9Qxd{E3Dd0(O2CgH9Eg{*zjFLum|8j3QwUcQUk{;D;3D{I z1-&RT$1`l%E2n*`35JXVpLviFuV_>Q9VUBjwkFq#aFrmQsTo5oB2BnW|=e)CbUQA-$*XkTfi_LU0&=vW6pM~M!^Oe*h!F& zbRYo-mg7J(4)khRbG%jBhd^O+m_3^zr=uDnl;WcZ4V0S7GxLkJ$iqrZ>To7Be&o`0 zYx$KzH>@Z{^iIQq>q;iy*}2f_djk%&V&h7!*N z>m#VGNoGQ0rMOp<{lDf&swUca$OjM;%5L~!Qa-uG_ zIh{eRNc*y%Q#RN1L9NtKLpeaL{1`>)%3so%TUeWk_?)Ybs7u^asu6+lf|4RsOz^>T z=zZRPMD9*+S7BuJttjAFnpn8UIu0XqXSAp)UHCC0&^NN?k(a2WtBZQMm@@k#d$;5D zUCCuX6wnex<&O8osh+2*so>;a^w{XQZeKLEK<-zQ-oXv$wU8z8p!L=5E1~>kwP< zuBk$W3mx9LNWMLSPi;hpAQJYS_s&*qq7({TGe=Q`w2+as^d6~9Qm?DW z!XhK5Al}BWFP0G8MMP0lbW4$pgT*JkpHoPjO6I1UAD}G9CYFHNY)K%K&YM6Mw2H{J zcC0+TV&BF7LLyPz?gz!iMD}Z?WdKUCP#~ZD{HS*_`B9+$^If2epFf(bN_^3o@adQ< z>Z`@vwj%BatM6n{gtq*lhZ6CO)B!J}RKqUj4LC$_m@7vndj0ruRefULHhoUN;`|A0 zU8Qy`tD?ZGr}G;>wIt$&9%P$?OIAKs5-Fwt_{qcpvU_X|ibSLy^u1pldOPQ5?Cm^S zlj|`sT{4`Cngtec)q%;xRbHG9u38k05-%-J<5h7_SUONPkRwUQWt4ZzgAq?bUoYnfpsIx4zK#jwVT4ez-mbZ?`z{1~8Hy z5?3XDPj7d0eu~$LA76eGpG?X2>B7Pkim;7V28Nmn|$Jxhs4z6)INy5wOuz}Uro%2r2VKr=~o~F!~0<; zF@(kW@SR36y){qqQ)b5V=OSTZH z^ez1Ip^Y*1#Tye+mv`5`X)dlcZFic|m#@?;uhA?R`s6l~jqSD5*jkZVCGU=Kb&b@F8DtIwSYGjdz#+D zyC;IDYpTR%Us1or%0N-%fJ$FcOf0^|B~%7a+*V9QU;$|USVYPn%9K3pp78(}MqGrc zfGk~9mx3f9+-oVx#`Q67CtRq|E?6GAPg|m#piEqFBtue5L9Ml)yPRI#Y%I+CwF0d( zKtFCD6c^Wt9T>~)7%A$#GUWP+^khMloSG{R|^@-6^3`!IsFUIQYLH*Q>3S zYTYSKw;-)omX?YVm2rur7YFj?$a?6-7x3hxmfc&+;;_@AbP5$kc!qttL>?YHtC3wJ z=RJ=zw|&oYowE7Ea`ANhNa*M&W<;)&|KHjaIE!*Il4E6lnt-yx_*tN;z@02};Ut!Rwxd5z!nU%YQ-A{~NE)(tv3%Dt zuHxtRh}#Bq=QB)l=ZKytkfaihmt{+voPg2iO0(a_9?>}RkY*2R^jE?OoRQlQbhYLJ z$I!Y^w>7;C&-0x`;O92<>V_~9HtPNZZ8PjmUi{JGPfw&+H2SBOnV;^2R(yX1^3`hK z3gmqwW3~HEH4kqnP{u(<5IQ*w!}i-_Z&+yo_0k)rn1mLlFOSC*sFE=S$3jz}M3cPN z&PRAH{CgYDTwvGAG2e5uqW;0{396utI$wE?JTcb>X}*xOytgVyPgCJkQ7mg+>mI{RKzeH4GND+R4K%RM0nhOT*l)Z0?L#dpf%gphUf}T#B z%u=j%lq|B&k1Yb+rQ!%@$Ze+~6kp6!5)4D1=6(PGw8-%zNz7-*-l_u|O}AJfYEj<} z&Tx^NPSQRgD*aLLrXF37m16!=*>q%u6a?uvoAyD1%dPOBnW_{wp2`og#pE2=EXWUl zktOc)PT>^Tk9I{)`!IAZz2pAuGnvkTE~DbSt7isg8NMU6L-Ua5xU9BeFwnm6O1|+q zR$3>tk)8J^37>21Q2$pdj|TcnyM8u#G`|&%^BT$P=)aqB%y}de`bO9tBUbrFJm4Gg zFb(0yPEXk5*@;x(*bDuS@5!mw^_;4l6DUGURsJH3{FRL2M(){c{%#jGaWAx)u;4B7rOLe zSNT)tGl~dq-2~V-DaeRSAmvX~Dr)MsyBSs$@nt%Ol+cF@pgShqt zj6l?R#Gbj#cv*C&bNxI+BML=z#sP?H?SdaNyxu&5gM*BG4gERtnfxlBXp>S`g<}<{ za>c_}V#CHqkr}fTsUr!*0*Pipj=?I>@5#mSRD>JJnY^e;FK4slqB1i}zM}j8A30{5 zkdFr^+${2OLEd(z#RdRjOS%Tp2Gyw#<9X!edZo;@wKLPH=);)JBKKrFw<6kJ5NO); zNNDVNZ0x_v^_yE$W!zzR&5EVE8nj}zyiLgx>OIVbUu;>?$Qp+@W@(KXi0_(NAEks@E)iTS*vLc$f5M-(?AE|1GgpJ?SlgwFa ztJv~A`&Lt)$2gY&ErynOpJIWrXX}g`gi)og?ohKk1`fvXYmn^`Ha_c+P#Pa{f2|~1 zQ*NqwoyL*7XOS`$(9!^zq^N4r9m>MqTZtr)j@Kx|$Mv^5?8(C<$CO zhXpf4a8z5lpi1RN+l5&sinY7;8rI@|v~~0|Ft6Dh(9o6Uhw4|u_pY-cK?Pa3HaY>q z|7%F>9K7M8CUaa3?>4~K1vAaO*@vWoH=gs-D5T5bk<2mcjF+~T&_GxTgd4!Ftr|GJ z^O3hH=O~K#ZENWUMbtR_lsGd?u!^K+L4ZllstL15*4o;L|z{%K;1IKW{tAm>*69*3B zfENd(h_!GQ}n;J^W>0y+I&!2y@m^0Ym|UuMnHw<*4Sw>AbvRl*K~@P~1N z^OGob)G;m>h!H(-9}v%0V#8J>TXLb;=oAIJMQ|n>WuInp%t!EG0D)(*3)Z~i9E0^7 zx06zW07OFkFET)yM^1ZHgZQ`>b`Gq2>{#YhKm8?-rz<)`R|M$_6T9Mfr-O7wkX`cM}ZS|cM9E@{GJ>&q)pY|!f zg9N9cd%2K1TVPy?LBNg5-{!7ZL^tISQ;j*?ufll!}9%8$_> zOBaep9u_r{GfiZRPR-drGGPtBK{XdoZIdD;-M05EOU~`svT)Sz-;)3xmRV@_I|@~X zsFLw!KC+uTD(;QkJ!;GQ`OCj;jLcP3N3HFn^#74tdCA+=HYy-R21jk1V0qx&(Jhxo zMURnyxBUR=k?|`56NF(uKvuw=8hPL=psYB|~%fsdL%IHF#LM!ob4n){b+8r;{WT`WbNgN)NIHb;j( zeYgIec#gKn(FGsiatk3m*fmRO;`ra>d?hDeirJ*9>@*_h;cfN4oH^ePr zz<}U}LrqaBCxQ3}x5XR686>Gly@Wc^;3P;(!S$|w4$@?uPk;z*!y9F3J~VL$H?d1F z)H=dzdx2sUNI^QkJ>q^*yo>w>&fgJ#1PJZwcG`hZAd7)H327pLk_rq=TAFine#)hX z-l~Doe!&`l5u*W3htb*84;Z$(YgFvuADk%})9PSx57#FqIk>bzt%E59?g$6f+MyJ~ z6=r+Cv$jXO#+y4b`H=9EQnwn9#-Ic5>*tX(tuB;*-$@hG;Zz|#hp%Jr5s;%5V)Q`HfbL;(Ea67#FRxnE2z@Y5ibzsOy*n~IF)NXjf zFb-Gr*2as=DAQ@;;GP(iUGxqi@<*%|$=)59|ERPZPm#C-ok033u-wMzv<6e#%|C;C zs)k>YrAKK6>>!|s9)7s6Ub`ghkgyJ!VV>)sVGloeDMbAD?Y(g7+2Cd0 zkVAr(9(=V^DqeeRGGSOWvVjJ4@2w{ISD&g6;hg zH}SPfk+#{pZL{~-WaOEB=9sfq||4~Ob5xHd%ou2%IOT1XVQXdFt! z5wYiY9^i-v$r5iFJH*qL$)iUrKI9Q-wcX;3NSmR#ENd>0)I7RJKia2xk!Ev*yFl_X zgZRGlU~_*X4z>YSod#w;(~bT&;t1T{7x58TE$Jhg#!G<+oI#%iM;U+k zU#5$*90f!{+t~}czh3BfH1<)LKivhUbX7j9D=G zUdajDe}40E=z(ogKbxz1aMY2fBksvpeor#t2fFxE8!iTY#tqRQ629=-ta!pWfUJLi z_`P@Y&ku+{KVb2_Pt{$hTK6QsehP>ipxb+*uF@p?Ud=%O9$^OkO}bT&w{ILEy0`7A zQ?IdGt>m_jkv9F zqPO?Fu-L7ybY+j!Yr-?i1!uys0;H3Tho%!K5WW0F0OZ#c4!m7O`p$*o)O38Qu;YGG z)Sa&T)G`9IV*j+R5x6

    A;1&qg65O6-(f8W^?iTa+L*im4Y^Ym&HF0dItcJ@YH zSFmhtR4*dv+@7<()0xgSE`#DfPxI`KBzSNCithNGKp|A*_i!+;nSFg9UojNV@26o^ zH&9FL%heMBQ-mLpQypEjBN7j<9D;}ci1=sfs?ccG&}eS@qIp(K`vC@0FzI@M(*6PN zb_mT|0%6Jz=4-0gzEHh(RrT7}Z8Ydb-{MZcr3-)Z8svXD>0G?U6=KP$jzXG*VO^#c zb%kXtz4snfqUR1G#xqq{ac103s-kz&SEAh0G~69g7;bHQi7@LZenf4fp{Onj57|q@ z9r}<#PCXbJ?h$(G?d1kGT>lqDw<$Xd6$GegxVMkQa0d_CQS%v#odRJcf!0ZZs!3k;c+UxRVGF-X&wR;m zK;|#V^G~evg3=4c%KY6E70r*xhbv8+JFZ<)JC_e1nQ^fGp)X)nIlemF-q@i@#RY6P z$>I@q;)^`SoQ7wPSP56jMjKouW6!u^$D&z> zQl#&zT=m4_MP0GWO+f+d;1e<9D1VLy3-q*46N&;jpj^6tM>M=p+|FUv;3Nw~vq>YK!Jzd51|qma2aQ%T+2^ZF2(Gg)T$g2}wPuc718h3DEX> z>cYv+f$&2AmTtDFygybm@0*k}+1y?{bli&(2v{A32^Oiis&g+;o zbMnH=#kY^Uj`Mz_uMnr+6>OhQnL%IWeERLUs~Af!jm1-RH;EeMCw=lW+miP7a8{(b z$)Cr1zq~Y=w4V8Ak4{gBeWLIyhG}h}CL8N&m~$%7e>voqQQDl-{sSO0`E;VqZ<>oN z3vArw&SS0pwmk*CZ3p2xc~AUC*gUBOXFHzBxjy9e_Vg}8%L%;AjY&hM+FK^)j`N_R z?l(Xmd;POF($$A4JsvB;yn7n0^St*lLczOxntduBGmIXy%!kL=xt^X{vETL?8QaD8 zP=d{e?Hre59h`e~Mi3|ZGwLyUOWTX2p{Q+iaNnO58ZJ+L-dOr77~!Y^3Q5O_x%BGZ zsx8C1wxu|~uoN5;>SZqkyuv+vR=8bgQ`HlSfUOifYe`rc6F@{e(Ijy#0SVMTTmx#? zmk;0%E3odk>&Fn-FiOXBEG?zOQ6?CqN7QVXCtS1ALK}h6w9N|^d9$yTB7ZXhuV?vw z6NciLN$%=>i!^cJ;Nk&~#V7+4QL%hrbOpHLo}S3KkrxyffwI({ya&To_kL9u6+ape zsEwruXzmqS3P7yzz&B;y(vL5fULG2a6+4Dr{@&}1N(;`rpU!yut-nVt%Pke@!QQH_ z=vfmQVi7j98S$^88W-aC@kHCDH*l4OTlHf2A;EK?Am)A%)zgU;#dr%pozS+l7O>?O z?zeQp?vXS>=NsP4bV94I)&4+PD7NV!m?Po27&kYat$J7J!1FO~$7FWE7do&vCNtr? znKbQQo)6~^E;B++@JxroY))>XP0@E{7*uF(1{Rvs{4~Q#Xj|?rmJV08SE3J?d_VG9 zhf=BgM{g$ZFBcLN!?g)RCQnWxsP-usZ1w%e2xFb|oUe0F{BGtKQG0SR;AQ6n81S0z zvYkfI;8CMuoyrK{EX5@Sl|J@<2kHF|98ej5!w8@nSkvgMX>8wcx1)Hyx|H9GU{ol1 z3i1{%rQWGi1Ny0f&M6g^nXs@J19SVqzzVmj%Wc>~mdPD7q7{K+>3J%*<<^}S_7oCN zPiM!w@m}yJPs32$Q!%A#@0WGnsmRz`L6k@vwLiDimaLkZ|3S0DG* z9B-~U-l6$d2{GZ(`^m+SK@>T?2?18$;%7!_(eVm&BWGd;jSL9?! z*FUuoq}BD44+wYvM-)VC?s2*F6`52N?oP~QAn{m8U>_w$yixoh_E2ySxVQV(b+nCb zoi?{VZv2+s-aBX;+q@;e3)>i`#Jl+E-tKw-nvwpf8j6Zz_N&y^M#KGa+PRsJAHK8j z4t~#7!rr(b-k`hHXjg;JRhFvFD5pstCmxt*z@OsQ$Z=f;_v?7c+J)!tI3#>RoOkK` z(Q}#d8qkLuGwQ3{QUwO#CnE!DN2QXSme`^?t@+4#kgqx@I}SRhdMbknX^Gc0r!_~M z2b~i(?k(@!#snmn%DUIMx>VI=L&UHd*0AJD>Bf*~qtdsF^=7`afT{NvW#jUfWaCn zmVDt%;UDt;5e6!eof^~#7yhDv+mN?CMPjXgnx`;h89-d zBl#aL#0|OH?75kS`B-DZg3~U)sg_g`I>9m$9n7#CC~)0&F4S#^bddb%N)3UwX(%hzOvRlXo3a;qH@7F?z^pywJ$`dCdU>N(0Ud^hMg;6_ZV7f_f(&y;CBQHEUle4q0g{v-pQiK z%0>@$VJQ@#X(ap!!m%!)3(f}8#Vj~H+4f4^xwKbD3_T=t)H-A8ERR@R(oCWlsI4j& zev>}3)P<-b-!G>MP78$yjtpggO!J7GDdN$HE)>cknQh;hGK27?HJ8rSJ0o%k7hVbT z$WBd7Leg@FEyN?^**k>dRm8Z$+y?95ipHD#iKxbxtQS?AOv);XNuVZ$46Y(^X%gk= z2lU9L!H@z(Z*z#=WHpEd%83vIlX_r8KUUU@`Lpc6r5mpV5N&yXBZ(oY@GupH>vH6R zc{Suv?2ogPN+8gIF`%5w`LYUOZ&zQ+IZ3#ug;fCbCibMi>V>hay-Tis8xt>7-wl^5 zSs{L^#Mi`D#Dp>%Bw`LF4S+Kq-TI8AMfBQiZTwHM0q(P^pJM|na80Zb%Hb#3fw)&f z+(eIgJpdZFt1^@wn=~su`}xCBjdp3|ROK_rSgqZH^K$x~g99FU9d9Gc86Nk(4Co5@ z+_8<>=vCT8!AKbcEL_zpcK6|ui;Sm5n$&9}RGJT;`z&l!X|J2oJ6;v!Lf@#x;^!sv z4aiW|iM#5~h5vIxXR=t3nB;$y%HkOCU@P6& z{94(-fHUF7D=tlp5lUD%jBN`yzsZF? z9NZipmLbI1@04kgZv^}4NW+m{$$*9;Y@RxU;Tl0{lz4tw5D9dLx1LE}M z(lm5a&7?;&ehOWiR*~!rF~}7PiPlzOdon&o0k=1i#i^H0WxyvD&_Z`}pz$HYxiYF( zR)=t|3XzLklCNt3H%>`|3{|Bft6JqdxCx@lWra#?*=1uYG0^LO@PwR!-IA7z-IksH zmc7l*dIrss%lATbs-#0x@ycGhZ0@?yWwv?zGxed%-o<78-3!uZ{k?UVq)w^`+|>{H zrZqC5Jr!(Fry`pc0muroX0{a`$M?Y8wv`XfvO|h^BS1ypGQ2sr zSzUEDyK=6ydMVRG`OyL1Rs3A#rcn#b+-+yE75bjcX^UK>0QTrY@RmGF>ltjWKs zcr08h4pY{-q7~>e_qRKE)^FVLpXoqtm&Tc~tLz(YF=XJa0 zu|JSh1x{t=BF|D*;`M~XZ`H)PYPL^75o1}LnZG~0ya)|js^28ym|VzrR=CPeZ^0B7 zdGIK`T+}Ur!QWUo1zl=Xi92iJjmbNO?#!Kndpza-G&tW!)m;U*$f7wDe`Ox+0*)aI zy*p*~%eKQ2;Fp;vN_`2|3LXZfZ7zvj&3z(vT3>R`k5X(7)Q13t=4z}7LdKtIxV|Uj zkMRjtD(Oz#?Mr$!OQmT(uag(Jk_%P&n3ORTFsb)wc*ru1M&yQU(|W)Tz3euv6wgpg zr^}{vTc_jXiR@$qCo-!O+vVr>U&WU74|2EHslmfXs5E*?Fu&S$|yC@pEiFRdB`zQ9wnUDB}J*+q<%&9Lx(A%9a z!aF&u0~?@;6*aH4AX%VTGvwg8PYo%3k2(z-EO5{G8DRr4^2)ojEzEjVDH$C-rk zKG3gM<1uGFsvH$5+w1b!ShqmgUTfK@4tCRqal0d4anVgFq*su3ncei*+1^&_bnani zdRP+B&T*F_;*J5Men9Sppn)VnkDLNR2<9*A^1G?GcqpG|EoL`KdVFkGN_)++_7iBR ztsmVk%*UJ|j3J*YL|Uje@Yl0L2Jp)}i{uevwr~d-F*Tm*JB+8`2abLOH+m&W+aJa+%qZYMHq+2JjePt!vS3-JIs3&ez+J0%3 zdaQDfvz1f@>>sBQmB;4a2{<=={O7*7eR-c3JOqYf(aI9xSvY`aQ4Luc4lt zO@E{nbKV(9d04WMMMVG>=v{%zz14m3N+aZh#@og2 z^{C0lFjIT*P^mzQc>))U==2$?&gkbjw^`nK-L6|}A?uoe2-^}RlGg3t53bA*4glE> ze7+;SK$|gfXV@OHTO5==+N;66<2^`MV3rlv&C)s>$kH>=T2|RFb)vTvOC~LQP;`Hd zQY#upJ4MJD@VFg%vb4 zXCHTLE~F*=rA>2ncLtLX9d@!JSjDuA~ zzL5Qi_*CJ9PQx)s{bAj75gL!tau2*%mfr#$#vTn`6E!QuKt7A%aGF_~??QvQLHAmq zXxfoIT_-E86B$kXlQ8gt1efgn#!RnxBV$PP$0ZIS9(e|;N;4{!T)1qBU32oC>JmD^ zJ#1$5ZBuHo5m^jNq<;_%+%=2_PAZ(LPC#cpg|{u1us`1xvRE@{#V++~{5RXC(k+e- z`!>3_q#3vH;TD4k1np>zcQVMx`hHX=G((73xI_DV?Z_u3q0p0Y9-T43?m|NTeY6|C zdRlmo()|zbTZ(z5$_-Uwi|kFi$l6|hbK28B-H?Os>)1d9?-~6x0$Y`0G1WnEU1f=b zb-z8HJt*c6h0}Ty>crZqmlv}o_6(p42whaj#(_J~ED(+?JiCo)cx$c!fktx17my~5EmD|e)R z)|yvpj*E9-Wh#F7bwDfWak9iIBOTe~0!!SZh1S+frfyhZ@HzDMm6v+ImzeWPM2 zwLZvRvmx}F516S&lXMlI6;K8K40>Gx15*b+tV{Cw3D4~Xb}c|D^+3;j6SC`ARxIUy z-=IJEW4j-L-J^TaMTQRk_Mic9qgVUQh$~RQ$(8x_83hC~zoyT_AK#u)R-)*Q+80$w zB!)=z6w?E?8M{3!hh656?K9{IedKzWX%5$pyC`9fVlE+isbsC8=@0E&_>2`oy?~MG z20q%UGgeiNA%__}5_V){BBvTmEeW7=jH`Z#exuy%DomxUpioMu6z)fTMYx0$EjZCa zW~$iI^e}QdRjCe5e$}Y_U+UlgM?3q2U+nB>+1NrjsUbVtIaRyTlUCGNT#q_MYel_! zR#fA|1>00je^v+cyH@&;<6G`stF=XL#B~e-uV8uyOx5W3h?%MaP5U z(;T2UaM93FDxqg0&QEe&&tBxxB;OnH_t}pPFPyc6ODrq@gUP3Pe0br!#ayCNJ}2I% zS&QD*h@52=Xx__o7ExMQ9QnTH3l-@2qkZ*G>=Ihf-}H&?e7x(3Mf3TSN5qd`<}1BL z>y~qgbw@-sAw${A=K~RnUxwzg5_k2C*NG(1Ionxp3NYIm;sq@&0O>~dBUk|5_pMj} za}HnT@#|w|{Cdg|g8uDI6Lwu>NtnBORl9)H1HE{cC7j{p(y~?U7K$8U#uy#ph!7e zx$Ts3u6`08cEYmI%gQvC2CjGR%it$~J^bV$YZWV6n7l7A@0+T`!Wjk$z`u|o&!Sj5 z^6HK>!94>#R6O7G@IbaEi`g^Fe!+;iP__-i9nG|7#;BXZhX;7wmpBFTy90t-9Hl=n zVmMe+5*}=7Y4N?)`cVsYVdcm(W`+z36JIJ-1Km%N;XH1h9sw&7=_-Y`=XKK}vWL?F zkcc${MEKgwt$ww_L7@Yr|N5RfjI4fMUOb!z?QG2OPn|Tp{f-%~X!21p{C{vQJ>iv7 zH8na#;ZY`UMbQC)@>JS6-ZAvUQ5Qt=$JsOewN9?#%NcS4Tyq49xv_$&WkB@Gw2B>Q zmsRO8#p@3|fOjeN&cU|_**9c!9&`0pwMJ<2&7r(=xXK~3LVom+%&O_1JF|gY+A#8p zNfRg{KfYX#IiSC+G43kNLGC#U9>z599V`^$YoE7L!V45Sp4+s#doMtJVbXIKM#Q0J zfKI)<*I+s%s3(SGU3GVseA`PA!1HW(ws2Ze>4yl1F;spAiOII z8$=<@AP6%RaDZ}01aYVM{3Ze;MH8ADQD_x~lZqQZlGu!MSQ?$uL?XNB{7Z&anlzkL zE%G%P5wntnN19r+jTwgoL|wR^FJ|zNYUBaln*s1vd-wA+e{07sun7-zP$4-mneA_z zXa|=n**$ThRa(LB$-vN_grpGV#*7~?Hk~GDS2MTw)e2@IfCwE;M1<1AJniLiEzYg* z)TU%V#A%%0O`geRXJ>(jD$gu2sPUoZ~qu-IB9bj~&p;sZnn_uH$Qy0!u z_V_}Y08awOJWZ~zO2Op}#?DbvGBh?IX{D0fm^X!7(9GKu4z0yUr`pT;w~x^9gio6S zMNCN8*`@Yv1Bl?joQ9&FrwEO$3!*kAj9)VHnIcF3 zxVz^p;cYbUq?3`*xV4wE_{yKsXVfe}2<9#Dos)BaF~dn4HWjP%?bZy;!@o15T`oon z2XtDCLsX`rY?$~DF$WTAq+u0$o}Y?kix3k%Cjz^7tgwRFn$*+-^#Kdq_2KK6K3DS0 zSf#2e%Du}WsxzjH{Lyb% zp69O;cdcBao*4aUVg?4bXqKfXu#flk z3L<_Em#&Y9y9_S$I+HPV2W>X=UAA+S^)^me-{V}}*PFJ%3)uUu(9;(6biyrU|ydwB%ueH+k@(579^hpGR=nt?WQf%_vy z_78_6yO6(1%w-Y&(ImX8IXt}mq(4FET0rzbM_~#=k(~Yh)ruf(kD3=j4>699BQv#6 zXzq29Q=OPmWdt({-1AdcM;yiVoutckWXdmnJiOc5JkVuT9wSkrwjVq_u#sxY9AvQB zXGlG0>&cuKURu^eL$b{p0kb8&qUiw#`Vx{n<=?K3)UPXA7W9pkXPs7rUiH1&~1YhMPFW)uvi!Kd0)^>-2f8tyHaSX1!BOLlaDw9VlP)z`iK&B~Awy)YkzCy$B?od9@! z)+BU)gq7y!8ecH=}=maLyn9O0n z6|lVz;s>$o1zcV@NvQ%0-m6-KlqyipAe3*W?U_Au0J|onJB8|)+&ZJ%vm@-p&@0lm zkP%91dDCf_4%FgT443mFDg&4m*j>N`*B2f%=9#^`;k#TEhN}m8dDJ$w0pPlyO|*rc zF^WASqzlkHLKf~a&h+dM2Bsa6Mrt=rP?V~{aZYB?;91;0vS-GJo;4*3C>o)V`2$z< zHLAEgJSMhC#~v<0LkTH)bf>{6TqWa!j86b5kjVMKWD>x z5?#n1yhRtb*Xqips$CVVW>Zq58ntkcy3$ouW&^X*`FF7Me;wCG-0yKu+KHiQ){*K> z!xfY6lYqpl;#hCJP=z9~NkD*4m8paGKuxw$-b$`jLXJ1voZD=$Jp{t4ZZ}jsP%65@4vMPN$w&!CvM z5}P1BbRQQNuB=ahEQ|5(8d8HzVjHOgmu}5<{;dIoX+E-5G9#bDu!InU8+lK z##`hlVb@icqB(Rc^n&0-zq!AnU*9@gU@+G2P!(O382x&j))q&|Z;%Qa`YfU)uRyfO zqOCv-hdClR;l4K3%j(v%pdhX9kB^BJdDCD=P4MP#sU) zcO~5K(%iFR0e7N~rxiF14BCw5%o{bz9gNz?h({A^<#mfW^)u|0Of1r4e7tB>7W4vv z8GH39N$t_7oyPcfkT(1Qde|1|8)kn`Hkxm)Qnarn1fXcz$fgZ|CHzU;9>|eLp)$~- z7%{dcQFyFZv$+Qvodu9zQmhnRH$nK`e7=o~a!fFNZ$DqKAR6e(M0YErd#DEl zr5^cc&F;wf%Zq5;%2S?2I4SmyY1zrJ`3OkOHx$jW$x!q_jO-GMG=%I58gLV`oN}EX zQCwk>$Zq9@GojfPej1y1!@gah3-WBdN5g`;^~221*^gFv;``)b8KXz(uWhge(Z)wS z7FgsX`;Aou(CuU7QAuhoEM6Y3jfaqVo`z_>g%A`y;Yfmx%OuvRo{zvvn_)#t0Y7{G9*f;Pnla2f2dP*mS$irICDM1^BPZa6whsqY76PzNP* zbtIIo}3Wg!GDYI=G-FUVLVDeyG_>AQ?G{dnAFJBR=9oh%I%aQ%% z%vMysg2B<;c%j$Qp&AtZOFuLtqg!Zy2=S5AfJ3mCPZ9$=#b*D0Xn!Vjm@E&M&1d|g z@V6xK@rHe*tS2vx$ITCD0a9>M>L&>&ZDI-1o`^sH=lj0-tNVKBzQ=Ii#>MQu%l@zT zjc4O6Ve{NK-h_W2??t+AQkx{r*UJvN?-9Tb2hYgzj~POy0Xl^Ib%s!R>q|3zIdB?p zfPDL)sSLZPN9g0J{~yo#;nuVMaqC&%WeES>vtrnL{YsCT%X8gK4g5uolA1PoC&g1T zYUbZ`g_W=B3N!Iv^Ko5a&oO+*e?dn3|3hEP_@!sxfA?D`mocOZsxTfwm#jD!guK41 zLXk2!dSmq+a)pCz^X6|1Jxi1-_|2T;zGct;wI7$w&!%!x3%OaO6Cxq7q1Rwi!#E`# z`M;f8#LneocJ>;K`F-~d@l!}=4CP2()EO%pgZz4rjqblaiOGBimPeZ?98P0@dFd}w zQzrX1+%YKaOnFh*;-O4dt4KejF@);zLv&~FoT2CkRMfH!YZW$3=&?3ha-_#1d3LL0 zngaUU!sy!dxJRrI;>A#`#fe(&T><_?y0T3-tGOyJ2VLrlBGW3Rhg7;G1u(7+rV~+V z)~|IYAmf#_;(F*@!F{CX65N0o?tkJQFz+z^fiP2HzwpXnQ6#C4Qp#B8#dWW5;A7e( zhbgH*3_c8#dbqYwy#BCayy(~Db`-`9tdy$D0u+Jp1OG2|wbvP$EdxTuuT9)3yLCt4-PEVQ^Y6KwYu3{5L?;yT7CGp_On%4~lI7s1G_*c(vuNXjieg zL!kbH`02XrmH@aHpDlYZE}-$%i-_!2x;B&r;K6YKm@f%8#qsRp!ZScZSi>dmw7Olu z(43Yf?}d_rpMHy>0!H)lHAA}&73a8mW0~8FQwCRa{aoYJ6v^vY-`p7~SZ zhg`i?6xt1fX66?769H!Xo!#q4GTB)?NHKA%1LEcs%M*_4ykA?DqJM(B&Ih%Q6zM3A_2MS4F{P1QQ+{lNT~f3!s&2y2@5S?N zw&?W}Oh>p79a9+{r?5Sc$-=qryLH_YJo|+cOB(UpcIY{ze}qzrogkLUIU=jyTl-r_ zmO9`};D4V*O<6?e^(=A?k+l~J&fU0(`=C=Qajusu^Q zFMtaa?nM5dS&@|GP8@E8L8%B=UJH-OMasIHGdcSucp^i-{*VtL6rT*~0kym68SDG@ zj-H!OnLz;Z@)sgoO;0uVdaF{yo?_yE$m*Oy;T5=R!e`Ue?&?fBB%n^ttcO1w_aT1$ z@Ak_7ufGk#y>H<>_syNIdxqyrepPDPC~QFg_1ty5xxWh1?SGs*Q)uqoZ0>-LQKT4z z#3Wn^>MasoeoiBxe;d(>-tSH}mS5#7ht^}*`pC39eo$fam#W5&av!XJD)K~S+MoP60F17P$UHYjU2kUY!t;<%6 zQ5;_=*4D%dLuJ7^#VB)8Cm~8ogAgsTSGV8#;~>v#1A_O1=GJahZby4I#tJ2l0y52p)r#jaNbONMjA5$ z&`2GsIHA-3Mx6-AhC|^HFvyuP`Af1Yy_!+O$cqN7qmC**V*N0&*(KFw=o=l~16{Wk z>KjtD6csftw@380`J%$dr8Qxp;vb^%`}m9%mNK6_lX-J%rb0(B#if<-s!cOI2elRB zJpbgk8`B!4`RYyT#bekS$s-3#yns}jVthlo|K>4Re40EKe}azs(^Fea;r_dGun;}( zl)-Z#lPH6IC&%0vo%1Yz+q3dky#9+B?;^@dcX$Z;OL6e*=G)%BPwX<(_;qvLUcY8u zx1Sl;1;KYZ%dPN56$aj|6OETb2QBaFb6`pA?Q+XO)3knz$rS0s1T3Mz5Wg%(jij@o z7=-KHIwT_qqq}n7_CT7YC9rm{ZvXQUPkzL3_YU-aZQXT@EF0fCSZ)uvT`-;gqHS1Bcc4R^$@xalXOZ47=q#*m7E23kbQL$*Ni?DHU zd{{2tbW+z!#j9Ni=IW*RM9ECrVY80+_y?X}8ia4E!16{X!T`8S+go%OX%^k3Wz<64 zob<*Jk@wL{l%nINy_vqfk0wBR{=uA8mQn)tTkGogK1@;fPe7m*w7*5uV?X)v z?emBz!LG}2)r?m7+Sc3Po1g5ui8QJQCGF!#w?(Ei?)CxVHhO+d&N}4G;BMYPzYlP? zV?P;&s*`WX{ay+U;T1Yn$68Jxzps3k7a+sX5DL5>*1gn#@GrVLv~ZtrnorEnR4DCZj_aV92KH8pN+7fX z5)_&RbZ&|#0rGyv>zOk9_GAvgcx`Sv3vMv5aFMvFvp(u7M9ZPpOmxed<-r{&0 zmKj@b+wmDI%>KpSIk#p8)>|0d0RK`gAFK2_o1)#5JT=0JFfNY}G-1c=_{j=)lT4b$ zEZQrmBt@|*g)Al?&flGrT0tlJ#fH2b5-NA)P*~oR2O*)C@6JITtJs*gkbb#42lZ*9 zH?Nw0`AyC#{BbmIcg0)eiMf{dwD2(mm{h(H1cnTwg_^D>Kho79 z_g^}18Rc4n4FP>cg#+Z4sm%Ecvdyq$i^YFNe6ntVR6$OSV>iE1TTL#0FSF4cqrcrk zskFku*HA)XTx2KKcfC`GDKR_m$hi+2$tXM#<$5&KG&F6s3E9U{aB+F5J(Q*tYXZ}mQ>%Y<~+@x0=zO6Cu zf1_9Yw`2Q%r&mm7Yw%ZkMMf}8XKWOU(jSwK$8Q>_oT(n%Jrb$x0^|o`LsYd2YRxY|e*mci zxB0$(Yw?g_CCE4EYkI+Q9!dAN3Ev)b@b?`I%R`#sCFTm}!|Upmcm&?dM{8`=%g; zY{+jd75j9ErI;yF84mfQa7)i5ostSe84%&T0NbND$ejtN%1T;~199E0yb5|Ii}5wq zgcU`nWm^Y*)+PBl?gVnNm@Om|shBM!XJt(ddoe7#RKmjNn=?vd!r^1_CyuoS#=j0B z>&S>5)VCe9i`{~s0O&;I8N>^V%q~BK0X_TI?}6n7U)jex0SUDKo{_AxFaU>G#pqUCCY^{WArY!v*(BWSRtFlr8Djki_%Q$M~Daa z7(?5iw}~PLWSJ$g?P1xKaP=V|KNJvYH;BdqjLf{tS2@Oe+D7M**7>JYXUnI6RNVa$lFUX6=T7+@ls7o=;<>e3pN!&)zg6 zoakNzn^IC!vhc57UGxxQCz9C;98J21*!91TIkWkqc}BFL!# ztLuYqP4Xv<^*b^rM^e}DK2tedj?q_g5GE-4ckn^=UvKRXwQP*DnC`*W^xT@TSswAb ztCC-JI$1ehW!z&ranS}|XWoQEO_n}3vx?2;qJA-z7PxMZ>|=7qBhRt=lMtM#83s5u zxS4N>+XeUqX59*bNqT-HWk3?~PsF69ks56`J}O;FVG6Y|xt!PLA*UBU&6CqFL zikwFjv%mZ#3pa*pKbT@K{6Flyd3;l4_As8C-kY@PcAF;Mm$W6&jZ&6ES;TwW6bdbP zQ`5yzoq$vW6bzNhqF~Ym3KXoGB08XHp<19|DpWyHk}k+@nF)vv%oGQl>Yx?|X4C=w zo%7rjo!9UD-amf7zuwRL`H=G5PFtzKGrs*I` zbc|%p_%}5s+l&<;a7-caX(LA1p^S>@htS*>$<<@e)j)XCYHT<2r_*u}o;E@TURWBm zvw;xd@YO?qKC=M8vk>@!5I^M>WCp2@pA#Vg9leN~$1(4Ud=?4$9i#>bm#iEA6n^_4 zkr+wZC;e5nir_hf<#Ylk;(ilh(V_6X<%6kG05k;TE;wl|eJ1UvDTxSMs6DT@s8d-S>uDq$9xGREw{<46|Q{W|` zarOzs0znD#ZZzx3N}~S+l1#|Gyz(p_?H(P^LjnTCxI9=pi+gY+8Mi2NA^28da9I_e zmaTMsvQ$JBl6{)7KzN=UOsA@R`%vBktX4->sG$j{OcS!LEUg`ZXRW1!x{v>;xkKxV zBq&d~cm@)x`5Iu!0^H@}c?N)#eh~z3ECe6ZHN(NiLO(M|vrptz`|0Ol4ffLjCE#V) zyF;fMSCT#cG8v!9cZg?g2bjlxK{0!t=ZcxH|7cUHb|u%RJkMQcvhkb7`ytfO3*mzU z+-2kWVvGqC24)*bEa#2S1>iCP>kZc5O942b$3hN9^?Mij3fzTr# z(F=VL}Q;jT6TM7w^M;9)JfcZqfJ(1kX3mZpVi^CO(Z1t)B;=(1cq& zei8R1Dt2K*-R4{ACBi9U2^UBuBgCOQH|_jW<3FIEfG%X*sqZJEodB)*ym6PDmg7!h ze=3;3Q?YC;-5-M+-}>E{mpEo62YRIa(6k^KI%~=i4rtKQ4K`EL&s9r}{c<%ipc8;} zSR~&bdrlf&mvf;Tx2>JDad*t?LrfdQ_JM}jYL z=_W8G+7$mv?^JHDk{hNuntbY0=8jDTNX)VRv2e6V9x|a_(BS|ldE?eQ$v09#qR|7G z)RFb@LsAG5pU35a0g3QOQRhzmY0S*A=#b4eX7zyU9^jUd?fft;5$%^mTW^uKX|3c5z+hJ|#=;U{uz0F;vnR5Wfb>o^=ueRoFYBH=K2P`@_&x%OAiM_ke!f$1bzzoZ5{<1oR#LmZe$ z_Uf-~z;*z6yiBQsldo~}MWrFkt#Gk$tfEq*%R|us!oh-E?pZF+FB=X(V2_42Vi>GkT;su83siqkMM1ryz~1DN6&em|9zcprfk3e* zRCHcvZRf}meeCc}C3rf(C(2iyFXYl>qX*$eFO5Lo_#O_`_#=}+CT*41j0b@UX7Y%D zSWE)_^jTjYK*#W5kTV5#x#`nFh|drM@9WtakH*0SZQ&UeVvgttgL*LC=Oua#iF^^$ z5EHYQlmZ&6z;av2jg+7Vhb;mirN`-I3Gy*fN2?_nEC?L2LE|oKNT!bT+1T}4&^1U5 zGGQ_LA?zw7k)0TN0?7P$;8PTxH=-~L0Ms62FG3t{hi^jD3s(Pl#NGU+gZmu8J1vCbx!16*4s1M+Zgu%(-@=$m*IB`5G5)x-1`?O}9@4a9M059^K{$w6Rex1z2 zVgcyoAy6{OQ7-|u6+Gxpk>R5#6TFM#{PmeebDx6&f@3^Ph-c)(7$^piLAp-@U_nsl6drRhCt2}-XU8b1yO&*J)1zrE6%UTZ*K>Bf5HcnrY0y# zPFP!28;9*XhxTGz2{hb;vynouLtyBDN==`lNac3P9yY)qz1@xd_Cly^kKIGcCt5;B zsM}OUfYw6Jw1g&?bg3@7WU~$M2Sg6O0E*F&DN-EER5BJ3=I@WC&9^W47RM{}&K%h< zW0CArc*i1;vAFJ!r4z>je*}9cjs^P1v5+$Ke}63fWGsdmZrN-*j>Y~2U|MkD3Dr#o z;vQp*o8s5I6r2Y`23u;m%VC&!D{hLscd0&*B%WJBl8m6;lHkiniq4%RhbF+rNjY*q zD*oAVYUIG4Kn|Y)^sNGEYbtwyJ=_h)b^Jbr)e+>If5i`$+iTS0z~m~nog2GJ%>CB~ zmKYopV0Xa>v4=*7s?KBK=;%=URV?(52DxAi6*FbSt?YsX^nAL^mf_B(`O%_%-$J;` z1e!{PI3_*pyATwSKq)1mzTHrJXsQ>pUvT0T887$C?LQ3abYg8W}AQqb2u5y1*|Xt+fxggjH3#XLeqi|q)2oAxYGK_)V76;ONq0=1&;Uq+fkao9(QxWP>Cgu7U35MIqz#Os zV9P}ZEandLS7lPs_E3};h&E&1`At-{`l!t?=q}JbgN>&vg4lS1W! zG$m+Kwr`X{b0fVrfv(6z`f}tXEkH0sFgiqTWMmP*S~180iG8&Y$Y={eeiK5e82bjo zPRtzo{EVJO)_jFn1I&Q?r6+hd1WECIj&s3@oUDs@#u9OvNQ3HHS2)lKLjwDcWxv2 z`4AgVu))ERVP7w_Kpb_iVI-cXo)LUOH39;(cTj+)wOR%!tDKG*w(Az<93niCaVv_z zZ0NKXZc#AdrnE6I$3O{a*T4j5TZtnahL<)1FTdg&Q-y{a)$zRcT))La{kRqI80O$K z2Pv?6cHy#gAxqDK&T})!x_G_9(8fIyI3Ol`{!3%*_L}6TSh_6J^?DAgZIl`_U7z!8UK1An%(E4CEI`A=FXtS)jt7M=qQms@Yq_;btIhu_Nt{aqpB6CQh6S{dux zS;tn(4@=Z%0Guz`NC=1`ddf@qrB>OC$(u+Fj_>J^;7!L#B%F4>uD10Vk~)1c`;|k* z`$IHKF%jo%?izl@Aq9RRH5tC}r8M$|f5R{ABwyIx17El`m(_tAk%aFe_fGT_bLm$} z`f4G#ROdW|&-B!En6?9Bz~@ttEIrqon}6G|{8Zc>`vl0OCUs^wVtJKV8h0n&2G_$0^u!5G64f%;(>Xb$_rJoXLT~#mY@WFfo3+1&&D-36 zh0SOF3vBKsu$cz1`SX3)OrDMhZxh1i=L9w{{lCDb?Z3iiQ3L|;Mq-U%m6uYT1_GnD zI9LEB0=JG?3oH1+Gef-uHf0)sO-FaicIjsr8^r48lb%ZJb5n2yVrhLI7SiKr{RS*l z#?kXnNPaKp4c!Wu{(W-ZLkb_joj>B8({fml7)IVHfd#4d#|1HDTF%=>yDr+;0$31> zzu->C1-XR6vGhELmO$Skc4O-r687mK_NHU79H+t+rOWn$tW)-4(CiT8Pic%+0znsb zK?rjD2*}wHXJ_*{CDW_y^$GA2P^ne2=qnbEx;n z91z*a`oAok)>xMhTG(94y&Ra08vvm`2#*Muj2AHVGqI396=ws$(@^CFPY)>ocp7Sd z4W8-00nc6$JT?Ct@I;W^)XM{M2x8F_ z_ynhbj4_;VHzei@;P<%WIQ;Fm#c`cfJlExp=Z?VtAHvTKzdm;gcao3i&cg3J{4T)n zGx%MB-&HJkrwL#2l6wD66A+a2I&cDj_!0BEINc9a3W#9Gp0>*KN?J4h1^n&O_zSx^ zf1wS)>`nOpE%>#=Z_kjwuvhRG_Q9_Me*58f0Df=7&k4V8EkTBNSk9e0WeEbLB)(^=dDH8NOLfu%xFP4GANvH-gFm z*OZ-F;DkYqTi`o;xt0>m2-B7yq|d<4N?MPPrZ31W*l3##PB^gWw!(7e_&MbSI6J%+ zA%!!vbK}*_W*MXjB1=4VxjJGh*j^eWs}}g4*Fp;JS2SEY*qLEM;4&;KCPbwJ1V`5(Y1=^?rwYL>v0$^u$HFcbw}^mip65gp*n z2+?)%OR)|-c}j?eC;p+lA?6Y`eO$+e$$csdX?>LopQMFC8tfr_at=C`e~3*_fTXW( z>c(3=QRA*EKfD^%8#VS|Kx}yEgs`!{{dbUlJ%NKPkuxjF_P<7#a2?R~GFnfU#q{Oj z_8tl?qdKA8l_9#2CzdY^M;PHBF)_W+>#aOC&)IkWF|zziY-)CiTM`|`s}jOzI!J@P z3~8`q5j6N%Of$h3mTalt#{z@gP=x}_abj0W6weTHvZ>6t-08SWBLx{4}w zz!EvD-hT1|+cBCmSVxxTI{zt|AHu4So-EGnCa?fjsR!`(_YW_>YWB+^Y^s2?ndQEmQ^)Wu8rboTYsuX`5cgLpUhb_etUS5^)dmZ(K&> zC4)qB$Im1bye{5#x0f@0=adZ~Vs{n20it&sh#YZ;cbvkF4^Bx2N%kGT1;Q(P#R^pC zL3$yKw&B94Mt=Ezsknm=Rvmz5rj@2VUaUUG;GYwD78VePeKEZi=(zf0}kUGkIQH|E+ckmh9@U3j>443+`KocFuS>N z?Yq@7wMXHJrNLDD(&i{%*kH?8TJs_(@|KxaWV*hd%@)gtY5>fpD0Nq;qX_?7Y5i(; z3_$tmBt9ZOz&TB+yW{>4_sk2l{&@>N`Fj#?NFMM9Nc<_EofznRP^r`ZgsqsAx<^Q1 zzEU^;XS}mOSy$oHv7Oc%Ph#UxD91wjtF-=gEL6SacBRclQ4FALMAY!On4xoViwsOVI8|06qOAt=H{{**Ke!)=?s$w<~oaE2~zd670HD z1oU@jvw62qhU_DN{#*^&IcaIUYHaGvPSRk5Lfne`p~1Z|pOFTwsbYgip~1JS4yBO> z_lXUzFJSXLr$P>s1`ml1F3EtMbI1+*BWQ`n3IAJzmPk6`e^=0w0sLPQyu>A|%oN7< z_e2e11hIhcow9ZpteMY)9k$U}MWS571yuqaoCu`h@8wL-=ai0l`{^uti9f6EJqO$A z0j`YJF^8Xq9j0d0*YH*a%*<5SPO!S5fp*S}DqHGGHH$@d=|G&B+YhpY>6u-H9P^{A zr->SvveHUZw`Kf*i)S;Jv-GAIni?nPP5nH}RguH)_KIglFbY2a)3T_Evl>_c%DoS<#ia1&Lu_>;-g)gIc71^Ji%^|5 zr4E4dSg39^DSQ;F%Sy#NAB5_@`b6QDjZuB@Ag04yZ6UIPSi<|Q`c;fZI5M|ns+0LZ zEo@7HGye$S!z^-Mc$MCbw#&;^EJ4l?=eHA1 z$s%)SMb7V4ewg!%0M74XRGrBAU6(!X<@}Z*=l8V5%lT=3;rvz*&d(`dgPfmvNbcqQ zYGVWVE9e{rzZlR*ndg&^|#h~<8$natU8CF-EB;5R7A3Zhh#JA71=`+e+_ zY2k1EL6BwWD-sEI0NKPJ37hymvWe@-QTr~iiN^_>IAScYi9>`u z(B)bPu?m<67eM&|9s_7YOx=u}Z7gOc9Yva%Okn8~l-J@`+N_H`16B}ke2A7`XesbwvcuG>N zc$RRCT=PL>AnO%t$fZzBBlp#%SVt~R>O8!>u4pBfmd~Xd3unsJml=CH zQnB9SBWWtx%uAG?rQ6X67f0zyO=I=Fw=PXuD3$yljMdF zHFG@Kw}W0TZ4S+6lN*PQhs-5lut4OPPKWZsL*z!+a!)9s5=JkT$YV!@k#3%f*+|$s zjh7o+6GHDKH-xyEX0aQQcT1l~^Gn5UKGx48t+skOy>Py%oZPsxd<5YOZHvWjKF?!s z$5RucA)Zl`dq)4Jd^SuXk~2!P;%(%h2J|^j*L~Dy1GdIHO?P(Nx$4< z`(i&bR_h+VHZykc3LdyL)AQDP_`p%h(}_8iW?-xY$-YmV4KG|e0VfH^iAW7ES<4St zfpp9V(h&iqL&lq$fOJ#<>4>zqgo~i>NSah2LCz+Ab$99MEnZ%0JK?J8kdvAHx1)4mRgc3^tuK#i;FmA<@=X@ts*u-efBCIOXv#G=ZY*$B z%e_xmRjFaO2*?agUmb*8)sNRg77B}+Mu{Vnq>{b*1T?VS{x>@`U@eN%d$}sNQ{=Z? z_P3DV(mWhDA3tL1>IoGx^?;wqRh^hkxT;Fvs%*ejRXW$^$UAT8<()VA-tL(Y)OCqN z_8tE%S;!kF_0N)ZyXEDuQ~9Rn$caV&okLNa>Knh=ITtuDw;%*2e}(U z-yt_L(`Mcyt+x9Tj-|4J<`W4EbK}&D4W!j^B0I7#iSOS?Zv3^XE|GMzRqW=SeAYv5 zxZjWI$|v276uTL#q)(C?nPX;-`!%Q4v4!UEDY>VWnFTHxJqpaq`7#OTmsA@j!8<-$ z$sC7m?G9>}?06Jx!fcyt;&NGI6uX2Q39Lt2=ABvK$bqbfXr=#nK93 zJ(R$DoB;TF8bY7N8ietH5{i{;2D&f7p4H~(KF}!0AM{X*^u>^Fr$C_fV|o@1y~R6cl27nb%MNO7qA|Gp2KGKLyxYS zIc%{93qKXI)ueE%5Lu6GU_G9NAvm*u^>_{o6M*#~g|VT!vuFR}lI;pDn6xVt*dL3i zKdP0W+)31>h&EOKlT5S_gF@e?4c8>IaAiGGQB-uHSg5QB7Fi4v$ce5$DhiEUj{<)Y zVImjyNV6!5vY;%g3z&_C1WFcLis=G^llo;K&6_7HGDIGtz>;96EymSKMe17kXqRFE z+YCV^(^lyhvydk%tV^~`l2)d#9FRGs>I<@`C21gTfbONvL%bk@c+3bkV}cvA_}D#AY?1 z<+o91COs|RV^zGx0T1&qN(@0-+LHq7+o9H}-$IdnDO>G8@%{onVjTQ2e1W3U-!uBn zY4}!{F6(W4YaUyF7C0C*w~6qrWC2+$&_L{IP{P;5()CxQLfFFxAb-YKbwGK{7}qmk z&UIUAX!4(OdEh3>QdtNW;kb>Zh&n)R z!{+Vrfl(dEVJk>sZw_0(AMb#M0^=sgHL|)0)o!X|8ogYEiD&*u8O6vD($D3Ryl5hjSXs9)wYTXKp>Qi)}xEr#KRJCQpD`0Py=lIe8HfGgg>G?nKhDF|QcHpjNTDs2mJeD?@q}I#0_| z=5-aCE^=f4T%wT`Eo9-1C3I&_$emU5Y?1jbz&+9`t!$nxD!&uU9Z)ULQw%qv^WEg( zD^QNfKmW_aQn@hS1-_ajYBd*N`%x_qk|zJ6$>OsQ9O~OOs&nMoEZ4I#-Vk+3imKW%Cgz$Z?_JWSDac4o z$$xb}et+{0pAu(~k)N91MXuFHYfISRqGe)picfC`mGKXlnSW`j-y?OKf{pI!`B%uh zZFKq02hEHofq9=i(l?;RyeI(X3wWu5F?cWW5dUJh=C9LRg;W+H*55Ii6=YdABf)J>ACZ;MudyKTng&S>;=AVC?e7c7zX$m*GAItxST&r)_mkfm$ z-5vgPPk5QzY-ZXLin~c&OO%mcoZsxky71|-OU%rHgzMrnNwm>cncqd8HIq-j(_1NN znE@Cc(`Nyg0!ML9vTXd}IRg_J1b?z8o&?3=a6Tn9+@m)M4G==(C!dTN`b`hpWKwC4 zie-OpvEG%pC4bLR@>BW^QuQ98FV(>jZMUH{>_Yp@yxB!B@3psOG^fm2y7%GNe^fO& zOnGVLH>dQ&xxXi{x}W6UkuM|3SWdIk+?lLJ{t2*pBWUUb2-6a~Ej_VlE|bafS76VQ zK$VaHJ5c(?aVH-IfBEOgQS6%gLi`zkU=&~txq(u@SQF(HH73LP zza$k?Cc#6{i|u1|T{WrRhpFX#Ij|)N2bTui^S05~ysdb;L5lDV+QZ^Qo%4eKQ4r$m z2V4-?8`-)6|I%wFFsQ{c8wAw8Ip~P@2s;SWe%`l3;zLzPrMq@2@Jya*?OyFhZ_kAX zF2h#9!S;g!r1EC&6z_PZ<6!fx;){9oyd-xpvR485Unq>PA#$-xbAmU#_9mVx+N|v- zS~>~2&(LV9>=HQta*Wodw%3(7ltueR;7Mvxr$Zhhil^Arx9bcdR8tR`BdO9+VMSL-OCi)N5sh#L)opP<0u}P;@+UIG zU~tv4#b6Jm3bE{==D}y$t+Mh;D?aFxnbENS5kTlYwRAU4wnYsx=&?@qd-s7-bS7hbG z%hep+iO1f{&gi{p{-+2{egThPf@1Ub5ufiOGud4;Y2#iv*BT@rIuFk&s#%KDFeEE+ zMH~55`7d^oX&GE!;Uy{SOAK@E-zBm$LM+~L&ef%aIWJLK2(v(&%eI<4XUISTQQI<4GoW;zf(#gtr zv202L$h@9($2;8*Q~_i@{*w3*AhUVnb{K-{wcFl<;`Wp3-{Wv_Mt8%Zv9fR0MsY@| z9jHLvxm$b)kh$vCNcfnZz%_rsvGq^0eY=kU<$yJK*WIrP51ReYUh^rO^?v`LsbjVM zXqe@G-NZcGswV9GCC-QB+UgIcXGhSu@`X@Ci~|#`AAjG(e4D6-2)97?EE$l_v(M#U zA{k@kKg_?FK;e!jVW3y4)PzZ02jt%W+pL7`#Gu2j>ADJKEQz; zV8@Yxm8O4>13OuBN*q`hn*jsUo{@e!y1}1_fW`|xO<@|NZR^-6>j$^DJ{~CAf^8r; zTD0RPF_3_7fruZwGeL9iLs1C|--e$B?x$LCy--xN=W1u`H!rsDieuuFXD?THsBpm6 zQWdeCpjPI|V#IZ>Lv-0jd84vCiMVSS`b)!xRD}S7<@~7d*j_JIbh*`WyN59(R=mSQ z)M>>~79J4B{;!JH^tX{N!Xsc)GWT3F^FRXg5kinX#Im0%GcyYk^2oIz#PT6k zD7IBCgq7Kh`TGga&?aAOQy&7pA*|>-5%tST<3Veg8E)hs&A&?Cfi1M#3Vg?7`8UZm zjO#52h?H=q({3{*ny8{Ag1kPgF`JmS7WIzx9zU|XZ0-vGJvMd6`jY;rqD=A*5Qj0Y z^(C6(&+wu{z>u*nDj+vLT zJhhD9Yi9N(_K7G|NHxxM)(5}cs_xxnC?sF*?l4EXi*Odz{R%j+-I~p2U4{bp!>Rp< z3Om!_^rp_}0$er!q$DeYAgwi5)5_e3^IsLw-rY?XA8GP00i4LcpTA$c*R;9BQu!JE z0pQG5wQIAXoOEV;-yG{MS>3<6#5AVp8F8fF0}h|(FpZf<9n1fr0Fi5mg}DnlO<_b5 z#7k!LtSFA!S@;psMSdKNrfuB6aWtnSedF#T3f;GSTp4vb|HF650y!GP9y=6JA{lSA zoyk8h-aFI?quH5%*2GNOrM}i^UnYL~85qsBwYM8fhQ=2i6Gtp;q2*BJetk0x!?`i7=Y1N%KJ%2BRsSv;YeFqtv7_{!0GU_sD2^x0Jkg zDX^qzlF|L={5#^kOIu(xR~!CfVjR2F4O=}8WHi)YU^EvuZr@sBol=yXLFn6F9L>1p zQ|8(Jp6{OP9nAq0vAz596dcWoAefu$bHBpT%%2LQ>6`kNIGXEI+o9lLi#-bLRis6{;AFs< zb;%Zp3~q?KD4MpjmOh&o_w&)^7kDqfZHqy^EbfpO&kvw7?j8>ws3IG!Ryc64v6feJ zlEr(rYNq+2gSfjJsGe=)$O_Gl=PZ?$O>v)r+t4ULi>KIKdt6F0>!7WuAu11n`hDeHt!i6ywGn&8`%e_7RowI#0LqSapf`{`eU z%cy+d1`@6lLIJp3uLY!9XCEYNc%G}e1=LJ{F#GnPs}?McU=tueXbYVuq{Be?Oe7*V`2Y*7IC<{GS)m?Z#X)2S1dTM47;7 zEjk;V4RVr% zA(lSfvtC5bC6@7<@^=y}!I zlWRcai+JSX1F26_hkQ%ekwwQy-JQAHP0Yep_4bXPY%+YCyI5(iQMYd_ag8h*B=1C0 zpOzinSi+7fxMa0>g{D8@Elz zR*}7`J5_9{Y@_#>m^WM1ND#=2d#bAGd1iO2aTH=eJaL7j&!@C>In{x3vjZUH#e)67 z8RSnR-$Ts&VGeT5+X94RRaj^af4`<4`ESzTM^zQk12yW#&D$Ot?%94CdcHsd2mN(x z@x|d6zrmhYP-Bcs?)O~z1AnxV`B!4|7#OnvRQWPkzi{^ojsb#Gb)rp-cHF-Z=YM<* z#$-5o4Orv46d%vYK`7|j)}Juh5aT1-u$?S_Res9Er0uFeuA2;P^wU5UwbJorwln6g z;TQR{<+1LtMFWi&E4||dZud*e_<8P6^6Q65z=Mc%pBzs}KqHcXJ%NM-EJqS>Vd8WV z>E4<6Ad-M1EfdQIhrelHV(CADB)Bh|k0AQTq48JBnU71h3Mxzt}&ibfzXiq4BA%KwkEBI{B-|a#0wITa(Oz(suA*eozgy6!tL71oQ zLU4gC)-I8zFf%maOvb zbX64b7T8{wsi^;n=sZRy+|Gp%rIJ7#3llFPW8#taY?CUypP+y--El}oeGef-ko}lw za~|F2H6eKqO-L@Mc`b}H;1p64@x8YO98p3l=RE1s?xx0M_;xO5d%=grno#RM$Q?!x zfM(ejl6^qQt*E`|lUr9RrNY2)8!JCg?%Fhe{Qf{ZIeuk=}Z7zoYS2&Gb`15JB!>#8{L|kku&EE8()B>E!bsP zohMG}x6kqJ=7+#!5bP~{1Kt3qTS?FNC-sj#80`t_6;6J1NrG-agJ!kh%PM(b zT%|j_H;l}-Dct#tMi=-T7@`WRtl=>A72l)P?Kif^VCoH0Vp}11PzApH94p|bFCFR0vqB=&%sYZLf3P)T&18o!h+vWz0Gfi#iCc$co~^fKhShgxh(SO! zSI+}{Hq_8lL6c++Qr<(K#H5XXK%jjoIj|?Nek+I=b7wMH*L=y`RNN5%S2v*uYxILs zagNL={OW&IoFnS@Fh}2l?WFoO@y7Po#5uC)`h&u%yX5z#-eV*gI1^Q z4FEMr0hs5&%MWc}p$M1d)lR%TY1>0CO>YJWD_p72(Lwr=$#3JVt@K_R^A6(W8Y0R% zNYB#~8oic7(tMEK@u<&@c!aUQLz3OnBWDwop&6FL99%7vo;*8W85(C<#er_Urhv`* z9(r^g2V>Q{Sm>V3R$I~f6s$Qxx4uWI(_V*;oNp?1qrb#Ln^KqcH!QR&d#SPD!?6P0i`UiLN>@Tl9c8`DUFoMScM~#l#EdNCsAWQz%G*{KZtv1D452$3^fNx zQy*xuZ66Vx*L)~_OG+!DBx=d`L+KoO@2^n$gSV8)`&GEqDx`6l$evl>ld8 zAS{BcG$+#J=PqI8<<#yh&R85J$)eN-NJXHIfNWJ}rrM%CN^N5+nYAu;rLkw18c33d z1~(M%D=B8iVbNYAuk3ND&G5ZU4>TqY-xbA2S}hjU;Zm99j+u8 zJ40akZ>Z7b%n?nN0&-ob-jm4w7`VU5pHBe|+xInwY;t_8lBlhud!N_d!a$qGl)=V>B;ir`|-QPYy>z4|_#syq(sm)ms1gAAo zCsgyRHO6>3zpQbVImd6xz!$-uR_lQLLb7InPdcUNxY{Q?yQB;~!mQEclTe;9OiwOL(1+nGo-$Fxn@%5byPeLTMJ3GL?1l zlD&kCAEFZ!T*woS>K(RoN?%cl-BGJyL?VBtmZPVLitQQ=vv?~W)UMea^lL;PyP`(b zo=;j1lB(>PveKR?lixyz+IQZD7z?whq}81Dl;j$%8q3A<25`Dt<6w@si&x0Yx}(iZ zcgY=j`AkRkeBfZoQcBlPYR^XgTWI~%3jn&d{CGfURts-}&_k>;IzJibQj zsStRL8g1@`lWvzS+2q%XJ(@BV^K2QG1lzVOnXwu)Ne^MCoQ|1c&;%Kuae~_-3sF`` zAmx^Ryds7WDjk@M1{Jv{=kLh@-mWj(>R!>4z9Uz7q6yY}YW|0~-e51O7hhEXC=m@v$!@RUSZI-kAqnvU&KBrd-$ zcYiwtEhYZ1tpos)=YO!3p!E@W2D0PoXpg2;L2qE@U@aC>Xp>uq8Yj229@) zMlVInh#P9J2W%NzaR^N(p5X0jaLUR=&SgNxKXOpAqR*ZRk{IxVePzAB^Y`q9>r#UN zhB2J@y<4{d5lR`7pZbk>BKySoGCz9v1;=%Q+TZq_>-e6OPWa9h zdT5{!u`;c>2u?!8+@Sp8T{EhEv`~~S~vAx|I zueO-O_EN#28BVS_V>srhBP-}5iPl&JiR?r;6|QV!*46h+<(S)!uHb)4v;)7iH{D!MKgjw0^q=iXl*UmBNPrH=Wu=#6aI7lLX8i$gbLD!#P-r(^lEa+_zJ(r z_WE=Wam>P&uCOO4t)u>adq#5~GmrCI_Mh!Z!i_5v!UgH0VtWfIue~d2&*(w*a~tzJ zj(M&nD{393wXVP4p4r?cTg3Uj`Je4sql|C2LXqCKyrto(Dncbuxv4RbH-v9#Jd0s-#`v|&c8@{kr53XkOLzsnJ9@3(8j&j0-;iu zBLDd?U3^>Sxf(5Oc#6{=qnaD!o^f%)>D64;Aa$Wp?#Yc4f>(2S*TIr_{jCn<_8;iB z@+}L{ZrJr|rb#egCZsMkAVQVplpBWPjQms(R|%^3oLdbF1F+<0l7>75wHUsdwD>XjoQ*cr6J~quc1H5 zxbRkzkh5JJrkhbWZrt{o-Op|r`JcmF)XI!nBGn$+NV@V6Cww;!6MPpfxhcJvA8NuZ zp`vY~0EDts?z%Ot`@@%GlC9N~n2*^l~2yST|kV)1a_}E(DQ9Q#Lv3`OE`+ zmJ6!sqs~-RO(*mBYW8r=}JY6;mL$94AIr+odjUEj>GSdaC0G!jJo!S302$WHQ^g)Cm(elhLBQp zyT5JJ`b{xMZHM!u%1!C%3tj2wd^<;l-j5+*1iBwei}EBf-pW9Z!SRz1GXlJI;MoT; zdVgs&WU64z(FnT|YL*Zv)uzKZqgj2O6x4tCVL7as7@!KF(r_^XeUq{#+&m4duu5qJ zUCax;BM{WMM%vka^YRDMcB=Rr>P;u9h@_&42I6IvmA%GoSmA<^9@^=2eaBXN+DZnT@7nbsgoLb1)2XFp}mT^syJ)+#nkOmdy{z6kOtvq5HW*i zu+#wBwSMI01>oPWWcud_hco?!dXXkL$>8@kAxGztlJJILoh>Q+g|g(k-stL zi!VsjD9EC!K^$eI#l!BOK>V~el1Q)M*b4GD@`^j6d?zIrMQu-@^a|26hzDJ;OZLj( z0^QqUci`MXkkNwyx%j6$#1rYFJPw)B7VCoGU#Gc3-5z%g7rE2{$$if#b&74sXmj1O zRI^{kl8`f1wTZCn1GY^6dePE&WP&}X*#y1iM4d<>HjFiqaYJ-cKO8xO>0GA0sV(i(H%ib1+ot z0!}jJ#DH`Pn*lMFkt=GG{Z;Y-2%DGV#Rb`Q6r;(fqQD|%2Z+%?*bEttd~Rq+Mx~p; z&k4_fJg%P2JA*Q~>o%0Zd2A?y>yr;bWl#)Wm*16u*khL_7?$@$EiA8UhM;{>A!u6^ z!rLx|nAD}lo#+NBrA+n+hFFV_Xh%6*57=B45*cHl$MvQ;3WzCzzE)z%sbL~ zYbI}+z;oHWW}5c4Xdp&hqBNR}Dtm&Ljt|^-iPDUiQl)y?ds`C<(pi%6L6iJMm3@Mj zN;iqO&wzn$dR3L`3Gp`M%7Ib222Y}-3}kQ@ZhBpz?0v;1@XANgT;N`ehxf>@U0D6O7{q6|(eyCXIM@np;dPM4i@%AaSS1@>1~xEnHP zMp**y;zuoU#5;jyiTnvKmbp*{*W8Gbv_2ck;3CFzXWb1jBdVuS7*`=r1Yw;1A(X)x z;+jwfH!B0hN6(p123Ha&tkWbpYuPMCGN5W|6Nc3o!E_}ZrMi+nq>AH?g)Q=SBNHePRv)9Bq;!y^-?O$FQoa?>}F3=se^R^#YNP&#<@~DSL zwdGVR1wJY>kWxFT;9QwCdIdNb7PHwUY-TB&T*hi1VIzzzJCF6<0h0A7Qa9aJ?6Vi4 zCAto@Tp$rIo`IK!7(2P7N@neYOI56sT=GwxgL&KsdZ@7l4)p}IkZ6{_O)i}mba>e( zKS(ZJ&GmTsZwwc+!e_K(54Y^;hTb~=m<+*ZwDtE~)zjO1>*O(Uf_4ZcZs_HF8w;mq zvlVqHdIK38h~7Gsx`e-?pbcbjDc7*@mQpu%5DRU}y2(D3?Z2GI7Z6|CzY$+rjAckG zihlmtr_|wFpFBgaczB0spIdfbQF>G=Q;l^rQGEf)W=`*;h!!qerE=9|2jtHSN?ygC z_ffK0 z6&x5_B_n7q-yaP94@}_wes*Nl(b#{I4f`Lm=WFyf=pXQ; zX+q7zDK~?K)SJOv4zNOof;yT7p*vG?q)rKZhz2%gA#$5Eqdie~kqdoFy*Je*;~L(R+qX$XXkQE4NU)Zw0iZZ?2<5JZ5d8K7e=PPcuSrVr(b}u z-N#1=ZDG?WW^Fk*0e93xmpRZSKM%U>sbI86>o2n5*yR}pyQE60Y&vH48E^g2H` zv(Ai>=B}t`sXq9@@=N#+XZ#MAUl777hnN3^4Ax>rxgcF?4ty6TP){u*Yq6?2T3mie zy%Vvczxk;S87}`vE#Bpq#KH7SWWN(?R+$5@VMW_&Qn8M2o=GNvMaRRN5R>ADE!qnK z&kjStQH(%}ndh~=8!l$X;~aS8WDX)#YsKY52g!&9nnwPc4Xb}M4L9S5ry&9P-zNka z@0Zk?W%orm7*&ICV3AcM5@>Rx3+0SR-zS98Rq;YbRlEoajo0KND4c8<28AsM3Q-PT zsM%r;%!XF2mvg;!!NJW@9x^WmLb|6edALfPb9p=Dl?AyJQ^zGt5^CJr? zkwf2CW!=$+HyZqYvoBg&z55~)k7OG8a@Gz8YCU^!AWf-cAWsYJH3YuS;6Qq98u^{n zr=?8V(^3K)XJ_y90>}Pg;JAdLVLenVtsU5O(UFGBG^8NABi3_3+~v>UGOf^f_>HIA zaf4_whBwGHT$xo6OTh2T)+~oVuFThDWt!y883eZYI9QqEvA(N>A!(WyM2-%F$QjJ$ zeZv+rke-T7JYa9lVa|j~I)*PYcoH=kB zw4%3tLYAo^=T0F35sdXA`*#1C^zF#`Dv*GP75kpA z=uR;V4hH-NMA~+FLBuiz2I5fcVeL&*j6GlDK>DYUf$S4HY6*yR;6QfQI22h^m-ytt zkATRPxqtG4$hX5FG8hEQbV!;;YlpU89GHsBWDO=DlIHnN1d#){OdXm-Ij?^5X9N+` z^kEPg#FcRlDR{rHcV#)DnvVIFtPJaaVY&z+=?EfezE0tG?G!JF+#3dw%NPRqOieni zz4pRI=Y!byZPGV2TJ^ICB8RZ=cQj{mwlsb78xUEZGYldr81?d9!Jqd_+nsfY#es~e zBUr@$dX5MpqY*?#`@Sn=t(Y!MTrph)k)XC<5k$Uf8U~SI$Uc*sF#sSEyeQBFt>|qL z^O2$s=G5y&EaHz?#6KrP6?G*TLBzb<3nGpgh(-KAVC}9M#@cA8W{}JzEAyf7l%0Uc zZCsffH7@^(nImWsL@vKL3?gyRch8vb0Yu^!1+K-u-SMPvYwiyrA{GfkEaKli#*lK7 z{SAoh+3f`p=WN6xL04IO|7>GV8V-alAOrcU;H)Dc(g;kdsjgNNR9)~mT@OD15zwR+ zMN&Xw3WcySDP9iadyLC!_nAy*sKnJ?XAE?>s~^oh zf|8G>E6aG*r{bAM=lnOLH%Yu}8&ST+CI|DfiXjmk@|^Q%{UWRQ6e4AIy1_LLoma%L zHek7t2YFwf@(M+swiH7ds;?B}qIf6dMi}pjyG)5^vLSbK{ACIblD3*?QF21s-_6QJ zKok_EZw<-eOx_HfIRQbndl^J?%ZU@mYD+73ccy&T9bihESVb?sv@! zno?@AS$j>g&sXn188w%?dzzg=Wj3d}qc-ezkh6i+?!ni6rO@hO+JlvE<^l-dL!I+_@GY_OXEhI$Ghc%pi0vYYVmDH{;}ype66Q|Y zyWL?TrC7-i+T>so*)GWStl#Y8D5Z4L{lCjmgWVdOJuOU1OV{hRS)5;b0+B>#{R^5m zxGdUCG{z2FD+6_y$EyxYF82iwohb=jZxC1P=Fl?!A@jW_t)K`i6Q%YAuB?p^bSBI= zG71co!5W(=GY2diDWi$0Ot{cWDu!CX^m-_)tY==iAK-Ww)Cf0DjB-JZa8kprv?Q!@ zb;(xSF6^>B%K5Dm#}-SK4#>+JTv|m73|<9J6mPcFzv(t}etX0h_H>s6?03=SvzC~c zw_DV2xfgSO?}*PBMR-xP(Y-YP>LSz^<$WeAaYP%Ri}J|q{n4aXkJ2*dm`z=`;bOb& zBTCyODwfpQT5pXiI#gktFeEubZsyXi_X4cBDtKH1DxZn3>)VwSZs2W_u$e#^xgDO7l3 zaQTwVQDu{&U4C}!C~Qg&7+#E39S!zua zYTovKb&pnd4DGB{Uy+K1t_r%m=7=fq%PK8M_bnM^?)S}I%Pbi}%?DzQ*{=E%KA%Rp z{KLMHeItcK3Q-bOLw1nqmIP_(y4#@c0H;&+?addzll>^wT173AI`JBKM*;w7N7Smf zH-`NvOT4dPQUlnZHZvJXcRnJ}dtqD|f5v?FDc3kbdRFWe!2Yv<66<*5kI|k0yL0?6 zVE>7UF(s+He*yc~8_sFRfMg*dQ=WRT5c40DDI; zfPKZNYzX9!V83QpUyu6==eJgT;fIr-c)@IxCh^X({d(y!3{@!!W?|k0>&gb|+ z*fZI)X3gGfueJ7f@4eQ|a;bIewSnTBLWONBegedPBNF?^x-*Ln6S$T?__hJD??PgK z`Qv-AG-OH9F{yTRDlS)~WuN5v-G-UPOGHc4(6cB>fe|(b4Kn;W?Pp*W_OY{VBZj%) zzB3eJ94u9I!Zf0kJZXnrTt_;5^Iv@5uCRru+^IQ95>)@5&lipf91%3-OAhHUhRO?k z!jNP7H>Dw=Bccp!3JTB%JHe-ng#tI*3Tdn9TvI3j$vdwEJE&CINTy~RDyT9hfe+L) zsaOQwM0I2hf=&OV!E=~D4?Vd^H3^>lK8RbAj0#QX5s5Fi#lVx+UX$U;9h3Fw$$TBU zXrEjH7x{&-@$*U)A};Gf_03_ia3P6wql;}}=wUb%9R?SBwxf&cs6g&u@?@ajlXK$B z|FsQ`vex)7t4|+Tl3j_8zy=lTn6>^>I~yk@*FWyB&LDrr%$ByE7(W~7aJ8D68l=Md-!Lc3vOaf=?iv0I^ zD(^GY`S*mi+m8(Jd$cEDKqp$+%0T(I_y^TdCtK9IfSl7vG-2=md823Fh%MlSn*vX{ zGXPdmih@sisNX^-b$|3!gtOeHmeHlK!>>CSb#jJ1BgEyY_`qNe`OZ^*h}ihk;Mqme z7=l(G!hY;w<67daRy7lrGa!^_qgffkU2s8+@$n4V*OURU6|I*cBkJnKtnw@Q2Qs3g znM%J)*qlBh8eb{fdkpPtxG!jX%Vt29*EmD)w?efogqt)0i6))LKCl0Jt{g1obbeR_ zXQKPbd44lMXV;K>P18YVdo5LJgx2(8<{mvBvO6G1Muc{7l!dg~d5elH6+X;VRY}b! z6dj)JB`{t?AL-q++0XQo3GBB9|%Cl5|rPv+CrOxLo9JZswvtX&VM{67l^xegVXs&D_{~K7U ziVbRITuv=-slGKyt2aa(qHYq3THZc_rTTo8j{K>n`;ciBt}V+YGQ&sbHxfp4sSgPy3YGXg`we^9D>j!WhD za&R6?^~CSmb!v@|!ou&*@LH-@8jv{!OVzl!>Yvm>?*@+CsKp*jb)rn_+X;AU zfV|F*&%1b3PoD34`+aP1+6QZh)A~&d8ev<<#78&Mj3zVuMg|gMR|V z9$6~(8(p_SH;OC!7vDA>OQrm13Y=hjflJZOjoBD%g`=v-iM76KgUmtDYcLDrEoi;h zf+DFoxleli4QH$vX(825I`YiErhgCsZZ-2C2U2rutcG}`-?X@MEZ6ersnpymm)f?f z2H^*>f79|<7xd#2EUBvR6KS%$wMu7m!ia!DiPbie_v){d#?1ft*JiF{qS0WG9FHfURpO85S<#CfTG7 zojW=Kv1^oe_`q50rU?n*?ZZa*ufqnE9b%An3#AV&&JYp?7J1%YcPm6CpOjOGt?zE) zi_a%=j>su>*~t1fQh9U~*v)&+vVpg+ zV1qb`x0wr&0evYBo^I2118bL^n}P5&|9%_JcEpef90dp2A}#=z;O&2S`H z+MqWNewh$%mT?!21(YP&R!^9N;ukO`;pP~w%UB?mjI(tS=8*VxK({{*+iiO0Br^Ly zKZ!g7okYef`ZmKd{}rC{K4c&p?4E6)He{!z0BiKv>BOFJ6c<}^hwS#uYn><@#qT|n zUO0vfu`GHfy|8WN2Yb&Z(BKz-)OpH~)q_1ohMe`h_C7M^-7fw|2)pq$EaORDnBYRl zMw%T0zBuqs?OZ!Foj*i zzXHM!K~SqlgS$v81f9T&1+-+8${3c{I^J;b!(!gx9${g_CId_}1~iXtTd(3z6`M<8 z=2UaFCAAc0PF|*$U@Ls3@fj-&O#ew$1qU>H=dr*vD~2!=YFk`R0e{5yM+ls;p(--q zF6?;qOm<`P0@vushc#C}^jX9B{oBiQMQ_cL1gF^A$#256Vy5Z7TF1uBpN?Vg&El)p z_0_(XQ0Z&6@RnF*FeJe#;*%Sz1_liDZngwnHM3H8?6?aizFYWCoCK#tIO1hP&|Jsu zeq(scVg6_{GzBnCIACX`nj4UFo@aVanbfvPJvyMsN72CVsg%a#b-+A!;a>A6EijK= z%-d;b>E!1$_YD`{t6Holq^dRlyghzfon<){~weX6~>db&zc!k$2 zhacAMIcXWhr8YdnG25U@5^_Nc?26L&N2`q@`Lw_|rM4OWM5cX^G z<`#+P?K1LO*=fe_F3&9Vw2dY8juAHUt>)7x7Eii8cjyIZ3dFSN1u(zth0Jywcp|qe z07CC*mnGf`u)2A3jF|o#=E;>2uLS( zxdNZ-CjSX=!oFqSw7}$bk;kfwdxfKD5$I^}D9+~_{uLmew}T?q1}qmU9`QDrA5%8+ z3u8py{_jTep4(kJvbi80be`j`o;=bo_gmc3H&ZmkJ$>Ej&J?cYo|oy4V6|baRym|2 z*lP1kZK0*ll^1>IbD!~Zd6@=9aBH8mdaHFSX1e`%9eHP;;`_4S8NYj8rdzS?tvmCK z?FFWt zpDe7s`eUk$^_$C6B*nd!Owu@_inpCJOybI-r=Wua958)8wCZd?sYubet%qq)1g>pr z+vJ>Ic&1lZNFQ#iIv=nK7K66;FdZ15PuA96{n;m;^*i8Yx?-xP-%x89EI>WOG(Ao0 zNSJb@87qR$Ftu))cIeQKFso%6u7t$%47_4{)#ZRQXuS!)0x5#g`45_1)3~xRJhQwa z&>DjDj@#3ZL+VZm#3u+(gr?vXLC2eFZbr`hp$N&6{#GG%y{Wzt&@EEj<0&FVFd?7( zyVm^gmIzSVm0P?nFd9Wqcu&NvhxCFx>=&8XKD`(JuR^^GrdeF zo24$R`d&aXskmqDVLE(9{?`{QGr3gFGfcBD7L#)o-GA_kKn>xEinn}VP;;p-@s&Uk zoRq5R7qoYWo|Iad7w{{PB3Nc7|1Qg8{Z{eJKC1}y+oZfA(9VH8$sR?Zg$RgK%r4Ay zeT3Ss)hb5UMp)fiFVpXtr5#lf0m1K)itAN9On*K<|05Uk66dqf%QPs06~*MYin?-i zc1o4>vW8t*{JTs3GUv0(%e1YR+WxY(Xtb@D)%~)UX}7s)ecEc)ulrf1f3K6?d&?Pv z=i%gQ`Q%@9%Qm#GWBvLJ;E_mB1O*y)Q}ORN=>pDYGye(@&pKJez~BLt;&e4;_E|+R za?UHfB6#CwFRvnaqnI2&Aoq35^v&5CqPqC@x1F=OmTE84m62-09Ib0~Wu(p3o*!swPy|c&ORw*=j>Sy3@5v`u?pJIr-^2Q?@iN^yS3}en-~P@%muso_ zGQBP8+Qi@*N>RJ(8KzI}QoBoXo*RS3vvIxj;;w5`gWsbRPQDU|XV#H?^2~n4n`uW_ zzh?dwND<7_j2_b!WtA_$%%YwKj{qxzgAm6LD}tZ)mv|My&-zMJX>)Tv`EdW$ zsaec)yK&*-X`gP%|e%kCbgkw>swZCjkPmuGtL2IoelVso)@oUfDKlX!bIal^I&+M~`;MEi{Rs`m_ zPrZtu@*Op|D(6q0>HQm|ws+JUgX_eKhIcSUqzLZjlkXic?`^%y`W^Q&oxEBzB*h+Q zHLmtD4T@m3*7Wm~FT3!VdJ?Cm*J)Ey9>rOibzY`#!7JWXR|nsMSG?Q9bod|nd+u1) zaj8$9VVeE3nEdy1-TSe4nqJeG{wltF$M71L`Zr$*c?7-HbeXB@o!~#k3X6{4#t%}U zDkCE5gZskP{y{RYwFbWkt3yRO@dqymBV?z0d&fc$rDcPuoMS0iU{4jm#!zOP6rplD@&ig67)h0?0Ao%a_;hEmjKyi zGX0q!v0(dQ;l&6j#1L@#HC4(PrY>h2XV7w(coeJuGxnTE`$Nr{7r2 zZ3B=!D%0<|*SMLm(yx2TW+hM>Hj&Z}8QWF>N4pBV+*)5JA}$A?0aT)-0y4jP$UvWT%r;7I%(jv5w~nK@ zvI!LKd8D8Jkm|yI4hh+aV=R-$tFkY&fllsB&?PfehshFEgj!x@x^_Q! zB9JY5O4eFrl-3s66c^H7q&Oc4tKQ?G&5zX8{A{Zttn#;>CCj^2t0L`%py?%{hVCNy zo5(rfJ*!thi1bv>?|irHjnt8~k^1hR>0N}?u*=&m9mOC-C6u=RxZQIEiqmtv-STi3 zQRN@f034q5a0p~Uh!%hlEueCSjl;ct4#=L5)PL!=y$x;oj+boU3J{`|ly>|$<6MDa z_gpX8ig$=>vXI+A_NS+0L5S9X5Urtd=J8}70@>dp_2(Zb--Wh(*Go2Q9SG5Dly>>J zTR_&R_mY+DB_eu<`~_qOME#dhc6+aBg-3`gsaug=A?ncEq)xs3>LuJQ`TGd9ai2+@ z5Hcc)@f+(Q14499ZVm4D3ip5zz4Mgpnke1Zzgi9uR{D^aEC`Xc#3tQc zBJchblQkV8)V4#WYndSjfb5Z{WKWhDrEMj)y3f)MgAg5gO13FV=XfYTOjvD)pC!u+ z(YH~Zu(*zdXvaL=fu}-r288G=m6MN8T}$sq>BxIg`W@Ytqo9e7@??-!J_kb7OleEU zH_sC&uFvy!%hLCVs=Sbgz~Pgp-2y^%5rpU>m9vT`+b>#2Dx&qjcgv4MTORk44ZH+G z^f9Ha8*eKWD4I*XWJM>4Yb7Cx(Eu_=KhxXnCm=+hP&p@fvg3g4glPTOzcrp9tn?`_ z*{tgzL|;@N<0l&S+}xnhGSd6R4GO_c zF7yMpF8bnp*dqd`X2`P+{6mu)|FAE*VgcH{^2Wc=Q$=TqZ_rcHEep_72cx_2Q%*tC zSqJ{1DfmD%?BucjNF9nsds4>M;)=(jjhM;<*I5G4uqzAXXJN}r#g$e;(K$yKqL>?U z96hMIPrZj8luYQv4>m{J@PmI?&Y=hYTwucw{@yB(UU1w+5B97>{qJL22&`fp!p(6! zel^;5k%zQc;pQkFRGuJ**NA{_yd%q0MFZcI?J85AWVyfPJlnLWnrt&fjPV+I*wLAU;2}K*f zHG?-w&I+|5Jm)<=nB8cTw5#IUJ^xXJ;-P2%2Kb+_+LT{YcP@1X<5%bfcT^D?*Wit$ z)yA(b@&2bPLQCXj*6{IC`FN`L2E!H&9lu2bxpK?l73OPC{FlQkc+d;xbZ@?*yZv5c zFRn%Z?0}nU2zq31idw?&+c-06mRGm(p;QO);LZt?)VaPYAmBKmaCy!+ga5feM>f~w zw)!k!{66q9EsE2OO?XIIxwvOsIZK?@u_|*5k4QC&)vh@0+=K?PmF8h9#PkDr#fGZr zfCumj9`r&J(RI2j$8^29ve%wr+O$zm_U{Rlm)%$6*rYcdX8^X^%vS=94;gb@eYFP? z>V2&=zk-B(hGAt_FSWeR_>FoN+*yghoiDapQB1pZyJEm|UT_Dtrki$V{?5nH+wBLz zQ?=hFRQp*WHXfc%0@I~sQu`)#Ntn3hMmwA@yQ+uVZ%@RJ0YQ|9=d2VmU z=RQZl0plwHHozlHW< zU>AhApeG;qReXV&J~mXtexU!d$u<-+e0!NT2CA81+O>(sK&xSx*WZaRAMsTxEH5QK z3+^QClXg@(OL#=;vW^_NuluW(4#sbc7uwJ~HPPieSe`VPi(~mWWjWr9#C;&*D=|UgZrPxqM&uH)S^%zm@zez?-ifrRh$* z5oC3b@``8AoNmwbuR!`UM0tl!Ae;*(qJZ)??312;!@7w_q<++q$M)5ITlORPR9>dj zVEyR6zWp=<>qqy!Og{*|wk6<c1_e0zEf_V!P6r+KBr98t{Gyat-4gN zcn+wL)?2RC2MiD?PV%4^QUn3{b!Qu4({tc6(<9zQHl_Um>rUW9{LcODRRqRuYFJD< z%QHQ@LTcSs^M;}$|p-}bMN~^v3?7^h?Hou=Eor?L#^CoFVnFq%Ve!1 zZp!6zm}z&Y+BI4G?;-a>tuzl?Aw^IFuh?GoK|l?>f(N~jA{dmvtywpfD;xX_)24)C z@?`(^U$A&)Pt!OOiyh4jz*a-NbGoiDwQHJo)X=UlD?J_afyUIg6<2?48Or+oz%%;{ zxbwx>CbaJY6v2%50Ozt|l$V*IHI1Kg<~(NlM!4ECL%VqB^>C|whPS1kR7j0h^)~@e zM2gC%h}4w)KhM)STvVIHrN=Oj^=#^J|oKi{omafm zWz%v#rCz4(5o+coZQ^Kqgw^npx1~>;N0g_{XZ_B5nFes@W}US1EoU%~NUh8#zpv{q zZ(YIq-SIO0CV*b6i+A3%0O+;G%XE9Mi0I(^0H3|}4AWh2sqL@iEX84`q<@;FPu_}% z3w}Z>HuA6)h-c--d~(44?hWM|S-*i^aHqCFQ#X3I%<3+{%%Yy|Q3PLW*6?%sl#vMM z;uXQT{nAI()E zdzc1A;M}P;%+2|kXL`kYY1htcsRY#T2-QvkJ%Vy zwUs=>w5vo*G)$?vg~hWiO0AryO&DX3vg+n}#q$)rV%N2-;8XAl9`r(r;Jy6Yw;Jcc z9t56Q=;>{*~`_OSrO6pJCc`y_hU~uKjH+p4rPajxUQ%KQI7WeZ^No z9zm?ywOsqdnEF^N{VL`Ijj6>OuD;XyPuA~M9*KHZ5&Y{aBqTtJVAUwVxjc$smDY4; z%I`nmmfjtwwye_jO{tEv+E;m7x?zLV{*HQcaD!OU!Gm7FbofvC=ey|DTS!e|+6HQjD9v{%Rsg3?dcY}oCFq4kKz4~N^T>~wY-hevdOhFPeY7=(;!@+D zl3fX8*UI!?{%8T*OR(8Xc4j=Kd6M!7$X0v6DgH|i0oevw=C*s7?8yS7w7I}$J}w*# zU_ioCvd4k!DVhHKJ^AYZS$J?S)IdWh&4{r#0P}kCA7t^W;1^@4?_|8!a98HehZ#68 zDfTx^YS$Yk>zBN~7z-2Dag?@X?CIG8MdxgO!U}zowiO@?z`bq+KLp(C4-f7I`uV|Z z;H)MbMU>fF{80Y{0#2 zfO|a(o&#j(KP7vn$hhM|s}@j@yl2VsQ29?qy0;J>k#4{JmSY-%aiCkkv$93%$-R-8 zcYem*QaQ&cwa&5K{-9h>aXuwH86-sYfFw0U>UX$}fP1+;xEC5zrIcpyxRZc+IX##c zFGOd6?77Iy%Wh284P+ldbiUTs1<;l&o|3%@WN%06e|OXG0A%68y@2e@Rg|W1Ts44G zr#+Y#FGRlp*@uyt#~xs^&ba_f&b5*M5Uz!`T=$ghV<7uir2gv%Ho(2;yin2oK_7VzKiFO7otw6>)vm2j=^Nf-5^A}DeaHr znv0<=i@icL^8kRSfP0M#Sq5a+JSE#*Y&3sb{tkS2{Zq10D%~NI+IYw$$;4zc4uKFI z0$6gqtpwV##7p)&z`f*$P1mM|90jsXPsx4>xYy^c4Io5EpCyZhNV#Pm+IW(ClsJO~ z2!fD<0Q~>~nD0bon!9nA)Xy_Y8|T?_uce&@66c&~1iZ`b!Mk_?l0$ICzR{U?c(RqHAeW`K+h3Glq&S~TPszpuIF%5s-|?FfFfX?U z^FngjL1_+;KM8o3(}Q>MJv|1PrMWe}8t|^u9=wYuJJ&H{H~E(QeSn7S-_NJhLzf^7$@vXsKp2wKgnnRt zpAQvqxN=DswFLjrf`8bufJR_a`j~a-DeE0-1^Q8yj3KJJ1vdOtw$OQ(T8)0NrtHR$ z)Y0gA3`zZD!4=yV2rv~#`Hu)8%Q$Dkc-F`eq4g(fA9_$S{vv+xOms7T@ZSu^vK}lj z;s@`f-A500pEF@R>sp9V^@uu*9>g&n{`>pB(r^67zAyXJeP8e5ePb#dOB~0J^8bu} z!4{VhpPp30h5A!u#!IFXQc21UTB%dsP$oi}b)~2!q1-6S7|#*45ClR4XL=ykw@G4t zo+Ij{8ZHlRRQ^_jHW)9JOJ2W*L%gn&cR2Q*LXlyOy?vK7#wViSEiQ3tbixVI)IO7) zvKVf*1;V)HY=xLl!PZDdISr=Hf=Y*f`J%>D$aAfu5(0GwJ1UN*5(6)?0S?$CAv>y+ zZx{>-DMgV+IJ9aNcd%8BA%(pp{=kF63|rE;tMO15 zQmR&=BYMDzW3cE8X+TkvkLovnE;0c)>GTIq>@w3O91i`I<({eb5q|&B{^r`D=ro>S zbpJ*2fjA5+6Fem*^Dd6&WJ^0veP&3@4=CVH>Drd2Spr%T9K&zWT_}(hlWkMrgM4|( zpU%vLjcv|ha99iYs6=_q{xK9zJ=mZv%YPM}#l-s4-&N4*SA$!FRHH4>{Qb$?gF?xN!JK9+aBmORabJ&xot;i!VXX0a`EvP}Y;u7?lzgWn zjSjhQ2=2jW$K!JXuV5MUMSBnZKeP0e?3EpzOqOtEgRC{dJK{4E4?&b_P6UA8i>3X*|0&O4V3Q#yVvpp)vfJKk8M4x;VGB^5djthhaLW}-Pr|&VLvwBTbLr)b+v=wA%rojM575FOcEUJ<#KHO8q z8jBKf&0OX7R{4n?3RSwrAM{j_#G_oFGi%ZD1fI%{vLR4qhktWV73-jSGu>r5pA-EnyV+5*6u0YZl7)u)JUq;MXGEb8@vlifOe)oh z{-SANCPy7jq2^%)-sfd%6OK2^~do%BodUXK|7*VYQ}b@mWqnM351hJ!k4 ztbjw|F`3*$Wk_~PQV2ITJ489n=A6)#rkc?uw9aq~JHp~2k7n6*zdrq!_XUL#-13}g zyL%I8k&9xVK^5!z+t6J)bx_52%Vs4=r|r%Y(UtI#H4yt{%h~-xr{?0{@Sot)u3+1d zJAzzvA^a2m3W50DT_q{Zj&^)yJ9tNMXjd@z7=D^~3)O-kI+vLMSNw;22W_|4`zLq$ zjNW|QzPV7@=o55O@J36*@xFa38<^Ih)){EH{U9PE(jjWgiNG*t*onaG*08#WB0^ei zRvROf)0oS{vMx_ky<{U*aJIssWo}kzne**h=1!ZIK@mD1h+bkYXS@VrUH2VU49)3# z>b}JtaV~x5h*F(kS*WjWQLhuC9c4Ii+J)5TbAynS%}zp+)r*88s4O`Q@@X;In`VI; zaP@-Y`?_2S+orB(yYrLg3voxNwA>5 zP!3u-VNtr`dpI2IKv77v5rLz|ooAu+Qm?>K$!=8I-76l4A+s31QLEr->)JqIIODV! zwB&CnwoY6xXHjo1Y8_MjJJ3m6Yh+jcLBQ<+o>&ACSoi61Y$!~d=4PM3QSxKREN%_Aeh#0T%n^o4_q{|M zLue{Cqy>&CP?a|8 zqF`n+=<;5BgBv%|^8&Lkj$!)TgV<8#!J|Y!(_l(P<0@D`(Vm^raCugk->G z7_;k;)Xh;+=rtj|vZ>X*kVH5@ub}w>pZ{UX(_BG=Tq!7BG%2ZP&GFS~LNXBisdQ++ zL{Rodk;Bm1YGi`~z>6~5R(1vMdi@h6mz113m|lgINle+~YC$^r*;OU00PBI`d8;(0 zW3b}C2Zh(WVblQ`rLXDRy~Dc_Q_^aXCA9nne+dr{PGPn`l`h^iRS2`EB`19o#n z8yqa8B?4(|V<8-DJsTzJM~RKEPmj96#&i8%$$ELJ0?VYmJntPadzAZi9hnDVcxoY(1)}c3`xCw)F zUd$x!eH(#)mn9hdOi^Sy3CY`6Xb5QGM#us}ofAOlH^?TCAk0Cb zDsUes!oT674BW>)$c7AZl{w4Hh~a)|;3rF_AcfXpjR-;Gnigej0slKST5f=DM77z9hZvNDB9tLbbC2DOOiRmIq2Q{Iq1|0xjQOhvQm5P^I|V3vo#nyymLoc)JyHU+B1BnAR)G@8I7`7~qR zb1?7!Z~IpZLwNKQWRj-xR!%Oug!wKceBxsf0|t>^ppQc(H{th@R5`FB8O{{m6C00`yE4?l0r=w z2u;YM5 z(_P&Py2Flyck~P;eBN=o(dt^h5eIq`n0nVd*H@nhbwNHNA(8oWf(}K>UHN|tG zm$(g6t$UT^;N@&hz@eEt%6du88_UL=MngfMp!}V(_(n%W2IXIBZ#T5cDhL_KEEAtH zN4F;5z!xjB&5k4hHlSA`A)p|i%goO1B*fCC+7gc9=DFBoCh=7&+8VuvTWDt;@QWBw zOL43-W+}H661Oa)#oTg%n0wVtaVt1Tcg6r|Q)0?Wqj(u3*4~DY%+!n4xa)*7&Phmm zcM_`JT?9ZCcdL+sb(;(k=2LaU166_RLA~t*Ty===&s^6GOf{e-MREzxja?PWVDn?_QjF^Z!M50} zP~yD=QFhv3=x?*Ac^;h}Sr1Yq33s1j=^gdRq2cU*P^{!lG!xAx7RHFOKgE^F<|TCc zl%uF}FZVT;&UK*5I@O4cMS^}<4qXqCpcmUhn7*NDXXyX_pW)LORZ4@%nNpwT%<@%EGr&Ns$R7YknUR%* zfeIUfe1gm{$@G(=jxgm3(dJ*UOQYMKJT(+e!^WX$81^WOxsYT ze@ZI(Q1DXAhYj0+B&g3sG8Xq(jo((PrOy2VtcE?AcfQcu-K6mpjz@Ne)eXD*&D4#Zksqv5^WP7nY6piSy@PZOHb{2i=gG*_WQC$pfdMS4cMt0KIkJVB3F;H25G2z9 z`;9hM^b6ZKR`7(@;r1@YI=K+fSJ9bcQJ%$Lve&50h}SVm{xe<1RmrtNGN%6TX~KN} z7u;ogdr8jOqHf18WrO_x`pn%cj6}|0Z$Wn=!*XT<9p{!MGpunF5n3dIA=n@6nv!B+ zUSg&~K^kt*)yPf+rgHNDw<~o!KqjmI>I-@6p?w0c_T)My3k_0nB=3(lqlEWgvSR+! z@M3gicXcN$kKh<*kmMNclZGzojePx7aA{t1iJ^ln5_U^jZ)RIr986PczDLGQFjcat z=0{IyTg}g&(pxnTa7k4-DRdu1Qj>V_Q{O@M0jbW#Xc*HlF>KoC zBvm#;CYv3>&4R0^eVpY195E(~ye(HeEVCMdxsS#$?P+6}#2)~<-})O?OxsTcZ2K0M zN?j0l{Z%yc5yXr>Oy7AK2|gp9o{+xlEi{+8SboC)N&-=fr*?v0o)EQoYA5*R9#Ojt zKelq*T0t>}SdHU^$uPjr((W{Kfb_ahMWeXHUN$Q zNcvHfy>%k=n-x;j8K(3_NVRGTTszVAtbyoyC%TqU5RW=<_f+J!^a|(R&0G(Ogz2GWBybLZ738DqFN#r1O+wd;&~;1+y8d?**SnNic>py?36h{?WH(g| zv3H8;5fH0xgcDS|4#Xib?;e8!RJR8^8PdjITx<_knKnS49`StUcPcJD5~(O+;;=Tl z%aOp2gm$YQj~cQ3PAgy}nbi}~g?Uq3@(ra0#d9`jxjSqevI6y?^^`$9qS$?Ey^pA$QxD@;dmqVYkkdHJ>#IQ@Wc z(n5riq-{hh0sP>laiEDw;TN-*M%X+LGE2`S9I&QPRmqTp_riQ>3sMxa3KqEmOFz0{ zp4Aan!Oj|iQUU1E`(;bP$&gPD2&4W$#4BN0jG0`(Opb|Fj1%cVMPt4FGS=I(vEIhM zG}ha`WMKTHe1G5nsou_%JOY*dnm}+>0Xlmv+69~62xE<+(ygIjH!Mg(WFp6aRBI%B z4BTPRGzsD`))6x1AS*_??eXh$=^_f^$vdMeJh(xn<7#vs?~*`T6ZTk!IGR`Bc9e|% zwgZ;_k?!sIB$e@pPttcK`MJJ*D*Z zr#z*+^%ro7+ZLHo;lqW_ya+xZL=)_@U+}hX_Q&7^sSL30;`H(7J|4u7wFuW7j7&BW zkk6$8;QApl*~gJF%?xuUp7xOpY48D)ZF+)Cwhct*lYDX8a%g^p_Aq@GB*Cq?zP(yu zSWp{h1wy<_M?BbpMilP8GXdt04pgG4EbgW~fcw@GzzG?U&M_N>)|mkuJ2Z>DAXjvi!5RiPX$*6wbu`oGHqzIhVJ)pkTAEk9(V(Rd&caGV z{K?>SE!NVfk(S4CI$D&{5ytrA+wxC)Gmmjv82P7hj21iivKd4%UbxXk!#$90 zV*oKB{S;R=jv?=(vm%WU9ria=I7+8Wap5ps5i7hmP{d{lib0PwPp7-@fp@`Z0K|Xm zVF-wJh8ZS;OdbaH!{BtG zB_)et9Y%L>HMV}#)!v$~-a*#S!ZwMkE?~V~$aS0QPGG$qsVavx7tzSj>lta`Qah=# zMDbP#MRv^zzBf^U?c6?e{UZ3^ zL>szZREMs=E@9R-5VyC$0*$B+nVf4*8%t*kXA|_~MU*BRYxet+fGfjptf}gbQF)wN{Z=qfZkE?doM(C|Z+EEnvu#$Om5@ znjX}Q3QI%NrMR#t6uP|>*1f;K0&lS$+=Lp(US!^{#Cq~>;alp|1Z6Ese!UjZKin>EA{G=0?*YtaWd-HWRWgyso1g+Cfs6_M=9( zh5QOC=7!RVEXLB8k+nD*+BJE)Yf{idLTVR-J-jpt3?nMEOajA*3a2I^!*~$Xy9v?} zFnijszL)^IcU!v<>w+c{Mev!M1n`?Q2K=|8oxUn}Z}79~ec>f*bbxfxgm&0`M+9KP z+zXpQ&*^&ML7WF1b#;~*9oHs-(^dd$i*8Ql?))&#&ySFK^zT*pH(Zp9=PA7YwHwPM z^nM>QI6kY7|L9KBD(ByICZ&1sD)v~w=IkwtC1-7YGU8Vdn|u%e8UoK>MLzS|K#tbM zg=QdUIR>0%hIGV1R6YhPUfQF0_pmai#)K5F94THFDPC0+$17W!dSSkS2N_w2McZB# zQ_BBfLCK|-iS?ixah$wsah0H|;XN+og3HnYOcbv~I&fO3v$uup7!wgs8+!=jz;IZogg3t&at@sFYTespS4#dGCujRmb)8 zZF2Ago|lB~<@Y#5N}^#J<4Vu&lK~NYLT83!0W$PyKq@-|Os9$gm2Exl&t)YrWCK#! ziAZIeKxLyfvP_tD(`OO8m%=2Y!6_bn1F3AsUr1%^KtE4!@o(G9LXTPb)f1bcwDLHH zHEIocmD_RYltEH?7MBhg@;Vxcu*x(h@T|fA2iQyxA*GNGtN~^C9V!3>A$6g`8l(&% z%V<)8PW0SG0HPCq;65G$2?hmCMznq6TcqK$!X+?Dt#R;wbR!FSYzU_sQmIG9ykL3iE` z#(E8w$HGT~YqotCUg|J}6>aBXk3u>qhlHg_v=BL-UwU5F2dqL}f8-6pB2;>k4!qB4 zFQS+CN097cW}STgI9NhqK$jgIcIHyca{>s`jWFc@JGTDYV+%&q_4Gx3Hsdi{&2ICI zt-nf}+q zESn!&?f?5@Yihp`v>u$?H{bdnV@otf_h;G!##AvLxd^x9{X|oeN{ymF>HZh#;6B;q zkV*+<1^KU8wL?Dl#$0>2x;8dW*@Jfyb7y8;>oTA6viRu@#TUR_p(G zY?=T2W6J|1(o)YTTO2kk#}CGq9}J~P9({-T#Am2ib%tU{mzAFQU&hv&|Iyeg!FFph zwp%#2xWDhlzd7cw^2Z^k0b~n|*WC1<#oa4Qr6l#7^p0RtlyiSXZv9l#p_$c#a)Siz z&x6e(JFdP!kgRmv3k6_!U|i!xAP23AEPQIV|#KAN|Y3u@YH_b>%h5P zWo62QTWuq!Ip5qv3RJb|uTDx!9Lrs%Cj?TvDI&DANN0=?aE=&#DD00(2SliQ8=+>X zxrD&%HbEfxZH`DAJmwZ_(;LlH394+0_f-D$T9nK2qJU{)<90(GyFZYYiq~L*gQ1Q( z_6eaCFt8YxA({u7!Yf;@##Q>LmHvqOy)vL~DjSHXy8?iEhW|nIBs;o?dQ}RFm9H|% zz+$P!8c}%?Y#d91FC2JLR>!&Ju)B)x!-D5LmCgvc4VpGPOl7j4gS4ZDkYCVb^WT=> zLOc~QhgQlYrb~miO}N#H^J@8;=hMi|z`AfL?k_%WJ-?SOXKSjY2GT&Y`6--vn6pN9 zHD0`_ucUs3d9bENuq>Om{f1(4r!zu8vKfY)mjzM-!*(XHwlm0z8+!|u$@N3A-%G5P z!|En1FWnTJlXs0nC6nMgxs#^!J^}zJ)%mlekBdS+Z30VbXa~BokixUh9+cwlnTNC?j}%$sLN({pl%ZZ{UU4_BFZl0 z{J}D{2b@BO*5?|~MR&kybhP~=fi(CGD$Iv2J_{zCyDbO?Ym{MuLCw^p4F%M|nT^s+ zGzEWv>bg2SxJ0w8J@NxmdVC+FK>0^mf;?_B6& zd6Ae<$ziWzC#JeA{HRRCDuNyql!zSb<-IANp$qtW9rerpy38b}X za3bkR-9`-6?Qjf%?kOD)3rcp>m*>E(ib6eX{{^f1X1byY=^v#0AA>o#g$jRxIlzUo zGV?_C{g8a$R4C{MvDhHy% z58zbdLKj`}JGgZrtZK|@k#md@;URK_TxEFI(%-}w&svP}1VI18Ub4PRZL*Ak0NUh~ zmq|IB{%S~kKGVm~Klc^$su1UJ+mPINA-M#0)eiUjMERyG@M;lO$elX@T``D6FliI1 z+^__WCl&@@SP_M-ub{vkGUS-)L^~*Swg*_5iyZBWP-m188k8fV5ZHkxBb}3KVADF(OWsW6?o?jTOp|XDr zn`fZrG#*Wj>bltkVF z$TG%0G{q6wW$JBXcQ|0jy^SuSmJ6aQQl0S+;R|6>1WAX%5uXlLO5nPjydUmZ(Vbh4 zaA!aNM#n&u{j%Y&&!|pA8t58WU=U}cx<@`}b_{|BJBS2#B~8M+-QRQ!%6hNUzX518 zVj3oiY6q;9!W7euR_>YSiSY=FO{j1zZCyM3@nzT~MA3qOssjK7L<ki>I=O9dCU?R3ncZa`Z$j-DOj1}-k53D7Mo~}FEQ?=*l#9;D=D7e%u*d0KaVwNJk-QXFE+GI zZ4iy!4f`t$sGdbUhlV|8@#yiD28s6grD4!;;rNXubiE$lC}sfqtYdFe{=0&eokW*IrYUxxHlY=orGi=|^>S3q z0_DeUYAHtv6~=)U_9jI}OXkBjb|D1q77-0e_h5Jijy1ts=XFAY!%?i2>S1F+BSmb< zU_vK)*ce}v5y7)zKuB35RYJ!vL~Y7ZOI(9WZ0C_JU?Mw+hI-R|Jfr(pOy}k(XMbn{ z0JuO<#ReMEs3hMokkH1ocnNLojL6ZViQ};d?P5;@FGDS~L@s7WWI4n0$XAb@5G{eP zGn!&nEOI#<@YNTI$TlL<&Q4hctP+Ev30tE(S*YWBJxaF3MlFP*`}L^!B}Qr?XL<$3 z$si*I8-)Vbh#%EvnKtF(SqirpZ@*og=P;JPCgmNxC#;`lT)-i@0pOX}B`G?9A-a~D= zlBOKYY(cf3a6oAF8r@#g6mmd#HKY5*xJfu*xnMw%V89%~fO&!euL=gN5DbW|ULo8< z*alSYOrP`1&P{U$?AVz#$7kn9vj@Df^SWuL)wHwPw6npq^M+}s%d~UpoNt4YDZ!V@ z!tiaECy(59T~#=ITTuGQkS|9U&K4KWqzYzJ1t+M2a&h4japC9Nwv2)i_uVI*A8vFA zI>x@)s~;s){#?nVG31FFP#^O_Q?$l)!AgQskka682ZafH-{+JYHQ^!BR2lcr^~1!HGd0zOd7wH}=#N4`M@Z@?NNy0p zl%PEW?dh+EAr%b`2b-8-d;O`8^CB`1wN-=CK-C|-Tn}T_fXt1tKUyHRjQoz8 ztHjTwqfN=YmC$_^7*h|ki5RdF>?_0PBP+4`@=0VR+#|lD`cY|}Uvxx+5G_EKqBR;> zir`T+~)h2 zGO?p?IMXG{=ftlnsf>DLSWH7wOtR}loQ0K^2%@`KYYo-th)a)!i+e1%_Qb!2UhMq{ zKByBdOLtN;0A1wXn5f**gbpsPLF%IublDTaI?xEKyy<5#X5UDh3@)&xVDLGH`9V(Y z!nch+$#8o#_Ti>7AIK?w3lGDM*~kW!tC$YZI7WEaF=S>8Q(6+zMu0_1H+~bi7+!V+ znUeVo+?h=O@%r9mIsu72zG+0&++PKrfIE2K^L!nuX82cS!no;)oh`6y4zG1k8t9aw zj{t3^ddV~e2)rpUY%?h+0HE!&O7ahqBcO@Se&AbXxeX5)`G;Oqa(!%~IbmOb8rLl_ zz#3!V_Y}U+ql;ChGma5A48QxpxUMusNIvvWe;IUu9PC=_0E*a|#)RJF4_2-{ZYv7r zRhk8v9yyiAO&^#^?pK0dLFpO`I!V}#FXP~AEZANXiD`WpG)0U2l5m^R3r zEkKEaJ1Ml^ktWs*SC8-*qLZu)Jdnx8?>fd6R*!c=O{S-2;7Ng@(Lo%D>m5@;#OQ^I zg4j~oa}n=qDu`Hg6<4~#e$#P4oNp9=#RS;J(Y+08+;>vwqsA=h`*)goa6crD|b>9bO)xs~0{4b?6m?oWtDlk$y9So{T?y`<7(R*&lSZJCC zV=)cTPUW;t3e=!HqEsGHB9E9SkC-EmD3V9$mrz24ANm^4O{W=+A(P2_-xDvhdu z-PE4kDHBX+p>%sG-Em4+KP|>vu=ufYNmVO)T9!QF_o#t+B%4$5%F`F{LQ&-M#$ei%yz-QJFb2%GwTpX z`F{_ThWmZa~Hsu zclf_bE1XD^u|rbW=ftnNu3E63JKH7tCdTD>Aw3ES*S)>rYnEDoWCo-_Tum3%5~X%= z_GGwNL-(UHI{zKuk2L$&fcF3j4?K9( z2Fck>1I-+!0V&syMXrf0xpk&vAe;F&#%x6T0cjVzI2Ziq#z}?2l6lPc%3J}UI-r*r^qX!LvP>1DPXynF zbzYcy--10qlWl)Zi-Y5ZwLrnhQ_#RsAO9va@blojQAKJZ$b#?yFu#{W9NXu^4*hs1 za@Gy`G??#GH3u`+M^u-T0yX;Y*W-;o@y*0I80|kJJ+`Kk9C1=887CSAi>l@D(3*U@ zUV|JXd}<9TP`Cqa|JK~Nuc520qnCszI?J6yM2!v_76d2Y)-b|Wt?>-`NZ#%7*G2M+ zayH?SV{Wo)Hl$o7I|90=ozJZm1yK=VmcdH?yLY-ahb}B zNY&Iz*a%r^T8}qvte3T!Q6A@nzSNMtVCsF4+gu)LVY##^w6w=xEz(hh1Kj4pyuUhd za1H5ko0Z6I)={8*MkOaBH8;1DG9h3TVs}RNpJ%CM_k!e4wv=b3)TX7}@R<&bk3#j< z7{SkPHKNBG#l^G)wp-rdZXt(pw<$`bxFNbC^~@L=skyX8Ba&PR=YyJj7OpMuIJ8Ch zjdsfP2{^?|1>lW$MyU+8V_|F`z3m-qjE&+~nsj}JZPWS@QZUVH6zUuzF8T1P4;DK0Ag20^%; zH-D`ZzjJ;wcCcMRh-=8nEg)_>KmQ@qrTQfAPYZe`Bv=m*^E0cma_K(O5l z5Znhze9-+;N9=8cb(>|}Jur--_{Gcz_Kr#$&`Z()Az8mgXzD1M5?bU=n^r38F}swo zce4KX8JIPn*$~QT@MiQjr(vi8Lak0OWbRDW>43Lfzg9qV)q4T&0=i5-33qj~x)S`V zBa(I}Gi+A*^xn%D`Q#`G?II9BlXXdg^po)$&!qcEk~-Pt*Dm$f&+YpYe6Q&)xpqSk zd$rFizq?_z_7B589inKH{F_~Er!i1f!F?Wx=!uH@ zN7%a)uY>z|u5#`A7dM}rmkY}L@6#=BfmQ=g$0zkaI_x@k!_FYB z@Wz?<@^h_o*ydd?2R$pz`z+c+^S{=-lOdn0!|5vr78jeWtHu49bLPo^_PmVa)wFeE zEG6G>6GItfzqb$i78Kuh3IN*sf z+&uD{KJ>xpicNdnp!F_La&>}J6t(+s>rL}ZgC0`BH9Nwb&F4NX@JLK>clgP86Ewom zW8-rVgD6TA8C1*Z?__S~c(ah2HgOppx)wXx%tYZfK?_vxvdf-|Oa znc@jqe>V0NaeA`;m^*p(ZN;j3K2RkTeZY-JiM+}zzWjc_G2oq0^kry#Q1_;ALVuie z1n1CRb!9+b{(u`l78HHY;m1#eYx+N^(mjPvYeZcs#FbZC;;>0npTF7Ycr!^#_k*Xn z8BZ}TkiU!|!yBx~PY-Nsq>yGRxLch8l+{5CYaT4j;KS2Fk)28mkhRyfNChF((oI}r z@e51HcU<0r>>Q_ChJK3JMlvA+o3{NG<@@lZFPDgOOu?8RMN}OQ`oESsa*oNUfWj;w#~u7DTx$>P4U!andy{ zT623GplJmdEIM%9$!&$p0Je^llcW}_?(GV|m{d2T^AtphAq-ZqPvy{{a=bLCQXU8R zU{K69H0Z4C!EK&c@Fr&TKhDI&wopp9_c9YU0^jQXmSJTvMXJ}O6dV)q z`KFH8_HE!e9T}aH+;NYPNfRP=c&|;*^~@3zz8nxaKHWQtU(7wwp96BbMOBj#h|dVj z&v1q-i~q@KKSnrd*>^M$x2Tswf7%$_qB$`1wn59B7GO&z&_l?){zN+d@|oAY>GEP) z-!{gB-QW=%S2shG^*SKyqmZL$dnSJ^{RaTk`v?IuDU$)ZLWW#vDH&^>*_NjAnzL9IZT~(O4$wVLosP6aK}uC0!Hr1nV?FM zp&+p~Lo=zL!G8O&Z-!#d&*F2M2|h>QP{Qzu@5+XQuJ;>w=Yr9YzK-z+{4cWzGsCX- zdktx34XuV~pP+7e0p?s2J#UW$rBi*&QG7zy z9rXn06OE(Kj+k*~#7)DqF^?AZiIWbwsHM-XnFw>!yMpm0!MW+CqBTE@gT|vm_z-U{ z&t_7o`Rq+g9UdIQcsjAO9Y&X+dj6~G`L8>)Js)1pmd_jxx@&DC&`;R#vLHM_=(n*3 zD{)LT68d%Dl62EO(EZOF2>sOK`0SU->|AtQ)uSG1Ok+2B$5po-Q{DEm?07`nTY|U| z;rF~#4(bY<-XAM>J%JDSh69YU@wkxl$d%bJyw;2ls;|vPh$bB})t%T^^KvUu${VYV z#_|2{5KP4L?Or2uBmJGo@kyUiiv2{rXphk}IpuT0lt1`T?MEBwQ+tj78II_{eu7oo zO;2YZtjXSdaXeu4M+U2a!?x0;ioP9w_fYSkHq7oHiMqim&>JI}8pF?L1(G3 zEw$~qv2C@!tvC8qc632@^o%vSU~KfM@zFCm(FJKH*n+K(an^PIChr;DoF}(Qm)CgC zjQ2d1*>am^&LP#Dg9sf{%{ii)^O|bTG1Z)P(6r8%rZ^A5A|5urf!$>iAI$wzj&}l# zoYx7`7ou$411k$rk6`8-fMH>Qrx22k>Y*bU$M_3SP)gpk{JVyaySfN(tBjLSIm!|T z>1KYcqu~5)9#}^dJ4rhJ{*N5wibhmKS3$=u4t!|37bO-rVy8tIM257~UcWDcWO!P% zVf?8SCY$)^ZX$nbB)bd3*Hv3#-%7r&nS$yp-;*f7$Dxm@9kN!fW44)_*f*8jc9!?N zGZN=izUlkbH%o-3l@NAzS*YI*0bi+g@mF~{$yRFXPbd5f#%Rhp4TOPJ7-DBalWH~- zbxw`^l>wnchE;?a5cG*oG9b9gZtaD|rC9Y*3!4be(M^>vdiafa4|Llz;>0(AJB=63G07H%(>Oj3cp|JVFS8Na4JN1wD9@ zGw>vo5X|o=diX5xJQih%r$}TX39yZ)QjI1A{+ive#f~o3X|ph>&^l2UKofb zhKI%I(u6xv!K+9+yra$lb zbs+MT>^?WqxjB^MMdY02VIQeK752YQ>J!$IF$R(R9YMl_FwIr?s4S(<3rkBC76?)P zVthnjH8wt&-h5js3$@r%6w~;>+GPLlHqWwt zT)+0sIJWqI(BxZ7GB3wi}5{ z9lyGhv+;4XJ%e^Rl?7r2jKc$`A=h_aY;W9x^7xo-p33#odn502> z>5^lnzAKu!PajG+Rt)CJ$R%QQ*NF~FCPywSZ7k{-)| zTn-nEAl}G*AH8*RkOr$3+4}rQ$;PnmcR@EJyYIYY>r~p`;qqu0%{|}e!qz@gHxVnF z<_98$e%9fdj_T#x!OVJ}K@3lKqTCT1lYy-J!jal!ov~8XQ`qTb>n0KSkd%y!#eg>h zM&m{EV0c8F17H(zhHNIk;TeIiP3Ao_??fF4jJ{RMCZhIR?W4N;g?imVe1SIGgMq=O z0D)`SDQ>KI#NocGqfD0&J>E=tm$x2w>t}6Y)iq3ahg6U1!ShhWU6Z=F=1;40y&q)t zsegxlY7j;8PYEh%B+C3Io1`Zl6U6VOfzN#M(`P1?P`WsWrSvbbsSvKXUgchqH=my`uN> z!mm9md#C&RG~=vN{Gr+M?L;Q9hj*EwyR3TC_kE&sKS(e(9_=WvV4lQ8N=b*icE%E} zs-K1$`6*taZ*zSv|8OwuA(9eWEXg?~N$6 zflFQ})+zQXcppGEWobs5X|i~i2MtRTn?zk+pGcl*e-8JmB*qR@-yF8iuZ2~B-0#fl z9gw9Bn;~R2?qEqn=lHmH1F&auK7CDQAM{-hnZ`Z&G_tly$MoBvkX-UY?JYonhs?jx zb5$A|MYAAlHiMdVPx@B>AevpJW+H2Lv8T>qCHYWAt~XDyG|mrzF|#*n0)ZU(-!xgT zd$Z0Tw!t%d9-Um8w9wFuP8!MhYg_E^M{r(daMQnQFUG%x@pW?^L#1q>K$JZcsNq^9 zcMy8|sDH9PV?Ww98}Z^2d>(jZwu95D6P!*%Nb&e;eHe4<+^_ zT0tC%Mt;u5vYF98B^S94_OQhue|p2B=3Kqg=HI7Iw$3YmZp?z+>g2P2pRV52^5guY z8iQ5-+G7|Z+w@N(_NgOwbp#BtPzA6T$}heH+*6!1V8d?ykMFvlS##KtUur?zz%0wo z$8j1o@oj%klN9Sh2;am$OC!;`CmBmfWREZRaLZsxknT~ zvoISHhH!n-u_BO@&`|ndT8WhWkTSA;Dy&cvVv1ryRrXQ@r3yYmF+a*zPHu6G@kryI zM?>J;2N;;2eyX^Y26mYSb`AscPyWP!_mGI>RJE@Gc?~hbn6?_0w6QGasdA~jU`$XK z09E{pyJPH0>SRlW+=ORG@ho!@x8`+NaA=2Jdb7J7q<}w8qgor$Ds?LNgi>}F&AJtN ztXp_WIsNy9S|LjM7m>#3laNj?iJz`yMB~%tJ~=F zb?|<6#GaV~VAQ5GlAVTM+1;qgX>+^>Vp;0Z<=1Nf5>zC(q(f#h`R;$5@P!5MaMKt7 ztE9K3DQpQt^q?cPNs_m^6{nDeEMjDJ5wdt+IxnOmuVN&pMg;7oLcq6AlhQOEa=TA= zuizWX3z=lBCD}PHx5L8!2rysOq?nP($6A;s``T}*lO8Dq(_3fJbI&@k@h#+#r5GL{ z6!$D`tTc0W11!FHxk>Tvrqf<@e+HZi>rNO(AleULWdTh0M3~F8WeT=$oAhcsC0AqB z$oN*65dg4BR^1(iiXbdytJ#prJBnMul5yS!bF_QegLIx7(j%~$5@8)$cI8=i}%aeC0 zJA-7zqJ%5*sT|I!)-ueLF>6%DS%W+&Oq7_2F9Wq3$k5#kMUl!6m0*uqLLW_VMehIa zzeA!JiZA4q$t&6Jt)m#QRfJlGq^8t5vUOtNtKVF`WbhtPbrxn4&f(T@PFj!9-zL;p z_`C5XCe!4V0hBQ2pY%l9Ym7U`*^Z+gm|{CWomBZR!)c;Y$z90dC--h^%>rDv*c zj;X1OkN;WkAR#Y_SK@`4d|lBvyx0E@cOtH3G_6TT>^nrS9YPZd7U0{nqTfFHNnR+o zRCYeiKr0bZCVPK|_w(FGpQ=0LLG=r5zA}oY?;YhuLQkTZJV2&-mS21p2iSL){fa+$ zhZBDQo{4A6h;HWgm~mr+^3!JlpXjq>C~oJaz*B)+V%MTjEtyIEgNSqP&R>;>{X~QL zNO0~8>gG9L4(jHksdtI}QD_C?THD9LJjnHDW0H$7Iw&8Y<(irNQdaEZDpzQl!>%rI zwI-!BVvZ@pG?hK;<~}hgwSwEY5wXdu!IKoPa!|M+k5T-~!t3(;gh|^WH@K#AsT2|` zkWZcw{pqt%9LYy)-7;4!1LTr-6aK6v{Fw_hGfQ{d-_roc*3*;c@I>$~vzO-$uz|Iu zq%<}6l=Z?2208L$*CI@1>mUdp&poeUb))n?-I+_mqrZP%W2G2;<+fD2NukVJsoTNK zEwkKyJ9LjeqG@a4tq}Q_daC{g{;x;3g3cwBO|J8%V9R#9HHa}GL1dx0S|IN9pdTP6 zhdc7TfQI5n-Km7?7LpwNU<}ZQCOxfN4m@2*d#mjf9Qy3k30l1jNPfIZ3FN>qEs56+K*J#HS#qK=QkZYbs zu^rMl?K>^9xJZ5ybGURuPz{E6wThKU=57apvYwk`D}XGJlf5mSC3C=;k$w%=odVfkkGBDv04MjE>O8rz?jo z%g@#6;z5(cj5T;Dkl3|AK7xe$7mhQuAc{B54kz`Cel0wfE_`1Vs`UM=atmsr=UCiqz0W-*Mk1^r}&D ziYP6GO@yD6@_A;Rjm}lX7T0(TWR$3I|zosDou*hPp+IBG)51X%8$BH z*F<5qiyG?9iEIExG~GL>cqp^9t+weDbXw=d^Hm~55{_${nv}Q_lWwH~PR$U}D1!d7 zX;~wmda`&KV77rqjRMteT6bb|NE{j&U-L&{`hsXfXvAH?5o?1Z?hKAt z6&#WBggE_TG$u7#a%zP6i89RtswLQP zZbWp1?q@^0B#BF~-o7kMJfPnu2tx>SWKA&n8g!K;z&a7TNn{0$?5bTDXZ@>OJcS8R!P_*wrK;I-%KjXdY zu!se-U?5T%9uSgu^OmKcXTr4L{A3##SuS8@mNf^hhV{BPdt?x2vjtplThRdx+|-7IiIkyiFs`+oxQ=V7=Z2cJ9XnBdDq zq(c~vH%oU-MyL83(F6-REF5>qAzBhp{0}7pjA<{D&(eCr*5}Y}hlkJ6LWbvY{SMjD zG7t=L@Ylf*F5^i6%3Om<^{XfF*F@}^Jv%|{=#K2eKQ@-0?3{yv9#IAg=ZlmOz9lJX z;;B;}*qZgLa!)lJ}68%e4GE%~>!)>rr0VREzGcTumI-SP&JVAo9#+I)3ivB&q)W9ysr*g}ty$mzf7 zL65H!bmZzS3qe1;KiW^ZYsp=rDQJNDCG!7%&r|#oMjv6LPl%(@H@Rx9aGhGlvr%3b zni9rCAg0g|Tim}eWbagkMvH-I}RCQG_dgbWNhiziWUlmxCA`mk@Rx z8*&}EeTAwi_H|CBRZ#8dNkPmlT7J)lG%iP=K2F=CTh4^a--^*3T z9?Jdo*n_pxe;WHWF)6>ow8X`I~89svhpy&<1hYZD+&z zCqs&%lOBrd{h(`?erY)?{BY04x^`@^9Ho(B6b0=J_8IQ(W2L>qpIkuqa-!&gI z#v}a|V=A0|!vTM2+_qJK#pq3m6b7C)>cTDl$Sn^Cu&j;%~xjO0T zxy+d;j$VBRZ*u=(Z=T0z-29sNcE9&k!+TE{U$d8j*7B1l$~mgn-qOAHcU|jMT`R9| zbtbj0PHHVmYBl2`v9(#>TBmOvnbew>*g7(?)tuPMC$?UVZ|#k5Js#h>CBAiae5*6Q zwFpn*T07%fkH@t($F=6gwVLBvdHio|y=rLfHMVvdTaO!Cn~kj_@vot^&d|EWpgE-u zR#yhAHwLTk30Av<)%h3ZObS)!g{mipsz-;aw*{-Kg4Ma9>Jg#p;i2kbp=wL0`p01P z_rdD_1grlQto~=P`dYC1YOwmtVD*(?^%ueF%faeTg4Gv-)sbLzAXxoUu=@32bz89d zkHPBKg4Hhvs}BXMTY}Xu0H@pH0q=194UeR)Ih`9Rnupy~C_FuPVyQ2QuAb_-fmjBR zUUB~2o=ZF#Z^%{_hJhxD|0A<&Q{5lf$`Z|cHCld55$9b$r~LgLbF!VOdu#O9@>(`Z zM+RlzBERK5WN2!hl;7e=y(~YnviJEXpHYvjungDP2R(}dk-BGrIypE+!mV6kCwP=A zs&A@Xp}db@xhh7XALVK$oP)|0%p76ms>Ie8QLbj&`l8C!90aZFpG6$r>czIwfN2Z& ziYh3H#+r0frPv}}FzC`U?nLxu>c|l~hvg#>uqdgjeq$L4N&9+Y01Ph0EKc5{GXgv<0ue-5RKABQr;3rHAt*JeeKwlEZ>l&yUTDk<1TMHJQN3+*=@ zwcQl3-Si^J^Okp*!K_`sPcT#mAmT|w2~P(@o0_Hi&!a0 zkHo*1vG@noqNsksHL73WLIb9q|JEF)3S@}b?#?Z{RXifNwD1-;y~dnGT~2xF6LAw| zslVM^K5CD;DWbcrCc7jPO12C2BFxLY3p!$V=0JeZEYglvLA;1XCRDdCtL@()Zk7L% zAn>XOGFC|N6le@skjURm*6!Sh_YZJ;6h{A6W+k1X!M=}Hi8SZF&=7PGdcf|O0SJ9d z9sEW`3QWRoOJV$}tS}SFuCeDxlEm{X$l&c-;U_JW8Ncnv{gKd+xi$Viv zh6oC~H32cFp%OxZ%w|bmRDx2kY1T?wb2MSG2VYpgf zp3xLYl50vT2HiYt4OW=yYTyi(CGbn%xdOo7WYNQ!!m_Yz`mGGIt@eAq9$ZQDAYHkS z%Oq|teqkCK4P^nYm89N0T9YxH7)@N9iMhq26GC>HrFin zZQxBEDrtO-WNC2-LaVrfM%+hw^YQjdQBOAh)eA}3sAG|K!g7uJ|1|#!qH6-_ zfS=EJ1n@iAKGqMrKtj`q5n1-2lMtP2xO8vdw-4cIFf9UY87qjBM7%J`e~%ly!XJ*18M zjDHZCYO*lvs}#%|bc{#1{j0XH{(Ri3X}|lj&->*b^_P*FFWYLqJX!N)pytcwnlIh2 z*p06w8DG&DUs+{5zS#)u4F7{!LPBraADmd~H$q_Y8BZQ_F+Tbcs)>{}(R0%`7y-82qcuKAbAByUtkDiM}9=3m-M6-6r~-i*JUW}aAi^2;cBGP4p&yC z9av=!uFl4;fq5)Pvdg;uLRTE5^(*3Thh*4c&A9CGIBMc{2Cs(}Jme-f5``v!5Jif( zM;s78ldqGRK3}E;I7BkIYu$QakZgp-GirQ;27dcsp@3oJ zIP9pklITuGrEBKRyhuNPJlH(NL$*>xz!iycpCBh>%bK_g)Pi#Ob{9^eYzdZuCmU~v z&=dDLz4ljdxESdn7|KFZiL{K{9)he^^~U=!@p~V#OK-C*3j9jm-P#lnbBq4i0}r}1 zo!aNr;fctPKOOTgxfa!duEJM=@{pWmg=HxD2Ydxj6QOv-4nalOT>u@8zfRvh3N8qu z*jrGDuuSjGtScYu>bstl@33W}#Fsi9seFCEVgbIv9@M1rbh^MERPxb47qzU^J%jKU zez+HXuJ@q$!{0@OdAe}74pe{8aK=Z(%rE@)iHiA%aSuQ8fO}s~w3WKypD2!A?5;<^ z6wBS!XC^0M_Ph})V=_w@M z*pVJ|$gA8*@@f}M$l;{vobJ=4DcrTBX`FU2)FqP}p?1o_b`OO0{%>gH!o#M;Er^Dn z%&#Qc7Z51KKA~|+hi)aX&_|pmSVQK_lIX*Y=_fAcgK^&Db_a&ZU}6OcMn%2!ICe1W^w+y=+0azAtA0Cd9WI!D-FR z$H%O~**<2P`|Na|gB0_ZsE5O{!F!q+eQUF?^JAP*$`tIPmxDE9NT~2V4!fgz!j1MR zc;z_zsN2AONgtJo>3Ix?1Z;G+5D|K>xh9*xN*@hvWP@*EAH90Ise^iWec+?q_cMbw zlMt*Cc=cGGyI>eeiBDV=ft9S2&ojbMC}gb!VQ5o7<_O}T9Ntsa$lZ@#F0pY$4am>F z9|H-Km=pnUO-(w_<>TJVt=tzUy_W;tFRpmM=<{BVcrSNxUtING?(|*`dcSC{`J$=j z^6r|;tu>cD>Mz=AE}yKqe8YPgnSkq5UB&6a(`jAx>A|@4u2WfE+N`cqnO((0yXrH# ziZi;j_&2+&eoR;Kn66V}yXwbwoyzXgTDwl60rZxuh1+NbIi1LB&noFFvQk=G0 zoVH4whU8L>C19E6vP@fPnYP+8ZIuhppl;nb?di;^&FOA00qya=X}6#@tWlGxQX7kM zgqIQSZwrW>>S3VlHDnPl92W*mZTvsFOvm^WHkm&;=h8IQL?b`0f8K#D9^yw2zT|`pn z+fgiOB%G;8ekb03wk)qy1R-np=n(KP+{m-XPL5d!eK5wE!j3&G*Y0=Trh^+6OqD#^ zDTt~P`K>)vkS0JOU0eAMo2ofR@>nF*sN;Ni2>m{>Ck9eU(OgwMLMmV+%o_pGEa z?ELrk{Bw>i?7R1}Bh-CNoxiPDOU1gu1Airy0kQK;bzV(xnl5j|+5_%}l z=AM*P&;@s4Xx@Y<-m0Xxw(8uf^h=U6y_Z9(T9Z$-@9sbq?Dah4N0&Y9s+<2*cf zZN_f$kvg52tLlxOJ?$CD>eJ+V=A>j_Xenw=$~rUlIoUVZyx(?ejPQt>8=&7h+$aI+DxAQenYK$lxU9L});n$&@bkbAWzcEg~sYDAv8ITBAFm zTBK`(_~o5|nHARX*-w*Mq+;jYF)yy@SMQsM(T)l>hj)nSy788&>_?|zL(K6N4H}2z zr{1q56b*WVdVZTK8ambSvT?dNhKg+|VQl+==`+KBHQgL3oZ;(G;?*}XyjjTbhQ%B0 zl)Z5$dF?umm6ubUFz1;xwpxKN5qKYM!XLT|dUCvZxcX7K>I<4dSXtadLh!~n1+n&0 z%dSAl49Qg!i`*m%yf|91R{MaV4vM#!Ezdtnvx(lxDbn9c#%$tlj)e5 zTPh$Rl1SRI25lZm0#@-g8OiPiE-C`JCIKpT3AP)N4>K8_EU;s_D2yRsL-a+$)x1@@ zwLU~1_u%Gw-e%p>v@OT@x%<7T7236y{ix27-r_Z<^MqgSH~9@VT?dXmLs6~Ur1X;4 zQQuO3k0n{p^=2Fop_H1GGZm?ln*zw3eh*S)!8|*BOK~4isN!EIRJrwc3r(3}uQQ8v zx9v@SeOT9l@3!S{hTjsk?C5e~M0!#`iZ6GA06ZuVg$U;-@w11T695rE3B?vk`hc^F z+J`K~q!r6vFgmZOD~*}>t}xq+m?FTSuue>F0Xls<0~IUQ)+HOY9Vg+LXVU zIL#9KdED&De>!$@6-Dz9b-`8Xx6NT;osk$h};Oo{FN2u4jV*#F*@n2;a$Y_%HSet zBY%qPMR*D~7r0R@{H2WQjSUnIEgiRUQ(#+m zQ(eR8Ba+-cMe+02PyMx@H{!*VSh$k~@w=>=OqAZByWXov^A?X#7JMT@Tp-hi|J02` z;ik48_QW0I*Ad!IJAKJ9{ya1&nXH&T-5Qd@y${&mu*HMK&R~;p!}h%+-X&i`C8&2j zy1Oh88W3>|`-WTh&lS4=Xr)3CHL7XFO>JwDGa{wI>~6W&Q=%Qd%0G0iYIs`1YDZ4ex3(YHnnr^xZH0(;_5HQ%zZ4}Xdsg$ZRK zKdI1iwvlkn))NEx)2bC?nKBqDV9wI9Z<tD%hqZ}^uZ!ou5>#b!^ z&XF6xbHa^dvZ4>A=4ubc6=F+TJ~ZV6w5}fPAdV%S3Fes+!waOFNk~YbV|BwZ(x${p zviEV3y-!;QzfxIKG%C5$Ry-yVM_VFZ2xaUR*(7cHBJtzLCDhK~edoH>P=$HdInyT~ z3oB{WdIXuOf(I4~`A>3{E*-*fcS|X77u=4l0UY@1Qf+#3vH1Xq4J#^DSO_H620t|I z*b4?5B)?4}Ga}BPy|92{$AlOiOlHu84Um@yO*mPS# z5?JB9yxHPxur4>*qmY!di%P|^L+mWptG=e8Cpj>b@4cwM`T$MG^%qmxRj%G4Y9Dap zR{l#j1?Wo@xmwtPVd}-dHd+yj8VFhO-RA|C`x{19OE%Zi=}&xgjwO3jOWoeYx;Zfr zdAk9z@TAR#pK}uJZ0$;Zk$o$?`^&_Y zkcliE8B@Jqi?d?sTFRIj;)+WW=-Qhxl}nsGI~jhl;#5o+%yg6T zBV#Is?sF!p5A&NI%Efe_Ys7wMr4-YMTY>x8_%{ya9ph2I-aqI*Atwby*d?UE`ojt% zHgE%ZgzvFARs1rioe><5IH=w_bI{I(&FyBJUuW(PsZ`obCRM3OX|nK(W(T}xq^HHc zzv~)S1V>%Du!gMqi?_m_iv3mrJP0I6>ja1qw^JOfEs8@RW+DA$q>jrUs0u8S{EhQ8 z)u|=PTyIg4)`ex$yLO)TYwry7B&Jk5%h!cjCfL$6VvtYrC-%abXHm{6bj?b&yu-q@ zBkf-g`-olj<0_ALy1O9y1o9V_tPq^C_*f`|k!QIGTev=xh>J6bf@bASxat-9N6+d# zrk9@@3PdZS`PCr&*mFxt%!1~i!XGnuhJIuox&egP0_On4)Z zTvuym^6ym~{TH{u35mmuBmAVPC0=+9apLH=#%0{Jk_{yAy*EMBMlD-)T%{0S{@dv# z2hqY=E}-1*HOnbHb;XyTn?cfP`r`6=IB)wq5>YDy@#QJEl)R6p73ELgQu1e9l$5Wg zT3y0PvTjc=^WV)hot%OsXQ-s)ZIYVJD-uZxMe4sd9_3d`V6IAUDRMrAxBSeJTO^BD z$Yyq&B0fuQ6(=Uhg{7i);;?+4qHNhgg258w{@+m7s$rRCLN#_)ADpB(a?e=~W1p*! z-Y!FBHLf5@I&w21digjC7Mr#LpgT8MSj_hZlH}0*l2{;*Yd!Ow+0H$+ZXGFPV#TbP zq%YX0qOEV86uW|3)QAn7vWDK?O~<~)&0IY#j%8Sm^Bm>_xxt+mv!6S>_-DFM%Jz^# z(+#-hD|S=ezdG(jzV(1KEY^@J*Xh)1hglE=+5f{W513gBGs#-2Gp4Daq#WfN&lP-v zEGaqJB%dldEl1uhTQKr7J`aYDbc0y9SfcfNeNbvJbcwV>8qq~3J9w_E^9DSj7p+@&f7UjQz$axvYW|HRHyU639 ziK;t{`U$Ew&-IXMoDyfR)B{lRPZU18yT)7rm?cjpxVYalWmB{e@!Mj83#ZtGC{9a( zOY^(dK~H_siNsq4F5yp*2O<%bEdskSNw?6qCx$sUuNO5+J%9wZPSP(rXtvyhb17!{ zeQHMI>dj=6Ufs{PdriC8HICZVJSFUB*LU{wMf=Px=!0YsI-}{Q9Bnp!Eb>*4gO*=a zY$EdO>fsl$ixoZm8g{X=hu8lizbNBiy3WA6=E?pDSA0;^TX)xzTyw%o{jBZbPqB-2 zJ^TmkVto()sa1YL4O$u4@wm(S_E9d8WC`l~F8od6=d(E~xab|2;;C4xTYOSu$ds>m zYV^G?h{e_iMM-NIDwpA7#ggm4GT>Yw$>;fcDoW08f<+8s8Hi);2>#R( zxsOy2`5bGSNlgpoJ9K8gDW#I^6gr&KC$9;IU>iu?0^Hmi(!-LmHVR690+b)ucMFtp z_-Y6>yc|vGbc&R`N!H=rrw|qJ zjC^>3lm!A&=`oadj8Rb~ZU<4`cM_dr`_Z$w0CKNS@|bd%Rm|qRWM54$ zsN69jze_C-ChY-sif{qa`-6j3%lOJ+0c~jT!%K74zwc7k=yz<5l)QX)W(w-?W9>E9 z#uR#i3f-RUJWvW@pCvz|Wv@6xzcWj|;c3^K7x?|^Q)b}B6k3zbJxGKs^pHR>g#UDj ze1}3gGO!#XPO!2m2M~)fZ|!@9>6$}hHUzp+BO^J8LO@!$9%ELxXm=$ENpfKdi@gOY zW~b>2Gv!&oImSPHnVHviBrtdrkLr>bQl)cpmI&;fiXk`QCq3g6^b`gFI@J6tb6o@pruJl}G6OhP8o zyOHVA_n}O2>-{Lu8<4V!9@q{Y4F(ZQfjiLI>CdK=>&$1T+6+w46)EC_cc4 z6TH zn<_tsXdOspvWYdOwi8%erGAUzFDUU|)S35Mt|hm)#6{E<#y*G!>V>KoBh7;+)=Rgr z136Vi9u9I`f{S#uD|sV`Da^COw-o`hqRL0|6!|F))+_R+aTw;yN`B}Pnm8tJO36$& zaFKZaMeft)KkrlZpa4pyM?4vdFlR$k{#n2#1%Oa^>DnGh+g&JQqSvkv^hDO#d@+rm z=gZ&@o--U(7>VKh|KT@8C;kWAcFMb92L6BLHSxcCkA0usOST2^ShWUx&Bm|l;kUAj z)jd3o2o;Ze_+93Jl<*Tz$z**LGoGU04(Y@mrW4njt+G$+ z)TlJ7Ic2ssi|=c8(pf{8gXeT(2WST?V8ntI{@Fdf2POl>*nxev$+_NoI<&ed-4(G?Zj;akx)oa(x!vAdCG&_M4&KaC6XesfVf%9 z0!V!ycGJ!J9#{%cyolu*SN5dfCj4PHy|b~$06Z#|mU86s=VAvSo*FDwqeRhr(#QOHs&d+5@RG;+z!@Dtde0C2MLUNB=H zMbYLk5LR#>!w_?X<_vJE`W;z)UJ9mtg}v?3o-ziAUHaZJ4vmrt_!6m_Ujzd#ObcUf&>$4$C-?w&(4pGzfS2wCD^nXg zVwY<#V!yXffx2C*rzn?!0^pZ_T>!jrh>l=Thv=cqAc`vpS8@td8Za=A{u>(c3JZ(5 z>7P^^|1VmZLYTxlbGY>I%_vD3590_@^pc*B`UG(8+rQB(H6LyEpf7`aZc8U*HU>gOg24OpP&bf*x z8MAlBgwK6( zHil;QkssSS3#WJCBT=OlYjxw14!S{?TjvqgVS!ukw#x z=^y>rbGG#tTW0SY-SC{%FX-CSz?i+y+EKDXl{ksykd0vgEhIEgNrEwYqb;lsm-vU* z{?5#&3mblx4akR>#4|egABU+%aN(Zl|5)~1kr@VPYP;U)hgZ5v9Hd$QgZ!zd{T4Gv z^vHL*`x8us8R|-8pE`LAGjR!!s5QfRr`8!}8%rYXnH4&KB#?ZqVaf$qpz5GTFqdEo z+)8f#rFSbnEc~p_Ug|--7{^sE9Vk!aL1l?}S~A0gxnaBpFT1;ov*@|3lqy?9@+!X3 z7&c}_A0%0bH{1z%hz-W(fr-k6XEe8EtewpGFr%}5UWdWFw?Pe)@iuWqHh!jgxlXfF zH;B&i^Tm0hHU?BeLu~dqn-G(9o`7Wcv!~1gMh!?1Lz_-%ECQ0%K}#nFy+kqZVzg9N zXz88Ix=wYO<|a5FmL8y;$r&fqkdV5H_C-m}2Faep_jYr}{_|zaa%=zfW0wB1DJ++2Vy=bi}y{G}KpoM5`9;zb9 z{M5FRGe6Zy$SaeZ(%9@m=>)Rw#5~PhRe_+^#2E{$5uZn+j?)*UL}VZvx7Pj_x8^2N z3!?>uX^oT4_9RZ%jPs0BT@rj9VqP6nzZuMzGngxWYen`!jcprjzI$B+Yx#6H#iqv~ ze_sequ~YRu>k4>!_*&Q)15r4z-?hXRN(Q1&!gPGmBS^Dj*&TT$Jz&Z4kbc1W0{J6I z3RO%sO{1lCAo>DVVMi*4uoi)pZj&=+y&SWHY?oi7-@fSm=)h+sR@h0b&_j?ZnM2Dr zXp9BR_oPov7UIo}`w8b7X)W*VA$Nl9oQW9TmL7x;GCPmvIPGx%850WfN*SOL6sD@_ zq=&&XjX04*8i|(dVJ{vQ**+?}7t>~@p3^i?X`S7Gxl=g-Kr&f9F0W=4CnR@r?dx!4yw3&;+X5ZLR(6a(BgR^cTt-H}Wp|-NEUKezz~FxigTE4Q zG5~+b7JF@{pgh#0I0fud9*ngxK*RbK=EsyGhK33u+Q`);T+IW7NLdL86ryR`12Cm% zQYf(`dX@b`w+wjG()dtdA(RlduUb?qVya}28#z;chCV~`A07>%N3-NKvW3{r zm3i=pjPD~$Vl9tCVlcsv za~2A6SnYAB3?8eg$YK4--$s9b@<}nBslr>M2Mz0p)f2s}6|5P^+^A(m-($e$VIY&a zGENgtgnJ)m*i9w*WE(+jD=%nIlL91-ii3~b3m;gODkWw)s4CHy|3!y(rmNN<+`!F$ z{l^q-g6XI6{6Do@gmy0eAAd9#*<2Vd>+d>~3y(3mP_c8=!MAYpC?p{n-WTy-Lt4{R z_!`En7AI=fTjhV&7?N8&mPO{43oI%Gbv5Ln5UdN~U78F`S>NLZ3#9@*FAG?Q!pMh> z^tiI83LA$WZ?hoTf47A&9^h9+I03L8}ZDXNhmUAX@J*_72Zx;Lacqk-nfyyJ_J@4>2i?ErvXEH@*@V0Fb&c+@it^i8Etags(m`*w!uZBw zW7TF=5Or#qd`w4f4_5c8p99r5dAHjUGiu|%?Kz3CPx0-L@)q+1J&OiHXuEwY2=Ut0 z2yuZqK7%GuSs^>dmn3jajw0kMc`kY1*ed@H^C{2r?k5uPdaq`h$5=DY) zrlT;ZCLtd2^QkQxr+RiGMPiGpMbwQ+(7!6_Uqc*knDeVsn~O4<`Al{so<5>q?MvL` zOWeXv#mn@h`J_3W(wwmOy94xc+(6_0dw?T)|C0khQi$>v)kcYW9wX_~kdPAQ!rFnx zEmf@Xke_<~1OjfRYVAPJSnG@NMB*SSDuw66#&xb;+!!wTMlB-v+3`+y`E?x5er~9{ zbv7?uVby(VZ*@gc{-QaQ+J6TjtXsF%vd8-l3lTS_Exyaoj(81vbOrb7l5y;GIB~%e ztWwk0iHmDWE41x{bCVX_LCI;e=aRpPd{0Tt2jzsrK|ADB(&F}cXm+c1@PfNxCqJ4eyvXjTI|x_74hS*-+-a51>p+3le$}z)+7&J+`gow2aYCFxo)W|dHt|O@I%>( zUiISalfsB{{vg$)4@&d>q_Q2C#BDI>1}O$2pu6bDU)8Iv-YG4Bi!cOmk#RB#%tCy6 zOD#pc`)Ld~`3d2}s?QOV1AWJ-8ht@mLVtIr`-|xB$O}5_`_$9yliZx+7-sPQ`s+&E z=t%cQ@C3bdW-Pe$W{1_8Cw{1CLG5i**j|4}fn?1G!M{w)su)2ZPtZu%=Sb6`&kYAm?zs07=Rfw4NqrVe^0BRDr}YyI%4T;i1B2Fgl`xs zWoR$Dr)u-OdQGswOrfsbiGIhhi74oC5F?3cvFw6Xasd_M@Ei6DO}QiFxsO@q!WxbE zEB~{^8v>58{E1H+oT)I0KVGzTDqcN8ueJvDhcV^rl(!v&SPeReFk*O#R-t5ULn4wS zGeR5f1!sm&R=>2kAi$}t6yeO731Fl=GT!`}AMG|O@gfoPOr;+S zX%MRXP=HH_@qnEcfbhH=L&^;M0fk+q#O}Pa`t2wzFRJN?kGqA$a2Hgn z|3lfkfHzU5{ll3Y+oZJ9G^IyMC?M&9k~SPlInDIIsRaipE+T3`P{bky!9@hkq(uu< zH){1?SA;1PtynNX*)3QxX$uq#7_hG0eOWgki&a^+Dri-7zu)}?c73n+{r=bYd2!if zGV?soJcs*y|8CelNapa07O+&rNJ16&(&N_o09lH^N+UvHT_%>yvsVb(Lcr`v^z1=n z9%vmzPtTvq2ynSUg_nH5iE4$P=nXF$8$gF?^?OFW?Q1L)$SebC0QE$i;=XnpJNO)9 z_^;@YyUM~nNkHW6CJPy9_OaF!UHPv~JTB8GFK?#g5XwKc>+iuR^{Ip5nD`Nni3=`@ zsO=aDROG4=MA%&eFQlxE54us|1oSNSkJjTRdK*ZS8{V(!fOtTF5pC4ZvOe8f0HuX1 z(5T24!UK+uF955dYm{r@EAVn7asS`h{k$IdFM{qO$qFe}QRV9ZoM|ehpeoT$>67tD zqD)%b4zcC(*r73NFo7*$YmJx`9HcD|{R&`H&{OVjl=x}pllD>%70FH4Uy0RU;q+H7 z#tuf*3R!j#c0+uXl|V`1W!?p-%p{V4{+6lGQyuV&XcamWPrZ%bDAG>VC+qt}{pqA2 z8gYdi@r9Z53OY-GhPkH=&;rw%|}F8fgElc0$11 z3aGo#V9u{EPI2DSji3y~X~X%8WanqGWQ}}$lGNrul2*);j=O%}-Qcp`c&KScB#ai6Ajs!bee2Gvh%eZRMk>{@iiWAz)K;D`6XeQ21Y8RP>%c8QOxK$Yy{_=19g zO z4nQPO_$v^t{Bh+kgxz*NYRYPmXj5EecI7k*xR2LCZ=g?A!|_SOu8qMbE&Ei0Pda>B ztI0&l4q|5ORQBA+y1S?6a8M-Q6p+Mu*kc6NJfP(wUM?#>e4Q%~8W&V$3x6-H924;y zIeU@rJLOyFZ#WtIbS>k~HH6XF;Xj^3$4yyDlFicQ#T14f zw!v^5ZIyze7lQ$EtEG9shv&WS#qTqb6$HWs0F!y+Dk- zXY9Ap$fq0u4y1ml0(7|jhZA@CCrr;EH!x~QB4o7~#ki|ZMv}qdMA^jFjtTt}7NZLJ zYE1j|*E;Z~3=;r>)YRTh*juq(SkNn(V?jP14Rlvc3{-W+9idcs(#JooRfxb%#&Q;= z){-$<&&;o@1lV+o60d3!yAy*N2tBtFA1eg?vXFko{~`IH&yW<5QMxEmT;&*YVAzv* z*hLo9PB}?ij1A1o8yp;r2es@XjLz$70b~rQG~0?-ZerG%_Eh6wGWdc$99gJ7kBUX6xlqBy?P7g#|ee(Lg)9#K@6R7 zSX&bH1mrBLAwG zoqtorP?3WAlQa68Go9l!f5SoX;gP?(q9?`H15;v>pRHY@O4-%B`OSn?O2QH)VX=}> zsU$qCBrH=B9#j$@Q4%VYgq2Fd0VUy}l5j{#Xt7I)s$IKkwmxK9D-Ju+Oy2XL`_Q zdc-l{iaRw*${l$gb?%t|HZVI^jn67!%E^N12tp~S3IVh$)V z2bGvZN(>uSsKNEDA#If^ZHX#vvC7Y_Z{*h3aqH{3_08ORFSovhTi>Z(-=$t3P_GZR z3yW3Wt?ij-gyNW6uRlx*^#5~H$TFxgh zHXP1MHLgcM81}P=Ld$Q8Y1-2awxM{F5R&(^?9o|+ZR_Fl+D1MH5W=v z^%+6WHUZ(l1{7$Gdapntr`qyz&oK84#v>jgV(R8`|_HR2*?byfq4Xaa)E-c3VlblX5$ zaF+i_XSvC4yj9}tTn4{O`GuTT!ehqg5uzM%lx}!aFmeO9_-;L8x&72aePM^Okr=yGyTlCn?xIbVpcF)1d*9|i5lCd7&(!PzaDO^o^&NZ{D&Ls z&gKC55XB{DbpuoarOH01Ck}^<9D-wN!pMZp^n|ZHEBr)HHV4fvN=(V>$reX~h{}5% z*A~Zo=Nbrd%(6pMyI4M7^I4x^a;Rz{UizQZ=xRH#?c~_jf}w+d#F>I!r;{4)V2ucFsojjt^5v-6Z}WI#}NFD(}w;1Vf!#?8@sI~ zic|Hgssa!-7CuYlzCy>9d)PAj^Brg!vP`UrO>7-g6N+NH&xL;;Pd^J5F(Zs@wO}zq z&LpCvPF#0t{lc?O{y|l}xR@h!YZ{A%$zun8W$!G8gQi@G7_{7q|B6LpqEug4rzjd- zjO|<4Jh#qKF6mp8d^pPQdVyjRwv%Ip^rKYyYTn$A-d%{;^0ilL{ttXoMY-CK?`F&E zlL27(i7e{c&*s72N=CAPMg1<3R};hgVvvu!t6p;yE?hRCk5%8S?-% zha%yVS`uT$dmR)o#cZE#YO^K9!$3AZWm_uGm$Gmu5iSNWvHx&{5AVluVpY(tKgl*VMbIOr1H>MN9-^JG(llfbwteC zQW!2{z?z7G9>mM59Em7G5TDV{Su#7}54UiGM(rdQ(;kxl-{Hx=&VL$}SPTADNum}) zvH-Xw`3W(&gIua!B-{9iGm;UrBdd%%1!pt?2Qz1Mw>o({{B5^N)4wC=)`gwX!s!o^ zn@N5Ml04T|7#~d2mh&dzC@-l;hAji7&W!1#>?;F5UOe9lw9KH%DRtz8vVqDCL1h$b z9qdzmG{B#Z*57ktw27$z!+uW!MSb;4nEsFl^~%6i*ol1o{cZ9UcEvb$;3~Vsk;Ct6CwQjsX2GN z_>5KNgI3cYe2~AG-?}PsJ-4M;(EZG25o%XmaWz0%0OP~_)>Vlc$=4nD_C?bXO2P6I zjuL@h2pO@GfBNl($-Zbh=E5@^!xBc0uaJYHgfrRC(|J{{82wr3FoI};;YYN}C>ZW@-%IAM6rU&^uqFsk0?5?!@qIp> zWmb=lk-xeeR$zg-{f@n8fE5gF zbW;Px&TF+U0-YdcT$Fi16b@pWJaT&>4!_WJ{O(R*9q|n72qHmnC73+1KNg4aC<;6W zs#jt*|3CwM%Y%W6vC4Pmgw;a;;>p24idK6?;TT$d^meNka}yqGh@%3V*BPH~hv<+7 z{2OAH6hz@n+bAb&9FhiS$$HiR0#~pyE$;!i>ME99V8BHH^7U-MvZvh|jPT^m;ECf=`RO)<;Xi`5zGrP&job}%1v(nuWUh!oLGivm0v#sC z>Vb^lLDfvpzsI`evVYKJu?7tcVJ1w-94W>l!S!7@Kp*X4(_A?OV}6)@>UoX8!v3d1;p$2oic5dzkZMWZMtUImu1!Ere zOBdN)8`T6eTq0cBwxQ`+f(IF`hVnaRS2{HJOyFv$QaCN5=8pX{s zp7ZG^AWUVyv}Datum5+&&qZ$a>7BUp4xp-B=ee1Cm1+A`Gv8LtY*x***k&oios))!?Xl{bxvIj=ea2l&owsD1@l3{<$>Kh4*;n1&>lF3o zUY}msuKByA=}TepfUW9VbqG=>&ha4HquhtdeMBo3spfO>5|#(75@JLZkCcvX7i5A% zT1(2RT^}RX9PqIa-x^^{CY`z_9U_l{) zO4T1f*qHW*ZS5uV(7u)8H9S^sKI}bO;qBU_rC4y5N3uq{S)WXS;Aq9Jx)w-8xhBCB zGFD|-_Pgrci;Wa9OEOd;d)II-&8=8MqovWdc~H}OffJ4ONs=BIA*bvwDN&Bd52V@H zmla=k!jBpJvCsnIs3J*;+`!W+kJfhNzirE=3>Pl;dY%IwQQ-R@it1v#VqYd?2VpY| z^cU+H{3fhcpWokEK_!xNFGwWhxf11k6W~p?`pQN* z`Kb1}*b-DC#tO@k+T~V~{=yk`1lx!DWpz441Z)N2Q>{4-68Hgf3L8hnq2xG>K5S+v zFHz&%KQp(K>cZ^h>)RWQ+cNF9eeDSMhkOfJ1%JcxZCxQG%8~f0T4#ZPrbDi#REB9N zSFqme>{w_>2;GjyqBsP{)nj)Aynm;GythW)3$;{S-l-a41b)blCs2n{s-=+>UN z6&LU#8^ir<4B?y-PkK4+Kigfou*=%s6k;Q{&Xg9qjd9(tDqelbTluUlN8~yCOV$Bd zJ#3*k__h_$&p_Lj-gH`{@oWG5>m0X_J+rcn;VYP;c@P4T1l zUKQn$V1tJ~iULT87NC|$U$uB3SxF`x$c? zZJ2|nN8_D-`oQD1p|q3nxA0rcNhNcYFcbDxR^rVQFZsikem}GH&)2aL{RQ?zjA-QB z%MV5M%tv*pfO#p#W^a$mYEoxyZwvu6;J-i_7wz((IoJDn-VnHupXBJOH+92JPpeV@ zmKcJm&==|OhKyeCi|ud%RCW{0l1#CmRi8jU*C+_3DGd#1Q9bB?wdC`-SMOZ@Am?Of zdIzUl5S}2&6+P6QDKKgd6+fnN47HBh-y<3DhUy3=FVNoOqhp1w&E*5k_^={cS z%UW#HsnAW86V5r!TpYoo;M=DmCs!^;=DzeGE4OeWHuzIQ?mfsS^dQ)esaDg?*@uvf z9(y52qyO9CZSFCpzNGYxS3#Nnmk#<@glk7svbM?#7z=+=H49p^YlgeBtq1L0h1TqFp4|U(PSuza)&F)* z|7To|S~VQb7fOH#Bu#0q8*uncgf_YEETQC}0==oy+!SDu1 z59O8E+wrNSQao@b72DK@n>4xFmxw^eru9!{4y0WAGR)>l6gmjj<7pAqnt{;z9ih3Bs>y&U(?|M&fP{eK4F+z?4nDB&$sGArK3W{R>;I#`@i@IxFB zJE=F594F0$vqE)wNujp`^JW+kI)g8EiHfDq(7JiqIKy-}d~T38_NJyJV}Y2NCe^6p zDd%*|Q%!4x23lg(@R2lr%E11Z$0A&QtBSA={rAFa%TXL))igRZ$UCReu45sF&QDl?{cl--z3USeVE+UQut&X4 zEL9uPViFqc+D&JM;px6l%JLA|lOV~=0HBBZ=TwG8fNaC-iuj*t!hM47vD?~aHFwAc z$X*YT<=_y~JKDy^jlV^1i_SBXz<hm|p!5tVphj0RkGHOE;xj~q$Y1D3zg7FbXwMQ^M zRryshDBoHb9Gt2ryu+4ZpR|zSp!i2o>?x|pjX+NLo_Y(#%!?_%kfVb4lcU4rj95|&PmQqtO>|jIJGec6It*{^bn)J7) z9F5fSj|kSvmd8n&pgxpb^@wHv3z36X0uF?m@as6{|9LK#{QstBjd^i&4B7dej=#5a zUKuSx?O96$ugh=>kyKaE5qZM?Qe{+!;QA~|v}#2qRdga*_zWFRcU*ZDCi})P+VQ}# z#m;twjk9LVMLr!yRU5@Ta}=37I~EC^kS>m%8BJb40yzjJf>VRtNuMH&)Tx?$8d%(C z%%JIiC0kxiT=}y&S~r%3ns>?7c+SYkBZFuK;h&My3E+(blOlN4MC6ZULZsmV?f&LctU{(%PZ~+tW?8 z*{N@+oZ)#QdUv}9dzj|R?z-P9+tu@@*_y>U*kdKi2T{9*-J)B}4k`BLbuF&jB?ZjH zPQ7oIA$&_qS=fA$bSIZ$q5SK$s)eq|9tey0kLc9@Twk^7Hr);UitbKi;|a?FVZFw4 z339-8_2#Cx1)XMZw$x&*TSV)3${wYexRuvBc`fItqXnCw6(!PG`typ2&Qkuonog$b z%e>gj-d(&lGW(VuX{=YhQ9s;7c0uuI|xTj-@c6h#5 zj$1~8DEwmd*czg8p7S8ogkdF5cbs5^nv!g@XV8w%I%8$6#RhUZR{nXU@jR8hvuiI0 zpmzj>0gCRfU50IG5gUYF*-aBf^W$Le{VNQ;MV=o4b`^0v#`Ccj^MejMIM4Y~OLXrd_1q3|coMQIpes8I;X+yIj_F zV{EgLgpnxKEwSu#9v^5sCPwN`S4gdw;_XT+x96^=!-er*&Y3T}2bTXomX^EsPewkV#}eZdlI5@I-&9;}nnZcWy8d-U$=|j*_=S%bf;EP6PC$ zt%r_d;&iF8?^YiqtGk#@y>8sl@}NNyZMe?`AAXewDn*xI5aQd#Bt&V>vINDrsgVj+ zRnAnX`C-(2XEPa!_w$H&>a>LwQCq3-z;dRD!tX3~5$kBt#DO-P84Zhi?cGuE#HHGo z=RyG*xO-qnWyeTZtINg(Hd$Xn)If+`9u3p_VEas%;9cBq`qCB?bv|lbzZ#(dYl}uv zsT2N!JE?43$ju{SzW@O|5@+#*FqVrnO|h0bkBJ!AyMgT;cfwpN=VMAbK0?(TkcE8g zqk7^MEmfBCK{ZH9f~g=J2f?m(Sjtz2gKT^hUJ#5fr=yZ{*7}oSUiaW;4NxedvDf4| zVsZw%poWK{DPul*J}@GWQv*~SxKexUy&lb1hWe@G|DVVfWDykEsbt*tEXLf$R)7Cu z%>KcZe~ooIM8dTQ;JaE_pshwMl>%)Y*AQUBwJg9{Iv|)iVO-tL-q9Mz{*{Yv*F`i3E+`k%IsNn9M8eB;t&8 z6s$InI`E&HdDR3V`Z3(haP;YB=~^&c=+DaR-N0ieqO#KwLm^~K!;^&yeM`vtI8OTz zyPz_Nf3BKM^Xw^bAmBw_$a?M+r5}`V@x5TUu{FG9N;gdxtl7iP_IJcx2AyVsyk65| z=qSqH>{u%K7Ye#nA{NB?RasJbXrLr73RY@jJve|8(Le83QOV`@1j&Ezf4dA5)I1K- z=d$I_VAx*nn~KE=ii5N_;vUC) zlG7W?b5QjSmKc3O_ynO0vBH!cIvV|Z~Akz#@$2*Mn7$x@RYRv zBFY|YxE&7LYDla*mxg#pljc&9^NWjbs^4F$~QycU~11H;=~(QXpA2X z_{ZwFu`uo!x3Wepjn*2R5ht0QC169>h0>;8S2fy(rbNb56wvMEmFl2|QMX#xecDVoOsG*nMD4f{HEZ9~O z@ZNQ?M_PWGo4zWuvm?0{c3mr(uDzzW*dy?Pm?Njmm0&vwdWzNJeiPYaqn>?EdL|`ligw?WxUp zL<#p9e&oGTqt?9HKB-&WhDWm5BUHc6AA9*H^U(E~7di&D;gL}I5ijaEbOQ7mi(lJD z+Hk;~4JMZNV)}#jzbfetigpvW7r?N@)wY}jMQYA}VCZEsP35{V0Y~6!2m9_)Cm(M= zcygyP7t&?#naedhjaQ+R1tUP6E~`gsUrrmNF6oXaZx}3nvwA3^&rA#V(q<@Ybxvym z$!b(1dZ@>pqaA*I8Z0WTu-_kDCjSY;Q?Q6|{clxWK6!5FkJNhp+1eQ!6S3odhaFdx z6DpJrI#s&dfvP!M>d8tBHRrFYtjc8VPlJmq;)sU!jyrV6dxK~-op*qSdQ6AGm9DlE zlNkTe9oHVa1C9M2ek;u=Y>;4w90sXMJzFzBfrooCSQTgE6oV23~ zceI&1+R7dEaYwtkqy5}bkNW6U?&w<0durc^Bfb&qeIwTRMy&FUSnV6J(l?^QH{xMe z>0;lACB6|4_(m-CjacR?P1?C#y|Z4uQ&I11RPSt2@ARs7Hmi5Gs&}@jclN4x)~R<^ zt9SNsIWm{CsrB;Lk;#3hlKZx#^hKuj%^1|TWpH0)M&GHl(A;r&)eSG2HnmVS%+73 zjX2^OvEDUejcddz*ND}w5i4CIDqJHT_Tg1am-tE_aE(~%8nMh*nzUoPdPlu_hoaum zsNT_{-r-g6XjboNRqtq1@90(Us8jE#R`2NJM#LJiMka?&C5N`8gd$TzGX{mW z3=TzRgifXPu~+@&1=BCG;n*<4vFrL{7Q?Y_{jpB{u{wO#9~-7WHd=qISbwY>SAIB| z(f@2lzag`K8vbSV8?yROX7)de|7Z0-o6|onqko#M-!Qn}oY;T<^U@uo8st&?8tXn|J$poW-nIFUZR@)fND0qs%rNC*H_J#x%^F`|JPS_&7)O) z{6*8_Zo}j0hR46rKW;WWeqR50yZ-SP^_MLAOT+Y+M(ZyX>o1k-FV+3|R7TI1jGoBM zo*DR;)f1W3b1JiE3;v(gvn8izMn=yJTTkTRnz+Q8k4DVi@wy_v-Ymb~D!=ZNU+Z~GkZ7V|5?48b9zfMdP{7*y215viS-{nG<(PR z26_BGdHfN1yk8#wv3y^@e4odC-&J}1I#^wOpGIvD)Oh#1YXjy!iov?7zQ0#}zYiak z+3z}MA9c?5B6`dAt}64WDw96uzw69A>SQ0MzpEOGv@*K7;N4K>(Ga`3{9PgIsE|ch z*T1V|9aY%J8h=hxZBA1Zf=MDa5g|VoL}Zg+b$zlUVD3lg&czYnHLB?MNn&yR({VhT z%LlmJ({$@49^$lLb#wA#0dq}9rAD2JTdDd8ZdLU=PGxiB0hQE1w_cIht<_Twp$sN& z9ZI*lqCaP?_B+mGa|PhayXn?1J<*`|s)nkwF8ZtQbVBY zgr%IL#6pX&cM|E?Vhg&TTbKR4;?<~RY;&}sS zEgoHRuDp2ORb_6(tQn(q1G>2-Eg_3MPd%HEu^_a9$~T_0FY}uUey?|O-+Y*fR&r{#YO^gqoE1ouR z(Biel=jIeoyDChJ7&K$87Pm}3+;6!!&wVF1IllG7%adRE$$72l$eoubUk%Nx`Dyw! z4FN=Lbu^#9L-&EP0%pc&2qwYkz7G0(E_y>J{XHLjlzsmw`a1npEj+Bb`#?u!m6Szm z7V}S6=J?+xBlojnax2Pv9{8!-%*`T zKi}8#V!+&^85q`+DNa95`)lm%nsmz^!p<&o?lpoTC!#&8)^D6vC;9Z#%jf#^#Q`$~ z1)Ha()TgWnwrbzeF)9@p>TQ zH7&Y?laOra@zFqioe5h(Cl1MgCDwmqgrduT+l|OBpLH z4qI#vk;a=CHWbl-n9G?z8nq^|!3Jd1lhECQdFalL?ka)D0}ph@XCxDm4M!Jix$M)I z1k9Fda@k>IbFpfabzYe$&M}kDW7i%Hz<_X4i1g`Yr&sprb!2K`>;G$vi?ELzetmXGqePAl~^JGRYgX1(}>N9P%R={r^|w??{C4%r$C0ZP7~(& zo)OV#7shO;N=x0qCo=O88#CF2Ztr{Yt!TH-tx0bU+YI-RA3GO8Hj+qw>=!U%Ocd>b zLW=Y)wSqTCsg> zv3(_E=uS_RszFs$sv9^rK6|Qa_*A~eYSzk5E!UuxcWdQcT6qu7g`DsBFnn&pFI#!E zti$%E4IU=r0MbyyTasuUJ3t4hY^8Aq*HI~8JF3jnc~`Po`$n==RP9C7;4XX+_Huc! z(Cqy{_;A-&H-S*S;M11}%r-I=##x6it*qw?_3k7K0%SR--j$@f?Q7e>)@&~G{f5_U z&a=oLFYS#rAB@+ZYDP=EvZJa!wGZiU)N{>36*SHQ}AZ09(=>wE*nQX25d z%}@#liF(&Hb}e?X9{W^zf@Lt}C4vc74wwoKhJ=|;&7qGRm4T>^AVB0~e77#mS;HWupC0h`VAz z1`}rsg@UfpT2eJt6<-r}95s;va-u{Qx%2=^qSm;l8yl$5Te+%QV?0^InSEK`8XG)D zh4+H|jt+9YokImH=VW_$60-}Bi#6dd?E%!PU1Dj_zZ_$mzDHLeb-Q*M>wtQ?ISNo= zvAV5U(skDcL)`?Wp8NX%o3!cl+^h17`tpg&H=6mwY%9f!rmYW4)2pJ@|C-W0f#=^i zrv5m(=?{Wmw>44vE%7FB3I151vLl%R#gO0Fs(p&AzidIq4q>^by=p9AqC5(=*wuad z#YAlzmsufV z!D_M#aGM<7zD=)DZ1@4%k)sa~wR8QlEwNf0xppaT4zQtUDB&FMbYzZ;$a=AZlx z;<_ym$SPHaN6>3EnR$bq@xk%ha!)w%QzBEbG)vr9G?Id8qf`@mM1m9J3fR<3M0Ice z%WXg@l(k-5m&4Z=h{LIpU){t$H3Af6RiJ3FcB6{0gD0@(7EqqScB{sy^cg6*i`Ay3 zo+qK_uxVIAQrb_hXdJ4=?X2f1^@Sda9jAmc&8(%=g3tPr@hz9J5iRtF#}0^#L^&$& zZLe{2240)hYaM++H{AS1__hD##C&g0)V3HQca`&IAbzkMvi0`@vl^cuQ4ZrM$N7WM zbMO&+>giJI&nk9_ic1`=G_#%IGs9V-(l6$vQ80%}a%pcig8h+Sm*_e*Zi%3+INML= z{4TN**Hq77?Cf-)w6$|a;Gs~=A#M7c&s1clMU>-qnb*3Kv?%ye9vzkj8RFKmO1;=n zH7mS-XVd;o+AiXV^qfiz&OnL)?|9;h zbOF0bdt>0@@GvW4afl9{?Jfu(B0(Y$G8QOpJ)q}+67h8rG7eH0nugAr^GM};*tPZq zkiI_sO4u3^1t3uZLP);~$RP=Hr(%t|hYVc!MC_sgRNZnTz1S+1K^(ae5oQ%|H`<@F zYGvLa3PFk-b`^ZKr*jede41{w4l#(be7{fMfPkW6{>!pN7ebN4*-2)yO{e-t<=N-x z9|)PpKni7vN-pgbIw#7usHE*&8CrUSwKT^-%{LZ2rq9czaOV}Y<)-(D(!-U>UU>yf zYq9l159uFP^ke)KmmdE80<6iB_E1-&n9`3}_8_a)XJ&N+c2yrRyWGELxC+a^HN34t(g3$Y0i(CofNldE_iVq6ZBs+>&934syhM@o zP3=9HUU5?1XR$`^2@foW5(QnW%)5EsEPM&)3M<|s7@K$ySLt3DF;_x?AE`xON zR5ct7J&q|KBFb+nuWEIf-oShIv5{7zi+%=`H$4Of^QC92vA`3Ntst;(i1zu#f~1|it{ z{TncQ#V`A7z&pHY^n~#M+j;jp(#`2#E#5EF4KS|8Dia@wz9LXY#unCH0NnxR{8U{L zs+v~xqDK!InpNf&o=+h~E|Wy>!!8rIr-+dR7PDP75_a6H!E{EFcnXZJG_|r0S2%Lc zr{9tOj<|_+h-IG`7xN7kEy|mnbi*hQMe0 z+ecxa6otL z63Q1Ob84!lBcGab{uuRCbGRvse^K7Z2JK3}gr5#Tv%lcF8Yi*sSmkks)zlvVb zI)}Yt{T*>}xkKW98j_CQx3k{sS?^7!eA=>L@zWj%5O!uDGJnpO&+3e*S`c@jL;Wgs96#%>->rT$m_6NnL&Ei{^%q+_4kwcNBQhKD@RcdZ*K- zRoGzsIE>f^cW4GK$sLM2o7hNN*hoJAuy*T$n$6p~F%p4HJu34xzV}^9K;qA6W**j@ zBH_eIzw||a%?Ix$j~u)Kgf8eSnh2Ogbkj`TT<2rNA ztldR!N<-R5xhs<{W8{+dy;I#K_bR8beBmehc?*|COZ)SOmyP#@bgwq!HzoYrceGK( zjd|-E5;iQpVic zz2md=oWpC5a(mgS@$(m^yfgyLn#>p9e|Y&+wmgFZ?tbTpSAZTU742n5v4|wD;kjlp zDWo3LyseJM)%dop;9&32xQERFYnJ(@@ea&G#n~3qyDrm*#?SIfg*d#Y?@HOb-VfgG zYwpWDq#Zp+QIBFrO&SGi=rWIp#qR1X+irZ0{KxSZwxQ7<%=*Kb+=qEB#bqFfCy!wY zs%EwzC`!^^JJxjit=7|&I#JDQb+eEm09Q`7sGh`?1gRbHEsK| z@eko)lnBo}w^!M^7jyj!jd}D%GZ3jT!CkbtrM_ZeKgm7WVi^z>I?IBHJ+ZcFpE1YR z)?!4%y1fPYgTNPO<$(F4!b7dTwgrlWqd+zfQOJ&RpHhyS{cUnNt39L%n|UXxmc3ApdLd z*0hL-dDmQXjg~nsvI#)95#B}6@+Y_LIEDNtFo^Zh*X#)Bxq?=qWR9tV5oiQSH6qK9 zyVpVBK3!u70NuaHLDE@pOc81O_d0OiDk&zd&sZd_WP;A+zPVnCSY+x`n>x0;Asp!v zq}!wl@r;Wi%UT1Oi44$J{`L8lPl%1!;2s{em zSXDS!7M%ACrNmiDM{)agO;4FpzlM-$XKz-+Ot5I4)H#@+PsEjE`MP*1LF&w69&xEOWBDn7 zZUCW(XA08-6cnh`zR|YeuH-hE!M(_jgF@=P8Vq)ZSE}X(rBb| zliF5MspUM;4JzYq{LDf<+tdj`An3TDTnR@s<0&mJ!Z%@iVWpAE^)<5=3KPmF)**Vw zB99uimv4fU5+Wt6&j{o_NgHZIW;hjtR>iQ3_X}?k>1U~=E-{goK6I%pE6{U!)?Rqikhp@`Tbf~2g z?m`q!{$r+}slA-D*I`!3^o#@?PzueF&Oux1vnZhOYZ%1SDo_Sd_0lnmqWV_qT-obT!*TdLlDhkB08ySWWD0&}_ck$UyI%75ChZ4tP zfjOu-CJmmYIszRibl?PMkpXxI<^W_gGPW&K<>_==t@zGJcbCVk}<&C7{5beQ! z?fWwDWb3mJ*G*l47yT*>3EpSataM$AIJ*0b*;&13Gkecw^hRg)KL6%~*RNF`J@my{ zYpeU(Qks!}mLW~G^%;sGD$4fZ746y~AGV#yMy}gh)v-AK9l>|2PC^&sqk9=2rMgkD zAtFrJwmI5Xd<1Ot2Un&6kj&BXQN1PeGv|2JYGZkUazg#`K%2Gfl#?=%sMI!UgUGZN zY^>OjFREw`XM-MUH$w7~tYT!tEkydpUnA0^@X;+LG}2st9f#6qq(e<%qp{oVhm3Ct z#&2zx{bA}0&H!7XhvHflJ8`|PagTvx0`rNAAJfh;I*_s2RQbDhK-D$k9PxGID7KJT zUSlEdh!US*l0xk`k`%Zn9GWdGbLjH8xN@Hn6}W?yRe}j4;K678ylWo?uC|dHTapnD zT%9NhYi@9>AyXYPzpP{NW=Dup;M8YZwTtNxXS`JNcBI*Tkc*Bj$* zYNq!VWd+Qa#Vz7w;W_^(5H%|?qTmy>UKer?#oVZjS!r{@nVb?euHHY2`Z0i+_+vx4 z9WmeanI5(E1A8_lJIPmQN$S^>Cv}1~r;3S=A+ct0dgDkOz8YdoUhv+{`irWU8;i@W z(Ij>}_(jwo`8sV*cXEVR9$9>ZD=j`OLgbp}ePwpgoFkjxC5rTBz&4x?FvX*K zo?fB$w#kt4DUO{U3v5J9iK=<6_Z$D#q}J2PP&Ius6Md(Xd^3{+=8))bpN$pj8;BJm zn;<5d8}C>y4qWQrrbcw^_CmjVq3=ZDl;Y#+yM4x=`I4>@Fk5bdgG{ZhI!qz#Iyj%2 zMMMlzyG7+)w#AAK##9CXtmDsdM|>RZGI0jBQB`V?@$GK|{93F+H*2CjRlBqk@0mdy zYmHzKhpgu|UnZ408a;F(s+9aQK3O!RG#8gwCP?mkd`3HEG4eZR+mjnFCgdVJk$5-% zFB5PvmU~WQb7{0|CObAANXVbFqkR@$rX3r$hfDS1Y^aji*?5A8I`@v_b5Ha&yihHf z{K4us3CV>Gah3Qw?O;Pxc7pB3)I=J^qVw=9J{-7bgSr4|kpV;Om71(C; zEw=g2ui2&s#wyApL)CN@&`lX3bEbey(Kn1#E_3`rOj&htr~4k7_J2&hhqTYYGtl+g zIQ@;3gWRF0Myrt+e_wiB>oX^A$GUc8)D{XAL{)*p>arU*@Wzs~Hez;_V5_PlC8`WS z!OXC$9AaGiVygb`A_ z_$H0eRal<`%T-I`?S0@zFx#qc0jBbsHX48y{U`m}ow-C8KplMr-8X?|AvO zR{6Cy`8DUG=?2XvSAUJW-{bDTEcb`xewVxdg4|!cc8PKAT;rvpEq4x|{HS&ED(mF> z{w|`ao{2*Tf;Bq7sfCR;;yP^#_#8+Y-agsU2TH?VK9EP$TNvP+EdOA=a)^IZP~1Nt zTb%sGyMDzdt;8p{2D#rTXE~k4wq6)AQ<^C=MtPYViDdf28sl6+kY^e!a~f=W%E2mU z#eXSH6J(>_vY?@d+kBU8m*9`z`kO87feubZU&-V}eY;*1_?TPN(({QfSEeEc^IE5Qkgv#h5an?60}G+b$^cT}8lQ=k5d zt(DkUx2**ySvpQ>d1I*XJP0?X-Pu!tUA-0-T>dZNVm2L8xnhJm)kNx)Wx7sS8zB*$4I#Kiw>Ewf&RT$!IV;k2Dz)~&h4$NtQkMY)4M8bLAKXQ)g>B-Wn~5?gc*4p~__6cu9$rrm-w9x%@SIkD8J zf@(2RzN-?#utkUMt^M;qKBeb4PZt(F!cZ zH%WiXI2+JRnhxShjRaD6M+Geva?;aN7tw$*`zY#PIj;tXzmgxLpJfm zV6|K;#mJktWRrjWS~lr;8KL{kK%SDojnFsIAWk7R7`z=5&MtOuSD zpyYaCYcM;d?5|OQZ7%*P?ZWJg+Me4LFAb02(ks#Arx z4>Q8$+u^o=#y|>Er4jfG<3id=c)lpHlMuj3cK%L5n{=%MkdeasSPltrIXA^Vawjq+ zDuehPDN)t!$a3rl9KoR|;&eB_mA=B$esV5WCDq}sO6_|A&+$9^tFn#xC@pK$85e_N zY1yPEL9uJ>gJj?|GI!r{pI-jMEmmbE+{cI&iuobs9byf>2EBKUet4~pk99;jv=1W@ zv9wv_o2!8Wn<|fYtds{XJ;0bxec^x==wdp_Zp)!>3OYsM8uWX>=d5kS=e!IQa+>#S z?V^^Fg|6KmC>?J|UgRd0h6w)rfWDBx%g-mf#FTO?ST1d*MZRSMXlB2 zjU(xWuz8f%&fdqD+*{L`EdoxC7n>bN;V`hf5K+l%-KknR)(B8OYvWr%&* zPdE{H%n%>CZ=D~@FJPq$DX!&7hA$rL8GR^u&$)!3ZGA8*!(AKI zNRq{-5YuGqMt3B?At(Q0+kOH+T5cprVk|bw1fl_hUCdizJJU9Gg=^|`coTdYJHVb?Q{-0a+BoSch;4gA2tK3Q!H<>HKslt5CIu^oZ$I)0CH>@w%r z3g_5W&an?W$F6mbebPC0lXL9T&avyAV|US9<(%oBTG9B-Q${CiYQCzX_|my8Cr6|$ zv8L^@roCZJYqX}lwqClFJD{9f5%<=tH^=V$OASK3sxz7fWHg<5V{F}D05MTic`a%R z(e9&;o0#e_a3O=`DOSDo`qR6h)2xOZ#Y5>zTssYT5W`hZCfq@uQ85A3e$R zwj^BBUXatv6@FQ?O`Kz#`z$aXCMX77W?3$&XxH8MStckia$}Z@KWmK1(s!=RWXl|7 zhyHk$BE$l@U0Pgq$?}$TJku%;JuUfMGs|W71fM^?S9nXaVo>n7Ypj0s0O)IL?SWxF zzgL~s2_2_-EOZ=(u-z*X+xM?vI!@zQ(sAS!j-nqp3fsWTs6H)|Erc#(SsMn>we#HHm9RhzN#QZziChROg^6|ia^16M5hjOYKfQVu@eZlI zHgmh%*16jYliqrJl(xk^S}Rwwz^vT(-DHzQTE=bOG$P<_Ppef&7&jo>)Ns66T@k0B zGb__)T+HiUP?tMRw2!{&jatIDxsymGo1+?Ylk2wlqL(8aZ<_0OvlY|3b`vs#g_jST z=7^+WT1jDJASSV0_Qy=SLdFrcYG@fCdJ#ud`pth;qwvV{-dB^ck6Z3e212iF0wM1c z#3U~%5W(M_h4h`%DX!F8&YSF|Dn$LX4^23Wgp!H1^LDDTT9FW13?bDvT00u=JpcyP zRCz`LSI}6L9}@Qz)MMKv^~5QSBQZWihvR9M|I59xX#gv-Gk zS>t%nrAN6xzLD&dAu-;QqAgEtBu3Ivfb~Mbd7{{_4D<|Qigo3~vu-mlc_Ln0xXrx2 zy~Vt~`@b@;Al)8jUZLENVty2&muA#LQA;bIUPFEQ^TE8VMC^jEf`Ce@$KS6j&T58f zRG^EYO~m&4a~)>u;^-9_b@XJAN{ndlAQ8?16+=YLBvCB*8A5{do52^rX~opH13 z9%C=9IHY)IRUoUeIu;y!DTUgM>jL;=7nUmt)O>8ZzKg;>o=M~%z|6FeDi{)zwAUdZ z)ssqEC!ZWp9`VK;eUl%nv?!@25}Y)DnQ+IV*gG1~Gc!ddc|~bl?k!YvVxd7Gpx4cA z4!iYwsnHfOS^IHZf7m3;B0g3sdQslY%GC|v7SIczPL%Y3KimwfoF3Fy@O5{)5Wj&! z>$E~pQB?m3MX%tXRErDoj3%v1lu~A3CcOil(xVqCBn76vHa})Uwf~C?n(5n*FRan( zxNR|FT@a~&!WSL)`1FP47wPj2%_4lZETPY`b|GD#4%E6hi28zVbVGcw^HCr-u^JxP zm-J2`qv_YK!gUY3DEgEmYhkCE ztAj~wm`~NFEgS77zgIZu0>g($YFO*TLg`)G%F25EX+gBYf-hWPf>GnzPO!-t)FTQG zbS0^7ob4%=;Cj<~uGP-EfSawz-utU7ZhS04!fDOARXk;T^)$1);A8x*zRCB0*Y|MelmuBfsut=^g?3^-lS9>G8Zj z&q(aq^3aIaUZ1{nZqKPfJzEC#L@pWe0dR+V2PE|lNa-Dr+IuFocUEfefIZ`0`m|d9 zbp3`yUp&`1PPg*{x3fq7)Vkpi$fNIF$3yT&s=hwE{di?nALSh?sPKWIxh^;~3vh=j zDGR9tX<)zFH2#UuI0UGZ9#XF+zt`7{?hpSr-M4K9Fv%$mkV<}ZtuR;`-Q4iy;@>rU zb0nqRvincmjp(MLL7Z+y4eFCGOb6+2iU^bbz1yS*tN%Ocue)EV*Q|@SeIYC}7#B)A z_gnbJU$`3sZ7o8^mubOg&Bm67E8JmA(_2Eq?}JrLL+Og#JX;AxS2oF|5(hrf#0Q2o z76Mqv*iqJ=8I|QLB!BCAWYdbQfaOFjo!YQ93P9w_f&xLlAGM0B)#Y}Q z?}J3eEzE{Fg~|6hB;U`uCEsgerPQ!|FGP(S{XWU}1M>eZ-_L=L?<%e*Fg5L@Kuy)C zP~l86a)nS3vaA4%s6!@R66y%#-&AKcHF}|kTqBA0UuPPt3J7&*JWf~Dgkjt)ZrQ6u zt~9?Qkz3<%l%Tl#cjb}zrP>`;ru!$%K7|t@-Dtkm4);~nQS|8iK$Qi?8Bo?@qO7H; z@@#Q~7)+F;bBH^VCzCLwAw@$vSv$F>D8G7-3Pzu6(l34FVbX<2XeJr6s1Y~m?B8#j z9xfI-gh=3dME|Aw(;QZR%x9IaxbsoXKy!`)3+zNcg}Z5{1NlV|+L*1RXdQLbcQR^* zt9o+t9*H_4dg$m1$}^kq0{W_nh*)dUz+fDb zXYpI%6%iHbN|ypfA7t^w&>%*;bh0}BYw{+s3YQg5-ZIOFsRLaN($m#kLia3Bm?mCe z7sQ0R+1=qg7?G@&6Uy(r5WaAo-QiELEVvxL;36TtnoHD<890&YFhuJJAk>u|XurD~ ze8Wlpl~DA9eD^>K3{-T9-3u>Je*}4IM;^v|d~xIoJlj3WtE;dU$J6J!eD-HJ%7yE^FvI5+)lt4lp`xL^ghef zwqX&%*p#1`GI3F_Cq>7d(rZX*VwI3Qt=t7KOi^4h+0__W{;H5(j6H&7xO^OR}%C(GO$4)UG@iFf1xRBn&6z#PxiEd?$ZnNWvaiL@HG)x>`y$X=f)A z8F-3F&EU>LWhvD_@_lCb?ju8dv2>@((%HQTx_6mQ^H08b(7!O-{-<$o2U-8n#=5Qr zN%y%TQqYFTqR?!eoqe%3nS5sEbA9g5`w2t8Hc-Fz!%he9&y0QY?vN!U=OxqVN7m)28-faW zFh4)FF-O%tCs*YFvP8L$XlkmL6in`)XS~y&bxnUj-#ezD12zUS{mTa@t~MGR})6?N#ai3f)cZKU;q@41ObEAg5s+RwWi-Ki>-%NXI^pza7(;Gdk(~j)9sh+Qg_l`K$hEBVi2gwQ< zC@8Se!jdl&ebt%u8L6X>JfHJ8>!;>$C*}5(Vt>yAZCnKO^<$5hv&=bk<*= z=p7W+uzC>YNp%CR79D0`l+D>Ua@77c?1FPUMxdF13(o~F1VL`;LK4EZXpA*9M!H~k zjAT8tvIt7_tiw!08B38+Z(=BA72AB|paE+qy5P86_)`6hLnrDx27{2O!;R5U0y)c< zHK(5t-l!csb~K$=U)x0gw)V=Gy4%ut>a^p@%(sq=oVxf(&QoBt&2pF};;=7yolm@E zu~B$KbvRydtYVU&xr_5h)EyV=w7R;Xy1G1F-PrKDW#M(L;dNKT>$DMdJ0sACj>|QT zy)#~_JJ^Fh{M)MPI;3efyKD>XH!o|**$$g+YiLZ?v52hBh^&@~thHiRv6z)BYSwWp z7u9RU`YO+DRSS$Or_`_W+~!>HrF=}&6j8rUte+>==fO3uvHw!@1ntwGGsk6IwCtj| zIbSn{1PZRLXL<&qh4+2f8MsK$>PrzVlf1E%HTJu``#vUT>PgOASh?6#C*{2$!$2UH zHx<`bQ(}o-zP5d?$7pKEZ>_aQAUG>C?3{In+%Gfiymf~ifBtUW;lQ5{NUD1P@k9_t zj*ZnYxBdHt6hq~|Gjp-J)CwT4m{RajH*Yq@&j-7G!H@JfLMNm}d7&$NZk&tHv-zef z$Z)~Wd8J%JXwlYqu+zN5Jh=6U2gv#wqw_kYs#e}Tn7qZ>GEa=p59I~hFHqaOjZbR# znyMpD`-mHahg`t1@M8R6F?#Kcna#;l4XZ(`iVs@K>SV zDH*VVRxd4a^;oFt%e6{Iclb zxF0Gd$6sikVria9DkUl7nuN*x2dHCa-GdHN+J(lXy%NojG%B65yXgr-&PHPjhQ?09 z{hiaV)BAU7=i{mSjEi~9+Q@-S=v%bscfL*NS9_9QT47r2jkbDVabnL{vJU?o_@#+SroDqh^)s z^it7y4Us;m3gz>xFu;dhZJ}r@aK-zl@vkw+mYz4fStEZ@**R_i3|4 zl0umb^>=M<0@gum`A_>}H*N({X1N1iXMgoR49V;}nfcbhLH@^Z^DpdX0-e$Vw|rZr zZappzBz{rKiOSRYkD(vnFeFtq$5$%q@Il~xV5DUXJw{wCsi^tTlZ-JO54IJ2l;s6STd^FRKvl0ONcmh z*f^vHv}e>IcMMS8+k~R>T^P{1K}$n0_f_C zw=QtbIa`?8kD?8JsChn^>v%KnAxt3fzuvxu_)-u@w&mZFU}StNh{Jeu%^II$kZ8*A z;HG5|qG|E4niUe5piTbzab!RjFJ`OElA>E6bs798(_t4ZG6eG~`e7_EJcECwz7>iR zd#UU_!}0E4aef8HAFIp7thsfe;E+X{d~;@4Xi>l50|*p=k|ilhM1GfH97fPHNeq+t z5LiYW7e~irW70=Nb~m+*&LI*RN$dS=YN3okqgb>ySHE=V8!z(93@MvYB8Q5gH}}&o z!GoM6Z92O$W-Pw48F-Y)$}FhBWeuL6=F(Jaw^x) z=nU33zk|Iih%HZR1%HIzv_G^85<=XJH1!_mY9lHp=8Xu|uCd~0$O$v8J9>aSP0+C1 z+OE*tAu-MUVko_V^~LdJ#;oSf!H3(8S<95*vh9I-nhE-zxEzggqfM)op^@&dF=^=7 zbB~kk+r<~@YMN>(3TcyE$oDtGMkCM6NX zV>Pk-ehB$8IsTQgh!fY~Q5_VlomHT2C_{=Xf)I4B$Dfo%CCLK^{oDmfu&FmuBC(p~ zmt(ld^2vrCPg`?Hq;s;h$K`A0BgM&>c#ZFML%fIWyX*2P#{{4X=?RNtAi?&!eL!#ARE?baO;%PYZQK8$G|^y;gGN za=N+H?8Wx3CMra8+<|+`WbL_rN3GM33Om2vOMInjs0so|YFP6!?a+(h-o$?cjvd(D zfF}hN_roYBb1%17H-}P$0mY(f67Bp)v>F_xfN zJY19cO~hyl*Z+bBagSN}GJHR=JYPdi`iXIV*!&-+XI*V?X%45iO=54WWIg|9d%Nb( zh2swb<^lOa<`m}rRcoB&T2Urr;2H$9s!fw<1m4Vw$TC`rZ)lVV$V$%%l_7$?>e=% zd1|+lqN|)7Ev;~d< zh9S%8N~PlL>vYN~UKh6qD?tnPPfiz5gf7MG27`HIZs?homUx<=f}1W5KhrK8f=SRX zui$#x5_;P{9sJZ&xl;#y-*#p2AD>z}wf6f^b8l!|Z*^R68~(-j<|p)4<6nGlo4L38 z>fm>utei-|jJ}bX#&2f&5EqcWPeD{^u$Y^n*&FI(zJP zUYA2cMkc8(4NfzL4B9)nr3%#x936D+s%3`r=`>xFqU>*Di|3bR%a zir)ml=E_6jV*RKdsOa#zS<%HmQgtCS_iTnu-F#Gd7l=Cg$K$zLUvw8UIHJ&3PKG{Z z`&;gN0t_bsvUW=lTr>nt&l8$D6RY_zG9=B_&0g?tES;snun#Ls!1(4o_5Bdy(sqd0 zB~}-&+=Nf{-_|CG|E@&c7#1ykUTA0izQ+2!obfCpKEr+&VY=NDvMi-=pnlHmt>qIt zZ}S|{&5Nn;QI=^_H>(SrtCNw&(WR@3NwMVIq1A5(l6dDFPh)6|kUCJkq-zK*4v7#m z!xke3sKyT?pV(ZO69@jb2p4waf|V}BBo zepE(U$1-(IAKJG?hsEwN@L@DZ3A7W=3V9u5q~i%j{L3IaO8A#@&|S5R@uDX(<_vL+ z-J{zi!B2~_X?Q^qX1QMxp5P}Bfo%<_0-k_#UQG-nJ6|oQFjy)OZIEjyY&Jk|b!GFk zG79A@RD3EdBPX<~P_@fRA}g8XtL4*L_B#_QU*#=>MZI@_Vf-$q@0pg7@YR4QI@8G4 z&?FoaX&=j4OIpbuln%hw>}fKLY70qqc*@{cUQB1LX2Fn^&iYp6Hrm3BT};7{A>GTL zffs@|p`W=b$x&n5yFx~L%fs{sP{;&td7F4nMHWmIIy=H&({; zO0IVB)$4Q3-RW+k;@qnlZp(;|k5I@t127X)$(<)I@luyIazf zIFPJiM)MMj%ek$Z55|0mO#WQO&T_xtST^J3J9uLyG6P9Ou;E zqUL*=I-~0Cc_U}+IiOvs!ty~h>I2Xyh@t<03W7f$S$72R=M(D=j*hJv$M*MwZ9D8Y zWBUV#uBV~UE-rQL@xzo^NokGs3h83toTSr+u9Qlf#G+OLU(3}|d;0;yd*buoiKwvQ zK-w?R(UH^d;2KY*JkayVgB@4~rXZI9(?l>dbIMS`uL{c3Kp->%MHP-9ij*6VflVzHrl++xUOq=*R;^jBEbW5iP{Aqmg&SX5`sDL;I%j7|q zilbVd1niz+-gP&50&r+ubfY?530ns#8N)e9-9B$JBuEak^*C?k!pp?PcGSozx%g;*bbv70NB4`^2B%!a!{H z4b~bbd$drT7XJmgQyfPMqaZ>Sa0tuh%$tTaJ%OieNH24IoSTiO3?(6HnS|m$ni;@< zf z?jGZq0#($E;--na%yzp&H(~J_V@aY4;@3Vz1J@K-)|;~+xk-B zlw-pNLe{z$_2peB^M=J2iIs7#u$RB-(b0CeeyY8Bb9CmI0*9y>>L?SJXY883Y*leqU9!uVcJYJcRs`?!pBGv}!fiz}^6t!~%+tm)}<%~VsJb$lI6)|RM7DI+y&xOLO zBe0!LRTw3lW`^e$iK@-Eqq+z_|WM{j=;$-9%vq`TNyl2j6j4@y%hdFG+)ETw4-?DD!U_d(j*5Ice7bvVpY2 zML@fjBA{KnMiesbx+H{>$?0g7E>J_#K|rEBnYPGMQtAFpZ@dFGe8cW{^z$PB6&&Gp zx_UPbE$~NFuD<OVQJ(KYjJA&NK|4Cg!{`$2lA2AP5&wqt!9}P_gq$=!A2i1X2MlbKVu?3A z&qy9bYO^tY_@0U!S)}Ak7aj6CoaZXzFMU66N*{T)BF7<)z|S7`GyE>C#z8Qu(cPQV z)A=nqK9SNtz3gWtPS8dV?fd!B^vp3^ayZ=>{LD18I(TC8Sn3Sj{aE_=MO$)Y9l?+> zEv(KTCsaj`?7O=;zRWUwsb%;Q z%kagP;daaL=XbAPT?;r0<*QWGN%IhG`*U$lyd8&@bTcZ<72St%9JJBZ=}r4&ZDmT1 zqMy4v)>JEiHrfIWde}`UpB_eC{S3FuC#s$J&ur5rpE##@k58QIzUC8)I}iKB0{2kA zIKB9YyeJx;hh_asJ6f2dyHT;|5Oo@SZx9#vX4{~9P|O}nOp3}6yy?9?4X0pCW_kR0 zZ@$|{@5O%#O}zit_n!Ury`6c%_b!XVdsoDkcI2)w6Cx~}{BBp!Fh)vS1(84J-I-0( zsE(hVHeid?c@_;OX^Xazpi-a>mdf&2>&rd*-})S^gBaA^NC*-Zx(At{Kv6A0IyBf+ z6;Z-aAmrkk3*VY8&`@ml_o;SZ@q>)r@ua0P1Z3qvDk6i%;IJNQKwYZ0gZAOEY(0WF zvOzx(-m$mb5!yOJ8F-51uD5@$APdG!k3-}uqG1G6xHm#KphHPB;Gw((}{1(*!M45fG5GYdS1POi@4%8~UI&!lWE59*NH zncR7R$(_+`{(uco8`@fe6qC8GkaE*JPsF!C67`=Nq0V-$jws%fy)5Ohyjgo{x|;9& zG{Wt<$e$m8DpluoU)-W<^q&PHiVv0M9k?S}gLxrwlhj6th$o#SLFVa7acqk{FkH$p z^bxDg>Pr1p5{CB4c~?lzGmxQK`1*9G67O+-p}QByL|;s;@8iVtZ6pw$mJ>lxe5Bo} z^=R$jCY@;EQ*Jm@3K6*!Aa9FDKTV#8NUBsI!BwTgFkw+F3l-nev1fu3Wev$-LyD{y z<)`V>_%D% z!Eb1^xm%{S$10`85DAYxora^9iqB=Xfus$3^hL}QPgj|%Uj^lV3l%QiH^lwJ6y7kL*B=aM)zX^q++pp>!!;cB0{05Xm_aeetTTCE!(9@YGizZ&Ch)KAridx^K{39 zi*c2X-gAWD`w(L|oOq}DuqCMMxrhUC;zG5FUW0v0Iea80dikhOnJmKpqIt0gpupPX zS19qvM<52$KZA)sJynXlp8*_9gHNg2KkYgknhoBfsOElJiZ7{1tyXAi7Foo&Z_cI& z#i=LAv2#FWuW$B(cYI`*U=TY?T*N9a#R*FECuM#PApgLhDkroXT{#1P435L%L{I8e z5rt^Vb~`1(7B47^V2xOT8d=@Mt~?5vBX9M-Q*+Bj+r+?f2Mnflcza-LoP4j{4SOc# zYhWN{pB1Xksj~J*&rr7j;g98-BkER}H-cZa$JXgGqINK44SK}Cvsv`tc7^{{`P<-p&Ia3EIGxZ ze@Jpqy-wb&Qai`{B7cmlA?Pa#!nWuimf&-s>phXH_K>Y)0j*_90BP%GhbT0r3-Pv< z2;ecxTusXk9H0AXYHB^OBrAMd#$4mO6kk)uE_!j%&$VZ)0T`Oj`g1{C{@KI}*ss?9 zc$ZICE18g#iGp%P{6hH!1re$9xm@id{#b)I4?5iD9^Jj_*1KiD!tE0&`|(lFRTj2? zR<|uVWdq4WT*l^(UgZh8)if|(&ZCIisNA@H*w438P{?Be9psP{M^kd~ipreg1w#I2 zX$ddI7*_hZ1U)p<%A9Q>tK@AtT*7YJ#Z7V~H*RAfa}PIe12^swZrsD%xQDoL>kt*H zJ4{2`hpa|~l10=yBG zi&vfZNgvtdecJok;btK}4uQ9uE}xBk6gq`|X#ZD0I!p_1P!f*+0Xmxmar{r`fG?E( ztwjEgaW5|RRqq>QUaD^zfw}H-qGJs%z5mEoI)c^?vGGZ6(hGr!m4{3(YEHIYowz74 zabIAf&Z&R#o5l!pW5fu1P)2x&@rydfFUThgnmy>dTos#z^?PSnF7*%$&WnwL54nzCq3D)G~$;2S0W z!jJ^RSXNuGIH?hYSmmkC?L7Jj(!y#9UQ{I0*W?AWN>WV|a&0Bylq3`?h~DCjS2Ck} z`~!NGWMF~sC41YkHyup_va!NAUjuLmn^Po|qdzL_QD+Cir+H={yaei}GGvoALd*xj zw=sBcYrYyXfTlOdAT&E*e8{zMV7hklb@@_AI6uKE5*{E|N@ZU~!nB$4qTlFVcETGd z>QK`(Ee|OoFA=%j8xRnid9GUVr(J!6879+yUBgCKc$K*t9EN$XtoqsV5(KDAh#BM_ zbe)PBCgxc$I&KhClZ$BN6WR}!r`Cm(80)PCcHPe2 zpb@T`2;l{%304{%tTcA5G6sAGIme?hIkshFhwMPwjH6;y*D^|*c?k5etrbBQ#j875 z*rK1S%Z>&Bwdx#Q64oV~T5%e`4S5it%)rhimBS9qwlZ!-`w7jY3*{@sV^jZEk(*#*-1lJ%_6cy7g;~s3ksF~7JzDj(Z?w{ALDMrc- z!h)T@RZG{Y@3c=1RHU~p?|{+pA@yWzOhDr{B26Gbo;Qnl4;{IE2Mk#Ge9%#wGcrg= z?Gn-_YJ=IROF&26L`SQkV329|oxV{U0eR zC2J`+c!@d>M5QwWU1L%A%MOyfV#Fw1P&t^vz^;ydP%Ii4WtmRZy!;-JEh-~%ulnH( zh$-=1_Yj5Z@HqdpTUmsC2k{1`>%6&B>PEtcmv{|#qP@Cxc4zLR;x7p8K^C62?37`uw`o3l zxs)i?x`3#B-W<$66eaG4?|Fsbi%ZyVJtA4qMO^>I7t0{Se>$Xk_LOL zm^5fh2KdXA6;zLuq#j4pv;!y)v6o3btt;`q<`ksJL+W|VB0lW9u6&=n0*Ajf`VdHZ zaSw%I0(nqyAdr)fZT(9gEO`8V?5;|RE%Svb4tgU6XIk`oCDVdN;t$Af``3Z)X`Td} zk^5QcXe7V8wmZgG{3C1qV}~Unegmf2>wtTvHwc=-PQB?>xKmwkwY9(e6DhA>YQN3|FRTznCTa(H=qJh|z~4 z6H~&bw+B`yO@ASez5%RqQ;w7ZH0A|y@r;JMc(Xg+#Y5bGoV6|^-Nhv-Vae=g7N0dF zPt73(5GR*>Mz+O4q6>M(OV(!>s~+2VfY7uaB%<2_-?O&--3-eNc{n4wvoP&xlg@*6 zZ<-V{=Azn3`o*RKn)B^(p@y6}vX%_J#V!^Zv61A*1dGDm;8QGBq<0)^=t_1{>%dDj4}79aF%L0gwzYUkxxy|?&)aMWL}gR zD$8_miKuF;O<(KKy_S5@55$g(avjm?AX3-h_KVJ>PUiyST5RZfPm@g=azEn0V`d^Q zVJ2~m3uGknhh@G{rhmBSM`sd-*4*z%fEm1(@yB5$_D8ktwT1I7dL;M-o=z0pqkP0! zc;YPZZ>i@Bi^7k)!Z(&72?b+3LSy_SR!xRmb?y1^S7<)UK;mU*In`1hOCXu5p90RA zXmMGN_^b?JOdmn8xi4fq>@vhjHrbKD%$#bU@%)27_yr_0=NL?6jxDOlKvFskA`)QK!y()Pp7Al=4V z^nMXK9*OscD&9ZhOgG8efL1`n7}-!vc*d_b6lNEoXE%m$|D{&WSnJKtwah$!({umu zzn}XBd+r)`K8*M*qy`2Z^H{z$rOX(kJ*CcauGDw-cy{SvnAPdqRMlCV>@N2FtXn4l zcOg&v#Wr=JGj*`ZSii6}vi^H{;1^%0#m+gykY$jBff-V{5=mFY%FyuPgH*|7F>0OR zgNmeGmepEbKWKpzx=^aO3=$QtqS`Dt2kR7j8!`h|OTzX|dpnyqp|c8+Atmn;Qu_({u;aZpVFXzEas zjYwH|@^JMbSk?obi3drHQ_NlPB9P+VW5t2KoN~G=6*O_yln1zk3pl2PcRU$@gwDib^9{bVjJJv<>QHS|ib&HU!t0!f8rb<~G0yNL)y5zW{70g6g*6Cj161v#i(C-fG-tbqvy6)sI>Ng8{*~hiz zCAMi3+gi;5US-(hJ|Dd?uDX!-OT1S8G zZf^Zqas4H6{WW&Q-oNrL^FxUGyXf!$WyJG>5rIqfFftl1q|VhnAi;p&h83hKc%-3| z{}{bw6@FNTdq~;q1==!f7Q(*$Q>ro`pd`Xmue_A8$*x;(7wJIIOSuMpaxcATNYlfx9Q|6IxUPH}58c|;G6I|m;i zv@oob2f+}CS{wI`2ob>%yu!aga7!{B;<7tX?gYa2w6!2a$Ok)!!+ar_`VJG~H>cV{ zMmClYIKf~F$#=7Kf&2&sxo|yaVA=mrjQ?j!5G&beLI-ia+&y<&rd0JcbD^FX+ z_FJ$%7sah2j&!lR_FaBm%3_3_Hl(O0LPYlqjS#4E59@E+9kNcURr5v`7NzW}AY+r~ zfF6OorN3=A-{>8S&cCbcOjB|vvqBEEuMD}~smV7sqT?;HRu27niecV-uM?igT*t?! zlcVoR>W_+Oz^)--N;N}lKPu!$EyjX$6B>q{E|*z|jC7B-iA#LXZuUM+L8HQ^c5EJ- zzj9jOy5uDrw;$U9kHrH90R+Yx$}<&g*z&& zbc42{wMf1PClG+dVHa*yo)%=2Kyw05HmL&~Mbf!`Ffcq6Yf zO7N#NDq}IS;RhNKhYxYgm&--#($lQ`wQ_d68I8D|t=atFW84<*t~DLh#H8HKYqsCE z6*-YsZ7P_3bH5HU?cXjHcM_A!_SztgmoLGkKT5?{=~6Kxj^t_8j0uk9LnN8}Bj{XZ z!P_j!WOX}CKhrkHNHPV05znMvKvN2L#+m1dL5X=6 z%}NRmzE!9@gQv{c!|NDhXC7GC6`+KyKp97V?kWeJUMM)U-T^ju_2X#nu8MuKzyrj- zI>?HxtfE_rQOt|oVqx4akEYv4x8&#PmIuWLW~=Wc=cm7vZkhLR-&-7Xi=E<-qziP* zeC#CGOWSeO7wU)(zr^PFE;h#$-v+x;ZKo%MFipn5ZUlIe_3Kjd{F?0(WPc(EHDaj| zZHDL-mTFqC@NjbsG;($8lWOq}$`)PMCFG5bgF%`3bui)0F~afb!2#2^p~BVs*f&x@ zn#W>ehjb9wKS&pLe-yBjxc0FiHH_Xa%u|)tA-! zNu-y%^rlg!wY0O5IL4~hQB{#fS`f>08DP+>XpRyRWv-pS{s?SDB%f656B5MfX}P+? z_Oh07YjI{zkufkdd&n`Qdl?+}Wh&$?C-=APByTy)H7a-XOs`^xF2mEIs5mZEYF+Vy z8b`Js?qBIEt)WiH+?B+2=Y#7|J@RTk;TV}o=|tGa@-MJJk?wJGgJcmtqJT`+*81^l z#Czev7wTyU??-neK;Xx@ar9XGT_UxCcl^=>D5B7n7}_!R0(8jAjX6*UHM57FUN+sY z_ew)ggp^9*AlItGj8*;kQRu2>toAzP=sDS!dB8Ya!U9w5c7N)v?$zO5WdKqc$6f3Z z0iJc#&_C92ox6Y09<3vmUl4k~(%2e^Ju63ABL8p~_fXV@D&p#>7z-BGYrh1p&)*%| zD+gK~k!R7-4(m7i7p;y*JM?Zn1$_8E!Bkke8+0lz$YG9%*n1Y*RVNZBL%J%e7XF}q zt^sLf(ElZOP|Iu7@+e+uW5__|90e!)<-CY3)L6SaASW-2}873-=%aY1*l; z&qsl16F>Lu1c>a6Ec9e4ANk|C&3LA0`R;MM$YWNSE!N?T zRsk8)gRYeC9TU?=I=}|%odj)F!cGU?N#B;%m~;7^*lx%U8ow82ER5qZYH7DXn%77l z8xqubY<7c>fKQtxa)pe=FIw-%hD0BEJ>9f59efO;XRlbFu2>o|`%n{^aAQ1BRPp=4 z5VM*nNCO0S+Ag{R($wm8BBN+jBfrP+00R9M!X@VU`E&y0UL7JEpRJ%V>fQuzqr^2DcqM{Nc8@V^VQPuld$u4$_N83Uow4Y))HLuV(e4oI{ z>^qb$DQ{4pV3=*sK=nFoy`O38ef)Dsa!arj-KL_h3ZiP`+k2WuUuf#m!B8rRcz;>5 zA-%hNRL!F*ia}_4J}FFw0|Ig4p8kKi$KkwZ6Y{cdS^qO9wv303bBUF7Cv#)q~!HS zh14-%dX1GNUeZ2hp$8*7tPR>iGhzX{?Xhv~x5>OR~m_y54HIv>-ATeT}U zwsWlr8*)7%z~dXXyzi&<+Ok7DZTYWg#fI(C?$mwh!kL}|sGSOx%4G50>@|__H~|-g zH94%!CF-p6mba(E1tDz0LAXesfn7p>*Hl4b7zDoXj2A79IUKSu{8NeJO<${gTS3;Q znClgwBEQh1p6_3r-=gVAqr>O>CA}$IsK>KdNyuF-{YhxrI_R!vb0^SUUB9J%pzMjM zpc`Ka#`ZM0zls=s2Y(_rTe@tiw#nfrJ#>qUq8NiP0)_PYAiN-VpuMqjGHRTO*O03O zz)p?)Ps2nyP=C(sQk`Bb4nrYeD7P~A;Jft|01Lm4paf+XrlSbtT;uu7kc~UI=Q0Cy z?pM59*$jqLKVfi0K_udfDVY1R_qv4qkW0~a7>#cTz`^V;vqi<))f~J5fOv|w>D`PT z07fdv5^Fl0rRmPZ3*@8?e;jUurrSNJVsEW%MVUZt1dJ&~VRY4TGP<1ynt_KlP-#8<| zyFDSaOiq75U1JRz;(PjIDl7o?b0_r@YQj41CcyQ?i;BEaBE_vh);-6-a;2LvIoeN+yFz7b9S%5Y!631HG$*yYS) z`vX$tKIiYl&Lh0t4!+T!6#7U&BzIYFOH!9@KyM`uP3UXnNMV4wJl{F#a_sA43Otdm z;%l@hfyWC|Bqf2|>H#w5dm=ZZ6Lro9VE(E|u3>4Hm)drPjBte{?n0v=`aqOUOd^du#0-yEXt@G%3T;_4=*0~>EOuMq=YVu=z?d0&Nq#w&ZAfM zHE+Vm_eFfmt{X@mra~=OB6$1*u(D?=K|pbH^}x{fB!dR_Qb%`#7!19>)eTP`KhIHp zGk6|hK_OU%MhG?i8KP}^WZ7Rm8p=4BpuJU`G-Gfs9itGY{N>RR6+66ukL~ zN(7Plpgm_4j*o9>_-YezaMynd*SkG~=X?|86K#kJpGqMIKgi)q%;b=m-s;ZHK-wZH z+%>d97%?XDa~yD2n7K1&7!C4>1*h3}N5;s*TdPtpXf|RI?q&DefqT?k;Ms<0y_hpq zxSD)#$kpVMkfTDQ=Lmz}s)$^=I()-x#0olfQ!l(Xs{V7*Xr$y`Pr)mmjbCDYU?VGl)9K-vkFIoClN8aMZV0IUdV=Ilh1aJiJbKwqRp(<_af&<22RoWM+S8rJ&l&5)u#`1aS=`}Wwg$?-Lh|27)x0q)4Y{mR- zHtmtss7G-KjVdO%Y-;WS6m02Fq+-G@o0@Yd{}HlXPd``^#^2^0IkCVVfsLj{Y#1A{ zAul2(?aqjo;B9Vx7O%+OZL_MH>Wb0Tw)8G%c6IaUY7IV2K>S^oC%o=_c^$*8ux8mykS(K>oTci$kt zqCsBwMkqh=cR^I2)YZ-=?I1kgD7*D9RXKr4Nee`D!>gGdoHRat z!S{X7yFt(E?uk%NmcQCJX__fMo9BKuY2zbXCYAhyP1>1?$KJ4MEo(qS+Gu7cx7gH{ zH~S{7Vsg7pZE6cn+R3+Q(p(u63#>q)a#$kAiIL-CBQa@Dp6Z)4&18&U)i~as;Mg*; z3$>@kiH>RbFd37!|G^0R{)nmniLh^pu>T>VZ8DHzm3H#tXSeWX3c0gQxnNUQTQl$Q zx91-(z%C%R_hiOTXOsC2y-1dHWil%9ABueHkt5gM773O2fsTqlpKmVHG-twH>x+nB zPih8Gqx#g}mTIRCUYFiS374Mogl-qUd3rP?oe!{96;lJ~D_{TNlzQhBJn`T|k$;$C z7~fOz0hUTL`U(Q*?Oe&J?t;eyTVKbfUlGmnq&<nebsUMDzAOji}qCw z_EnGCS8cMdT5n%fV!2Xr=xX_)^A(3asyK9}{LtC*LsjL6wl&GixWL~A1ZIy6%pMhp zOba|UGVoMt;Hl(5B>oNXO7Vf&Qvu{=DXWlR%Xj6< zW1?k%s5(DeX`#LnzxDLZb4`*?sT-r zWIP-?V&EFhufFt~^EjCgGF451YQ#}4r>rGB8>G*}Hb#Dl|LLo|s;72@dxH}w)0Sgc zHkPjm%f|Ant$8)OZ!WW`(G9Sv%_*MZu~v1-do-!)#}2*NIl=QDe?B5*gIu&d36;K{ z)0GiMMIU|}Ol)?T*gAj3Z$t9fd05S4Z5#l-rb$_X%Z$qFL7SjVrUJV_Zb4agK>reR zB*Qc*Wm>;wIB&q5L|>;W9g_FG_?B7o%_1RLRHtO-g-nfJ?qf!RV@?o%$%fbyHHM^1 z5)@3ZWR`KCoko6ko%1w>`C6VZhsyQoU(D&;!`QkIA-^Si0l!I9^5_o2r<)Z_eF>SF=X%Ol%| zdeV{JtlJn6Cnq2CH}KdoTJPSP_+tYv!S2G0RP=M1ZgR4h?9b2uUVPJv8|8k!$f#Q^ zH_Cc!{)m2)vV-+!X0r7R=347$JqcfDpQS1#?*k2j zGlTF@Dn?Z%C{d_(i@q+TZ=p((iG3@fZw6%qLhte0TKXoz1S+|P&vn95kmq~8J=&Xj znC#j9tvHZ`Ih4r%JLBSh=O%<6ryLdDk;8quEy$g=R5NV6aF2PvbyvAv?;OF6-RxE3 zXwE8AYOM?!=FFGRKDGxl8q$0Hi0EGw3U7pmwv{KF zQs2Y1m2%iR2av2lh592kV+n$jypR>V_VH(PN|%d^mUDE#ucz!-^sd2JTc)Rql^&Ar zEVoi{*)f7CX`rXBa|uI8@_T{4%t#XQys(mB*CxG0WJ7}af{VeL^CR(iBv@|@KPs*3 zBtr@^`^Oi*M0d?h5)OnnU^wr>-IaEKM+d9sO%{;J>!ji%WC1}^ZFgdCPFhm0vMZUT z=dU}}!6)u=BB!z^Tp^Q1z>Y`FF(F2d|A5I=6wR*c=Bnk{m>ldnX0y%{{eQ7dX!(yq zny|H@Fu8NkB7k^mJp0=z;qaf-pCzhx=x$A^J>qbk1^Int+?rFs!L80o@hRF@A;t!a z-wYMW>5m;w?ii7&dDUpMD-Pndp1@b5zGlgrh(}{ z^uonn?T;N$7lwRC-;(>o2oeO+rOeW-?s}m0 z=EjKI51OShuqlGcZ75Dzd~NI7$$!W5Zj6~5d0lEBHim2?frfTe$3*(H&aPi%8SJj9 z#+W?7q`v6T4~k;Buc~etl!E$@=~!x8975YsnYXzjdWj=?DL#5zE)QN37)&2`HD9iA zrn{7WBcM`tXA4T6uSqkr0 z@gX@^9yJ!7cNx_uXEBj3D8~C*H=#;%p+J` zRw@=oP33siY@awU7!|{HPe8riwWTzKwN`}6^L$(8r}1iEkbe-+TsnvW_BMZI4*n zA=Y}uS{Get?BtV9@JYw`q=S4?onH=jbn+uk@FR}#BM$N->S$M0PsCOh*3cN%m+Abq zm6St^;QbjjLlwY%ucuk~zFiu8nuz`9=_rpp02#4e<+>|5x+@vFt`IvHj31khztKYB z%|69B2rv(cF{I=d>5Kg3pB7K@{6VX|d&CqHnZPsO4Wc!5c%497%W?b(4nZqiFE*nv zk2q;m1ZL2`DI>@FZc98RqM0bV4B~v5@Y3mpvFpC#vkDxYPQO^}ic%GLb>Y|WKbxVz z_(IrQvI)bB>KuLU!Q!`c=hA@Vq;fx=41F@(7~XFTKL2!5PS1DnQ~2{gYvCUVmH%Rh z6B36YCfQFe;EKZnLw8z6hx`=f()wOSI+`;BbmGgCDuFNgqk70?FNs5v?d&^uaJcPX zJBjz!q^vn_Sp@m$v>YbuwIfpwy1XIfY}_Pc{ulm6Z1Oj}t(*DVFkJst9%cE5scL0T zqb2VJTi8VP7cL@+%_Wep9AHL;>TC+o^RZ2CO4Yr+@Yif-BcID+5K>JwpNqG--e!Yi`4tWml!>wd-Fgba*Z&?_EW~U$7>m{CRz7?VS5qV|36}T4PxzY#&_9HxP?je8)bha7%_qAWrhJu&tXW&`VHUZ z>dDZKqo;E}6=2ZqAst+THIm`GD8J#mC|_hmMYnG3!*>C@Abgi-9B<&e{QWn4mzCCC z{G$I4_%1IM27NS9tlvS5JtosEbR!lagkf9;anCMFL$L3xkopiQ3GQO0Z;<*7?Av5J zVx7%)4XytK_N-tI<9~k^oGZXX11%-}e}+`Nmqdm%rh!m+cQ9|Vr57jWRA}LNw zG3OU&xT5=xfL!gGCTv$Q~)D$S)=gQ5MKr ziuJ|IH`B|52Vu3~))vb_y@UBHUF5`(+~WqT{gK#=y>e=xC8mxqC9<6X`*6B1@mWbnz!wrE;b=?ldwT$ElEFNv}OBbK`AH;G6YYXdJ?~Mo@JXkw=9SiNO(P= zHZ>Ah)x}FNB*>2)!C%ZweypcMMss|#zDL(?#u2>ve3h`Zn8)ZA>59P|nuvWVg*tuc zoS&e!xd%8a2!{`tLj*GSE{=+VrIlC?X}xvHN3eWao^@)0*Qu_fsD}ZH8tXk7b0BR| zIPpj6`I=`!|5cbf-;4eDY@ga?jf%z=q1Ym848!1Ia7ip_pDRHodqQ#GY?>cA{?$1H z%~h3T{DAe5be)AW?F$U^1_HKB^kv`y znXYI(kuC{I*W8rMrEm)rr3fA5V>WZoW$d#E!1$N@t>vnR6rPamSd;(0p1)&cwe=cl zo3VEJ`1>nH7PeVXZ`&hjN7&`C1^5nK&AOw^&@4MH8x)J6cmR%tEZ{SA(8{BWE3n(X z9YP1KnWM9l83gR3ZI=xnsFgc$29wE>gl9#eMj<%KYiF`xEo4ewzzl{0`Ahv6;SY9h z>Zvqk{~2R;bH9)1+*L;xZ^f4Vc3JT8q-+I-FeoG^V>x?C$?~B9XWvR^7sx9peSrG{ z=q|X(;taD3<-4&YT<3VKm)Y^Bi~^U4DrteV1UI5}vo-6u)U0FHj&eC%7-c$QZ_AOx z!$w(-c{-W~h1aAd?&s{mdHO%mVF1<6i~4`0!WRf3 z>%J6^9JYOKO}S~G!%`K29O%5ri7GZgW>^#|Dvx0Y7XA~^n`a>_0KvAoU)*vmiYCf* zI~Ik7?^z5FSs>BHA!qB#M#onQlqZlk@e-lLB}>Jiv*yZ2BVoV>;u%f?u#Ng~Hk1`O zvP%GM!JjcEqVY&mdC{r>qqt6r1V!;y_`!W2)~L>SSz9V2y-@~AM2NB7I0VhthUTAj z2Ho*2PKgDM+SGs4sQyIcL)_dv4b9!5r^=f5li{R;RY&g`*Nk%TDxcf|#l;10ryb1k z3 zXZT)*=$KJgDHl*P<^=u0-_4_|vX=@0V4i`9k6g z$G0@4fs^nkLA%yAG86`)ecw?em;7MZdDw!;QSP`)3ER(sj`y5uAKg9#PL@v6Cgt4~C$OnFF&xfZcbZ?fHUZvAUK5zg&ZYE!waO918+b24H zD{k>mpj-Z~T}$yNx2pdrm~>;awCPLSQf~vh0mB>Lp$Ujv5)$t(ZQOHd+OV~a4}z-k z7gLuY_6A{_uZ;;CATqiX#K{g~<_2*j+)XB_HdGs%k~>CUTxTriFbTGfhV9TwvM>O` zktlF`eBunkkx)(7d}5JX@Qc&jhvlMh065GGFZH4a*p=8-96g`tq=lW2|M8wdrdq4E zGR2GFzTe&hyo#INGu;iyi0Pg9Pw+jReec05EV*~!J-K(lb_KGPp}0wqI4u;lfCHCC z=f(jx)jJF3fF^|PihS~K{h)Z;U**lnejWsw=vKv5dVWrqS+pL%pAmYt~etx?6V_(eP~ z5mdS3v+zs+=eW5ImM-TWX@--A#O8Yl{zeP`qt7|++OPTJ5%t5V+xrN)7s@xrY$LRb zTcy_wtIe+sK*G*DF#7fM;{7BkmKpH=sOuvxn{f(hVA?3t6`zQ7DN`k>Hp&YbbFlC7 zsi|2h!ca&~>wXN@A32=_csEsZT^6z15vl*>05g+bMVBA2&G!mw&UU|N(w zmg31$>|+%f5SUTrc<&R^K}&0zl4;Q9_d^BJ`!2dbp+~qXr(RR|EpGZB|NOIh-3RS55(dd|5%q)@) zj@26%{vm6zL)dt#~uQaRWO{RT`-=<6(0qNV7YMS6F zCw&muSymuZ?4pC=lsZ4dE`mW7T##J6GR4G1U2v-RFwQQ4pN;7ux+qm7hmK{rTtK8G zd3F%{BL~X7EirSqE1Pt0pqv+sF z2Z9EO+6p+RsNK0Jm*_+d$|%kb3^-BIi4HjEsPn(;tB$h&J?G#1KWFcK&hwn#XNFXD z)px1yy1sX<^)BqIakQ`cFxie_olEEhL0S)Gs2YDCe6!SijJJ#W31<|Tihg9ZV55UD zKC#&obwlks+JBibxckoWw}2bZJOBe@6Hf-l(+NxW7=sO z?kF5X+i*5*!`aw|gKb~3ZCH-L%gmBkDU&1i)5!6hD823wZNmZDhD$4?RcxiX{HE}C zy}dsz5C%XF5J%g%J&~7FT`)veh|78CX8DuO90;aH@7M1{{w?*Q4C6I{1(yF8<{!B< z_chmF__QkQ&jH$>hpG{uoZfH$dQ{A}slwwZk@?7PxS4JIVB>hjt9eZ?KZ<;q4e)PA zcqbhrFd7!8v|+nIG;zbkk6jRB{yaoqH;KM(626Xq>N+Btklv2?5Ho-v-+?u9#K-h? z%3GyV+lai%Pgyu`lS%_$6f)kp6Hzy|Z}21LPjCvgvmTN4%z;RA?z*F%FT-As9GP2r z-ndOKr)t+v)KqZm?dQ*Kn=w7rvcBqk_1Wo*lN#?Z9XU%gJ!$+o#NT>TKfs9cQn)YO z4Z4^=!b&vtx9e*^J`2(k6-E{b^b`l5&IfM=Z(wtK37Z>bZ2wc|Mq@VONar=Rua@+N z6vb;WwLQ-l#AMDrtTChpf_NQsf(cfVkB!&Oc6}~LQ*7dPwXzgxsoXop;(&PIWc~* zUnj%b*iVW?lMUXnI1z>{@Ksj)3nvfpNxS$CeGOXT>92Lq{d(lbj86U96LmW;HP}GS z5`c~G3J0b~1SH{!{iLU0=BE!rTO~@r%@0d4b?W@Yx>%n=3)w+owyqe*RBmhjV#mgA zfW%_p#r*XiOdLKHFKD`j!+Ix|G-2Fq4sL(kcliJ{m-|0+C*~wFDwP{ffNCZVF{y{p zRqErF{?B;$>`uil?>|{O9#NqWahHbr8sylpi8%uS2ilm{-D&t6FQ}M}iW5+b1;Z&i zYNTgpE7k6>F@$S`IO&rnmi-?49Z+od9rRSc8gneRrslFrZpnLy_Ies)dH&r0gX)2uuFvv+;gZD=(MBwrD$nUnLM ztTZ3~vy4StiC6yo3mj5i+_+cP$=#&U>!UMls{mDcnvfhc?~=+Pi*U@)oR&DQ`2ds( zRz#p?BZBCiHO}8e!4wX*+`AP|SRrF(rteQ>-+vX3Q{^o*Ve?%Ay|{|wu$T}38pk19 z1mU0JIE2dq$2o~_w%ai%F*QRtP689GgU~#jmaXAyIdlM(|4%SeCWBRwOo<)p*i|~g zWvs6DtFh=#)9$d8_QDr6Tgp7;ded4MNcUvTI<7e}71M~#Aqp7)RXn-542M!v7NUAs zaG=ZE9*P=K_Xb6cNEvYuQ6nf~K#(E^s8J*OEgPsQ7OAS6+iBG|GA*8ZvSUpQn#Nn6 zmOJ(~Ep<^qkmmgPhc8-JK(A4S^*xF7Ce_$ujMb2lg3Q6bQCM?`G=&RAuW%7sb%#|~ zUBlFU?U@?guE1N}Nqw@2@h_(kEc!5|-b@0glg@|YbtKd_X73r0qknakVm*%qf%)JElZ{4?Fb-ar3GbqA*Q z|6<+2Q>p*Sx`V6dfqDkJN)K-+^G-(l6=Tl)7^`CmVs%&)8MF?pFa8OhPcX~>2A{23yH7R`BBtsrq>V*OJLUsN%CH`@xX!tlFf zp&uj=Z1-lT(|?BH^ZKOG<8Vq{&8>A@;Rp0T+CE*)?V#56Ke~1o{xb|do+0g(|9-rl ztH&Y@qG3G|&3j?XPxx)ixcDD2fD!CHwO>LQKpf#DAm0YLE)N;5$iIIU4$bOWHE5XW zb%9c|AOFnle-{U4`!=aK0o-*&aaI0X&W-Z=MBpPo<{w}f zOeR)3!eD0nh{4QZ2Xf?(tgW^=5p_ehIXH)-N5{%u3aI%qU=j3OPJA~j*CliMAJ1+7 zckqy(v9?gL1#GoAD|yeES}hrwOwQ<1PT&l0YG5a7{wFNNP{$Rggx9%##6s3#f8>sh zgO1#WZ*oTQ8T?*}?V5bYU&^E05J)QVKt(`yWj9n{=~odD??#MA6#)S^Up_-XR$Kdq z5fGXOSJyFwYZcmC&k_FdnzUkzML}JAtZdW=NQ7e;NZv~=4_m8KK?Oz_$Wf{qQJAV2 z$ah(qbku;3p;{v$UO!?W!F~C5$e0SfYLN+&Vo{sy9L)5qX zu|7{{?RZsOHa6D{+StssQn4O&#DF~YQyqa#X|sNurww`70B1N~iaMCNBz5#bp*SKI z<&whLo{w@_969X>NC|Z?$P1*v9l#Hqq(~M%i~xT%CgbhWfLn?h#!1w zkB{cZ4#-kK9(-bvN;(oTsz?-(VWAHhrVC>-k)c<@Xa^{CQ0S2&IpaIl2*t{W*6wTA zcdD2Vn>%Mpx0Rco5*Rdq0SF;$VE2}<{)CO(Gu#(pfuC@J(fftDgbTQL<-fgqw0rz) ziGZiA*=3Irr@)W6KmgJ6LbyOjdz{@%xWM`oj`B;wDZoN~e7MH6E^HXD_&4Jo02JIl zNIEKnHAlF+E;j@=>3)<4lCJs=b=)@s*H2`A{cB9DXI!YiiXjek!LiTUU(dPkCsQQC z((=UMmizf1Fm8YaaOtie^6h?_B|5lomoCOPx$hePHZ=Kyf4_~eB^t*PD^rz07~WKM zAX{(RBR1`WDnYvi+%evLonhL2^j%nkhS(ZGT(YVh?}Z#cd#CL|88|bG-Q%GAiIShq{(VjmI76Pc2C986pRopKrGg6SZ@(b* z1Y=#<99Q?l$iMvp3lh2fH~&3%rYfK&S!AyEF~s@A0DWHUbB~JDt2p&rtQ~&I@EOv1 z3svV`G5!0)%~9|U*M6!re}GnbFbpwg_DeTMZyBR3afg}PJ_yT*YX6gL)O>oKB6)U4 z_WQmLTN2ZLR(g)O6vjvV(H~6cc6KGSkX8~l1o)s=PBsQD8`h@Q9)#CGjaB#+InXk5 zi`!|&6*=E;A%t_yo8h=|yx*%V>!WEN%@isca_E{Nfg`8gop@Qb>-MC!z&_NX z7!@~B9742a)^?p#BC@WZI(I_ID>7#;eaO&BL<8!U_v>LWOMap=eDC(|w)Nqq0fLB# zz=OzhPxGn0!Tn&u#Y@=BU8+VsK*fVK0Y|~pxqEa=UAhBvL3blhAa+}^!l75(DSfzA zcvtr|5HJJiA|o+p(OIJ0b&_&M?C7XL z%RWVigkwo69hZH+bR(nVBL8m%{<*#RRh3lDjNUfHIjMhEzmlriGn!D(&j*w1#GQpn z{YJ2R7=k*CbZT*Pog*jmsOUgoL?Y7pQrV;N*@dG28Z<%oCb3pl;<)7(xSr*^9;>9N0 zau8vJI3mdtxC;+K8_X3B!8B(PX>%P1K-z1C&cgHgN31gDFA>_*6+dvTad-4Q95p zA2%|_yiCj{+UUtRILiG@c5jZH-xqc|=+JA|p62TlhWD)5?3=DWPw%~3Z`xf_++HnZ zXeTS~g?fZK>g6*=WMUoDsk8g@e8*75Kng6i=4~d2dOT(N+PC7oL+Uz0v%08@Ej47=+(*s!BAU%Tuhzrf zkV$o`xkPXH=nd`^0`X#_2k1o;yM)LXgwOYfGvjmd(1CLpRqqa;X}7XA`vt=w)EF{* z>-Bbwg9|b3K53kOOPTLnjA`GH_VPd4@0aykrYe7NmB*S|PxF^k+gC|%>tTo96@3e} z0}p$haQSYS;Rorq6C*I$eKG&n8^2tuycxGHL-CWT9^4`vQTK7!X4d8n@k%}PbNFT$ zkE#YgWI>LbC)Vjt=kPZ`EnGuS-Zy&P>bJ7iAT{-jz{{lxF4?m4SH3sn?D%#CJV(gs zmoB`&HO{N(=(9iD55(0Cx-2X;k1>kBoKorgUl6k*VCypqTYc4~?*beO5<7zT=&PYm zhj!Hc>ujeYC(-EF)nM_nxzDi(vaz;_%UD#|(cwfZs$a=nWq8u6&rI#cLUY3zpN^4z+%}R% z+t%DVSZ+jnxg);g!q4KLD8(v5vdAblcCOa(fUfscp6`gD-Ipit)0`-!IW{{CEBXV7 zI*mv+su0pVc27>ka{aL!w>($Us-6f_Q4`2RsL9T;f0`Ow2NA_Ru1*octi_mSSFat) zp<`>Ipt1lgOn?@{BgS-+UV}3DePy@K4aZ zt1DQM1LMi&dAa4T+*e+~5F$O%ixqWuIBUP!}>T%q)8@9uoYhlHORWSVh(2W9~U zb)fbRQ_yf*Uv@mU_F~torFjq-rmq3?zm7P3RwLZ_z#6>e0m*()Tc8_hN~i+7o0&_# zO`<+#)!eD@#4dS{Ev!JrE_;TX`xw+ZS{tn91^gVNeR*+g6Js-t+9Xh|9D5UcU z8Bk;8zCCGgRdMJ-LggB|g*86DZb&C1rcjN z&}*e0Qmiou`_ICXKEBSSFMA|Ks$Pw5e2jqWqDO^gj2xglOmAp@q>W54pALMZDU<`9 zvdFyl1#4%iNOCx#avB@PvBvrQEFv@8O?AH2?c@ zB5i_w6>`F}TvBhLl0r+&Au9fn5gvB)0^NLI#`fakE+T=85_qcl&xtqldhGradIOzf zj)X1Og9f87dNntHnWWCCA22rK z1<>T+KtWhCi;=wB*)t)tO~xorQd$ZPrj0I5*UW#`yy4{{7(-~bvI79&?0GtyUxY&r&o}2@Bcc0f z$aPsvas-ipq4|DEd9)b4qACzF{i8EeHvdw6%!nHeajZeDAygP#*Nr$QWCBU`G*(JTdNUZ4RFUI3sv4R9lP^``2mjrpJn&ewos2Ojda-&V&7ihc! zlA`yly1D3XbTh)jo*ZhH6@fx9uxjq5*K0(riGuFc_(m}WTdL!AjQTVD#;N-sB4c4M zuZzDadXHKFi_}$a_A=5`6hLdDG6$PAA1(pEVWIab?NSN+MGA0e^xj;eOz7jS_)^`vv3w(0B0 z@s?4A=pJ6x^i72O^~3PohqEPixklSKs@T-b)$DTG@jIJV1lWs=E!})b4&V z>6TkR=MHGg>Zb%AC-%y;$B6OU+^y*tX^Z}fJD|fRv*8jIAyeoCApOkKVeFgXUz3PC zCh{&MssZcoV9}GY)xKEq=Q-aF4L0nF-8#+rt?QGny|M2}BdsxyO>E>RN!I6lU7EC* z4HM12x(9M)#{hN!PVRS_OY8gD+W0S?i1Ba`abKwK{A+|NHrOUKJD z-7(AHGFteYk+qH%IsG48Mq{HoM7@n*@nD`MOFX(@T&D4m(0?#i37Z9X=DI+fe3LZi z8a~6XzKu^R#V2VJcgo7?nNrHQ^bCP|rl1w=$rv{hcj03}>3qO?NZbFnI3;W@%O_s` z1x8&WB1#e$Gx+bZySWF;$e!(k_pnGpI!Uvm@P77Xz-Cwea6vz!G zvephQtnn^3iaE)Gypm+EaP*8H;U?gB?54#SVRL0=`9Sdm7;ixR2mRqY{F8_Dx{FT^+xsu@FBoyquN+YKR}>*AN1s zVz?f%V#>pYF7Jo<$d?f;hlx!A&n=8&a#3$M6nx_#Ha)$6A~w*g>O)5ac2C&Zzrsg> zlMKt>{|<%{B{yexF~l+4%{%@#^P_eVCMzwYP#BAlCxW9^43{Gsz3~`Y79Rv!s_(zi z3uF(}n4XfL{{y$*8v3Ux3W4UEksW)VCl#f9q7bf5887ZasGW z!LFeH#$?lTQ}O?rWMOfqIQw;3q_U{Y->|x;Teh~Go`u4OuSE6h|L(_%H5CyHtMaU;U9jzEp;=7v5m z=OL5#uLzEslQXJY2O8F>LvP63Co4q%9I@>US(=nYrWHZHdH0_#uCQYBFv~i>FPRj^ zby$xj>>1ULF(+g(>4e*Yu`ahJ(>Pn?f*jc7fE+maq$4@_$Vw-kl`Z$^>~%gJJOSI? z35Wzx0BwHY$(14%aA^0Qdzba0fHUBJaiFfp;=Rec_>m*^Fz9bDp=Cp|o*fwcIbHd5 zC1WQVm~gUF^Kj&Yud}e+L$31>^Cf8iO^BTP5zGLTdlYgZg?sNuemxK#g?shnF87hR zdthSWck_Y-s3y%6ln`JJ>io2w@+T{Y0yz!Ohc`vZ^Vl0)a#UCaP&&}suN*oV95*}A zX9lXu@sfVi_}KwiThon0Kf-p4`hM!5oDJ7SPF#A$yF$xA&qgD|9r93Usm z^?k>f1N&WJd%jn%c53Ifil8nn?hi9f)x$Dv9v>vFyz5XsOmZ$38sWtVn%SLn#+x_? zJHSBLq6s|^II!YP^vOZ@L@@h)1yo9t*V!@#I?(;BaVB_{PBlm3d^pdV0vwk@nTWQ8 zK}t0lOGS~O?S6-+_@Rwq3O8;4krhtF1(4~i z-he2hhgKvD)o+Qj-=ICNOKJ*4+$OC|?yj`rdr2k_3w-dv%%Zv!J+?cO?G5@EF&bX; z0OL1R6y>DR@5z~=`K02AD#s+*975iL`5x3br3qV-``ov0!Q{%?ky*apn0Z8#OdsHs z)c+JKUdK1YjbnB#^HrVvd;Z{vuIMK=qOMhR0CuHLZm7AVbbY+t_Xi@{`=VUN?7En# zpNs#?{h9idI%{Kb(ZwviEM}?mFb@_NZtlw0HT~i}m__(T5^SF;KM{n_7>w)1Z2f8o zXa!idZH_u;Wwe|#Mh{ah!7>iit-%*odfvt=e$tt_@g;U(?UD_z!zQESZ=EOjq*}OR zz(?v1nofG~Y>z%cw#wJ;KN=jPUy7(23bN`yA#;aUivB7QSJE07s-T~o+~L91&m<#U zkXQbQhk5wTb|*F)Cjlg#LWcEvW+B#Dllj0&S==$mU%XB)Tau!lJ4*}0kp5mO5Mj0x zhWOsN#Xb7D{RvlaCEX3Gvok*89V*I1RvNGNQ#MT78@ES3w3{6;ZXf9Ag!txfT!m5K zhIQHMhCG8D4f(?4`ZoWrfoFtlP*P%rVZOuVroK2f0rT`LU4|+8r_q3M1?qHNNI4(OR!rE~C?Wa%^y zn>W)SWQ5UJ9f{l0yD~;ONbg?uYjQ?+1NVeK?nq1JEpiUuJP!& z3BBjT-irGQ(lD)Efw7l5r-*7`rM}2lrP#%41f}l^OZ8vVQa8ER)ljPch6JI>y*Q_6 zo;u#?)cpJ+8JVeJQ&#mJ(cIYAb(8*c|HpanqK!pY()hnS5X|I^6yZwy^}XEJ+s)MuzO4w%fd%^s1>w%yMxXkO-}GrhS9JLzBoD^*Hx40tnB_GL z3Fb;g)|xBl@oNtX^&hZJWVLv)X!j*rm0hXAWl!ymY`@XVH^TTt^Gn_6Zi*+>|7L!a zP*$v0qf32Mq10u8X5xZ?hA5>d3l3#>R(*_dlKFy9y1(wmyQF>8dW_1`kT&vo4B`X7d`;LL#`V+u<{4@v0&6+3kq zby8uAR)S?9=t%*~ow2S{$?=X`RMi5q+)q6!$+ZN8=|Y0b?VMRFVfT^j1Gn9qhO5qWq&l;?E_qnCZNe%LFQ{?7;;DbZ&%D}aF=yIjgMDYA+2eB|0BL*iVa-Bi zkced__%`wdW>|?ns%A936TBfLtJ3Kt)GLn&3lvI4sK{R29GFw16a<&u1b zb>j?WTKsxI-0>4%EtCAnNHjbct%eOfL>WjoVLn)+&zc$lwT-bAJVPJm#f>|M&KLuE zMNH(3ED>c z4+t&@F)-ws0}R%KTTHLriejYbgADy(EP;*k2-DdZMV?Zb{yQ$Czky)|FPok#oMs#M z61U{M`U9lJpQGoyp46JZ3F|)>%W#(7xH@#+p4KG~13qlLebmjj{)sbh8^#a#Sx8Xy zhPLMkjdw>}D8XtZ=-PJ@o3NPtP+eE_`?KjK%Q`~(n)4f;D2n*pN6a$` zIuM!Jr=Ah&z@YY`sPJ6}&1HcVLu?W)2q|VF z+Qd5<$dotYcIiBbOBLOn*7iGS0aA2#1U&Aq80Kmyvkz!SZ$5=BUQH8+cr0O$EbKT${xQdIVSI9VaOecE=hA(=QulF;Xa>^uSSiQV<3hvlXOdzx2ph#c}8L~^}&v`4=yzz`ZT)&x*?+Yw7GQsu?SVR zWI)#`=?C*3Rmo=?C%ow?%zB`5Yhw5nRn9Q(xJjv_+-^q z{7G;cM6Djs6NqOC%tWXl}JMh2#z@;a4ubobep0<;_nD4VVE`*?PwP;c54W z{nT$c+*|>%ZajJrU)?7PQd(as5Ya&#FRka@mOi=o1!NX>7j<;nMH$_f!>8e^I#W+? zg~tjDXV>RWgLHIXo+1psne3XA?21Wty_GaLC(RX;=88@ooRg?j3U)4)Rai0$ow%JeMfE67>b?%=bErWC6D%i z50q*bu&@Fh$i-;Y+&vgICZV?4fnoL=9D+9#Dz}TkWqqH}Ru0?meb)9#G~l^NDKmUB zV^Q{mq46Vr$xXn%3eyfJ9Aq?Sb#nAFXT~AEkK%F_3scTW6X6e|^vg<7a#h4?_Oi_w zjJZKHqZrc$vEQX%(3#3b)8=dQ@A$^;wFpYl8)JmBU72VtA8isix4{8Nhm3r_LdBL< zvKK-ZdRzEVw--BWJD0SxkXkx3_s)RsypI1+CwoNYPCscspnh?jm<__R9$5iFECuz$=R9T@lA!2yO5P-R(1~zmvwS>R!i89LTOtkdo)6Ml8aPpIB;@y z_O7tKg;Hx_4wW@h*$*L+Ro?p6>@gi-hYO|W;9Y}97Qs8Fk6dta_|}Ou&0KX+W*Q@Z zK6)%H$CD%2bNrhAp%_9{MR}>Hygs$=4~0{uh)dQC!7m&4UIFp6@G2dOY(@v18VLK! zXJbmmJ()ad0G80)N5}ETZ*hW5GfnhKO-_O+A;D};M`GS+UnEV^^)HeNBJF`%Z4CS_ z7c#;Sm+TK;#;!cLx|?13aOD-mIQS+AV~&cN4CpuF?PanVYP_f&SYhA_@OW6yb;?{Y zxj~U_jao;F>|+5v#+)n4$Kf>#UIUZIq5#Hig)YULu$nedKJMaBeR9M&%w!#j#q4`J z@i$(W^OGNqp=>AOjcKz9vn$kpstma5b@p~!L3a6$6ZWS@Q93gIKcf_5xCI1ApO-P5 zyR_QFlaw>UsT-Bw=q}3&CT0^aWaz|xi=-^(NBTQWF$p+H`7V35Dqa>f3;KnyVhwIXWvF5Za}}l z<~QkRiWT`k)5(1nCJOI{N}GP;v#PY+af$4={mx=x_HvrM1;Wb!)Uh4=zUtK9E^UCR zxE;hYRg>>MzxAa0m1hFTHEL< zFf}tr&SarE#TdgZF`Kn#M?-y_&G<331;g5Q3#%j9r%g@%NIkB^F5sVQQ-7OQWek?* z(&t78pP4MkuhHk4uXL47WKCdQfp$C3e%sk?Hs(B0gf{FKFFsjBi;473Q~AM@egncv!IHo^ZF^Ltik zetSYQ-6MNKGu?+PFLpbtY{+fM(?*mx3dM?IgQiWBfyJUzv_B%U(`Gvcbo3pSSA7R9Mgq-i#3;;k zN)gMHCImpGdE6_NN!m#4Yp{2QeThSmXBK*Uq+8=naS-u*3b)%Sx-w_!Qkd6VUk^#Wnu0g?Um>VPYVzaA&^sW?@1g zrVw!>LFI>8wd(>w) z;P3F*BO7PopYAPS??~5Hq5CivB1f_PrN2Rv!|jdIjnVdjS}mlk@W(^D%24?J(5^BR z{t~ubT7+<{<}zG-Kc`db@<>15?2hw%xqI{jWkj9oaNxjB z-T+~tO-)aa%oz;AJ22$z+a2~yS~?(hbs zB|$21a2Iy+{qZ_Qu}H!Hro*G$uEcu5{^&?}cme2B12=SD9Ql zDf~_49zw#f3v{QJxMeOWs_gX?aNoE|a2_X2(DB7OAA~J$!gpAll-dA{1*Cm^7OL2z zyPqB;QAiiXX(fIA@gSKC6zkjQL5i0itaH$VPl7B3P%b=3YoiA~A3eDDCFh09ofYp# zE?AgbwPe8A?Z$wH9v1sX;-N3qok}L;_XvyW;TJ|$W?)8u%Cx4rbLio{!b*Dhwed7nXkdm< zPbt&flj-68f{z~lVDwO#t`Zkj$U4ehLJv0!&(OnbXL z+uPl()nCwnp4V}^WAHaqNQ5$dpJ4g+uk@;`WZX+`XwsG7O(i>O(fPc2bm@9g;cqV4 z%Wf-#(tF_Fu(0It@a=Bs)ov;28NO{r+NzR|Lbp}!TWcfMxXlAiBith^-M7^ytaF<$ zHTCb*(SVT?oawFUOP(Zw-DGrT?M>e?d_8ktdQa#&@0&tN`%Jp|DSFLrbZVb#%>Yc3 zm$b0E&Y?Zrx};b4h&!qLzC_@3lJ@>U)6hnHJImh|*z4M4+84S$<=NCfeBBt!o7*<^ zA7GD)17`oGNBpUk?t5yDU%1VIO^=*St?b@Va$y;3fuXQRSEQ96W%(QVM-QfzzZSY) z@Yl5RbD`^bb6{IDs{9jnYvva?M=h-1?9gWIE^Z5-?;o{r`WDBEv7?HgWnbZ1;jV8f z`NML`zgVc+?YO4=o8des4mO*Ph3cFXC)<+|Y(Tx|lbl*#zdc@ zn@+NqZ+*Pv#X44BvFhu-Ys<$aQF|Eqk<+?2o8AoNS8P}_YRAD)dw<#Z1P%?R!-p<3SU%r0LR%JtD(S`2V=`h(^`$#M4F+@g8( z=YcKuk3uD#iaj){>35-$Q0r6iFOE9(!d?FZqJl!W$%~yM;1Z8oN&$F*I4dce3kC4 zlFP%n#QeU*?F^L^eY#}p@b%~N_2pTFEu)VXIIn-{e&l|8gSl<%*ml(Y1BZ6`o}_Hq zyY2cTt#P)V`VULqW+|Ht{DSlw%C8Tle6;3<@=2lV_Y(%Unk;&nS+;=r+6|hdaQUe? zELSCut)L3DW%FjwgZ4!Bh8*l4gE{b^J&D~G2PTZ=%|{-zCx>nq^_cD^~^GY4Hj? z{(4r?$C{66=luZyO;Pz});wnZUEC@~<==#Ew|@wEq^SJ+(Cs|j4i%MOlR`a$>1&<7 zu+UPiUEEgeG0t~PU#Lr{)-D}=`5o59L-AE5Ni&bH4t49S?vICq z!OY9-wnC_q)0ReTXf%JfZN!%|D&@?j3HLWH@jUEZ$UcIvbf&kDKJ{K`#$}nf6cD3oLWwM?e~SUFzY5~T>h6(7EPW~WMRMVeAuIzt{tY$p?B687H6zE7kX!_ zuyE#c>q6a-dubk4#KSRnWEA{~p4+DccG$PFWPET(x@564J`T20N?*a?T zf1avN#P==7&Ey^WNuW4xcgC8Jhl^=kI&x`yHP5VOE z+QbVPO`nEJ)(-A{;3nDYysgrG_a`6E6N}qN&JW!7(znR{)20J>^5t#iht=HI1e<4zSc-Kz*%Pd83jx%A*wc5Xg>N6?#+JfQhg7Mcb8NPn|jjc1kBx#YhGxvj^oTv~p z&RgaO7QM6zxli3_zOr-dt=cl(LucQq5Dzy!)_z&Mhxr6UuJ;U0S=cynKBq!FD|L zEib<}bUW`Jt$k>D`JT}2qf3t`BD)I-_4CFxo@BdoW%*|#Xz}wU+pTvk+1hwuRsQcEUx`0hfbfysod_}Yo{}}Np!Ys9%nXH_vH~_K-&Usrc#rx#y{qxSa zzBT9hnt5hL1I&*&C!Gxfxdz1v87M`ncx#6Uoh3ZyQbfSdu=_63CcxX3Sy6?D8BI4- zNAMlS?y)8IA}F!2S(8JG9z36NbPZ>2fm&2}%wnpBxovg$-W2k^esVCpR@^CH5Bjjh zM=Libm=JlqmKllf+}%){oLEN;8bPCPcTu~X=nGDtEg^vUhp=n&0}7g69oZ#meWsW4 zydK@ekk=~Fhbuze(RB?lelZ&8v_^cP<&m*~w(Euv;kBt>hjsQZ)__ z3Ys!QCo$@9Nm3@c@E^b~)=6;RIfWJ*) zdV21 zR3{?w{nHxKf_c~@4=}ydwRmS(H^B7HiO@S|DrB_m3d4T}(;m0WE5fA$By z*pzv{bXl_{P5Ha4(BPfs`-*RhMKp_X+7qeDW!G+f|5TqZEF-pkofOo3nxfd0@`;3xy$>)>e6k|zoVH{1KWs3amjf$Y~5op zt>9mQ;RMgVS}syq%E1!Ng;AJvjHNkGY3`CDDa}qcY~9yUntB@QNVCQj2_p?PjXiac zrTLQ5YzVM4y=>UJb16+Z4O^ty&BZ8txENNBH>+7gb^C$R?2}@s9G8Hh{#^YeN;4`> zP4lcPM)AAUG?=t34XJ#U7XmEJAxd)r9)U>nRVd9-E>?Mki&ej8;xU$HBBlA06iej{ zQkusaZlpAw@oG7rxMG!0U1}QpltGqe38fhdur#~0Nb_dH&neBrBh)lsb8*VwxH$ED zrZo%nJu4~A_fi~{(?@CCjWa1t%}6!PHNlaz@UMNvV+)Lgt+9I~X_Pa`G5pe#e;t`| zcI3U=5Eo{K|JQS8`Wk0lDhBUU4)h|gW`6as17rWcb07Zq5n=;w$^P?_>sFUTYV1bN8$g2B@{bZ7^aO4ab6)7csxu2SusJ8q28M@v~jK| z&n=uGX^nMp(2JMH#O*Cn++lbmZJO(d-ahY?xW?#@F<$^Niy}-oI+ZVABtqR*)hK2q zXO}*KgEa&YX1rhQ>N;r)hi`l|0&9t6_z64o3jG>bpE`y62gCWZOYSj_o9*(c{zhc< z5-+G+QB0T4?8x>^94nV)?kv(Uo^ayC!gpk3vZdGG2)h`+OO6P>l`q&xyeUkGH|5LP z@VY)##o!myjj&`TKJzPj#zPMK3bO;x)QbgelNgU!c9?8e4+1Z|&pvl=7IPCQVRw<~Vn!Kg-K|4KR}>86WZ^d^XD zM1=-{ z>7us*trzl~+$h@H*c~ItdmX-sCbwaH=je)4>aS+9!d}9nLc)Xhx?!fkzB>45Nv&-0 zzOa<4`3PbV%e;9VT|YM8cyW|$H&T^bgBDh0i{?64qN#)P*9QzRO9}v1zGV~&MPWb|_zf1>b?pqXeR`bmYOBD%Zc^LB zO@5^hiEx|4{6>r8(-7$xD7{-CuHBaalIuKwY zc<}M~Q@8qMP%YoIUZs0-V$=*-gL7{KUAI|>-xU5yhlEGjH1Pdyv;xricx)tAoo@q#+GXl@Htqqzzw zW6)I+Ac6*p;Zp2+t;J~xQ8-4?Oj6VSiltS@5tA>fcJ4Oq3xt{5XYg)AzlY?H3y_l} z8K!!QyLE~n+axpA3WWk6^Gi@$*=V|!EcTva#!7K5d~5sgm0TnhnC%jsQhM{o3&fv@ zsnjJ2jaVEo8qBq`?2@+g8M7^cXjV*#9-eHbgGCjRHtM3;Ry+qiyVQX~3XM@W_}wtS zb!w7!@`><{%jsGqoIDK15yZhJ&)JoN8Drw0Fn6n*1lz1}rsY~y$Tjw<7tWSza| z2)mkWojv}H6@j%&Z#WV}LlbM+rdC~%(j-n>l94Tc9F%D_I{sNPviO?c$Ys#N5U~}WDoAt z^cWn<(@M|kqIgJwH_e>ufgK|+MLGD8hIfSJhUdj3{J$&u*Yr!#IYiEIWhb}w zq1l5u7$@fL`ggLy6mao{LOQbH=hwi?!=?=)S;lF8G4bv)SFk>`Uf#?4SmjJ$=Xdyc zn<{fX-nuTg?Ugbyfi&o zf+tBbjf6O@7j6fm(PpmZE?DLrBQ{IhEU6l+fg;@5E3_nHSgmp4TPWT~GM13&MY;$5 zeJR2dG-*8K&ET2JKY?ysPhIEH!%6Fk$`a{+6vwY($IGR~F9yryoJ3b4oUgGU!I>7G zZ>x*OYZ1j<(mE!*hmtG7vfzw>r7vJ7c%jI&TLzUdNEMYq;e*9MtIBE``B=5^Hm5hmxvWd=-CnGk$`QE-1|UMaEZu%-UZL> zNUkc}X$+4WSxtROd*!qE8!uG;WMiK_fcYKXlUWKMMTdK1|DK6WnR3CbvInyDrg^UV zNmx|&PNKb|maCf|C)A5VwRH5V7?~7!zXxTWm(8d(|9Q_-seti3+4nX z;#Bs(<j zgRF`jqEZc4AApru9)x=+$75zw=J`;Lt9pey;Uh#jCJJD*0rbR3BxXr3SG&^o^DlGxxxQ(hiwA5`eyn?VvZJe16t@hq19#um`HBefVNKgGp7 z*FF?E4uki~$(@B+ZJm$MY9UXgC1;0Vr$A}bT_;PekryO5sxLTPNYW`T_Gu>3VsWMZ z3(Um#fmljZz)+ zffjJhVA=Hh17X2*KlK`ol}gqwYCJNA9TA6k>sW2p^y)4B&nN2bdk$$3>v~Aqrpd;u zXcNOY*mQSAzegLLn*=ZU&U{3YA~Lz6Yq0Th#$yOlCvkV}UkrD`jrbWB*Kjcbj?)U# zkwnbV2{vUjop&TOh6DrlqItrO)lB{p!QKPj6@DD4kt~3gx`IfnajGna?DL7$HCg&g z{;wZ7?sUBwH-WjF{*ps&9w5F~*Gu5A4L%=X?8h#XhdnJJ=XM7G-tNu>+#IZ&9`VGf zjqLoC=6#C(y7^>`$P69v$AP}9BO#~kc2Ld9ackgtm1Hfe&4ahMaffaVmt-kh=F`K6 z8{O5{S$atS%j6F1P~4?`qwX-iDBG z3^?x*yCod$ylsEkX*ZnR@AaKdF{6E>#vw*@S9JW3?d!fH|MzfKr-oG9*U#FwZhvKu zv!UY0_Eox0u0Z>aMEmC1lwx(jP-|O?K}P2+@^8badyZO@d&UroChnw|$NcHBt8P9O zq3_S(i)P?Oj{3kin!c=s;^<`lT2vKpyE@HiLh$33k??8v$hTJ0U%$MRg2R|LQERSW zO3i2yIxIP5HE`yT;|g?lQZp{bP0(0DH4{nX@LRM_c#g-@Gp+k(jf z-C8tbuN1+>ZpzLX5(8a7$=~YQb`{TjRom`E9mkk_j`)8x@TTpzLh4;PEXfPb&XXR@ zod`6AsZi14#Ax@B)Iy_6LVIYP@6Hx5(|W+na^}*gV(?Of?Okk;T=GxlrnCN2&(P|5 zq_K0gi#Wi$^0q7BD`DYx$ADQ{;;wro6BLm?A7bEQF|gYG7+=eU=bGbxomp+LB6PCy zo6?mQ<6ngnXlyY2fzIR*1}g|FTviXFvy$oz5>E;D%2mgZZl(Q?KBP669 zl1QAma66gpciR%I4ev0&zw63$#}tZ*#pZp{S$HHutA|EVsH3WB2@&7u9gX^}rTXdF zGVu5OwTga)uM3BdxHf(cZyrq`z>40BvJ)@f?ZR2ORKq|D59tK>-rO!d7`+{sxH&SU zT9NS#JrLhNj|M(wh~`}sq<6g5n|6gyYgs|AN}xF!z*pF=(QUDa{RkQ!+#-tw_HkHq z$DU{j{&`Jst&AXf5P5f!08(-j8j}0&q^i@3UXA$xH%}6n+ISOGsERwQGJPGF(N^yz zdqML>(s=pllgbiNc9^FVqxylJP{b70AN$rHJI z;0-wwA1@#0$0BID^eYknQ`~;+MY%5dZ5f!;0=T0NxU(SrG$c6W3vw>rgTpD#R&h`} zHe9chGk~oNA5+d}M)W6yqZ}WPw;K@a8D$r@`K1MR_Rs z3o5zV%F_GB#m5eLVh$(wQF^aKN+^P&j{N>wc#8mNZ1Uny2NG(O-=b@I+95OvUT}Ii zxjTE$G=Pa{to}u+=E11jr4H!RC9gZP3bNlclKm2V>`iCydCj!bMY;Ny=*^d7k6^V~ z27!dT(mT+JfsW4p)F{^aQkVWT|5d$+%74yen=|fFcAvO+bfy-v%`uW~W{UP2bSMg= zy9NJpkg+pUS(7E#I%-2# z%N$aaNaH7TUdHSlp9|Js>rZW1}-z)m)9KT z#>z)HH6&+?u7OsV&pkS z)5lUHny%3=a6eVi?VfMF2y8?TPDiV*TC_LPOYQWM6)_S9^z5u!gV0(A1pZ@R~o#-%o~ts1G>NuM%a|JD(#)V9p26gkn05f8@V!fR&6wyuB?{O)Zm7Z zALG-&$8o+^s8f_p3Wp3R>d+Y*vO05=j!8Yx8 zPV@PO5ylQ#vOD7z@Fi4F{G8d!>Um5Ps%KNoS5!|TR%y6ahfzK!AW(w^NA%C>1$axN zxtB;=uc!I4%Odo|PvGG=?TAI?PgCVrqsJ>x9_zN#1$Ov_-Sk*U0f`6?6)O2#c^O%I!1 z*9!Y?;`N5`X62!|7o$zfv|6poS9rdXW?Fyf{8)>AcVR`g?y|~xV>N2<0&-WW(I6{i7 z<>6(|`VE!tF|}Ghm36q!fU=4spZA&jI)5tbcboxb4cVX;PW>Njy$O61W&S^&NhXsv zy{2hedI6yjD5cQQQto3WO}Scd3ZY;@O@Sgum2im%YSI?0P&G=}tuAVS77G>(0*Zi| z^pLBtL5qu8-Ke0It!q_qQBi;I&!kkpum68vtWBQGJoB07`8=QdIHpXtLK2{7sfM>S z;aQ^jdu66g{iY|r7WW8G=4JVwuH@sR-*Ch`DvJ%#c-DsKAU*4=K*R!Z+;a8T^sFv~ zWNbl-$JdVdhRR|eT^1knHC@&nj4oj&{<(ls#CHyEbHrOdTKMkhA57S^=cNAyG1;W$ z>UU|f-(W2G-C+4%HPNR26${l&fV50TNRxH?WmU04SK^$G3EOAfQZ){+Ja3s|QyX{1 z?`*+khpMLIvi6xf*ezOe zwg=D$^HbCIZv3&C+6Gnmz0K(0qe_+)X;$vw^SP`@XObfQZwNG=-E-3y3tYq@it|#m zjX{edy<$_2NT#w?MCw(ty8m97tfHT@$J-D!BL%amMT|_jcWrnmDz_U zlVq;bS(TcN-P|Oy<~pa%MVu+qm|h9i;Fn7PHY1xI9lD`j_&S@-sH+sJirzhzw5}`J z17VFdYRQ*OLW!LPn6l+nE>pRO*Q`kOVcIc^9g26)R*OT&*4wnZ@O~j-cP@!uhBjE) z98Jm8Eh31b$ByT-_nEjxVJQhYbtJn=^XR&PZFR~FR5+tHJi$vzvcCy+ffyHO0Y1p3 z$QI0}3x~8FQ4ZT#k*Zmb3!hCUBau)GBhf0D4NZzsud=xj8wlRvtRA%qsaKt#-j4xD z#fr(}Q8o8t9z1yMFlUPPIlrBYcIxp#9(f*u{8L-&D6qv~aPbDG8Zu=`$A!kVh6eh05viPF1R$5m1|uZ%J;AFZ{f>Q&N_ix;|XgCklu@WdC^u+a(zs?IAEpZQC3*_h6+YK6j8Tl!;&S@ z`LM=X#t3wA!@tXbPB#S3O zzc*aXTEI6v0>d!Q{n8)LERM0;)#GuFR|{=}kp8`$*R&KW`|&y958=#o`c2!tn&v`f zf2h41_%4HXWQU-Y`;*A_AZB02UPLfLHZ}WnK(3%+o8~c?aTG-QqgnW&KlaPl<5IyvSu9;{k8ek<_kK@yqhFIzCx#NCh33v zFzkzVL*P9It&ZL1zPnv;CfHTaQR#`G$@!sNj`NPZxNYytp9%&hY`Y+Tnzm#(Hdy#% z8$TT)$}ntL^9O8hSW&BD!!cBjNF;hSwh*kcw$(feb7Heknp6?5b!#3l9$pLXfnqU|8Tyyp%E}j+bHo(!c;J+?f7dIp zP1_XrwJm?m^}7Gf(!eRvniy1;`&w~ueWtt!^z)Lm%~2;jD4f}0@2*I4^PQQhd4y4p z=E4!diuCHWyml4$4u~vgIMp^SVgy`zyTx=((eglqS4<@HVY_L21XNdvVtN&y6^wiE zOa8NS)C(l&!18@a8l)m7=WSm^o$ah281Gi@z$rQjnaV#FBAe&v^lloYT zNT%FLCt&#^=?N6G$#YRR0q+{o_^KzqK~?P2E^N-SsSkMRJVbcn`pmYCe)eM3vT`{1 zS1#J`+&6V8*I5)(6({4;%ETI(v219&oHyxMbC%{Xy>yBW(GV`b&>Ga) ze7Ysr$>}y*4eUZH9Udof_rkoPckIt@n%)gs8YCEOD7%G4arDdi)f4lhaKS&Ew$-HX zzRAS0Y1Q2#?=n>)kEJk{uYLmr-y;%P~Cn{)zI=jlSZ zu$CDR)Fj}+rw*MlmJC;_i}VIw&3$~sa@o7W*?j|7c^;Ar3aK!={;}L#LiZ89!4C3n%Yob`~g_9Ww-; zObJ^pG0@B2y8{c|-0v7Fr^(fdGCG+CuXBrBQ4iGiU=yc(iJsZ+>{rbp>+iHbwF-=m zp(1J)^{@6%qD6OXf(n+H~4kquB@%Sf3*gJ1|^1lEizD<{=EHV)%oooT5J9bN!$`r_I&eTCBOb zRx`L#WA0}~YbexBr;34HVk!%4KG(qP(i}8tehP4}E6~4flSxvBJ)($PVTfDq=yxx^ zoxXllV|ujSS#ZyC-~0bUyhYf4CjfdBH3pBjtZYH8C*T0v|8iRr{)Y7rwk3hE6JF;w zV!8dR5R<6-J}wk8^teLHyjUN5IGh2AGPNy>$7X)-Q2BN0p{bd2;4R5cgp>a#XY1M& z3EQC{hohdEk>!^pG{Qs$9H&~|OWj|tm+gBQQf&nqDCedt6;-Tztq1Cq2VsQP?f3+L zs1ErO_+)(@pDvH`X~lqE5>*S;P9y-)^Qm6a|9O6fR87yYu=zQ4wZ6TEDOLNN%H`f(*6iwK%k1Tg+b*G|IU+w}lLaVk|M`pKTe%|jm->M3)h z+wri*J;_7<3e*pS@&keG0_0c`=;%Wa=py2Qo3hP6a~I)YdLI6Y526?&mO37^&SaMU zj+Rh#DDf>dPf~_lN@TuEw3w*Znge|WL`wEjlQ717o87Ucb#=($I88Va`R1M9r&wig zWNctW^L^G^+y|L{vyGGjGP}XWG!q3b^}^%Xy5HzTdm0lFtmW%!X(6gVB@)d+ z9Go^?;o%)k6rmG(_u2Bh&ymkw$ZxsrIQ+TFe7Hd7sgaMe5b=HWzcBd;>5mEf$VMAW z4z(iQeMOcs{PYbiu6T;7n(n3URz;;c*($pfu<^0}YA5f_K`4zKvz zuiT|f(Q+3ifeT&u46av!J$ROkxU%0&_Nc{P9--py8T~FZ8qF2g&=YL33Mi3h%{vH% zUSq=)>p+J5NjUtKatqeLiMFI#=9PE-xCbr##P722wQ(=}&LO}|E-+%%y?0d$4#e-t{7 zJMDP1d~K+w(qG~ewM8tgqZLZDFcqsaigf|e4YD>JDJD?~G)_hDqW3?Ok!Q!Tio!t( zvq)_i)yDxz5T;WgxIZ8r3GT-Vlfd-YSo+BC`&XZ*J40W`Q&@$p{*?{~nz__#qFsjZgswwO8nt5uP$`^@1pQ>4p|#aindyBxwLy$3O$ zaxHcR*IZ~$1i@Jhm9YjYqrj=^MW2cHa=T5elV_c2tn-j2-o>~LXuWAyG<1e-P1@;y z-Jg)_V9NP-MZMF{t>Wh)#L>qUZ9%Z`ef)-MrW`dB3k=%LHV|$&>+E+D(~b2%60MfhOf= zi1EQ5|3}aspL${%-r#*fW3XISiAL=g3S(ErK{EPU9^?^0CHX@UPZsYBk+E$$sS0ko zMtBZrp?^BVzQxD1YOkTUi+F&S7s7X~7Jk`4u;5luNLf{AbMxxsLj{oET< z7V$kbgXu6_C%tjeJb~g1x@BeSF7X@l6igC-x%s~YL;l;Cb$V!XW`HWH5^d;W2KqA- zZ=1();!~9~g!rMLG5@#*RcXv=N~aVcKQwb3#DB-YkM>^VC3AsXY@Cq6&v%W7u)yA= z1zgl8fC5mHyGDZ!tuJerEnR%DD#^Mo4penTlPS`%$;`X#3g~wOZB%J<*r5s74F$L3 zV(8+VJ^6;0x}oGIK=*OMOY*MU0AR@G>jw9v+;aaJnoiDr#mz&dEk>J*|40f zVFS;zZ79{<2b{#ASw+9>O!oPc+}9Im_Yj4u7xrcQ7j)rvKG`NrqK97&JzSM?M1(z0 za^Bq~_X>On7IN->8%VR_)vRf2>Y0?VLo1#o#_butJ>kI_b?;>|sn&awy&{^lGpSM^ z@3KS5F!D8$8r1Kbz^o(&+P58nC&1s8UH_$8yc?yb?)QC>&yPa>L>PrVw)y+AM>TIV zqo|jm*@0&+acTUhQLew|3J1dMe=vl157A`lopLj6C7+DxAI3;CjDXS}1_jdvHOigS zq5PKgtw()SFdm$IB}TrJHL!q2+{Zl}nrsu@+W)5LeSH8e%jppVQyw1Qb}G}~-@58# zD0!rv2sf-;Y(a`F2z{G<OtUbBx)%Aq%|80f}=oObcOO}G%P;Y=SFDqchA08BYGFh&Veb~~m#?3l92G3CJ?dt#hS1RAsh$()*^P2l3XTS`trXe&>v1Q3FVR3qJ)n=ke}f=$%MtLe*QiQOdlf6aQ^+GKsW0sU6N@_ERxel`h*%=6b&+hD zMvn}K)Qw0`2Mfi<-Ud^Ije{<-8UNXV{~wM_&2A_loy4n4S)VR{l63#r&^c4Kf9O&+ zLU(~F9`Vd69yyOMbA~V#ltv2C-OVRSHkzK=(}%zd|9-{p=qJY;AjsG#>{Y!EwI8e! z9JMCm*St0A9%5LIbJn<{hBXI8G`#C?iL!bpVl!-T(5UFQ{y@lg(j6@3MP^BzIi=J_cxAO#b zCmw>y|4WnqBLR|3fj0{8w=Cr&dvmM@*Jf*a`a|Rl&@5fEd^PQaDQ>MN;fWC0!?1k~ zw&ezGOU0znwrslV&u#gidh-?V3hDIZo^9!l!nSO57~|FXUE zt~R;@xg6{xePEe5CWhY^qD|`=*s|^uVaxKT^7o*ELmyC2kYM0vQ_5)z8JtejUu#Au z=wsw#M7Y-S8VXip*V00*v1Qre{3TTJofl03*41Wvi#d}x=&-A8TJ~BYdx?;pa%N(v z|M34u&)q7KIwtoP6_T*Qh&_brRC`@_f*HVu_39s?IKGhIkOtXBjVs+Ho(g7jWcpO+ zR%-*a5s0NdamrA`#$xS4y?Sa!d|=x44R;`z?Py8*Ga&D7CN z&y>`nNW!~cMa>iq6TyR|aKsCMIZ$#(3y-FkAPX%+DsLK!&g=NHBAHo{Wd`K!96I4i zitA@gZ>QLh!(679i2xO2HuM$4<7r+_p0^zH8U~0-{p1U($ak1N!~1twz}3N*+cs~j zg6%kc$Aj|RWd1_$V^Rg{hQNDgY7LFs|5Oo!85kdX!$A@JJ&`e%JEZ3*!4w!x#kcZU zkmtPM!I>iqc=ZREaaRu{U!mm zi-va_NU%w-6)!o{(S%|5PjVX8%t8GTn~{n`>9vUAn{2ow1KX%lVH+)mvo*s`o(7Yk zv>8*bf4wSW(CJL)9yu9H_&)5sJug5$F~uY?yn!HboQ)jr9fT#6`O(<9QoKrzlbUoG zti!1W6a!+P7QGEZ%WPQ!NzOSLY+^D1;+wQ?+hOm~`!jRi=^l6t_;rN>p$g}~gCAvO z)(^O-_C#;KEA;{A<@}|6p1DhSz<;?FB8Ytc3S_(q#X+<9%+3sI*L%X$gVHTeQKD^5 z_zY8rcMu^sD~_bRIc7I7mc$Us^3yxRb7Cih%Q|U96$fHw;~!Mc0#-XoIN^}?7PcL7 zw!TpMP<2T{JRRK>k@NgD?qBekJH-JX!Q%UOhx05#Q>_YXtY+H<`O^bZiys+C_EM<{ zK3tSA%0=H<2ZBaLCTPmx4yS;7?A|wH4Ewgp|b|v{6O-h1lYR#Dp>I<;-92Mq@3{ca3Qd-?Kc5AXf@;* zUh$jksKbu?J<#@tSq|mt0gB?~HrrMU&}sTIA>X$?PY5rQfVyDRMABNxpo5_PVk1ww zWTkAY7ulm0sgPo0?N2=2ZAm`jL;`CoOmiCN)S%O$p~PIWBblu3`j0#gRc=DV^zitz zBcwYv{}9nWZ&y%xV_w5aVORXt5z>8|e~GZ(wd=pi`uPa-i0Y$#OFF-~M1QwuZ$x~b zhU;d=nGt6Fe)A7m?a%JIsVpmNcvE;NDS1wdb8QYt(@-^wgw&{4s|tz`%$XDZD(n*8 zCKyGv&4m@iK=B{PfKMJk7r9If9Kb*T13oyrD~4m>O$-Dv;EKS&2n?LSKzEb(iL92i zWBlgp%5qmkQTPZS9JBRqWjP-`5_XM2XKI><-D+Bqbq@GL9#g*CB0WVJNAai0zbXrG zO$bdulr0Xl9FndHHW!WyD2D~@UIY$IEYgj|<&W&kLkPCeHwQFwd=)78NKi}F1R?@U zuraLX<82eLhfW%4ULR7hx^39dFjx;_s8?&OXYw~V-`AlzPa*d1F+tF<8#|paEt@CF za+t(W=XK0x_^iMe13aSez2+k{zv-+Tef_(FJ9=G(^ZukMfU@hQ+!INInxj4?aTAg< z@vB!Of8t)94!Ia#V20#0uhAFi#TUaafE??HMv4B@n|7&QzUCiw3Wd3cU@b29ra%7|uQRJ0&}xUqkWg#_S9j#_^4 z;%a6P_iWBr3xtC*A{`Q;;yP4jGq{uPSI{I;?i=!XCIXQjS`gLEW zHo}lJiEI+@=FFb)KnP=kvSckzBHGn`q2{jk{DQi5K4=9$nK~Sw-WH-MNaCMucU@K& zG_3RD$N!Nj#c?-1>*ldxqC&HdXVJ@R5ZfLg0o~rrC*xf3 z(GT$HPmYI||0WJ;%tj|(5*ZH8YpsRfEwZtlqD^HudUA`kJ6ZB8a{V06%s;?btD5_<`QLA8UqPG=iaOB|K6(?c z=ladrPo=TJ&2+WmnlF+2^0}aC63!qTThMF_{eu=`+Yr=j4E=-NbDhrfO);G{?mPuG zZv{ygkMq&a_Zo;j|Fb{;n6v_E5+mbxLRn$&9RQ)KH3cnMn?7XvL!Qw-4kbH140BZF zr6c*QQl(u)4e|8p_D4;TqryHnvCLi7X8v+hI_n%!V^&{>meU|9AI37+HDn`=uH*G< z`b!(>Ay}Y_yYP#x4;t+7(R+FK5B;P^dwx;gLx(-|%RXLT*I(Kr16D;Vvugn0{@kv0 zMmgFCrp<9y3uJS2^V;m(AppxLd^?8i2d#HDlOtuZNYXt9KI#Z{O$kSsrOKYv*< zecp()_+w#K6NZH}dANb+vsi0Z2inmfO2eyxv{h9(jJ@_MdSNRFD=N2oaHfVGF?)_& zLkIyz{(#*V@e{~^upJgI*ngghR0nY8F-)P)@DtuRSIgJA)G&p%`; zE*N&x-}5h06{XCI6oo!-@a!A*2+T1G`$`P#gwP=Z&zD=n+`ysVPper17g-5<3FN;+_ueA~a7pjNj9mH+&G3YYm z7~D9v)f&veF~F-e%EMR8p27c7z|NI=S=qPU{8I#OKstLSGgg0Um;}w0;^@P$*5hOh z2u1)gto6g@I1h#p!z&MWM~FkOzJ8cJX_5x`)ETyu&{J>#k7J^|u_5YNdckwBrb zH5;>udYT+7U6nj*9>+2xk-B`92&{a`Wn8i$8#EMbcKlP7 zv`mG^4b1w!VnkWLt}`ICkb4Q&|Dih^FXtHZvR|qA+PM!DyZLF& z^TdK1U+j2@FB>vMl~OegujqIw=l8Wkz#qJu%>78s{Hm?{$+vVva|#?WK!=)7RoB`p zYt|fQf5wSxcxG_08JU;aU<$1L-trQKm-kNVmV%z67~n+^gcf& z@eiReER*^Hr4CE@xb4Q;D5zO0mSFh@4A6nN z1s!axF1`+0J8@41X!HwXwvk#4m|7k?!RilxZp zcSRvcFP_P*iN^cfPmm9B>YTgf8Cqu~4&L>R4EY+}mKkpEm^+o%0J(QOo^02pQ}Wf* zGx#AzevGQ-5x8Zzr zyDwZC3JrjuXW+kp2>(}ArDY}oPVdO*{_+QKUP)qV7RR!#oH>S2F zz^8Q*^7Ho-Foh#7E4J%QqG+IOv#Mu67JV&+>@Q8SVL4lTIBS=wi#B6O-0^N*{H