From 57bd5ff90247bd616a414dd1676e54d5f942bd26 Mon Sep 17 00:00:00 2001 From: fmg75 Date: Fri, 22 Aug 2025 16:54:37 -0300 Subject: [PATCH 1/5] =?UTF-8?q?GPU:=20Warp-aggregated=20DP=20emission=20(+?= =?UTF-8?q?10=E2=80=9330%=20perf)=20&=20new=20.dat=20v1.6=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ec.cpp | 1570 +++++++++++++++++++++------------------ Ec.h | 157 ++-- GpuKang.cpp | 1037 +++++++++++++------------- LICENSE.TXT | 674 ----------------- Makefile | 114 ++- RCGpuCore.cu | 133 +++- RCGpuUtils.h | 52 +- RCKangaroo.cpp | 1553 +++++++++++++++++++------------------- RCKangaroo.sln | 28 - RCKangaroo.vcxproj | 173 ----- RCKangaroo.vcxproj.user | 11 - README.md | 75 -- README_es_v16.md | 228 ++++++ README_v16.md | 221 ++++++ bench_grid.sh | 66 ++ build.sh | 44 ++ defs.h | 212 +++--- rckangaroo | Bin 0 -> 358936 bytes summarize_bench.py | 94 +++ summary_j1.csv | 19 + utils.cpp | 713 ++++++++++-------- 21 files changed, 3671 insertions(+), 3503 deletions(-) delete mode 100644 LICENSE.TXT delete mode 100644 RCKangaroo.sln delete mode 100644 RCKangaroo.vcxproj delete mode 100644 RCKangaroo.vcxproj.user delete mode 100644 README.md create mode 100644 README_es_v16.md create mode 100644 README_v16.md create mode 100755 bench_grid.sh create mode 100755 build.sh create mode 100755 rckangaroo create mode 100755 summarize_bench.py create mode 100644 summary_j1.csv diff --git a/Ec.cpp b/Ec.cpp index c598f39..84b4742 100644 --- a/Ec.cpp +++ b/Ec.cpp @@ -1,741 +1,829 @@ -// This file is a part of RCKangaroo software -// (c) 2024, RetiredCoder (RC) -// License: GPLv3, see "LICENSE.TXT" file -// https://github.com/RetiredC - - -#include "defs.h" -#include "Ec.h" -#include -#include "utils.h" - -// https://en.bitcoin.it/wiki/Secp256k1 -EcInt g_P; //FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F -EcPoint g_G; //Generator point - -#define P_REV 0x00000001000003D1 - -#ifdef DEBUG_MODE -u8* GTable = NULL; //16x16-bit table -#endif - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -bool parse_u8(const char* s, u8* res) -{ - char cl = toupper(s[1]); - char ch = toupper(s[0]); - if (((cl < '0') || (cl > '9')) && ((cl < 'A') || (cl > 'F'))) - return false; - if (((ch < '0') || (ch > '9')) && ((ch < 'A') || (ch > 'F'))) - return false; - u8 l = ((cl >= '0') && (cl <= '9')) ? (cl - '0') : (cl - 'A' + 10); - u8 h = ((ch >= '0') && (ch <= '9')) ? (ch - '0') : (ch - 'A' + 10); - *res = l + (h << 4); - return true; -} - -bool EcPoint::IsEqual(EcPoint& pnt) -{ - return this->x.IsEqual(pnt.x) && this->y.IsEqual(pnt.y); -} - -void EcPoint::LoadFromBuffer64(u8* buffer) -{ - memcpy(x.data, buffer, 32); - x.data[4] = 0; - memcpy(y.data, buffer + 32, 32); - y.data[4] = 0; -} - -void EcPoint::SaveToBuffer64(u8* buffer) -{ - memcpy(buffer, x.data, 32); - memcpy(buffer + 32, y.data, 32); -} - -bool EcPoint::SetHexStr(const char* str) -{ - EcPoint res; - int len = (int)strlen(str); - if (len < 66) - return false; - u8 type, b; - if (!parse_u8(str, &type)) - return false; - if ((type < 2) || (type > 4)) - return false; - if (((type == 2) || (type == 3)) && (len != 66)) - return false; - if ((type == 4) && (len != 130)) - return false; - - if (len == 66) //compressed - { - str += 2; - for (int i = 0; i < 32; i++) - { - if (!parse_u8(str + 2 * i, &b)) - return false; - ((u8*)res.x.data)[31 - i] = b; - } - res.y = Ec::CalcY(res.x, type == 2); - if (!Ec::IsValidPoint(res)) - return false; - *this = res; - return true; - } - //uncompressed - str += 2; - for (int i = 0; i < 32; i++) - { - if (!parse_u8(str + 2 * i, &b)) - return false; - ((u8*)res.x.data)[31 - i] = b; - - if (!parse_u8(str + 2 * i + 64, &b)) - return false; - ((u8*)res.y.data)[31 - i] = b; - } - if (!Ec::IsValidPoint(res)) - return false; - *this = res; - return true; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -// https://en.bitcoin.it/wiki/Secp256k1 -void InitEc() -{ - g_P.SetHexStr("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"); //Fp - g_G.x.SetHexStr("79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798"); //G.x - g_G.y.SetHexStr("483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8"); //G.y -#ifdef DEBUG_MODE - GTable = (u8*)malloc(16 * 256 * 256 * 64); - EcPoint pnt = g_G; - for (int i = 0; i < 16; i++) - { - pnt.SaveToBuffer64(GTable + (i * 256 * 256) * 64); - EcPoint tmp = pnt; - pnt = Ec::DoublePoint(pnt); - for (int j = 1; j < 256 * 256 - 1; j++) - { - pnt.SaveToBuffer64(GTable + (i * 256 * 256 + j) * 64); - pnt = Ec::AddPoints(pnt, tmp); - } - } -#endif -}; - -void DeInitEc() -{ -#ifdef DEBUG_MODE - if (GTable) - free(GTable); -#endif -} - -// https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Point_addition -EcPoint Ec::AddPoints(EcPoint& pnt1, EcPoint& pnt2) -{ - EcPoint res; - EcInt dx, dy, lambda, lambda2; - - dx = pnt2.x; - dx.SubModP(pnt1.x); - dx.InvModP(); - - dy = pnt2.y; - dy.SubModP(pnt1.y); - - lambda = dy; - lambda.MulModP(dx); - lambda2 = lambda; - lambda2.MulModP(lambda); - - res.x = lambda2; - res.x.SubModP(pnt1.x); - res.x.SubModP(pnt2.x); - - res.y = pnt2.x; - res.y.SubModP(res.x); - res.y.MulModP(lambda); - res.y.SubModP(pnt2.y); - return res; -} - -// https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Point_doubling -EcPoint Ec::DoublePoint(EcPoint& pnt) -{ - EcPoint res; - EcInt t1, t2, lambda, lambda2; - - t1 = pnt.y; - t1.AddModP(pnt.y); - t1.InvModP(); - - t2 = pnt.x; - t2.MulModP(pnt.x); - lambda = t2; - lambda.AddModP(t2); - lambda.AddModP(t2); - lambda.MulModP(t1); - lambda2 = lambda; - lambda2.MulModP(lambda); - - res.x = lambda2; - res.x.SubModP(pnt.x); - res.x.SubModP(pnt.x); - - res.y = pnt.x; - res.y.SubModP(res.x); - res.y.MulModP(lambda); - res.y.SubModP(pnt.y); - return res; -} - -//k up to 256 bits -EcPoint Ec::MultiplyG(EcInt& k) -{ - EcPoint res; - EcPoint t = g_G; - bool first = true; - int n = 3; - while ((n >= 0) && !k.data[n]) - n--; - if (n < 0) - return res; //error - int index; - _BitScanReverse64((DWORD*)&index, k.data[n]); - for (int i = 0; i <= 64 * n + index; i++) - { - u8 v = (k.data[i / 64] >> (i % 64)) & 1; - if (v) - { - if (first) - { - first = false; - res = t; - } - else - res = Ec::AddPoints(res, t); - } - t = Ec::DoublePoint(t); - } - return res; -} - -#ifdef DEBUG_MODE -//uses gTable (16x16-bit) to speedup calculation -EcPoint Ec::MultiplyG_Fast(EcInt& k) -{ - int i; - u16 b; - EcPoint pnt, res; - for (i = 0; i < 16; i++) - { - b = k.GetU16(i); - if (b) - break; - } - if (i >= 16) - return pnt; - if (i < 16) - { - res.LoadFromBuffer64(GTable + (256 * 256 * i + (b - 1)) * 64); - i++; - } - while (i < 16) - { - b = k.GetU16(i); - if (b) - { - pnt.LoadFromBuffer64(GTable + (256 * 256 * i + (b - 1)) * 64); - res = AddPoints(res, pnt); - } - i++; - } - return res; -} -#endif - -EcInt Ec::CalcY(EcInt& x, bool is_even) -{ - EcInt res; - EcInt tmp; - tmp.Set(7); - res = x; - res.MulModP(x); - res.MulModP(x); - res.AddModP(tmp); - res.SqrtModP(); - if ((res.data[0] & 1) == is_even) - res.NegModP(); - return res; -} - -bool Ec::IsValidPoint(EcPoint& pnt) -{ - EcInt x, y, seven; - seven.Set(7); - x = pnt.x; - x.MulModP(pnt.x); - x.MulModP(pnt.x); - x.AddModP(seven); - y = pnt.y; - y.MulModP(pnt.y); - return x.IsEqual(y); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -void Mul256_by_64(u64* input, u64 multiplier, u64* result) -{ - u64 h1, h2; - result[0] = _umul128(input[0], multiplier, &h1); - u8 carry = _addcarry_u64(0, _umul128(input[1], multiplier, &h2), h1, result + 1); - carry = _addcarry_u64(carry, _umul128(input[2], multiplier, &h1), h2, result + 2); - carry = _addcarry_u64(carry, _umul128(input[3], multiplier, &h2), h1, result + 3); - _addcarry_u64(carry, 0, h2, result + 4); -} - -void Mul320_by_64(u64* input, u64 multiplier, u64* result) -{ - u64 h1, h2; - result[0] = _umul128(input[0], multiplier, &h1); - u8 carry = _addcarry_u64(0, _umul128(input[1], multiplier, &h2), h1, result + 1); - carry = _addcarry_u64(carry, _umul128(input[2], multiplier, &h1), h2, result + 2); - carry = _addcarry_u64(carry, _umul128(input[3], multiplier, &h2), h1, result + 3); - _addcarry_u64(carry, _umul128(input[4], multiplier, &h1), h2, result + 4); -} - -void Add320_to_256(u64* in_out, u64* val) -{ - u8 c = _addcarry_u64(0, in_out[0], val[0], in_out); - c = _addcarry_u64(c, in_out[1], val[1], in_out + 1); - c = _addcarry_u64(c, in_out[2], val[2], in_out + 2); - c = _addcarry_u64(c, in_out[3], val[3], in_out + 3); - _addcarry_u64(c, 0, val[4], in_out + 4); -} - -EcInt::EcInt() -{ - SetZero(); -} - -void EcInt::Assign(EcInt& val) -{ - memcpy(data, val.data, sizeof(data)); -} - -void EcInt::Set(u64 val) -{ - SetZero(); - data[0] = val; -} - -void EcInt::SetZero() -{ - memset(data, 0, sizeof(data)); -} - -bool EcInt::SetHexStr(const char* str) -{ - SetZero(); - int len = (int)strlen(str); - if (len > 64) - return false; - char s[64]; - memset(s, '0', 64); - memcpy(s + 64 - len, str, len); - for (int i = 0; i < 32; i++) - { - int n = 62 - 2 * i; - u8 b; - if (!parse_u8(s + n, &b)) - return false; - ((u8*)data)[i] = b; - } - return true; -} - -void EcInt::GetHexStr(char* str) -{ - for (int i = 0; i < 32; i++) - sprintf(str + 2 * i, "%02X", ((u8*)data)[31 - i]); - str[64] = 0; -} - -u16 EcInt::GetU16(int index) -{ - return (u16)(data[index / 4] >> (16 * (index % 4))); -} - -//returns carry -bool EcInt::Add(EcInt& val) -{ - u8 c = _addcarry_u64(0, data[0], val.data[0], data + 0); - c = _addcarry_u64(c, data[1], val.data[1], data + 1); - c = _addcarry_u64(c, data[2], val.data[2], data + 2); - c = _addcarry_u64(c, data[3], val.data[3], data + 3); - return _addcarry_u64(c, data[4], val.data[4], data + 4) != 0; -} - -//returns carry -bool EcInt::Sub(EcInt& val) -{ - u8 c = _subborrow_u64(0, data[0], val.data[0], data + 0); - c = _subborrow_u64(c, data[1], val.data[1], data + 1); - c = _subborrow_u64(c, data[2], val.data[2], data + 2); - c = _subborrow_u64(c, data[3], val.data[3], data + 3); - return _subborrow_u64(c, data[4], val.data[4], data + 4) != 0; -} - -void EcInt::Neg() -{ - u8 c = _subborrow_u64(0, 0, data[0], data + 0); - c = _subborrow_u64(c, 0, data[1], data + 1); - c = _subborrow_u64(c, 0, data[2], data + 2); - c = _subborrow_u64(c, 0, data[3], data + 3); - _subborrow_u64(c, 0, data[4], data + 4); -} - -void EcInt::Neg256() -{ - u8 c = _subborrow_u64(0, 0, data[0], data + 0); - c = _subborrow_u64(c, 0, data[1], data + 1); - c = _subborrow_u64(c, 0, data[2], data + 2); - c = _subborrow_u64(c, 0, data[3], data + 3); - data[4] = 0; -} - -bool EcInt::IsLessThanU(EcInt& val) -{ - int i = 4; - while (i >= 0) - { - if (data[i] != val.data[i]) - break; - i--; - } - if (i < 0) - return false; - return data[i] < val.data[i]; -} - -bool EcInt::IsLessThanI(EcInt& val) -{ - if ((data[4] >> 63) && !(val.data[4] >> 63)) - return true; - if (!(data[4] >> 63) && (val.data[4] >> 63)) - return false; - - int i = 4; - while (i >= 0) - { - if (data[i] != val.data[i]) - break; - i--; - } - if (i < 0) - return false; - return data[i] < val.data[i]; -} - -bool EcInt::IsEqual(EcInt& val) -{ - return memcmp(val.data, this->data, 40) == 0; -} - -bool EcInt::IsZero() -{ - return ((data[0] == 0) && (data[1] == 0) && (data[2] == 0) && (data[3] == 0) && (data[4] == 0)); -} - -void EcInt::AddModP(EcInt& val) -{ - Add(val); - if (!IsLessThanU(g_P)) - Sub(g_P); -} - -void EcInt::SubModP(EcInt& val) -{ - if (Sub(val)) - Add(g_P); -} - -//assume value < P -void EcInt::NegModP() -{ - Neg(); - Add(g_P); -} - -void EcInt::ShiftRight(int nbits) -{ - int offset = nbits / 64; - if (offset) - { - for (int i = 0; i < 5 - offset; i++) - data[i] = data[i + offset]; - for (int i = 5 - offset; i < 5; i++) - data[i] = 0; - nbits -= 64 * offset; - } - data[0] = __shiftright128(data[0], data[1], nbits); - data[1] = __shiftright128(data[1], data[2], nbits); - data[2] = __shiftright128(data[2], data[3], nbits); - data[3] = __shiftright128(data[3], data[4], nbits); - data[4] = ((i64)data[4]) >> nbits; -} - -void EcInt::ShiftLeft(int nbits) -{ - int offset = nbits / 64; - if (offset) - { - for (int i = 4; i >= offset; i--) - data[i] = data[i - offset]; - for (int i = offset - 1; i >= 0; i--) - data[i] = 0; - nbits -= 64 * offset; - } - data[4] = __shiftleft128(data[3], data[4], nbits); - data[3] = __shiftleft128(data[2], data[3], nbits); - data[2] = __shiftleft128(data[1], data[2], nbits); - data[1] = __shiftleft128(data[0], data[1], nbits); - data[0] = data[0] << nbits; -} - -void EcInt::MulModP(EcInt& val) -{ - u64 buff[8], tmp[5], h; - //calc 512 bits - Mul256_by_64(val.data, data[0], buff); - Mul256_by_64(val.data, data[1], tmp); - Add320_to_256(buff + 1, tmp); - Mul256_by_64(val.data, data[2], tmp); - Add320_to_256(buff + 2, tmp); - Mul256_by_64(val.data, data[3], tmp); - Add320_to_256(buff + 3, tmp); - //fast mod P - Mul256_by_64(buff + 4, P_REV, tmp); - u8 c = _addcarry_u64(0, buff[0], tmp[0], buff); - c = _addcarry_u64(c, buff[1], tmp[1], buff + 1); - c = _addcarry_u64(c, buff[2], tmp[2], buff + 2); - tmp[4] += _addcarry_u64(c, buff[3], tmp[3], buff + 3); - c = _addcarry_u64(0, buff[0], _umul128(tmp[4], P_REV, &h), data); - c = _addcarry_u64(c, buff[1], h, data + 1); - c = _addcarry_u64(c, 0, buff[2], data + 2); - data[4] = _addcarry_u64(c, buff[3], 0, data + 3); - while (data[4]) - Sub(g_P); -} - -void EcInt::Mul_u64(EcInt& val, u64 multiplier) -{ - Assign(val); - Mul320_by_64(data, (u64)multiplier, data); -} - -void EcInt::Mul_i64(EcInt& val, i64 multiplier) -{ - Assign(val); - if (multiplier < 0) - { - Neg(); - multiplier = -multiplier; - } - Mul320_by_64(data, (u64)multiplier, data); -} - -#define APPLY_DIV_SHIFT() kbnt -= index; val >>= index; matrix[0] <<= index; matrix[1] <<= index; - -// https://tches.iacr.org/index.php/TCHES/article/download/8298/7648/4494 -//a bit tricky -void DIV_62(i64& kbnt, i64 modp, i64 val, i64* matrix) -{ - int index, cnt; - _BitScanForward64((DWORD*)&index, val | 0x4000000000000000); - APPLY_DIV_SHIFT(); - cnt = 62 - index; - while (cnt > 0) - { - if (kbnt < 0) - { - kbnt = -kbnt; - i64 tmp = -modp; modp = val; val = tmp; - tmp = -matrix[0]; matrix[0] = matrix[2]; matrix[2] = tmp; - tmp = -matrix[1]; matrix[1] = matrix[3]; matrix[3] = tmp; - } - int thr = cnt; - if ((kbnt + 1) < cnt) - thr = (int)(kbnt + 1); - i64 mul = (-modp * val) & ((UINT64_MAX >> (64 - thr)) & 0x07); - val += (modp * mul); - matrix[2] += (matrix[0] * mul); - matrix[3] += (matrix[1] * mul); - _BitScanForward64((DWORD*)&index, val | (1ull << cnt)); - APPLY_DIV_SHIFT(); - cnt -= index; - } -} - -void EcInt::InvModP() -{ - i64 matrix[4]; - EcInt result, a, tmp, tmp2; - EcInt modp, val; - i64 kbnt = -1; - matrix[1] = matrix[2] = 0; - matrix[0] = matrix[3] = 1; - DIV_62(kbnt, g_P.data[0], data[0], matrix); - modp.Mul_i64(g_P, matrix[0]); - tmp.Mul_i64(*this, matrix[1]); - modp.Add(tmp); - modp.ShiftRight(62); - val.Mul_i64(g_P, matrix[2]); - tmp.Mul_i64(*this, matrix[3]); - val.Add(tmp); - val.ShiftRight(62); - if (matrix[1] >= 0) - result.Set(matrix[1]); - else - { - result.Set(-matrix[1]); - result.Neg(); - } - if (matrix[3] >= 0) - a.Set(matrix[3]); - else - { - a.Set(-matrix[3]); - a.Neg(); - } - Mul320_by_64(g_P.data, (result.data[0] * 0xD838091DD2253531) & 0x3FFFFFFFFFFFFFFF, tmp.data); - result.Add(tmp); - result.ShiftRight(62); - Mul320_by_64(g_P.data, (a.data[0] * 0xD838091DD2253531) & 0x3FFFFFFFFFFFFFFF, tmp.data); - a.Add(tmp); - a.ShiftRight(62); - - while (val.data[0] || val.data[1] || val.data[2] || val.data[3]) - { - matrix[1] = matrix[2] = 0; - matrix[0] = matrix[3] = 1; - DIV_62(kbnt, modp.data[0], val.data[0], matrix); - tmp.Mul_i64(modp, matrix[0]); - tmp2.Mul_i64(val, matrix[1]); - tmp.Add(tmp2); - tmp2.Mul_i64(val, matrix[3]); - val.Mul_i64(modp, matrix[2]); - val.Add(tmp2); - val.ShiftRight(62); - modp = tmp; - modp.ShiftRight(62); - tmp.Mul_i64(result, matrix[0]); - tmp2.Mul_i64(a, matrix[1]); - tmp.Add(tmp2); - tmp2.Mul_i64(a, matrix[3]); - a.Mul_i64(result, matrix[2]); - a.Add(tmp2); - Mul320_by_64(g_P.data, (a.data[0] * 0xD838091DD2253531) & 0x3FFFFFFFFFFFFFFF, tmp2.data); - a.Add(tmp2); - a.ShiftRight(62); - Mul320_by_64(g_P.data, (tmp.data[0] * 0xD838091DD2253531) & 0x3FFFFFFFFFFFFFFF, tmp2.data); - result = tmp; - result.Add(tmp2); - result.ShiftRight(62); - } - Assign(result); - if (modp.data[4] >> 63) - { - Neg(); - modp.Neg(); - } - - if (modp.data[0] == 1) - { - if (data[4] >> 63) - Add(g_P); - if (data[4] >> 63) - Add(g_P); - if (!IsLessThanU(g_P)) - Sub(g_P); - if (!IsLessThanU(g_P)) - Sub(g_P); - } - else - SetZero(); //error -} - -// x = a^ { (p + 1) / 4 } mod p -void EcInt::SqrtModP() -{ - EcInt one, res; - one.Set(1); - EcInt exp = g_P; - exp.Add(one); - exp.ShiftRight(2); - res.Set(1); - EcInt cur = *this; - while (!exp.IsZero()) - { - if (exp.data[0] & 1) - res.MulModP(cur); - EcInt tmp = cur; - tmp.MulModP(cur); - cur = tmp; - exp.ShiftRight(1); - } - *this = res; -} - -std::mt19937_64 rng; -CriticalSection cs_rnd; - -void SetRndSeed(u64 seed) -{ - rng.seed(seed); -} - -void EcInt::RndBits(int nbits) -{ - SetZero(); - if (nbits > 256) - nbits = 256; - cs_rnd.Enter(); - for (int i = 0; i < (nbits + 63) / 64; i++) - data[i] = rng(); - cs_rnd.Leave(); - data[nbits / 64] &= (1ull << (nbits % 64)) - 1; -} - -//up to 256 bits only -void EcInt::RndMax(EcInt& max) -{ - SetZero(); - int n = 3; - while ((n >= 0) && !max.data[n]) - n--; - if (n < 0) - return; - u64 val = max.data[n]; - int k = 0; - while ((val & 0x8000000000000000) == 0) - { - val <<= 1; - k++; - } - int bits = 64 * n + (64 - k); - RndBits(bits); - while (!IsLessThanU(max)) // :) - RndBits(bits); -} - - - - - +// This file is a part of RCKangaroo software +// (c) 2024, RetiredCoder (RC) +// License: GPLv3, see "LICENSE.TXT" file +// https://github.com/RetiredC + + +#include "defs.h" +#include "Ec.h" +#include +#include "utils.h" + +// https://en.bitcoin.it/wiki/Secp256k1 +EcInt g_P; //FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F +EcInt g_N; //FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141 +EcPoint g_G; //Generator point + +#define P_REV 0x00000001000003D1 + +#ifdef DEBUG_MODE +u8* GTable = NULL; //16x16-bit table +#endif + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +bool parse_u8(const char* s, u8* res) +{ + char cl = toupper(s[1]); + char ch = toupper(s[0]); + if (((cl < '0') || (cl > '9')) && ((cl < 'A') || (cl > 'F'))) + return false; + if (((ch < '0') || (ch > '9')) && ((ch < 'A') || (ch > 'F'))) + return false; + u8 l = ((cl >= '0') && (cl <= '9')) ? (cl - '0') : (cl - 'A' + 10); + u8 h = ((ch >= '0') && (ch <= '9')) ? (ch - '0') : (ch - 'A' + 10); + *res = l + (h << 4); + return true; +} + +bool EcPoint::IsEqual(EcPoint& pnt) +{ + return this->x.IsEqual(pnt.x) && this->y.IsEqual(pnt.y); +} + +void EcPoint::LoadFromBuffer64(u8* buffer) +{ + memcpy(x.data, buffer, 32); + x.data[4] = 0; + memcpy(y.data, buffer + 32, 32); + y.data[4] = 0; +} + +void EcPoint::SaveToBuffer64(u8* buffer) +{ + memcpy(buffer, x.data, 32); + memcpy(buffer + 32, y.data, 32); +} + +bool EcPoint::SetHexStr(const char* str) +{ + EcPoint res; + int len = (int)strlen(str); + if (len < 66) + return false; + u8 type, b; + if (!parse_u8(str, &type)) + return false; + if ((type < 2) || (type > 4)) + return false; + if (((type == 2) || (type == 3)) && (len != 66)) + return false; + if ((type == 4) && (len != 130)) + return false; + + if (len == 66) //compressed + { + str += 2; + for (int i = 0; i < 32; i++) + { + if (!parse_u8(str + 2 * i, &b)) + return false; + ((u8*)res.x.data)[31 - i] = b; + } + res.y = Ec::CalcY(res.x, type == 2); + if (!Ec::IsValidPoint(res)) + return false; + *this = res; + return true; + } + //uncompressed + str += 2; + for (int i = 0; i < 32; i++) + { + if (!parse_u8(str + 2 * i, &b)) + return false; + ((u8*)res.x.data)[31 - i] = b; + + if (!parse_u8(str + 2 * i + 64, &b)) + return false; + ((u8*)res.y.data)[31 - i] = b; + } + if (!Ec::IsValidPoint(res)) + return false; + *this = res; + return true; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// https://en.bitcoin.it/wiki/Secp256k1 +void InitEc() +{ + g_P.SetHexStr("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"); //Fp + g_G.x.SetHexStr("79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798"); //G.x + g_G.y.SetHexStr("483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8"); //G.y + g_N.SetHexStr("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"); //order of G +#ifdef DEBUG_MODE + GTable = (u8*)malloc(16 * 256 * 256 * 64); + EcPoint pnt = g_G; + for (int i = 0; i < 16; i++) + { + pnt.SaveToBuffer64(GTable + (i * 256 * 256) * 64); + EcPoint tmp = pnt; + pnt = Ec::DoublePoint(pnt); + for (int j = 1; j < 256 * 256 - 1; j++) + { + pnt.SaveToBuffer64(GTable + (i * 256 * 256 + j) * 64); + pnt = Ec::AddPoints(pnt, tmp); + } + } +#endif +}; + +void DeInitEc() +{ +#ifdef DEBUG_MODE + if (GTable) + free(GTable); +#endif +} + +// https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Point_addition +EcPoint Ec::AddPoints(EcPoint& pnt1, EcPoint& pnt2) +{ + EcPoint res; + EcInt dx, dy, lambda, lambda2; + + dx = pnt2.x; + dx.SubModP(pnt1.x); + dx.InvModP(); + + dy = pnt2.y; + dy.SubModP(pnt1.y); + + lambda = dy; + lambda.MulModP(dx); + lambda2 = lambda; + lambda2.MulModP(lambda); + + res.x = lambda2; + res.x.SubModP(pnt1.x); + res.x.SubModP(pnt2.x); + + res.y = pnt2.x; + res.y.SubModP(res.x); + res.y.MulModP(lambda); + res.y.SubModP(pnt2.y); + return res; +} + +// https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Point_doubling +EcPoint Ec::DoublePoint(EcPoint& pnt) +{ + EcPoint res; + EcInt t1, t2, lambda, lambda2; + + t1 = pnt.y; + t1.AddModP(pnt.y); + t1.InvModP(); + + t2 = pnt.x; + t2.MulModP(pnt.x); + lambda = t2; + lambda.AddModP(t2); + lambda.AddModP(t2); + lambda.MulModP(t1); + lambda2 = lambda; + lambda2.MulModP(lambda); + + res.x = lambda2; + res.x.SubModP(pnt.x); + res.x.SubModP(pnt.x); + + res.y = pnt.x; + res.y.SubModP(res.x); + res.y.MulModP(lambda); + res.y.SubModP(pnt.y); + return res; +} + +//k up to 256 bits +EcPoint Ec::MultiplyG(EcInt& k) +{ + EcPoint res; + EcPoint t = g_G; + bool first = true; + int n = 3; + while ((n >= 0) && !k.data[n]) + n--; + if (n < 0) + return res; //error + int index; + _BitScanReverse64((DWORD*)&index, k.data[n]); + for (int i = 0; i <= 64 * n + index; i++) + { + u8 v = (k.data[i / 64] >> (i % 64)) & 1; + if (v) + { + if (first) + { + first = false; + res = t; + } + else + res = Ec::AddPoints(res, t); + } + t = Ec::DoublePoint(t); + } + return res; +} + +#ifdef DEBUG_MODE +//uses gTable (16x16-bit) to speedup calculation +EcPoint Ec::MultiplyG_Fast(EcInt& k) +{ + int i; + u16 b; + EcPoint pnt, res; + for (i = 0; i < 16; i++) + { + b = k.GetU16(i); + if (b) + break; + } + if (i >= 16) + return pnt; + if (i < 16) + { + res.LoadFromBuffer64(GTable + (256 * 256 * i + (b - 1)) * 64); + i++; + } + while (i < 16) + { + b = k.GetU16(i); + if (b) + { + pnt.LoadFromBuffer64(GTable + (256 * 256 * i + (b - 1)) * 64); + res = AddPoints(res, pnt); + } + i++; + } + return res; +} +#endif + +EcInt Ec::CalcY(EcInt& x, bool is_even) +{ + EcInt res; + EcInt tmp; + tmp.Set(7); + res = x; + res.MulModP(x); + res.MulModP(x); + res.AddModP(tmp); + res.SqrtModP(); + if ((res.data[0] & 1) == is_even) + res.NegModP(); + return res; +} + +bool Ec::IsValidPoint(EcPoint& pnt) +{ + EcInt x, y, seven; + seven.Set(7); + x = pnt.x; + x.MulModP(pnt.x); + x.MulModP(pnt.x); + x.AddModP(seven); + y = pnt.y; + y.MulModP(pnt.y); + return x.IsEqual(y); +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +void Mul256_by_64(u64* input, u64 multiplier, u64* result) +{ + u64 h1, h2; + result[0] = _umul128(input[0], multiplier, &h1); + u8 carry = _addcarry_u64(0, _umul128(input[1], multiplier, &h2), h1, result + 1); + carry = _addcarry_u64(carry, _umul128(input[2], multiplier, &h1), h2, result + 2); + carry = _addcarry_u64(carry, _umul128(input[3], multiplier, &h2), h1, result + 3); + _addcarry_u64(carry, 0, h2, result + 4); +} + +void Mul320_by_64(u64* input, u64 multiplier, u64* result) +{ + u64 h1, h2; + result[0] = _umul128(input[0], multiplier, &h1); + u8 carry = _addcarry_u64(0, _umul128(input[1], multiplier, &h2), h1, result + 1); + carry = _addcarry_u64(carry, _umul128(input[2], multiplier, &h1), h2, result + 2); + carry = _addcarry_u64(carry, _umul128(input[3], multiplier, &h2), h1, result + 3); + _addcarry_u64(carry, _umul128(input[4], multiplier, &h1), h2, result + 4); +} + +void Add320_to_256(u64* in_out, u64* val) +{ + u8 c = _addcarry_u64(0, in_out[0], val[0], in_out); + c = _addcarry_u64(c, in_out[1], val[1], in_out + 1); + c = _addcarry_u64(c, in_out[2], val[2], in_out + 2); + c = _addcarry_u64(c, in_out[3], val[3], in_out + 3); + _addcarry_u64(c, 0, val[4], in_out + 4); +} + +EcInt::EcInt() +{ + SetZero(); +} + +void EcInt::Assign(EcInt& val) +{ + memcpy(data, val.data, sizeof(data)); +} + +void EcInt::Set(u64 val) +{ + SetZero(); + data[0] = val; +} + +void EcInt::SetZero() +{ + memset(data, 0, sizeof(data)); +} + +bool EcInt::SetHexStr(const char* str) +{ + SetZero(); + int len = (int)strlen(str); + if (len > 64) + return false; + char s[64]; + memset(s, '0', 64); + memcpy(s + 64 - len, str, len); + for (int i = 0; i < 32; i++) + { + int n = 62 - 2 * i; + u8 b; + if (!parse_u8(s + n, &b)) + return false; + ((u8*)data)[i] = b; + } + return true; +} + +void EcInt::GetHexStr(char* str) +{ + for (int i = 0; i < 32; i++) + sprintf(str + 2 * i, "%02X", ((u8*)data)[31 - i]); + str[64] = 0; +} + +u16 EcInt::GetU16(int index) +{ + return (u16)(data[index / 4] >> (16 * (index % 4))); +} + +//returns carry +bool EcInt::Add(EcInt& val) +{ + u8 c = _addcarry_u64(0, data[0], val.data[0], data + 0); + c = _addcarry_u64(c, data[1], val.data[1], data + 1); + c = _addcarry_u64(c, data[2], val.data[2], data + 2); + c = _addcarry_u64(c, data[3], val.data[3], data + 3); + return _addcarry_u64(c, data[4], val.data[4], data + 4) != 0; +} + +//returns carry +bool EcInt::Sub(EcInt& val) +{ + u8 c = _subborrow_u64(0, data[0], val.data[0], data + 0); + c = _subborrow_u64(c, data[1], val.data[1], data + 1); + c = _subborrow_u64(c, data[2], val.data[2], data + 2); + c = _subborrow_u64(c, data[3], val.data[3], data + 3); + return _subborrow_u64(c, data[4], val.data[4], data + 4) != 0; +} + +void EcInt::Neg() +{ + u8 c = _subborrow_u64(0, 0, data[0], data + 0); + c = _subborrow_u64(c, 0, data[1], data + 1); + c = _subborrow_u64(c, 0, data[2], data + 2); + c = _subborrow_u64(c, 0, data[3], data + 3); + _subborrow_u64(c, 0, data[4], data + 4); +} + +void EcInt::Neg256() +{ + u8 c = _subborrow_u64(0, 0, data[0], data + 0); + c = _subborrow_u64(c, 0, data[1], data + 1); + c = _subborrow_u64(c, 0, data[2], data + 2); + c = _subborrow_u64(c, 0, data[3], data + 3); + data[4] = 0; +} + +bool EcInt::IsLessThanU(EcInt& val) +{ + int i = 4; + while (i >= 0) + { + if (data[i] != val.data[i]) + break; + i--; + } + if (i < 0) + return false; + return data[i] < val.data[i]; +} + +bool EcInt::IsLessThanI(EcInt& val) +{ + if ((data[4] >> 63) && !(val.data[4] >> 63)) + return true; + if (!(data[4] >> 63) && (val.data[4] >> 63)) + return false; + + int i = 4; + while (i >= 0) + { + if (data[i] != val.data[i]) + break; + i--; + } + if (i < 0) + return false; + return data[i] < val.data[i]; +} + +bool EcInt::IsEqual(EcInt& val) +{ + return memcmp(val.data, this->data, 40) == 0; +} + +bool EcInt::IsZero() +{ + return ((data[0] == 0) && (data[1] == 0) && (data[2] == 0) && (data[3] == 0) && (data[4] == 0)); +} + +void EcInt::AddModP(EcInt& val) +{ + Add(val); + if (!IsLessThanU(g_P)) + Sub(g_P); +} + +void EcInt::SubModP(EcInt& val) +{ + if (Sub(val)) + Add(g_P); +} + +//assume value < P +void EcInt::NegModP() +{ + Neg(); + Add(g_P); +} + +//assume value < N +void EcInt::NegModN() +{ + Neg(); + Add(g_N); +} + +void EcInt::ShiftRight(int nbits) +{ + int offset = nbits / 64; + if (offset) + { + for (int i = 0; i < 5 - offset; i++) + data[i] = data[i + offset]; + for (int i = 5 - offset; i < 5; i++) + data[i] = 0; + nbits -= 64 * offset; + } + data[0] = __shiftright128(data[0], data[1], nbits); + data[1] = __shiftright128(data[1], data[2], nbits); + data[2] = __shiftright128(data[2], data[3], nbits); + data[3] = __shiftright128(data[3], data[4], nbits); + data[4] = ((i64)data[4]) >> nbits; +} + +void EcInt::ShiftLeft(int nbits) +{ + int offset = nbits / 64; + if (offset) + { + for (int i = 4; i >= offset; i--) + data[i] = data[i - offset]; + for (int i = offset - 1; i >= 0; i--) + data[i] = 0; + nbits -= 64 * offset; + } + data[4] = __shiftleft128(data[3], data[4], nbits); + data[3] = __shiftleft128(data[2], data[3], nbits); + data[2] = __shiftleft128(data[1], data[2], nbits); + data[1] = __shiftleft128(data[0], data[1], nbits); + data[0] = data[0] << nbits; +} + +void EcInt::MulModP(EcInt& val) +{ + u64 buff[8], tmp[5], h; + //calc 512 bits + Mul256_by_64(val.data, data[0], buff); + Mul256_by_64(val.data, data[1], tmp); + Add320_to_256(buff + 1, tmp); + Mul256_by_64(val.data, data[2], tmp); + Add320_to_256(buff + 2, tmp); + Mul256_by_64(val.data, data[3], tmp); + Add320_to_256(buff + 3, tmp); + //fast mod P + Mul256_by_64(buff + 4, P_REV, tmp); + u8 c = _addcarry_u64(0, buff[0], tmp[0], buff); + c = _addcarry_u64(c, buff[1], tmp[1], buff + 1); + c = _addcarry_u64(c, buff[2], tmp[2], buff + 2); + tmp[4] += _addcarry_u64(c, buff[3], tmp[3], buff + 3); + c = _addcarry_u64(0, buff[0], _umul128(tmp[4], P_REV, &h), data); + c = _addcarry_u64(c, buff[1], h, data + 1); + c = _addcarry_u64(c, 0, buff[2], data + 2); + data[4] = _addcarry_u64(c, buff[3], 0, data + 3); +} + +void EcInt::Mul_u64(EcInt& val, u64 multiplier) +{ + Assign(val); + Mul320_by_64(data, (u64)multiplier, data); +} + +void EcInt::Mul_i64(EcInt& val, i64 multiplier) +{ + Assign(val); + if (multiplier < 0) + { + Neg(); + multiplier = -multiplier; + } + Mul320_by_64(data, (u64)multiplier, data); +} + +#define APPLY_DIV_SHIFT() kbnt -= index; val >>= index; matrix[0] <<= index; matrix[1] <<= index; + +// https://tches.iacr.org/index.php/TCHES/article/download/8298/7648/4494 +//a bit tricky +void DIV_62(i64& kbnt, i64 modp, i64 val, i64* matrix) +{ + int index, cnt; + _BitScanForward64((DWORD*)&index, val | 0x4000000000000000); + APPLY_DIV_SHIFT(); + cnt = 62 - index; + while (cnt > 0) + { + if (kbnt < 0) + { + kbnt = -kbnt; + i64 tmp = -modp; modp = val; val = tmp; + tmp = -matrix[0]; matrix[0] = matrix[2]; matrix[2] = tmp; + tmp = -matrix[1]; matrix[1] = matrix[3]; matrix[3] = tmp; + } + int thr = cnt; + if ((kbnt + 1) < cnt) + thr = (int)(kbnt + 1); + i64 mul = (-modp * val) & ((UINT64_MAX >> (64 - thr)) & 0x07); + val += (modp * mul); + matrix[2] += (matrix[0] * mul); + matrix[3] += (matrix[1] * mul); + _BitScanForward64((DWORD*)&index, val | (1ull << cnt)); + APPLY_DIV_SHIFT(); + cnt -= index; + } +} + +void EcInt::InvModP() +{ + i64 matrix[4]; + EcInt result, a, tmp, tmp2; + EcInt modp, val; + i64 kbnt = -1; + matrix[1] = matrix[2] = 0; + matrix[0] = matrix[3] = 1; + DIV_62(kbnt, g_P.data[0], data[0], matrix); + modp.Mul_i64(g_P, matrix[0]); + tmp.Mul_i64(*this, matrix[1]); + modp.Add(tmp); + modp.ShiftRight(62); + val.Mul_i64(g_P, matrix[2]); + tmp.Mul_i64(*this, matrix[3]); + val.Add(tmp); + val.ShiftRight(62); + if (matrix[1] >= 0) + result.Set(matrix[1]); + else + { + result.Set(-matrix[1]); + result.Neg(); + } + if (matrix[3] >= 0) + a.Set(matrix[3]); + else + { + a.Set(-matrix[3]); + a.Neg(); + } + Mul320_by_64(g_P.data, (result.data[0] * 0xD838091DD2253531) & 0x3FFFFFFFFFFFFFFF, tmp.data); + result.Add(tmp); + result.ShiftRight(62); + Mul320_by_64(g_P.data, (a.data[0] * 0xD838091DD2253531) & 0x3FFFFFFFFFFFFFFF, tmp.data); + a.Add(tmp); + a.ShiftRight(62); + + while (val.data[0] || val.data[1] || val.data[2] || val.data[3]) + { + matrix[1] = matrix[2] = 0; + matrix[0] = matrix[3] = 1; + DIV_62(kbnt, modp.data[0], val.data[0], matrix); + tmp.Mul_i64(modp, matrix[0]); + tmp2.Mul_i64(val, matrix[1]); + tmp.Add(tmp2); + tmp2.Mul_i64(val, matrix[3]); + val.Mul_i64(modp, matrix[2]); + val.Add(tmp2); + val.ShiftRight(62); + modp = tmp; + modp.ShiftRight(62); + tmp.Mul_i64(result, matrix[0]); + tmp2.Mul_i64(a, matrix[1]); + tmp.Add(tmp2); + tmp2.Mul_i64(a, matrix[3]); + a.Mul_i64(result, matrix[2]); + a.Add(tmp2); + Mul320_by_64(g_P.data, (a.data[0] * 0xD838091DD2253531) & 0x3FFFFFFFFFFFFFFF, tmp2.data); + a.Add(tmp2); + a.ShiftRight(62); + Mul320_by_64(g_P.data, (tmp.data[0] * 0xD838091DD2253531) & 0x3FFFFFFFFFFFFFFF, tmp2.data); + result = tmp; + result.Add(tmp2); + result.ShiftRight(62); + } + Assign(result); + if (modp.data[4] >> 63) + { + Neg(); + modp.Neg(); + } + + if (modp.data[0] == 1) + { + if (data[4] >> 63) + Add(g_P); + if (data[4] >> 63) + Add(g_P); + if (!IsLessThanU(g_P)) + Sub(g_P); + if (!IsLessThanU(g_P)) + Sub(g_P); + } + else + SetZero(); //error +} + +// x = a^ { (p + 1) / 4 } mod p +void EcInt::SqrtModP() +{ + EcInt one, res; + one.Set(1); + EcInt exp = g_P; + exp.Add(one); + exp.ShiftRight(2); + res.Set(1); + EcInt cur = *this; + while (!exp.IsZero()) + { + if (exp.data[0] & 1) + res.MulModP(cur); + EcInt tmp = cur; + tmp.MulModP(cur); + cur = tmp; + exp.ShiftRight(1); + } + *this = res; +} + +std::mt19937_64 rng; +CriticalSection cs_rnd; + +void SetRndSeed(u64 seed) +{ + rng.seed(seed); +} + +void EcInt::RndBits(int nbits) +{ + SetZero(); + if (nbits > 256) + nbits = 256; + cs_rnd.Enter(); + for (int i = 0; i < (nbits + 63) / 64; i++) + data[i] = rng(); + cs_rnd.Leave(); + data[nbits / 64] &= (1ull << (nbits % 64)) - 1; +} + +//up to 256 bits only +void EcInt::RndMax(EcInt& max) +{ + SetZero(); + int n = 3; + while ((n >= 0) && !max.data[n]) + n--; + if (n < 0) + return; + u64 val = max.data[n]; + int k = 0; + while ((val & 0x8000000000000000) == 0) + { + val <<= 1; + k++; + } + int bits = 64 * n + (64 - k); + RndBits(bits); + while (!IsLessThanU(max)) // :) + RndBits(bits); +} + + +// ============================================================================ +// Extensión: w-NAF (w=4) para multiplicación escalar de G en CPU +// - Implementa una versión canónica de w-NAF usando las primitivas afines +// ya existentes (AddPoints / DoublePoint). No toca el resto del proyecto. +// ============================================================================ + +namespace { + static inline bool limb_is_zero(const u64 a[4]) { + return (a[0]|a[1]|a[2]|a[3])==0ull; + } + static inline bool limb_is_odd(const u64 a[4]) { + return (a[0] & 1ull) != 0ull; + } + static inline void limb_sub_small(u64 a[4], unsigned v) { + unsigned long long b = v; + unsigned __int128 t = (unsigned __int128)a[0] - b; + a[0] = (u64)t; + unsigned __int128 borrow = (t >> 127) & 1; + for (int i=1;i<4 && borrow;i++) { + unsigned __int128 t2 = (unsigned __int128)a[i] - 1; + a[i] = (u64)t2; + borrow = (t2 >> 127) & 1; + } + } + static inline void limb_add_small(u64 a[4], unsigned v) { + unsigned __int128 t = (unsigned __int128)a[0] + (unsigned)v; + a[0] = (u64)t; + u64 carry = (u64)(t >> 64); + for (int i=1;i<4 && carry;i++) { + unsigned __int128 t2 = (unsigned __int128)a[i] + 1; + a[i] = (u64)t2; + carry = (u64)(t2 >> 64); + } + } + static inline void limb_shr1(u64 a[4]) { + u64 c = 0; + for (int i=3;i>=0;i--) { + u64 n = a[i]; + a[i] = (n >> 1) | (c << 63); + c = n & 1ull; + } + } +} // anonymous + +EcPoint EcEx::MultiplyG_WNAF4(const EcInt &k) { + // Precompute odd multiples of G: [1,3,5,7,9,11,13,15]G + EcPoint pre[8]; + pre[0] = g_G; + EcPoint twoG = Ec::DoublePoint(g_G); + for (int i=1;i<8;i++) pre[i] = Ec::AddPoints(pre[i-1], twoG); + + // Convert k to a 256-bit limb array + u64 kk[4] = {k.data[0], k.data[1], k.data[2], k.data[3]}; + + // w-NAF digit expansion + int digits[300]; int nd=0; + while (!limb_is_zero(kk)) { + int ui = 0; + if (limb_is_odd(kk)) { + int mod16 = (int)(kk[0] & 15ull); + if (mod16 > 8) ui = mod16 - 16; else ui = mod16; + if (ui >= 0) limb_sub_small(kk, (unsigned)ui); + else limb_add_small(kk, (unsigned)(-ui)); + } + digits[nd++] = ui; + limb_shr1(kk); + } + + // Evaluate + bool R_is_inf = true; + EcPoint R; // undefined if inf + for (int i=nd-1;i>=0;i--) { + if (!R_is_inf) R = Ec::DoublePoint(R); + int ui = digits[i]; + if (ui != 0) { + EcPoint add = pre[(abs(ui)-1)>>1]; + if (ui < 0) { add.y.NegModP(); } + if (R_is_inf) { R = add; R_is_inf = false; } + else { R = Ec::AddPoints(R, add); } + } + } + if (R_is_inf) return EcPoint(); // zero + return R; +} diff --git a/Ec.h b/Ec.h index fa123e3..3018dd7 100644 --- a/Ec.h +++ b/Ec.h @@ -1,77 +1,80 @@ -// This file is a part of RCKangaroo software -// (c) 2024, RetiredCoder (RC) -// License: GPLv3, see "LICENSE.TXT" file -// https://github.com/RetiredC/Kang-2 - - -#pragma once - -#include "defs.h" -#include "utils.h" - -class EcInt -{ -public: - EcInt(); - - void Assign(EcInt& val); - void Set(u64 val); - void SetZero(); - bool SetHexStr(const char* str); - void GetHexStr(char* str); - u16 GetU16(int index); - - bool Add(EcInt& val); //returns true if carry - bool Sub(EcInt& val); //returns true if carry - void Neg(); - void Neg256(); - void ShiftRight(int nbits); - void ShiftLeft(int nbits); - bool IsLessThanU(EcInt& val); - bool IsLessThanI(EcInt& val); - bool IsEqual(EcInt& val); - bool IsZero(); - - void Mul_u64(EcInt& val, u64 multiplier); - void Mul_i64(EcInt& val, i64 multiplier); - - void AddModP(EcInt& val); - void SubModP(EcInt& val); - void NegModP(); - void MulModP(EcInt& val); - void InvModP(); - void SqrtModP(); - - void RndBits(int nbits); - void RndMax(EcInt& max); - - u64 data[4 + 1]; -}; - -class EcPoint -{ -public: - bool IsEqual(EcPoint& pnt); - void LoadFromBuffer64(u8* buffer); - void SaveToBuffer64(u8* buffer); - bool SetHexStr(const char* str); - EcInt x; - EcInt y; -}; - -class Ec -{ -public: - static EcPoint AddPoints(EcPoint& pnt1, EcPoint& pnt2); - static EcPoint DoublePoint(EcPoint& pnt); - static EcPoint MultiplyG(EcInt& k); -#ifdef DEBUG_MODE - static EcPoint MultiplyG_Fast(EcInt& k); -#endif - static EcInt CalcY(EcInt& x, bool is_even); - static bool IsValidPoint(EcPoint& pnt); -}; - -void InitEc(); -void DeInitEc(); -void SetRndSeed(u64 seed); \ No newline at end of file +// This file is a part of RCKangaroo software +// (c) 2024, RetiredCoder (RC) +// License: GPLv3, see "LICENSE.TXT" file +// https://github.com/RetiredC/Kang-2 + + +#pragma once + +#include "defs.h" +#include "utils.h" + +class EcInt +{ +public: + EcInt(); + + void Assign(EcInt& val); + void Set(u64 val); + void SetZero(); + bool SetHexStr(const char* str); + void GetHexStr(char* str); + u16 GetU16(int index); + + bool Add(EcInt& val); //returns true if carry + bool Sub(EcInt& val); //returns true if carry + void Neg(); + void Neg256(); + void ShiftRight(int nbits); + void ShiftLeft(int nbits); + bool IsLessThanU(EcInt& val); + bool IsLessThanI(EcInt& val); + bool IsEqual(EcInt& val); + bool IsZero(); + + void Mul_u64(EcInt& val, u64 multiplier); + void Mul_i64(EcInt& val, i64 multiplier); + + void AddModP(EcInt& val); + void SubModP(EcInt& val); + void NegModP(); + void NegModN(); + void MulModP(EcInt& val); + void InvModP(); + void SqrtModP(); + + void RndBits(int nbits); + void RndMax(EcInt& max); + + u64 data[4 + 1]; +}; + +class EcPoint +{ +public: + bool IsEqual(EcPoint& pnt); + void LoadFromBuffer64(u8* buffer); + void SaveToBuffer64(u8* buffer); + bool SetHexStr(const char* str); + EcInt x; + EcInt y; +}; + +class Ec +{ +public: + static EcPoint AddPoints(EcPoint& pnt1, EcPoint& pnt2); + static EcPoint DoublePoint(EcPoint& pnt); + static EcPoint MultiplyG(EcInt& k); +#ifdef DEBUG_MODE + static EcPoint MultiplyG_Fast(EcInt& k); +#endif + static EcInt CalcY(EcInt& x, bool is_even); + static bool IsValidPoint(EcPoint& pnt); +}; + +void InitEc(); +void DeInitEc(); +void SetRndSeed(u64 seed); + +class EcEx { public: static EcPoint MultiplyG_WNAF4(const EcInt &k); }; diff --git a/GpuKang.cpp b/GpuKang.cpp index f792d8c..d9b1bcd 100644 --- a/GpuKang.cpp +++ b/GpuKang.cpp @@ -1,517 +1,522 @@ -// This file is a part of RCKangaroo software -// (c) 2024, RetiredCoder (RC) -// License: GPLv3, see "LICENSE.TXT" file -// https://github.com/RetiredC - - -#include -#include "cuda_runtime.h" -#include "cuda.h" - -#include "GpuKang.h" - -cudaError_t cuSetGpuParams(TKparams Kparams, u64* _jmp2_table); -void CallGpuKernelGen(TKparams Kparams); -void CallGpuKernelABC(TKparams Kparams); -void AddPointsToList(u32* data, int cnt, u64 ops_cnt); -extern bool gGenMode; //tames generation mode - -int RCGpuKang::CalcKangCnt() -{ - Kparams.BlockCnt = mpCnt; - Kparams.BlockSize = IsOldGpu ? 512 : 256; - Kparams.GroupCnt = IsOldGpu ? 64 : 24; - return Kparams.BlockSize* Kparams.GroupCnt* Kparams.BlockCnt; -} - -//executes in main thread -bool RCGpuKang::Prepare(EcPoint _PntToSolve, int _Range, int _DP, EcJMP* _EcJumps1, EcJMP* _EcJumps2, EcJMP* _EcJumps3) -{ - PntToSolve = _PntToSolve; - Range = _Range; - DP = _DP; - EcJumps1 = _EcJumps1; - EcJumps2 = _EcJumps2; - EcJumps3 = _EcJumps3; - StopFlag = false; - Failed = false; - u64 total_mem = 0; - memset(dbg, 0, sizeof(dbg)); - memset(SpeedStats, 0, sizeof(SpeedStats)); - cur_stats_ind = 0; - - cudaError_t err; - err = cudaSetDevice(CudaIndex); - if (err != cudaSuccess) - return false; - - Kparams.BlockCnt = mpCnt; - Kparams.BlockSize = IsOldGpu ? 512 : 256; - Kparams.GroupCnt = IsOldGpu ? 64 : 24; - KangCnt = Kparams.BlockSize * Kparams.GroupCnt * Kparams.BlockCnt; - Kparams.KangCnt = KangCnt; - Kparams.DP = DP; - Kparams.KernelA_LDS_Size = 64 * JMP_CNT + 16 * Kparams.BlockSize; - Kparams.KernelB_LDS_Size = 64 * JMP_CNT; - Kparams.KernelC_LDS_Size = 96 * JMP_CNT; - Kparams.IsGenMode = gGenMode; - -//allocate gpu mem - u64 size; - if (!IsOldGpu) - { - //L2 - int L2size = Kparams.KangCnt * (3 * 32); - total_mem += L2size; - err = cudaMalloc((void**)&Kparams.L2, L2size); - if (err != cudaSuccess) - { - printf("GPU %d, Allocate L2 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - size = L2size; - if (size > persistingL2CacheMaxSize) - size = persistingL2CacheMaxSize; - err = cudaDeviceSetLimit(cudaLimitPersistingL2CacheSize, size); // set max allowed size for L2 - //persisting for L2 - cudaStreamAttrValue stream_attribute; - stream_attribute.accessPolicyWindow.base_ptr = Kparams.L2; - stream_attribute.accessPolicyWindow.num_bytes = size; - stream_attribute.accessPolicyWindow.hitRatio = 1.0; - stream_attribute.accessPolicyWindow.hitProp = cudaAccessPropertyPersisting; - stream_attribute.accessPolicyWindow.missProp = cudaAccessPropertyStreaming; - err = cudaStreamSetAttribute(NULL, cudaStreamAttributeAccessPolicyWindow, &stream_attribute); - if (err != cudaSuccess) - { - printf("GPU %d, cudaStreamSetAttribute failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - } - size = MAX_DP_CNT * GPU_DP_SIZE + 16; - total_mem += size; - err = cudaMalloc((void**)&Kparams.DPs_out, size); - if (err != cudaSuccess) - { - printf("GPU %d Allocate GpuOut memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - size = KangCnt * 96; - total_mem += size; - err = cudaMalloc((void**)&Kparams.Kangs, size); - if (err != cudaSuccess) - { - printf("GPU %d Allocate pKangs memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - total_mem += JMP_CNT * 96; - err = cudaMalloc((void**)&Kparams.Jumps1, JMP_CNT * 96); - if (err != cudaSuccess) - { - printf("GPU %d Allocate Jumps1 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - total_mem += JMP_CNT * 96; - err = cudaMalloc((void**)&Kparams.Jumps2, JMP_CNT * 96); - if (err != cudaSuccess) - { - printf("GPU %d Allocate Jumps1 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - total_mem += JMP_CNT * 96; - err = cudaMalloc((void**)&Kparams.Jumps3, JMP_CNT * 96); - if (err != cudaSuccess) - { - printf("GPU %d Allocate Jumps3 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - size = 2 * (u64)KangCnt * STEP_CNT; - total_mem += size; - err = cudaMalloc((void**)&Kparams.JumpsList, size); - if (err != cudaSuccess) - { - printf("GPU %d Allocate JumpsList memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - size = (u64)KangCnt * (16 * DPTABLE_MAX_CNT + sizeof(u32)); //we store 16bytes of X - total_mem += size; - err = cudaMalloc((void**)&Kparams.DPTable, size); - if (err != cudaSuccess) - { - printf("GPU %d Allocate DPTable memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - size = mpCnt * Kparams.BlockSize * sizeof(u64); - total_mem += size; - err = cudaMalloc((void**)&Kparams.L1S2, size); - if (err != cudaSuccess) - { - printf("GPU %d Allocate L1S2 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - size = (u64)KangCnt * MD_LEN * (2 * 32); - total_mem += size; - err = cudaMalloc((void**)&Kparams.LastPnts, size); - if (err != cudaSuccess) - { - printf("GPU %d Allocate LastPnts memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - size = (u64)KangCnt * MD_LEN * sizeof(u64); - total_mem += size; - err = cudaMalloc((void**)&Kparams.LoopTable, size); - if (err != cudaSuccess) - { - printf("GPU %d Allocate LastPnts memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - total_mem += 1024; - err = cudaMalloc((void**)&Kparams.dbg_buf, 1024); - if (err != cudaSuccess) - { - printf("GPU %d Allocate dbg_buf memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - size = sizeof(u32) * KangCnt + 8; - total_mem += size; - err = cudaMalloc((void**)&Kparams.LoopedKangs, size); - if (err != cudaSuccess) - { - printf("GPU %d Allocate LoopedKangs memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - - DPs_out = (u32*)malloc(MAX_DP_CNT * GPU_DP_SIZE); - -//jmp1 - u64* buf = (u64*)malloc(JMP_CNT * 96); - for (int i = 0; i < JMP_CNT; i++) - { - memcpy(buf + i * 12, EcJumps1[i].p.x.data, 32); - memcpy(buf + i * 12 + 4, EcJumps1[i].p.y.data, 32); - memcpy(buf + i * 12 + 8, EcJumps1[i].dist.data, 32); - } - err = cudaMemcpy(Kparams.Jumps1, buf, JMP_CNT * 96, cudaMemcpyHostToDevice); - if (err != cudaSuccess) - { - printf("GPU %d, cudaMemcpy Jumps1 failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - free(buf); -//jmp2 - buf = (u64*)malloc(JMP_CNT * 96); - u64* jmp2_table = (u64*)malloc(JMP_CNT * 64); - for (int i = 0; i < JMP_CNT; i++) - { - memcpy(buf + i * 12, EcJumps2[i].p.x.data, 32); - memcpy(jmp2_table + i * 8, EcJumps2[i].p.x.data, 32); - memcpy(buf + i * 12 + 4, EcJumps2[i].p.y.data, 32); - memcpy(jmp2_table + i * 8 + 4, EcJumps2[i].p.y.data, 32); - memcpy(buf + i * 12 + 8, EcJumps2[i].dist.data, 32); - } - err = cudaMemcpy(Kparams.Jumps2, buf, JMP_CNT * 96, cudaMemcpyHostToDevice); - if (err != cudaSuccess) - { - printf("GPU %d, cudaMemcpy Jumps2 failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - free(buf); - - err = cuSetGpuParams(Kparams, jmp2_table); - if (err != cudaSuccess) - { - free(jmp2_table); - printf("GPU %d, cuSetGpuParams failed: %s!\r\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - free(jmp2_table); -//jmp3 - buf = (u64*)malloc(JMP_CNT * 96); - for (int i = 0; i < JMP_CNT; i++) - { - memcpy(buf + i * 12, EcJumps3[i].p.x.data, 32); - memcpy(buf + i * 12 + 4, EcJumps3[i].p.y.data, 32); - memcpy(buf + i * 12 + 8, EcJumps3[i].dist.data, 32); - } - err = cudaMemcpy(Kparams.Jumps3, buf, JMP_CNT * 96, cudaMemcpyHostToDevice); - if (err != cudaSuccess) - { - printf("GPU %d, cudaMemcpy Jumps3 failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - free(buf); - - printf("GPU %d: allocated %llu MB, %d kangaroos. OldGpuMode: %s\r\n", CudaIndex, total_mem / (1024 * 1024), KangCnt, IsOldGpu ? "Yes" : "No"); - return true; -} - -void RCGpuKang::Release() -{ - free(RndPnts); - free(DPs_out); - cudaFree(Kparams.LoopedKangs); - cudaFree(Kparams.dbg_buf); - cudaFree(Kparams.LoopTable); - cudaFree(Kparams.LastPnts); - cudaFree(Kparams.L1S2); - cudaFree(Kparams.DPTable); - cudaFree(Kparams.JumpsList); - cudaFree(Kparams.Jumps3); - cudaFree(Kparams.Jumps2); - cudaFree(Kparams.Jumps1); - cudaFree(Kparams.Kangs); - cudaFree(Kparams.DPs_out); - if (!IsOldGpu) - cudaFree(Kparams.L2); -} - -void RCGpuKang::Stop() -{ - StopFlag = true; -} - -void RCGpuKang::GenerateRndDistances() -{ - for (int i = 0; i < KangCnt; i++) - { - EcInt d; - if (i < KangCnt / 3) - d.RndBits(Range - 4); //TAME kangs - else - { - d.RndBits(Range - 1); - d.data[0] &= 0xFFFFFFFFFFFFFFFE; //must be even - } - memcpy(RndPnts[i].priv, d.data, 24); - } -} - -bool RCGpuKang::Start() -{ - if (Failed) - return false; - - cudaError_t err; - err = cudaSetDevice(CudaIndex); - if (err != cudaSuccess) - return false; - - HalfRange.Set(1); - HalfRange.ShiftLeft(Range - 1); - PntHalfRange = ec.MultiplyG(HalfRange); - NegPntHalfRange = PntHalfRange; - NegPntHalfRange.y.NegModP(); - - PntA = ec.AddPoints(PntToSolve, NegPntHalfRange); - PntB = PntA; - PntB.y.NegModP(); - - RndPnts = (TPointPriv*)malloc(KangCnt * 96); - GenerateRndDistances(); -/* - //we can calc start points on CPU - for (int i = 0; i < KangCnt; i++) - { - EcInt d; - memcpy(d.data, RndPnts[i].priv, 24); - d.data[3] = 0; - d.data[4] = 0; - EcPoint p = ec.MultiplyG(d); - memcpy(RndPnts[i].x, p.x.data, 32); - memcpy(RndPnts[i].y, p.y.data, 32); - } - for (int i = KangCnt / 3; i < 2 * KangCnt / 3; i++) - { - EcPoint p; - p.LoadFromBuffer64((u8*)RndPnts[i].x); - p = ec.AddPoints(p, PntA); - p.SaveToBuffer64((u8*)RndPnts[i].x); - } - for (int i = 2 * KangCnt / 3; i < KangCnt; i++) - { - EcPoint p; - p.LoadFromBuffer64((u8*)RndPnts[i].x); - p = ec.AddPoints(p, PntB); - p.SaveToBuffer64((u8*)RndPnts[i].x); - } - //copy to gpu - err = cudaMemcpy(Kparams.Kangs, RndPnts, KangCnt * 96, cudaMemcpyHostToDevice); - if (err != cudaSuccess) - { - printf("GPU %d, cudaMemcpy failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } -/**/ - //but it's faster to calc then on GPU - u8 buf_PntA[64], buf_PntB[64]; - PntA.SaveToBuffer64(buf_PntA); - PntB.SaveToBuffer64(buf_PntB); - for (int i = 0; i < KangCnt; i++) - { - if (i < KangCnt / 3) - memset(RndPnts[i].x, 0, 64); - else - if (i < 2 * KangCnt / 3) - memcpy(RndPnts[i].x, buf_PntA, 64); - else - memcpy(RndPnts[i].x, buf_PntB, 64); - } - //copy to gpu - err = cudaMemcpy(Kparams.Kangs, RndPnts, KangCnt * 96, cudaMemcpyHostToDevice); - if (err != cudaSuccess) - { - printf("GPU %d, cudaMemcpy failed: %s\n", CudaIndex, cudaGetErrorString(err)); - return false; - } - CallGpuKernelGen(Kparams); - - err = cudaMemset(Kparams.L1S2, 0, mpCnt * Kparams.BlockSize * 8); - if (err != cudaSuccess) - return false; - cudaMemset(Kparams.dbg_buf, 0, 1024); - cudaMemset(Kparams.LoopTable, 0, KangCnt * MD_LEN * sizeof(u64)); - return true; -} - -#ifdef DEBUG_MODE -int RCGpuKang::Dbg_CheckKangs() -{ - int kang_size = mpCnt * Kparams.BlockSize * Kparams.GroupCnt * 96; - u64* kangs = (u64*)malloc(kang_size); - cudaError_t err = cudaMemcpy(kangs, Kparams.Kangs, kang_size, cudaMemcpyDeviceToHost); - int res = 0; - for (int i = 0; i < KangCnt; i++) - { - EcPoint Pnt, p; - Pnt.LoadFromBuffer64((u8*)&kangs[i * 12 + 0]); - EcInt dist; - dist.Set(0); - memcpy(dist.data, &kangs[i * 12 + 8], 24); - bool neg = false; - if (dist.data[2] >> 63) - { - neg = true; - memset(((u8*)dist.data) + 24, 0xFF, 16); - dist.Neg(); - } - p = ec.MultiplyG_Fast(dist); - if (neg) - p.y.NegModP(); - if (i < KangCnt / 3) - p = p; - else - if (i < 2 * KangCnt / 3) - p = ec.AddPoints(PntA, p); - else - p = ec.AddPoints(PntB, p); - if (!p.IsEqual(Pnt)) - res++; - } - free(kangs); - return res; -} -#endif - -extern u32 gTotalErrors; - -//executes in separate thread -void RCGpuKang::Execute() -{ - cudaSetDevice(CudaIndex); - - if (!Start()) - { - gTotalErrors++; - return; - } -#ifdef DEBUG_MODE - u64 iter = 1; -#endif - cudaError_t err; - while (!StopFlag) - { - u64 t1 = GetTickCount64(); - cudaMemset(Kparams.DPs_out, 0, 4); - cudaMemset(Kparams.DPTable, 0, KangCnt * sizeof(u32)); - cudaMemset(Kparams.LoopedKangs, 0, 8); - CallGpuKernelABC(Kparams); - int cnt; - err = cudaMemcpy(&cnt, Kparams.DPs_out, 4, cudaMemcpyDeviceToHost); - if (err != cudaSuccess) - { - printf("GPU %d, CallGpuKernel failed: %s\r\n", CudaIndex, cudaGetErrorString(err)); - gTotalErrors++; - break; - } - - if (cnt >= MAX_DP_CNT) - { - cnt = MAX_DP_CNT; - printf("GPU %d, gpu DP buffer overflow, some points lost, increase DP value!\r\n", CudaIndex); - } - u64 pnt_cnt = (u64)KangCnt * STEP_CNT; - - if (cnt) - { - err = cudaMemcpy(DPs_out, Kparams.DPs_out + 4, cnt * GPU_DP_SIZE, cudaMemcpyDeviceToHost); - if (err != cudaSuccess) - { - gTotalErrors++; - break; - } - AddPointsToList(DPs_out, cnt, (u64)KangCnt * STEP_CNT); - } - - //dbg - cudaMemcpy(dbg, Kparams.dbg_buf, 1024, cudaMemcpyDeviceToHost); - - u32 lcnt; - cudaMemcpy(&lcnt, Kparams.LoopedKangs, 4, cudaMemcpyDeviceToHost); - //printf("GPU %d, Looped: %d\r\n", CudaIndex, lcnt); - - u64 t2 = GetTickCount64(); - u64 tm = t2 - t1; - if (!tm) - tm = 1; - int cur_speed = (int)(pnt_cnt / (tm * 1000)); - //printf("GPU %d kernel time %d ms, speed %d MH\r\n", CudaIndex, (int)tm, cur_speed); - - SpeedStats[cur_stats_ind] = cur_speed; - cur_stats_ind = (cur_stats_ind + 1) % STATS_WND_SIZE; - -#ifdef DEBUG_MODE - if ((iter % 300) == 0) - { - int corr_cnt = Dbg_CheckKangs(); - if (corr_cnt) - { - printf("DBG: GPU %d, KANGS CORRUPTED: %d\r\n", CudaIndex, corr_cnt); - gTotalErrors++; - } - else - printf("DBG: GPU %d, ALL KANGS OK!\r\n", CudaIndex); - } - iter++; -#endif - } - - Release(); -} - -int RCGpuKang::GetStatsSpeed() -{ - int res = SpeedStats[0]; - for (int i = 1; i < STATS_WND_SIZE; i++) - res += SpeedStats[i]; - return res / STATS_WND_SIZE; +// This file is a part of RCKangaroo software +// (c) 2024, RetiredCoder (RC) +// License: GPLv3, see "LICENSE.TXT" file +// https://github.com/RetiredC + + +#include +#include "cuda_runtime.h" +#include "cuda.h" + +#include "GpuKang.h" +extern int gTameRatioPct; +extern int gTameBitsOffset; + +cudaError_t cuSetGpuParams(TKparams Kparams, u64* _jmp2_table); +void CallGpuKernelGen(TKparams Kparams); +void CallGpuKernelABC(TKparams Kparams); +void AddPointsToList(u32* data, int cnt, u64 ops_cnt); +extern bool gGenMode; //tames generation mode + +int RCGpuKang::CalcKangCnt() +{ + Kparams.BlockCnt = mpCnt; + Kparams.BlockSize = IsOldGpu ? 512 : 256; + Kparams.GroupCnt = IsOldGpu ? 64 : 24; + return Kparams.BlockSize* Kparams.GroupCnt* Kparams.BlockCnt; +} + +//executes in main thread +bool RCGpuKang::Prepare(EcPoint _PntToSolve, int _Range, int _DP, EcJMP* _EcJumps1, EcJMP* _EcJumps2, EcJMP* _EcJumps3) +{ + PntToSolve = _PntToSolve; + Range = _Range; + DP = _DP; + EcJumps1 = _EcJumps1; + EcJumps2 = _EcJumps2; + EcJumps3 = _EcJumps3; + StopFlag = false; + Failed = false; + u64 total_mem = 0; + memset(dbg, 0, sizeof(dbg)); + memset(SpeedStats, 0, sizeof(SpeedStats)); + cur_stats_ind = 0; + + cudaError_t err; + err = cudaSetDevice(CudaIndex); + if (err != cudaSuccess) + return false; + + Kparams.BlockCnt = mpCnt; + Kparams.BlockSize = IsOldGpu ? 512 : 256; + Kparams.GroupCnt = IsOldGpu ? 64 : 24; + KangCnt = Kparams.BlockSize * Kparams.GroupCnt * Kparams.BlockCnt; + Kparams.KangCnt = KangCnt; + Kparams.DP = DP; + Kparams.KernelA_LDS_Size = 64 * JMP_CNT + 16 * Kparams.BlockSize; + Kparams.KernelB_LDS_Size = 64 * JMP_CNT; + Kparams.KernelC_LDS_Size = 96 * JMP_CNT; + Kparams.IsGenMode = gGenMode; + +//allocate gpu mem + u64 size; + if (!IsOldGpu) + { + //L2 + int L2size = Kparams.KangCnt * (3 * 32); + total_mem += L2size; + err = cudaMalloc((void**)&Kparams.L2, L2size); + if (err != cudaSuccess) + { + printf("GPU %d, Allocate L2 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + size = L2size; + if (size > persistingL2CacheMaxSize) + size = persistingL2CacheMaxSize; + err = cudaDeviceSetLimit(cudaLimitPersistingL2CacheSize, size); // set max allowed size for L2 + //persisting for L2 + cudaStreamAttrValue stream_attribute; + stream_attribute.accessPolicyWindow.base_ptr = Kparams.L2; + stream_attribute.accessPolicyWindow.num_bytes = size; + stream_attribute.accessPolicyWindow.hitRatio = 1.0; + stream_attribute.accessPolicyWindow.hitProp = cudaAccessPropertyPersisting; + stream_attribute.accessPolicyWindow.missProp = cudaAccessPropertyStreaming; + err = cudaStreamSetAttribute(NULL, cudaStreamAttributeAccessPolicyWindow, &stream_attribute); + if (err != cudaSuccess) + { + printf("GPU %d, cudaStreamSetAttribute failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + } + size = MAX_DP_CNT * GPU_DP_SIZE + 16; + total_mem += size; + err = cudaMalloc((void**)&Kparams.DPs_out, size); + if (err != cudaSuccess) + { + printf("GPU %d Allocate GpuOut memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + size = KangCnt * 96; + total_mem += size; + err = cudaMalloc((void**)&Kparams.Kangs, size); + if (err != cudaSuccess) + { + printf("GPU %d Allocate pKangs memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + total_mem += JMP_CNT * 96; + err = cudaMalloc((void**)&Kparams.Jumps1, JMP_CNT * 96); + if (err != cudaSuccess) + { + printf("GPU %d Allocate Jumps1 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + total_mem += JMP_CNT * 96; + err = cudaMalloc((void**)&Kparams.Jumps2, JMP_CNT * 96); + if (err != cudaSuccess) + { + printf("GPU %d Allocate Jumps1 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + total_mem += JMP_CNT * 96; + err = cudaMalloc((void**)&Kparams.Jumps3, JMP_CNT * 96); + if (err != cudaSuccess) + { + printf("GPU %d Allocate Jumps3 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + size = 2 * (u64)KangCnt * STEP_CNT; + total_mem += size; + err = cudaMalloc((void**)&Kparams.JumpsList, size); + if (err != cudaSuccess) + { + printf("GPU %d Allocate JumpsList memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + size = (u64)KangCnt * (16 * DPTABLE_MAX_CNT + sizeof(u32)); //we store 16bytes of X + total_mem += size; + err = cudaMalloc((void**)&Kparams.DPTable, size); + if (err != cudaSuccess) + { + printf("GPU %d Allocate DPTable memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + size = mpCnt * Kparams.BlockSize * sizeof(u64); + total_mem += size; + err = cudaMalloc((void**)&Kparams.L1S2, size); + if (err != cudaSuccess) + { + printf("GPU %d Allocate L1S2 memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + size = (u64)KangCnt * MD_LEN * (2 * 32); + total_mem += size; + err = cudaMalloc((void**)&Kparams.LastPnts, size); + if (err != cudaSuccess) + { + printf("GPU %d Allocate LastPnts memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + size = (u64)KangCnt * MD_LEN * sizeof(u64); + total_mem += size; + err = cudaMalloc((void**)&Kparams.LoopTable, size); + if (err != cudaSuccess) + { + printf("GPU %d Allocate LastPnts memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + total_mem += 1024; + err = cudaMalloc((void**)&Kparams.dbg_buf, 1024); + if (err != cudaSuccess) + { + printf("GPU %d Allocate dbg_buf memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + size = sizeof(u32) * KangCnt + 8; + total_mem += size; + err = cudaMalloc((void**)&Kparams.LoopedKangs, size); + if (err != cudaSuccess) + { + printf("GPU %d Allocate LoopedKangs memory failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + + DPs_out = (u32*)malloc(MAX_DP_CNT * GPU_DP_SIZE); + +//jmp1 + u64* buf = (u64*)malloc(JMP_CNT * 96); + for (int i = 0; i < JMP_CNT; i++) + { + memcpy(buf + i * 12, EcJumps1[i].p.x.data, 32); + memcpy(buf + i * 12 + 4, EcJumps1[i].p.y.data, 32); + memcpy(buf + i * 12 + 8, EcJumps1[i].dist.data, 32); + } + err = cudaMemcpy(Kparams.Jumps1, buf, JMP_CNT * 96, cudaMemcpyHostToDevice); + if (err != cudaSuccess) + { + printf("GPU %d, cudaMemcpy Jumps1 failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + free(buf); +//jmp2 + buf = (u64*)malloc(JMP_CNT * 96); + u64* jmp2_table = (u64*)malloc(JMP_CNT * 64); + for (int i = 0; i < JMP_CNT; i++) + { + memcpy(buf + i * 12, EcJumps2[i].p.x.data, 32); + memcpy(jmp2_table + i * 8, EcJumps2[i].p.x.data, 32); + memcpy(buf + i * 12 + 4, EcJumps2[i].p.y.data, 32); + memcpy(jmp2_table + i * 8 + 4, EcJumps2[i].p.y.data, 32); + memcpy(buf + i * 12 + 8, EcJumps2[i].dist.data, 32); + } + err = cudaMemcpy(Kparams.Jumps2, buf, JMP_CNT * 96, cudaMemcpyHostToDevice); + if (err != cudaSuccess) + { + printf("GPU %d, cudaMemcpy Jumps2 failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + free(buf); + + err = cuSetGpuParams(Kparams, jmp2_table); + if (err != cudaSuccess) + { + free(jmp2_table); + printf("GPU %d, cuSetGpuParams failed: %s!\r\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + free(jmp2_table); +//jmp3 + buf = (u64*)malloc(JMP_CNT * 96); + for (int i = 0; i < JMP_CNT; i++) + { + memcpy(buf + i * 12, EcJumps3[i].p.x.data, 32); + memcpy(buf + i * 12 + 4, EcJumps3[i].p.y.data, 32); + memcpy(buf + i * 12 + 8, EcJumps3[i].dist.data, 32); + } + err = cudaMemcpy(Kparams.Jumps3, buf, JMP_CNT * 96, cudaMemcpyHostToDevice); + if (err != cudaSuccess) + { + printf("GPU %d, cudaMemcpy Jumps3 failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + free(buf); + + printf("GPU %d: allocated %llu MB, %d kangaroos. OldGpuMode: %s\r\n", CudaIndex, total_mem / (1024 * 1024), KangCnt, IsOldGpu ? "Yes" : "No"); + return true; +} + +void RCGpuKang::Release() +{ + free(RndPnts); + free(DPs_out); + cudaFree(Kparams.LoopedKangs); + cudaFree(Kparams.dbg_buf); + cudaFree(Kparams.LoopTable); + cudaFree(Kparams.LastPnts); + cudaFree(Kparams.L1S2); + cudaFree(Kparams.DPTable); + cudaFree(Kparams.JumpsList); + cudaFree(Kparams.Jumps3); + cudaFree(Kparams.Jumps2); + cudaFree(Kparams.Jumps1); + cudaFree(Kparams.Kangs); + cudaFree(Kparams.DPs_out); + if (!IsOldGpu) + cudaFree(Kparams.L2); +} + +void RCGpuKang::Stop() +{ + StopFlag = true; +} + +void RCGpuKang::GenerateRndDistances() +{ + for (int i = 0; i < KangCnt; i++) + { + EcInt d; + int tameBorder = (KangCnt * gTameRatioPct) / 100; + int tameBits = Range - gTameBitsOffset; + if (tameBits < 1) tameBits = 1; + if (i < tameBorder) + d.RndBits(tameBits); // TAME kangs + else + { + d.RndBits(Range - 1); + d.data[0] &= 0xFFFFFFFFFFFFFFFE; // must be even + } + memcpy(RndPnts[i].priv, d.data, 24); + } +} + +bool RCGpuKang::Start() +{ + if (Failed) + return false; + + cudaError_t err; + err = cudaSetDevice(CudaIndex); + if (err != cudaSuccess) + return false; + + HalfRange.Set(1); + HalfRange.ShiftLeft(Range - 1); + PntHalfRange = ec.MultiplyG(HalfRange); + NegPntHalfRange = PntHalfRange; + NegPntHalfRange.y.NegModP(); + + PntA = ec.AddPoints(PntToSolve, NegPntHalfRange); + PntB = PntA; + PntB.y.NegModP(); + + RndPnts = (TPointPriv*)malloc(KangCnt * 96); + GenerateRndDistances(); +/* + //we can calc start points on CPU + for (int i = 0; i < KangCnt; i++) + { + EcInt d; + memcpy(d.data, RndPnts[i].priv, 24); + d.data[3] = 0; + d.data[4] = 0; + EcPoint p = ec.MultiplyG(d); + memcpy(RndPnts[i].x, p.x.data, 32); + memcpy(RndPnts[i].y, p.y.data, 32); + } + for (int i = KangCnt / 3; i < 2 * KangCnt / 3; i++) + { + EcPoint p; + p.LoadFromBuffer64((u8*)RndPnts[i].x); + p = ec.AddPoints(p, PntA); + p.SaveToBuffer64((u8*)RndPnts[i].x); + } + for (int i = 2 * KangCnt / 3; i < KangCnt; i++) + { + EcPoint p; + p.LoadFromBuffer64((u8*)RndPnts[i].x); + p = ec.AddPoints(p, PntB); + p.SaveToBuffer64((u8*)RndPnts[i].x); + } + //copy to gpu + err = cudaMemcpy(Kparams.Kangs, RndPnts, KangCnt * 96, cudaMemcpyHostToDevice); + if (err != cudaSuccess) + { + printf("GPU %d, cudaMemcpy failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } +/**/ + //but it's faster to calc then on GPU + u8 buf_PntA[64], buf_PntB[64]; + PntA.SaveToBuffer64(buf_PntA); + PntB.SaveToBuffer64(buf_PntB); + for (int i = 0; i < KangCnt; i++) + { + if (i < KangCnt / 3) + memset(RndPnts[i].x, 0, 64); + else + if (i < 2 * KangCnt / 3) + memcpy(RndPnts[i].x, buf_PntA, 64); + else + memcpy(RndPnts[i].x, buf_PntB, 64); + } + //copy to gpu + err = cudaMemcpy(Kparams.Kangs, RndPnts, KangCnt * 96, cudaMemcpyHostToDevice); + if (err != cudaSuccess) + { + printf("GPU %d, cudaMemcpy failed: %s\n", CudaIndex, cudaGetErrorString(err)); + return false; + } + CallGpuKernelGen(Kparams); + + err = cudaMemset(Kparams.L1S2, 0, mpCnt * Kparams.BlockSize * 8); + if (err != cudaSuccess) + return false; + cudaMemset(Kparams.dbg_buf, 0, 1024); + cudaMemset(Kparams.LoopTable, 0, KangCnt * MD_LEN * sizeof(u64)); + return true; +} + +#ifdef DEBUG_MODE +int RCGpuKang::Dbg_CheckKangs() +{ + int kang_size = mpCnt * Kparams.BlockSize * Kparams.GroupCnt * 96; + u64* kangs = (u64*)malloc(kang_size); + cudaError_t err = cudaMemcpy(kangs, Kparams.Kangs, kang_size, cudaMemcpyDeviceToHost); + int res = 0; + for (int i = 0; i < KangCnt; i++) + { + EcPoint Pnt, p; + Pnt.LoadFromBuffer64((u8*)&kangs[i * 12 + 0]); + EcInt dist; + dist.Set(0); + memcpy(dist.data, &kangs[i * 12 + 8], 24); + bool neg = false; + if (dist.data[2] >> 63) + { + neg = true; + memset(((u8*)dist.data) + 24, 0xFF, 16); + dist.Neg(); + } + p = ec.MultiplyG_Fast(dist); + if (neg) + p.y.NegModP(); + if (i < KangCnt / 3) + p = p; + else + if (i < 2 * KangCnt / 3) + p = ec.AddPoints(PntA, p); + else + p = ec.AddPoints(PntB, p); + if (!p.IsEqual(Pnt)) + res++; + } + free(kangs); + return res; +} +#endif + +extern u32 gTotalErrors; + +//executes in separate thread +void RCGpuKang::Execute() +{ + cudaSetDevice(CudaIndex); + + if (!Start()) + { + gTotalErrors++; + return; + } +#ifdef DEBUG_MODE + u64 iter = 1; +#endif + cudaError_t err; + while (!StopFlag) + { + u64 t1 = GetTickCount64(); + cudaMemset(Kparams.DPs_out, 0, 4); + cudaMemset(Kparams.DPTable, 0, KangCnt * sizeof(u32)); + cudaMemset(Kparams.LoopedKangs, 0, 8); + CallGpuKernelABC(Kparams); + int cnt; + err = cudaMemcpy(&cnt, Kparams.DPs_out, 4, cudaMemcpyDeviceToHost); + if (err != cudaSuccess) + { + printf("GPU %d, CallGpuKernel failed: %s\r\n", CudaIndex, cudaGetErrorString(err)); + gTotalErrors++; + break; + } + + if (cnt >= MAX_DP_CNT) + { + cnt = MAX_DP_CNT; + printf("GPU %d, gpu DP buffer overflow, some points lost, increase DP value!\r\n", CudaIndex); + } + u64 pnt_cnt = (u64)KangCnt * STEP_CNT; + + if (cnt) + { + err = cudaMemcpy(DPs_out, Kparams.DPs_out + 4, cnt * GPU_DP_SIZE, cudaMemcpyDeviceToHost); + if (err != cudaSuccess) + { + gTotalErrors++; + break; + } + AddPointsToList(DPs_out, cnt, (u64)KangCnt * STEP_CNT); + } + + //dbg + cudaMemcpy(dbg, Kparams.dbg_buf, 1024, cudaMemcpyDeviceToHost); + + u32 lcnt; + cudaMemcpy(&lcnt, Kparams.LoopedKangs, 4, cudaMemcpyDeviceToHost); + //printf("GPU %d, Looped: %d\r\n", CudaIndex, lcnt); + + u64 t2 = GetTickCount64(); + u64 tm = t2 - t1; + if (!tm) + tm = 1; + int cur_speed = (int)(pnt_cnt / (tm * 1000)); + //printf("GPU %d kernel time %d ms, speed %d MH\r\n", CudaIndex, (int)tm, cur_speed); + + SpeedStats[cur_stats_ind] = cur_speed; + cur_stats_ind = (cur_stats_ind + 1) % STATS_WND_SIZE; + +#ifdef DEBUG_MODE + if ((iter % 300) == 0) + { + int corr_cnt = Dbg_CheckKangs(); + if (corr_cnt) + { + printf("DBG: GPU %d, KANGS CORRUPTED: %d\r\n", CudaIndex, corr_cnt); + gTotalErrors++; + } + else + printf("DBG: GPU %d, ALL KANGS OK!\r\n", CudaIndex); + } + iter++; +#endif + } + + Release(); +} + +int RCGpuKang::GetStatsSpeed() +{ + int res = SpeedStats[0]; + for (int i = 1; i < STATS_WND_SIZE; i++) + res += SpeedStats[i]; + return res / STATS_WND_SIZE; } \ No newline at end of file diff --git a/LICENSE.TXT b/LICENSE.TXT deleted file mode 100644 index 94a9ed0..0000000 --- a/LICENSE.TXT +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/Makefile b/Makefile index 8aa0b60..8cf0beb 100644 --- a/Makefile +++ b/Makefile @@ -1,29 +1,85 @@ -CC := g++ -NVCC := /usr/local/cuda-12.0/bin/nvcc -CUDA_PATH ?= /usr/local/cuda-12.0 - -CCFLAGS := -O3 -I$(CUDA_PATH)/include -NVCCFLAGS := -O3 -gencode=arch=compute_89,code=compute_89 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_75,code=compute_75 -gencode=arch=compute_61,code=compute_61 -LDFLAGS := -L$(CUDA_PATH)/lib64 -lcudart -pthread - -CPU_SRC := RCKangaroo.cpp GpuKang.cpp Ec.cpp utils.cpp -GPU_SRC := RCGpuCore.cu - -CPP_OBJECTS := $(CPU_SRC:.cpp=.o) -CU_OBJECTS := $(GPU_SRC:.cu=.o) - -TARGET := rckangaroo - -all: $(TARGET) - -$(TARGET): $(CPP_OBJECTS) $(CU_OBJECTS) - $(CC) $(CCFLAGS) -o $@ $^ $(LDFLAGS) - -%.o: %.cpp - $(CC) $(CCFLAGS) -c $< -o $@ - -%.o: %.cu - $(NVCC) $(NVCCFLAGS) -c $< -o $@ - -clean: - rm -f $(CPP_OBJECTS) $(CU_OBJECTS) +# RCKangaroo Makefile (robusto y autodetecta CUDA) +# Uso: +# make clean +# make SM=86 USE_JACOBIAN=1 PROFILE=release -j +# ./rckangaroo -h + +TARGET := rckangaroo + +# Toolchains +CC := g++ +NVCC := /usr/bin/nvcc + +# CUDA +CUDA_PATH ?= /usr/local/cuda-12.0 +SM ?= 86 +USE_JACOBIAN ?= 1 +PROFILE ?= release + +# Optimización separada: host vs device +HOST_COPT_release := -O3 -DNDEBUG -ffunction-sections -fdata-sections +HOST_COPT_debug := -O0 -g +HOST_COPT := $(HOST_COPT_$(PROFILE)) + +DEV_COPT_release := -O3 +DEV_COPT_debug := -O0 -g +DEV_COPT := $(DEV_COPT_$(PROFILE)) + +# Flags +CCFLAGS := -std=c++17 -I$(CUDA_PATH)/include $(HOST_COPT) -DUSE_JACOBIAN=$(USE_JACOBIAN) +NVCCFLAGS := -std=c++17 -arch=sm_$(SM) $(DEV_COPT) -Xptxas -O3 -Xptxas -dlcm=ca -Xfatbin=-compress-all -DUSE_JACOBIAN=$(USE_JACOBIAN) +NVCCXCOMP := -Xcompiler -ffunction-sections -Xcompiler -fdata-sections + +LDFLAGS := -L$(CUDA_PATH)/lib64 -lcudart -pthread + +# Fuentes +SRC_CPP := RCKangaroo.cpp GpuKang.cpp Ec.cpp utils.cpp + +# Directorio donde está el .cu (por defecto, raíz) +CU_DIR ?= . +SRC_CU := $(wildcard $(CU_DIR)/RCGpuCore.cu) + +OBJ_CPP := $(SRC_CPP:.cpp=.o) +OBJ_CU := $(patsubst %.cu,%.o,$(SRC_CU)) + +ifeq ($(strip $(OBJ_CU)),) + $(warning [Makefile] No se encontró RCGpuCore.cu en $(CU_DIR). Se construirá solo CPU.) + OBJS := $(OBJ_CPP) +else + OBJS := $(OBJ_CPP) $(OBJ_CU) +endif + +.PHONY: all clean print-vars + +all: $(TARGET) + +$(TARGET): $(OBJS) + $(CC) $(CCFLAGS) -o $@ $(OBJS) $(LDFLAGS) + +%.o: %.cpp + $(CC) $(CCFLAGS) -c $< -o $@ + +# Regla genérica CUDA (.cu -> .o) con flags host vía -Xcompiler +$(CU_DIR)/%.o: $(CU_DIR)/%.cu + $(NVCC) $(NVCCFLAGS) $(NVCCXCOMP) -c $< -o $@ + +# Regla explícita (por si tu make ignora patrones) +$(CU_DIR)/RCGpuCore.o: $(CU_DIR)/RCGpuCore.cu RCGpuUtils.h Ec.h defs.h + $(NVCC) $(NVCCFLAGS) $(NVCCXCOMP) -c $< -o $@ + +clean: + rm -f $(OBJ_CPP) $(OBJ_CU) $(TARGET) + +print-vars: + @echo "CUDA_PATH=$(CUDA_PATH)" + @echo "SM=$(SM)" + @echo "USE_JACOBIAN=$(USE_JACOBIAN)" + @echo "PROFILE=$(PROFILE)" + @echo "SRC_CPP=$(SRC_CPP)" + @echo "CU_DIR=$(CU_DIR)" + @echo "SRC_CU=$(SRC_CU)" + @echo "OBJ_CPP=$(OBJ_CPP)" + @echo "OBJ_CU=$(OBJ_CU)" + @echo "OBJS=$(OBJS)" + @echo "NVCCFLAGS=$(NVCCFLAGS)" + @echo "NVCCXCOMP=$(NVCCXCOMP)" diff --git a/RCGpuCore.cu b/RCGpuCore.cu index 4556a5c..c96a981 100644 --- a/RCGpuCore.cu +++ b/RCGpuCore.cu @@ -28,6 +28,11 @@ extern __shared__ u64 LDS[]; //this kernel performs main jumps extern "C" __launch_bounds__(BLOCK_SIZE, 1) + +// === Jacobian option (experimental) ========================================= +// Para habilitar: compilar con -DUSE_JACOBIAN=1. Mantiene el formato de salida. +// Implementa sumas J+A y conversión por lotes sólo para la verificación DP. +// ============================================================================ __global__ void KernelA(const TKparams Kparams) { u64* L2x = Kparams.L2 + 2 * THREAD_X + 4 * BLOCK_SIZE * BLOCK_X; @@ -79,6 +84,73 @@ __global__ void KernelA(const TKparams Kparams) for (int step_ind = 0; step_ind < STEP_CNT; step_ind++) { +#if USE_JACOBIAN + // [Jacobian path] — usamos L2x=L2X, L2y=L2Y, L2s=L2Z + __align__(16) u64 X[4], Y[4], Z[4]; + // 1) Cargar Z=1 si es la primera iteración + for (int group = 0; group < PNT_GROUP_CNT; group++) { + LOAD_VAL_256(X, L2x, group); + LOAD_VAL_256(Y, L2y, group); + if (step_ind==0) { Z[0]=1; Z[1]=Z[2]=Z[3]=0; } + else { LOAD_VAL_256(Z, L2s, group); } + // salto + u64* jmp_table; + __align__(16) u64 jmp_x[4], jmp_y[4]; + u16 jmp_ind_loc = X[0] % JMP_CNT; + jmp_table = ((L1S2 >> group) & 1) ? jmp2_table : jmp1_table; + Copy_int4_x2(jmp_x, jmp_table + 8 * jmp_ind_loc); + Copy_int4_x2(jmp_y, jmp_table + 8 * jmp_ind_loc + 4); + // manejo de inversión de y según bit + u32 inv_flag = (u32)Y[0] & 1u; + if (inv_flag) { jmp_ind_loc |= INV_FLAG; NegModP(jmp_y); } + u64 X3[4],Y3[4],Z3[4]; + JacobianAddMixed(X3,Y3,Z3,X,Y,Z,jmp_x,jmp_y); + SAVE_VAL_256(L2x, X3, group); + SAVE_VAL_256(L2y, Y3, group); + SAVE_VAL_256(L2s, Z3, group); + + // Conversión batched a afín sólo para DP (una inversión total por hilo) + } + // Batch inversion: Z^-1 para todos los grupos (Montgomery trick) + __align__(16) u64 prod[4] = {1,0,0,0}; + for (int group=0; group=0; group--) { + __align__(16) u64 prev[4] = {1,0,0,0}; + if (group>0) LOAD_VAL_256(prev, L2s, group-1); + LOAD_VAL_256(Z, L2s, group); + __align__(16) u64 invZ[4]; MulModP(invZ, prod, prev); // Z_i^-1 + // actualizar prod = prod * Z_i + MulModP(prod, prod, Z); + // x_aff = X * invZ^2 + __align__(16) u64 Xg[4], invZ2[4]; + LOAD_VAL_256(Xg, L2x, group); + MulModP(invZ2, invZ, invZ); + MulModP(Xg, Xg, invZ2); + // check DP + if ((Xg[3] & dp_mask64) == 0) { + u32 kang_ind = (THREAD_X + BLOCK_X * BLOCK_SIZE) * PNT_GROUP_CNT + group; + u32 ind = atomicAdd(Kparams.DPTable + kang_ind, 1); + ind = min(ind, DPTABLE_MAX_CNT - 1); + int4 *pdst = (int4*)(&Kparams.DPs_out[(u64)kang_ind * DPTABLE_MAX_CNT * 8 + 8 * ind]); + ((int4*)pdst)[0] = ((int4*)Xg)[0]; + ((int4*)pdst)[1] = ((int4*)Xg)[1]; + // acción de salto (igual al camino original) + // NOTA: reusamos jmp_ind_loc de arriba no disponible aquí; reconstituimos: + LOAD_VAL_256(X, L2x, group); + u16 ji = X[0] % JMP_CNT; + ji |= ((u32)Y[0] & 1u) ? 0 : INV_FLAG; + ((u16*)pdst)[8+0] = ji; // almacena índice salto+flags + ((u16*)pdst)[8+1] = 0; + } + } + continue; // saltamos el camino afín original +#endif // USE_JACOBIAN + __align__(16) u64 inverse[5]; u64* jmp_table; __align__(16) u64 jmp_x[4]; @@ -532,12 +604,61 @@ __device__ __forceinline__ bool ProcessJumpDistance(u32 step_ind, u32 d_cur, u64 table[iter] = d[0]; *cur_ind = (iter + 1) % MD_LEN; - if (found_ind < 0) - { - if (d_cur & DP_FLAG) - BuildDP(Kparams, kang_ind, d); - return false; - } + // --- Warp-aggregated emisión de DPs (reemplaza BuildDP) --- +if (found_ind < 0) +{ + // 1) Cada hilo decide si «quiere emitir» un DP en este paso + // (antes llamábamos a BuildDP) + bool emit = false; + int4 rx_local; // X parcial del DP (lo que lectura BuildDP hacía) + if (d_cur & DP_FLAG) { + // Replicamos la parte de BuildDP que obtiene el X guardado en DPTable + int idx = atomicAdd(Kparams.DPTable + kang_ind, 0x10000); + idx >>= 16; // índice de lectura (alto de 16 bits) + if (idx < DPTABLE_MAX_CNT) { + rx_local = *(int4*)(Kparams.DPTable + + Kparams.KangCnt + + (kang_ind * DPTABLE_MAX_CNT + idx) * 4); + emit = true; + } + } + + // 2) Warp-aggregated atomic: una sola atomicAdd por warp + const unsigned active = __activemask(); + const int lane = threadIdx.x & 31; + const int leader = __ffs(active) - 1; // primer lane activo + unsigned mask_emit = __ballot_sync(active, emit); // quiénes emiten en el warp + int hits = __popc(mask_emit); // cuántos DPs emiten + + if (hits) { + // Sólo el líder reserva 'hits' slots contiguos en la salida + unsigned base = 0; + if (lane == leader) { + base = atomicAdd(Kparams.DPs_out, (unsigned)hits); + } + // Broadcast del 'base' al warp + base = __shfl_sync(active, base, leader); + + if (emit) { + // Posición compacta de este hilo dentro del bloque reservado + unsigned laneMask = mask_emit & ((1u << lane) - 1u); + unsigned pos = __popc(laneMask); + + unsigned outIdx = base + pos; + outIdx = min(outIdx, (unsigned)(MAX_DP_CNT - 1)); + + // Escribir el registro exactamente igual que BuildDP + u32* DPs = Kparams.DPs_out + 4 + outIdx * (GPU_DP_SIZE / 4); + *(int4*)&DPs[0] = rx_local; // X parcial (int4) + *(int4*)&DPs[4] = ((int4*)d)[0]; // dist[0..1] (128 bits) + *(u64*)&DPs[8] = d[2]; // dist[2] (64 bits) + DPs[10] = 3 * kang_ind / Kparams.KangCnt; // tipo de kanguro + } + } + + return false; +} + u32 LoopSize = (iter + MD_LEN - found_ind) % MD_LEN; if (!LoopSize) diff --git a/RCGpuUtils.h b/RCGpuUtils.h index 6c5db83..8bf4e2e 100644 --- a/RCGpuUtils.h +++ b/RCGpuUtils.h @@ -519,7 +519,7 @@ __device__ __forceinline__ void InvModP(u32* res) __align__(8) u32 modp[9]; __align__(8) u32 val[9]; __align__(8) u32 a[9]; - __align__(8) u32 tmp[4][9+1]; //+1 because we need alignment 64bit for tmp[>0] + __align__(8) u32 tmp[4][9]; ((u64*)modp)[0] = P_0; ((u64*)modp)[1] = P_123; @@ -628,3 +628,53 @@ __device__ __forceinline__ void InvModP(u32* res) sub_288_P(res); } +// === Extensiones: utilidades Jacobianas (GPU) ================================ +__device__ __forceinline__ void SquareModP(u64 *res, u64 *a) { + MulModP(res, a, a); +} + +// r = 2*p (doblado jacobiano, a=0) +__device__ __forceinline__ void JacobianDouble(u64 *X3,u64 *Y3,u64 *Z3,const u64 *X1,const u64 *Y1,const u64 *Z1){ + u64 XX[4],YY[4],YYYY[4],S[4],M[4],T[4],twoS[4],Z3tmp[4]; + Copy_u64_x4(XX,(void*)X1); MulModP(XX,XX,XX); + Copy_u64_x4(YY,(void*)Y1); MulModP(YY,YY,YY); + Copy_u64_x4(YYYY,YY); MulModP(YYYY,YYYY,YY); + Copy_u64_x4(S,(void*)X1); MulModP(S,S,YY); AddModP(S,S,S); // 2*X1*Y1^2 + Copy_u64_x4(M,XX); AddModP(M,M,XX); AddModP(M,M,XX); // 3*X1^2 + Copy_u64_x4(T,M); MulModP(T,T,M); // M^2 + Copy_u64_x4(twoS,S); AddModP(twoS,twoS,S); // 2*S + SubModP((u64*)X3,T,twoS); // X3 + u64 V[4]; Copy_u64_x4(V,S); SubModP(V,V,(u64*)X3); MulModP(V,V,M); + u64 eightYYYY[4]; Copy_u64_x4(eightYYYY,YYYY); + for (int i=0;i<3;i++) AddModP(eightYYYY,eightYYYY,YYYY); // *8 + SubModP((u64*)Y3,V,eightYYYY); + Copy_u64_x4(Z3tmp,(void*)Y1); AddModP(Z3tmp,Z3tmp,(u64*)Y1); MulModP(Z3tmp,Z3tmp,(u64*)Z1); + Copy_u64_x4((u64*)Z3,Z3tmp); +} + +// r = p + q_aff (mixta) +__device__ __forceinline__ void JacobianAddMixed(u64 *X3,u64 *Y3,u64 *Z3,const u64 *X1,const u64 *Y1,const u64 *Z1,const u64 *Qx,const u64 *Qy){ + u64 Z2[4],Z3_[4],U2[4],S2[4],H[4],R[4]; + Copy_u64_x4(Z2,(void*)Z1); MulModP(Z2,Z2,Z2); + Copy_u64_x4(Z3_,Z2); MulModP(Z3_,Z3_,(u64*)Z1); + Copy_u64_x4(U2,(void*)Qx); MulModP(U2,U2,Z2); + Copy_u64_x4(S2,(void*)Qy); MulModP(S2,S2,Z3_); + Copy_u64_x4(H,U2); SubModP(H,H,(u64*)X1); + Copy_u64_x4(R,S2); SubModP(R,R,(u64*)Y1); + // if H==0 -> degenerate (omit; improbable en saltos aleatorios) + u64 HH[4],HHH[4],V[4],X3_[4],Y3_[4],Z3tmp[4]; + Copy_u64_x4(HH,H); MulModP(HH,HH,H); + Copy_u64_x4(HHH,HH);MulModP(HHH,HHH,H); + Copy_u64_x4(V,(void*)X1); MulModP(V,V,HH); + Copy_u64_x4(X3_,R); MulModP(X3_,X3_,R); + SubModP(X3_,X3_,HHH); + u64 twoV[4]; Copy_u64_x4(twoV,V); AddModP(twoV,twoV,V); + SubModP((u64*)X3,X3_,twoV); + Copy_u64_x4(Y3_,V); SubModP(Y3_,Y3_,(u64*)X3); MulModP(Y3_,Y3_,R); + u64 S1HHH[4]; Copy_u64_x4(S1HHH,(void*)Y1); MulModP(S1HHH,S1HHH,HHH); + SubModP((u64*)Y3,Y3_,S1HHH); + Copy_u64_x4(Z3tmp,(void*)Z1); MulModP(Z3tmp,Z3tmp,H); + Copy_u64_x4((u64*)Z3,Z3tmp); +} +// ============================================================================ + diff --git a/RCKangaroo.cpp b/RCKangaroo.cpp index 19c0fae..38d5d8b 100644 --- a/RCKangaroo.cpp +++ b/RCKangaroo.cpp @@ -1,764 +1,789 @@ -// This file is a part of RCKangaroo software -// (c) 2024, RetiredCoder (RC) -// License: GPLv3, see "LICENSE.TXT" file -// https://github.com/RetiredC - - -#include -#include - -#include "cuda_runtime.h" -#include "cuda.h" - -#include "defs.h" -#include "utils.h" -#include "GpuKang.h" - - -EcJMP EcJumps1[JMP_CNT]; -EcJMP EcJumps2[JMP_CNT]; -EcJMP EcJumps3[JMP_CNT]; - -RCGpuKang* GpuKangs[MAX_GPU_CNT]; -int GpuCnt; -volatile long ThrCnt; -volatile bool gSolved; - -EcInt Int_HalfRange; -EcPoint Pnt_HalfRange; -EcPoint Pnt_NegHalfRange; -EcInt Int_TameOffset; -Ec ec; - -CriticalSection csAddPoints; -u8* pPntList; -u8* pPntList2; -volatile int PntIndex; -TFastBase db; -EcPoint gPntToSolve; -EcInt gPrivKey; - -volatile u64 TotalOps; -u32 TotalSolved; -u32 gTotalErrors; -u64 PntTotalOps; -bool IsBench; - -u32 gDP; -u32 gRange; -EcInt gStart; -bool gStartSet; -EcPoint gPubKey; -u8 gGPUs_Mask[MAX_GPU_CNT]; -char gTamesFileName[1024]; -double gMax; -bool gGenMode; //tames generation mode -bool gIsOpsLimit; - -#pragma pack(push, 1) -struct DBRec -{ - u8 x[12]; - u8 d[22]; - u8 type; //0 - tame, 1 - wild1, 2 - wild2 -}; -#pragma pack(pop) - -void InitGpus() -{ - GpuCnt = 0; - int gcnt = 0; - cudaGetDeviceCount(&gcnt); - if (gcnt > MAX_GPU_CNT) - gcnt = MAX_GPU_CNT; - -// gcnt = 1; //dbg - if (!gcnt) - return; - - int drv, rt; - cudaRuntimeGetVersion(&rt); - cudaDriverGetVersion(&drv); - char drvver[100]; - sprintf(drvver, "%d.%d/%d.%d", drv / 1000, (drv % 100) / 10, rt / 1000, (rt % 100) / 10); - - printf("CUDA devices: %d, CUDA driver/runtime: %s\r\n", gcnt, drvver); - cudaError_t cudaStatus; - for (int i = 0; i < gcnt; i++) - { - cudaStatus = cudaSetDevice(i); - if (cudaStatus != cudaSuccess) - { - printf("cudaSetDevice for gpu %d failed!\r\n", i); - continue; - } - - if (!gGPUs_Mask[i]) - continue; - - cudaDeviceProp deviceProp; - cudaGetDeviceProperties(&deviceProp, i); - printf("GPU %d: %s, %.2f GB, %d CUs, cap %d.%d, PCI %d, L2 size: %d KB\r\n", i, deviceProp.name, ((float)(deviceProp.totalGlobalMem / (1024 * 1024))) / 1024.0f, deviceProp.multiProcessorCount, deviceProp.major, deviceProp.minor, deviceProp.pciBusID, deviceProp.l2CacheSize / 1024); - - if (deviceProp.major < 6) - { - printf("GPU %d - not supported, skip\r\n", i); - continue; - } - - cudaSetDeviceFlags(cudaDeviceScheduleBlockingSync); - - GpuKangs[GpuCnt] = new RCGpuKang(); - GpuKangs[GpuCnt]->CudaIndex = i; - GpuKangs[GpuCnt]->persistingL2CacheMaxSize = deviceProp.persistingL2CacheMaxSize; - GpuKangs[GpuCnt]->mpCnt = deviceProp.multiProcessorCount; - GpuKangs[GpuCnt]->IsOldGpu = deviceProp.l2CacheSize < 16 * 1024 * 1024; - GpuCnt++; - } - printf("Total GPUs for work: %d\r\n", GpuCnt); -} -#ifdef _WIN32 -u32 __stdcall kang_thr_proc(void* data) -{ - RCGpuKang* Kang = (RCGpuKang*)data; - Kang->Execute(); - InterlockedDecrement(&ThrCnt); - return 0; -} -#else -void* kang_thr_proc(void* data) -{ - RCGpuKang* Kang = (RCGpuKang*)data; - Kang->Execute(); - __sync_fetch_and_sub(&ThrCnt, 1); - return 0; -} -#endif -void AddPointsToList(u32* data, int pnt_cnt, u64 ops_cnt) -{ - csAddPoints.Enter(); - if (PntIndex + pnt_cnt >= MAX_CNT_LIST) - { - csAddPoints.Leave(); - printf("DPs buffer overflow, some points lost, increase DP value!\r\n"); - return; - } - memcpy(pPntList + GPU_DP_SIZE * PntIndex, data, pnt_cnt * GPU_DP_SIZE); - PntIndex += pnt_cnt; - PntTotalOps += ops_cnt; - csAddPoints.Leave(); -} - -bool Collision_SOTA(EcPoint& pnt, EcInt t, int TameType, EcInt w, int WildType, bool IsNeg) -{ - if (IsNeg) - t.Neg(); - if (TameType == TAME) - { - gPrivKey = t; - gPrivKey.Sub(w); - EcInt sv = gPrivKey; - gPrivKey.Add(Int_HalfRange); - EcPoint P = ec.MultiplyG(gPrivKey); - if (P.IsEqual(pnt)) - return true; - gPrivKey = sv; - gPrivKey.Neg(); - gPrivKey.Add(Int_HalfRange); - P = ec.MultiplyG(gPrivKey); - return P.IsEqual(pnt); - } - else - { - gPrivKey = t; - gPrivKey.Sub(w); - if (gPrivKey.data[4] >> 63) - gPrivKey.Neg(); - gPrivKey.ShiftRight(1); - EcInt sv = gPrivKey; - gPrivKey.Add(Int_HalfRange); - EcPoint P = ec.MultiplyG(gPrivKey); - if (P.IsEqual(pnt)) - return true; - gPrivKey = sv; - gPrivKey.Neg(); - gPrivKey.Add(Int_HalfRange); - P = ec.MultiplyG(gPrivKey); - return P.IsEqual(pnt); - } -} - - -void CheckNewPoints() -{ - csAddPoints.Enter(); - if (!PntIndex) - { - csAddPoints.Leave(); - return; - } - - int cnt = PntIndex; - memcpy(pPntList2, pPntList, GPU_DP_SIZE * cnt); - PntIndex = 0; - csAddPoints.Leave(); - - for (int i = 0; i < cnt; i++) - { - DBRec nrec; - u8* p = pPntList2 + i * GPU_DP_SIZE; - memcpy(nrec.x, p, 12); - memcpy(nrec.d, p + 16, 22); - nrec.type = gGenMode ? TAME : p[40]; - - DBRec* pref = (DBRec*)db.FindOrAddDataBlock((u8*)&nrec); - if (gGenMode) - continue; - if (pref) - { - //in db we dont store first 3 bytes so restore them - DBRec tmp_pref; - memcpy(&tmp_pref, &nrec, 3); - memcpy(((u8*)&tmp_pref) + 3, pref, sizeof(DBRec) - 3); - pref = &tmp_pref; - - if (pref->type == nrec.type) - { - if (pref->type == TAME) - continue; - - //if it's wild, we can find the key from the same type if distances are different - if (*(u64*)pref->d == *(u64*)nrec.d) - continue; - //else - // ToLog("key found by same wild"); - } - - EcInt w, t; - int TameType, WildType; - if (pref->type != TAME) - { - memcpy(w.data, pref->d, sizeof(pref->d)); - if (pref->d[21] == 0xFF) memset(((u8*)w.data) + 22, 0xFF, 18); - memcpy(t.data, nrec.d, sizeof(nrec.d)); - if (nrec.d[21] == 0xFF) memset(((u8*)t.data) + 22, 0xFF, 18); - TameType = nrec.type; - WildType = pref->type; - } - else - { - memcpy(w.data, nrec.d, sizeof(nrec.d)); - if (nrec.d[21] == 0xFF) memset(((u8*)w.data) + 22, 0xFF, 18); - memcpy(t.data, pref->d, sizeof(pref->d)); - if (pref->d[21] == 0xFF) memset(((u8*)t.data) + 22, 0xFF, 18); - TameType = TAME; - WildType = nrec.type; - } - - bool res = Collision_SOTA(gPntToSolve, t, TameType, w, WildType, false) || Collision_SOTA(gPntToSolve, t, TameType, w, WildType, true); - if (!res) - { - bool w12 = ((pref->type == WILD1) && (nrec.type == WILD2)) || ((pref->type == WILD2) && (nrec.type == WILD1)); - if (w12) //in rare cases WILD and WILD2 can collide in mirror, in this case there is no way to find K - ;// ToLog("W1 and W2 collides in mirror"); - else - { - printf("Collision Error\r\n"); - gTotalErrors++; - } - continue; - } - gSolved = true; - break; - } - } -} - -void ShowStats(u64 tm_start, double exp_ops, double dp_val) -{ -#ifdef DEBUG_MODE - for (int i = 0; i <= MD_LEN; i++) - { - u64 val = 0; - for (int j = 0; j < GpuCnt; j++) - { - val += GpuKangs[j]->dbg[i]; - } - if (val) - printf("Loop size %d: %llu\r\n", i, val); - } -#endif - - int speed = GpuKangs[0]->GetStatsSpeed(); - for (int i = 1; i < GpuCnt; i++) - speed += GpuKangs[i]->GetStatsSpeed(); - - u64 est_dps_cnt = (u64)(exp_ops / dp_val); - u64 exp_sec = 0xFFFFFFFFFFFFFFFFull; - if (speed) - exp_sec = (u64)((exp_ops / 1000000) / speed); //in sec - u64 exp_days = exp_sec / (3600 * 24); - int exp_hours = (int)(exp_sec - exp_days * (3600 * 24)) / 3600; - int exp_min = (int)(exp_sec - exp_days * (3600 * 24) - exp_hours * 3600) / 60; - - u64 sec = (GetTickCount64() - tm_start) / 1000; - u64 days = sec / (3600 * 24); - int hours = (int)(sec - days * (3600 * 24)) / 3600; - int min = (int)(sec - days * (3600 * 24) - hours * 3600) / 60; - - printf("%sSpeed: %d MKeys/s, Err: %d, DPs: %lluK/%lluK, Time: %llud:%02dh:%02dm/%llud:%02dh:%02dm\r\n", gGenMode ? "GEN: " : (IsBench ? "BENCH: " : "MAIN: "), speed, gTotalErrors, db.GetBlockCnt()/1000, est_dps_cnt/1000, days, hours, min, exp_days, exp_hours, exp_min); -} - -bool SolvePoint(EcPoint PntToSolve, int Range, int DP, EcInt* pk_res) -{ - if ((Range < 32) || (Range > 180)) - { - printf("Unsupported Range value (%d)!\r\n", Range); - return false; - } - if ((DP < 14) || (DP > 60)) - { - printf("Unsupported DP value (%d)!\r\n", DP); - return false; - } - - printf("\r\nSolving point: Range %d bits, DP %d, start...\r\n", Range, DP); - double ops = 1.15 * pow(2.0, Range / 2.0); - double dp_val = (double)(1ull << DP); - double ram = (32 + 4 + 4) * ops / dp_val; //+4 for grow allocation and memory fragmentation - ram += sizeof(TListRec) * 256 * 256 * 256; //3byte-prefix table - ram /= (1024 * 1024 * 1024); //GB - printf("SOTA method, estimated ops: 2^%.3f, RAM for DPs: %.3f GB. DP and GPU overheads not included!\r\n", log2(ops), ram); - gIsOpsLimit = false; - double MaxTotalOps = 0.0; - if (gMax > 0) - { - MaxTotalOps = gMax * ops; - double ram_max = (32 + 4 + 4) * MaxTotalOps / dp_val; //+4 for grow allocation and memory fragmentation - ram_max += sizeof(TListRec) * 256 * 256 * 256; //3byte-prefix table - ram_max /= (1024 * 1024 * 1024); //GB - printf("Max allowed number of ops: 2^%.3f, max RAM for DPs: %.3f GB\r\n", log2(MaxTotalOps), ram_max); - } - - u64 total_kangs = GpuKangs[0]->CalcKangCnt(); - for (int i = 1; i < GpuCnt; i++) - total_kangs += GpuKangs[i]->CalcKangCnt(); - double path_single_kang = ops / total_kangs; - double DPs_per_kang = path_single_kang / dp_val; - printf("Estimated DPs per kangaroo: %.3f.%s\r\n", DPs_per_kang, (DPs_per_kang < 5) ? " DP overhead is big, use less DP value if possible!" : ""); - - if (!gGenMode && gTamesFileName[0]) - { - printf("load tames...\r\n"); - if (db.LoadFromFile(gTamesFileName)) - { - printf("tames loaded\r\n"); - if (db.Header[0] != gRange) - { - printf("loaded tames have different range, they cannot be used, clear\r\n"); - db.Clear(); - } - } - else - printf("tames loading failed\r\n"); - } - - SetRndSeed(0); //use same seed to make tames from file compatible - PntTotalOps = 0; - PntIndex = 0; -//prepare jumps - EcInt minjump, t; - minjump.Set(1); - minjump.ShiftLeft(Range / 2 + 3); - for (int i = 0; i < JMP_CNT; i++) - { - EcJumps1[i].dist = minjump; - t.RndMax(minjump); - EcJumps1[i].dist.Add(t); - EcJumps1[i].dist.data[0] &= 0xFFFFFFFFFFFFFFFE; //must be even - EcJumps1[i].p = ec.MultiplyG(EcJumps1[i].dist); - } - - minjump.Set(1); - minjump.ShiftLeft(Range - 10); //large jumps for L1S2 loops. Must be almost RANGE_BITS - for (int i = 0; i < JMP_CNT; i++) - { - EcJumps2[i].dist = minjump; - t.RndMax(minjump); - EcJumps2[i].dist.Add(t); - EcJumps2[i].dist.data[0] &= 0xFFFFFFFFFFFFFFFE; //must be even - EcJumps2[i].p = ec.MultiplyG(EcJumps2[i].dist); - } - - minjump.Set(1); - minjump.ShiftLeft(Range - 10 - 2); //large jumps for loops >2 - for (int i = 0; i < JMP_CNT; i++) - { - EcJumps3[i].dist = minjump; - t.RndMax(minjump); - EcJumps3[i].dist.Add(t); - EcJumps3[i].dist.data[0] &= 0xFFFFFFFFFFFFFFFE; //must be even - EcJumps3[i].p = ec.MultiplyG(EcJumps3[i].dist); - } - SetRndSeed(GetTickCount64()); - - Int_HalfRange.Set(1); - Int_HalfRange.ShiftLeft(Range - 1); - Pnt_HalfRange = ec.MultiplyG(Int_HalfRange); - Pnt_NegHalfRange = Pnt_HalfRange; - Pnt_NegHalfRange.y.NegModP(); - Int_TameOffset.Set(1); - Int_TameOffset.ShiftLeft(Range - 1); - EcInt tt; - tt.Set(1); - tt.ShiftLeft(Range - 5); //half of tame range width - Int_TameOffset.Sub(tt); - gPntToSolve = PntToSolve; - -//prepare GPUs - for (int i = 0; i < GpuCnt; i++) - if (!GpuKangs[i]->Prepare(PntToSolve, Range, DP, EcJumps1, EcJumps2, EcJumps3)) - { - GpuKangs[i]->Failed = true; - printf("GPU %d Prepare failed\r\n", GpuKangs[i]->CudaIndex); - } - - u64 tm0 = GetTickCount64(); - printf("GPUs started...\r\n"); - -#ifdef _WIN32 - HANDLE thr_handles[MAX_GPU_CNT]; -#else - pthread_t thr_handles[MAX_GPU_CNT]; -#endif - - u32 ThreadID; - gSolved = false; - ThrCnt = GpuCnt; - for (int i = 0; i < GpuCnt; i++) - { -#ifdef _WIN32 - thr_handles[i] = (HANDLE)_beginthreadex(NULL, 0, kang_thr_proc, (void*)GpuKangs[i], 0, &ThreadID); -#else - pthread_create(&thr_handles[i], NULL, kang_thr_proc, (void*)GpuKangs[i]); -#endif - } - - u64 tm_stats = GetTickCount64(); - while (!gSolved) - { - CheckNewPoints(); - Sleep(10); - if (GetTickCount64() - tm_stats > 10 * 1000) - { - ShowStats(tm0, ops, dp_val); - tm_stats = GetTickCount64(); - } - - if ((MaxTotalOps > 0.0) && (PntTotalOps > MaxTotalOps)) - { - gIsOpsLimit = true; - printf("Operations limit reached\r\n"); - break; - } - } - - printf("Stopping work ...\r\n"); - for (int i = 0; i < GpuCnt; i++) - GpuKangs[i]->Stop(); - while (ThrCnt) - Sleep(10); - for (int i = 0; i < GpuCnt; i++) - { -#ifdef _WIN32 - CloseHandle(thr_handles[i]); -#else - pthread_join(thr_handles[i], NULL); -#endif - } - - if (gIsOpsLimit) - { - if (gGenMode) - { - printf("saving tames...\r\n"); - db.Header[0] = gRange; - if (db.SaveToFile(gTamesFileName)) - printf("tames saved\r\n"); - else - printf("tames saving failed\r\n"); - } - db.Clear(); - return false; - } - - double K = (double)PntTotalOps / pow(2.0, Range / 2.0); - printf("Point solved, K: %.3f (with DP and GPU overheads)\r\n\r\n", K); - db.Clear(); - *pk_res = gPrivKey; - return true; -} - -bool ParseCommandLine(int argc, char* argv[]) -{ - int ci = 1; - while (ci < argc) - { - char* argument = argv[ci]; - ci++; - if (strcmp(argument, "-gpu") == 0) - { - if (ci >= argc) - { - printf("error: missed value after -gpu option\r\n"); - return false; - } - char* gpus = argv[ci]; - ci++; - memset(gGPUs_Mask, 0, sizeof(gGPUs_Mask)); - for (int i = 0; i < (int)strlen(gpus); i++) - { - if ((gpus[i] < '0') || (gpus[i] > '9')) - { - printf("error: invalid value for -gpu option\r\n"); - return false; - } - gGPUs_Mask[gpus[i] - '0'] = 1; - } - } - else - if (strcmp(argument, "-dp") == 0) - { - int val = atoi(argv[ci]); - ci++; - if ((val < 14) || (val > 60)) - { - printf("error: invalid value for -dp option\r\n"); - return false; - } - gDP = val; - } - else - if (strcmp(argument, "-range") == 0) - { - int val = atoi(argv[ci]); - ci++; - if ((val < 32) || (val > 170)) - { - printf("error: invalid value for -range option\r\n"); - return false; - } - gRange = val; - } - else - if (strcmp(argument, "-start") == 0) - { - if (!gStart.SetHexStr(argv[ci])) - { - printf("error: invalid value for -start option\r\n"); - return false; - } - ci++; - gStartSet = true; - } - else - if (strcmp(argument, "-pubkey") == 0) - { - if (!gPubKey.SetHexStr(argv[ci])) - { - printf("error: invalid value for -pubkey option\r\n"); - return false; - } - ci++; - } - else - if (strcmp(argument, "-tames") == 0) - { - strcpy(gTamesFileName, argv[ci]); - ci++; - } - else - if (strcmp(argument, "-max") == 0) - { - double val = atof(argv[ci]); - ci++; - if (val < 0.001) - { - printf("error: invalid value for -max option\r\n"); - return false; - } - gMax = val; - } - else - { - printf("error: unknown option %s\r\n", argument); - return false; - } - } - if (!gPubKey.x.IsZero()) - if (!gStartSet || !gRange || !gDP) - { - printf("error: you must also specify -dp, -range and -start options\r\n"); - return false; - } - if (gTamesFileName[0] && !IsFileExist(gTamesFileName)) - { - if (gMax == 0.0) - { - printf("error: you must also specify -max option to generate tames\r\n"); - return false; - } - gGenMode = true; - } - return true; -} - -int main(int argc, char* argv[]) -{ -#ifdef _DEBUG - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); -#endif - - printf("********************************************************************************\r\n"); - printf("* RCKangaroo v3.0 (c) 2024 RetiredCoder *\r\n"); - printf("********************************************************************************\r\n\r\n"); - - printf("This software is free and open-source: https://github.com/RetiredC\r\n"); - printf("It demonstrates fast GPU implementation of SOTA Kangaroo method for solving ECDLP\r\n"); - -#ifdef _WIN32 - printf("Windows version\r\n"); -#else - printf("Linux version\r\n"); -#endif - -#ifdef DEBUG_MODE - printf("DEBUG MODE\r\n\r\n"); -#endif - - InitEc(); - gDP = 0; - gRange = 0; - gStartSet = false; - gTamesFileName[0] = 0; - gMax = 0.0; - gGenMode = false; - gIsOpsLimit = false; - memset(gGPUs_Mask, 1, sizeof(gGPUs_Mask)); - if (!ParseCommandLine(argc, argv)) - return 0; - - InitGpus(); - - if (!GpuCnt) - { - printf("No supported GPUs detected, exit\r\n"); - return 0; - } - - pPntList = (u8*)malloc(MAX_CNT_LIST * GPU_DP_SIZE); - pPntList2 = (u8*)malloc(MAX_CNT_LIST * GPU_DP_SIZE); - TotalOps = 0; - TotalSolved = 0; - gTotalErrors = 0; - IsBench = gPubKey.x.IsZero(); - - if (!IsBench && !gGenMode) - { - printf("\r\nMAIN MODE\r\n\r\n"); - EcPoint PntToSolve, PntOfs; - EcInt pk, pk_found; - - PntToSolve = gPubKey; - if (!gStart.IsZero()) - { - PntOfs = ec.MultiplyG(gStart); - PntOfs.y.NegModP(); - PntToSolve = ec.AddPoints(PntToSolve, PntOfs); - } - - char sx[100], sy[100]; - gPubKey.x.GetHexStr(sx); - gPubKey.y.GetHexStr(sy); - printf("Solving public key\r\nX: %s\r\nY: %s\r\n", sx, sy); - gStart.GetHexStr(sx); - printf("Offset: %s\r\n", sx); - - if (!SolvePoint(PntToSolve, gRange, gDP, &pk_found)) - { - if (!gIsOpsLimit) - printf("FATAL ERROR: SolvePoint failed\r\n"); - goto label_end; - } - pk_found.AddModP(gStart); - EcPoint tmp = ec.MultiplyG(pk_found); - if (!tmp.IsEqual(gPubKey)) - { - printf("FATAL ERROR: SolvePoint found incorrect key\r\n"); - goto label_end; - } - //happy end - char s[100]; - pk_found.GetHexStr(s); - printf("\r\nPRIVATE KEY: %s\r\n\r\n", s); - FILE* fp = fopen("RESULTS.TXT", "a"); - if (fp) - { - fprintf(fp, "PRIVATE KEY: %s\n", s); - fclose(fp); - } - else //we cannot save the key, show error and wait forever so the key is displayed - { - printf("WARNING: Cannot save the key to RESULTS.TXT!\r\n"); - while (1) - Sleep(100); - } - } - else - { - if (gGenMode) - printf("\r\nTAMES GENERATION MODE\r\n"); - else - printf("\r\nBENCHMARK MODE\r\n"); - //solve points, show K - while (1) - { - EcInt pk, pk_found; - EcPoint PntToSolve; - - if (!gRange) - gRange = 78; - if (!gDP) - gDP = 16; - - //generate random pk - pk.RndBits(gRange); - PntToSolve = ec.MultiplyG(pk); - - if (!SolvePoint(PntToSolve, gRange, gDP, &pk_found)) - { - if (!gIsOpsLimit) - printf("FATAL ERROR: SolvePoint failed\r\n"); - break; - } - if (!pk_found.IsEqual(pk)) - { - printf("FATAL ERROR: Found key is wrong!\r\n"); - break; - } - TotalOps += PntTotalOps; - TotalSolved++; - u64 ops_per_pnt = TotalOps / TotalSolved; - double K = (double)ops_per_pnt / pow(2.0, gRange / 2.0); - printf("Points solved: %d, average K: %.3f (with DP and GPU overheads)\r\n", TotalSolved, K); - //if (TotalSolved >= 100) break; //dbg - } - } -label_end: - for (int i = 0; i < GpuCnt; i++) - delete GpuKangs[i]; - DeInitEc(); - free(pPntList2); - free(pPntList); -} - +// This file is a part of RCKangaroo software +// (c) 2024, RetiredCoder (RC) +// License: GPLv3, see "LICENSE.TXT" file +// https://github.com/RetiredC + + +#include +#include + +#include + +#include "cuda_runtime.h" +#include "cuda.h" + +#include "defs.h" +#include "utils.h" +#ifndef DB_REC_LEN +#define DB_REC_LEN 32 +#endif +#include "GpuKang.h" + + +EcJMP EcJumps1[JMP_CNT]; +EcJMP EcJumps2[JMP_CNT]; +EcJMP EcJumps3[JMP_CNT]; + +RCGpuKang* GpuKangs[MAX_GPU_CNT]; +int GpuCnt; +volatile long ThrCnt; +volatile bool gSolved; + +EcInt Int_HalfRange; +EcPoint Pnt_HalfRange; +EcPoint Pnt_NegHalfRange; +EcInt Int_TameOffset; +Ec ec; + +CriticalSection csAddPoints; +u8* pPntList; +u8* pPntList2; +volatile int PntIndex; +TFastBase db; +EcPoint gPntToSolve; +EcInt gPrivKey; + +volatile u64 TotalOps; +u32 TotalSolved; +u32 gTotalErrors; +u64 PntTotalOps; +bool IsBench; + +u32 gDP; +u32 gRange; +EcInt gStart; +bool gStartSet; +EcPoint gPubKey; +u8 gGPUs_Mask[MAX_GPU_CNT]; +char gTamesFileName[1024]; +int gTameRatioPct = 33; +int gTameBitsOffset = 4; +double gMax; +bool gGenMode; //tames generation mode +bool gIsOpsLimit; + +#pragma pack(push, 1) +struct DBRec +{ + u8 x[12]; + u8 d[22]; + u8 type; //0 - tame, 1 - wild1, 2 - wild2 +}; +#pragma pack(pop) + +void InitGpus() +{ + GpuCnt = 0; + int gcnt = 0; + cudaGetDeviceCount(&gcnt); + if (gcnt > MAX_GPU_CNT) + gcnt = MAX_GPU_CNT; + +// gcnt = 1; //dbg + if (!gcnt) + return; + + int drv, rt; + cudaRuntimeGetVersion(&rt); + cudaDriverGetVersion(&drv); + char drvver[100]; + sprintf(drvver, "%d.%d/%d.%d", drv / 1000, (drv % 100) / 10, rt / 1000, (rt % 100) / 10); + + printf("CUDA devices: %d, CUDA driver/runtime: %s\r\n", gcnt, drvver); + cudaError_t cudaStatus; + for (int i = 0; i < gcnt; i++) + { + cudaStatus = cudaSetDevice(i); + if (cudaStatus != cudaSuccess) + { + printf("cudaSetDevice for gpu %d failed!\r\n", i); + continue; + } + + if (!gGPUs_Mask[i]) + continue; + + cudaDeviceProp deviceProp; + cudaGetDeviceProperties(&deviceProp, i); + printf("GPU %d: %s, %.2f GB, %d CUs, cap %d.%d, PCI %d, L2 size: %d KB\r\n", i, deviceProp.name, ((float)(deviceProp.totalGlobalMem / (1024 * 1024))) / 1024.0f, deviceProp.multiProcessorCount, deviceProp.major, deviceProp.minor, deviceProp.pciBusID, deviceProp.l2CacheSize / 1024); + + if (deviceProp.major < 6) + { + printf("GPU %d - not supported, skip\r\n", i); + continue; + } + + cudaSetDeviceFlags(cudaDeviceScheduleBlockingSync); + + GpuKangs[GpuCnt] = new RCGpuKang(); + GpuKangs[GpuCnt]->CudaIndex = i; + GpuKangs[GpuCnt]->persistingL2CacheMaxSize = deviceProp.persistingL2CacheMaxSize; + GpuKangs[GpuCnt]->mpCnt = deviceProp.multiProcessorCount; + GpuKangs[GpuCnt]->IsOldGpu = deviceProp.l2CacheSize < 16 * 1024 * 1024; + GpuCnt++; + } + printf("Total GPUs for work: %d\r\n", GpuCnt); +} +#ifdef _WIN32 +u32 __stdcall kang_thr_proc(void* data) +{ + RCGpuKang* Kang = (RCGpuKang*)data; + Kang->Execute(); + InterlockedDecrement(&ThrCnt); + return 0; +} +#else +void* kang_thr_proc(void* data) +{ + RCGpuKang* Kang = (RCGpuKang*)data; + Kang->Execute(); + __sync_fetch_and_sub(&ThrCnt, 1); + return 0; +} +#endif +void AddPointsToList(u32* data, int pnt_cnt, u64 ops_cnt) +{ + csAddPoints.Enter(); + if (PntIndex + pnt_cnt >= MAX_CNT_LIST) + { + csAddPoints.Leave(); + printf("DPs buffer overflow, some points lost, increase DP value!\r\n"); + return; + } + memcpy(pPntList + GPU_DP_SIZE * PntIndex, data, pnt_cnt * GPU_DP_SIZE); + PntIndex += pnt_cnt; + PntTotalOps += ops_cnt; + csAddPoints.Leave(); +} + +bool Collision_SOTA(EcPoint& pnt, EcInt t, int TameType, EcInt w, int WildType, bool IsNeg) +{ + if (IsNeg) + t.Neg(); + if (TameType == TAME) + { + gPrivKey = t; + gPrivKey.Sub(w); + EcInt sv = gPrivKey; + gPrivKey.Add(Int_HalfRange); + EcPoint P = ec.MultiplyG(gPrivKey); + if (P.IsEqual(pnt)) + return true; + gPrivKey = sv; + gPrivKey.Neg(); + gPrivKey.Add(Int_HalfRange); + P = ec.MultiplyG(gPrivKey); + return P.IsEqual(pnt); + } + else + { + gPrivKey = t; + gPrivKey.Sub(w); + if (gPrivKey.data[4] >> 63) + gPrivKey.Neg(); + gPrivKey.ShiftRight(1); + EcInt sv = gPrivKey; + gPrivKey.Add(Int_HalfRange); + EcPoint P = ec.MultiplyG(gPrivKey); + if (P.IsEqual(pnt)) + return true; + gPrivKey = sv; + gPrivKey.Neg(); + gPrivKey.Add(Int_HalfRange); + P = ec.MultiplyG(gPrivKey); + return P.IsEqual(pnt); + } +} + + +void CheckNewPoints() +{ + csAddPoints.Enter(); + if (!PntIndex) + { + csAddPoints.Leave(); + return; + } + + int cnt = PntIndex; + memcpy(pPntList2, pPntList, GPU_DP_SIZE * cnt); + PntIndex = 0; + csAddPoints.Leave(); + + for (int i = 0; i < cnt; i++) + { + DBRec nrec; + u8* p = pPntList2 + i * GPU_DP_SIZE; + memcpy(nrec.x, p, 12); + memcpy(nrec.d, p + 16, 22); + nrec.type = gGenMode ? TAME : p[40]; + + DBRec* pref = (DBRec*)db.FindOrAddDataBlock((u8*)&nrec); + if (gGenMode) + continue; + if (pref) + { + //in db we dont store first 3 bytes so restore them + DBRec tmp_pref; + memcpy(&tmp_pref, &nrec, 3); + size_t __rec_tail = (size_t)DB_REC_LEN; + size_t __exp_tail = (size_t)sizeof(DBRec) - 3; + size_t __cpy = __rec_tail < __exp_tail ? __rec_tail : __exp_tail; + memcpy(((u8*)&tmp_pref) + 3, pref, __cpy); + if (__cpy < __exp_tail) memset(((u8*)&tmp_pref) + 3 + __cpy, 0, __exp_tail - __cpy); + pref = &tmp_pref; + + if (pref->type == nrec.type) + { + if (pref->type == TAME) + continue; + + //if it's wild, we can find the key from the same type if distances are different + if (*(u64*)pref->d == *(u64*)nrec.d) + continue; + //else + // ToLog("key found by same wild"); + } + + EcInt w, t; + int TameType, WildType; + if (pref->type != TAME) + { + memcpy(w.data, pref->d, sizeof(pref->d)); + if (pref->d[21] == 0xFF) memset(((u8*)w.data) + 22, 0xFF, 18); + memcpy(t.data, nrec.d, sizeof(nrec.d)); + if (nrec.d[21] == 0xFF) memset(((u8*)t.data) + 22, 0xFF, 18); + TameType = nrec.type; + WildType = pref->type; + } + else + { + memcpy(w.data, nrec.d, sizeof(nrec.d)); + if (nrec.d[21] == 0xFF) memset(((u8*)w.data) + 22, 0xFF, 18); + memcpy(t.data, pref->d, sizeof(pref->d)); + if (pref->d[21] == 0xFF) memset(((u8*)t.data) + 22, 0xFF, 18); + TameType = TAME; + WildType = nrec.type; + } + + bool res = Collision_SOTA(gPntToSolve, t, TameType, w, WildType, false) || Collision_SOTA(gPntToSolve, t, TameType, w, WildType, true); + if (!res) + { + bool w12 = ((pref->type == WILD1) && (nrec.type == WILD2)) || ((pref->type == WILD2) && (nrec.type == WILD1)); + if (w12) //in rare cases WILD and WILD2 can collide in mirror, in this case there is no way to find K + ;// ToLog("W1 and W2 collides in mirror"); + else + { + printf("Collision Error\r\n"); + gTotalErrors++; + } + continue; + } + gSolved = true; + break; + } + } +} + +void ShowStats(u64 tm_start, double exp_ops, double dp_val) +{ +#ifdef DEBUG_MODE + for (int i = 0; i <= MD_LEN; i++) + { + u64 val = 0; + for (int j = 0; j < GpuCnt; j++) + { + val += GpuKangs[j]->dbg[i]; + } + if (val) + printf("Loop size %d: %llu\r\n", i, val); + } +#endif + + int speed = GpuKangs[0]->GetStatsSpeed(); + for (int i = 1; i < GpuCnt; i++) + speed += GpuKangs[i]->GetStatsSpeed(); + + u64 est_dps_cnt = (u64)(exp_ops / dp_val); + u64 exp_sec = 0xFFFFFFFFFFFFFFFFull; + if (speed) + exp_sec = (u64)((exp_ops / 1000000) / speed); //in sec + u64 exp_days = exp_sec / (3600 * 24); + int exp_hours = (int)(exp_sec - exp_days * (3600 * 24)) / 3600; + int exp_min = (int)(exp_sec - exp_days * (3600 * 24) - exp_hours * 3600) / 60; + + u64 sec = (GetTickCount64() - tm_start) / 1000; + u64 days = sec / (3600 * 24); + int hours = (int)(sec - days * (3600 * 24)) / 3600; + int min = (int)(sec - days * (3600 * 24) - hours * 3600) / 60; + + printf("%sSpeed: %d MKeys/s, Err: %d, DPs: %lluK/%lluK, Time: %llud:%02dh:%02dm/%llud:%02dh:%02dm\r\n", gGenMode ? "GEN: " : (IsBench ? "BENCH: " : "MAIN: "), speed, gTotalErrors, db.GetBlockCnt()/1000, est_dps_cnt/1000, days, hours, min, exp_days, exp_hours, exp_min); +} + +bool SolvePoint(EcPoint PntToSolve, int Range, int DP, EcInt* pk_res) +{ + if ((Range < 32) || (Range > 180)) + { + printf("Unsupported Range value (%d)!\r\n", Range); + return false; + } + if ((DP < 14) || (DP > 60)) + { + printf("Unsupported DP value (%d)!\r\n", DP); + return false; + } + + printf("\r\nSolving point: Range %d bits, DP %d, start...\r\n", Range, DP); + double ops = 1.15 * pow(2.0, Range / 2.0); + double dp_val = (double)(1ull << DP); + double ram = (32 + 4 + 4) * ops / dp_val; //+4 for grow allocation and memory fragmentation + ram += sizeof(TListRec) * 256 * 256 * 256; //3byte-prefix table + ram /= (1024 * 1024 * 1024); //GB + printf("SOTA method, estimated ops: 2^%.3f, RAM for DPs: %.3f GB. DP and GPU overheads not included!\r\n", log2(ops), ram); + gIsOpsLimit = false; + double MaxTotalOps = 0.0; + if (gMax > 0) + { + MaxTotalOps = gMax * ops; + double ram_max = (32 + 4 + 4) * MaxTotalOps / dp_val; //+4 for grow allocation and memory fragmentation + ram_max += sizeof(TListRec) * 256 * 256 * 256; //3byte-prefix table + ram_max /= (1024 * 1024 * 1024); //GB + printf("Max allowed number of ops: 2^%.3f, max RAM for DPs: %.3f GB\r\n", log2(MaxTotalOps), ram_max); + } + + u64 total_kangs = GpuKangs[0]->CalcKangCnt(); + for (int i = 1; i < GpuCnt; i++) + total_kangs += GpuKangs[i]->CalcKangCnt(); + double path_single_kang = ops / total_kangs; + double DPs_per_kang = path_single_kang / dp_val; + printf("Estimated DPs per kangaroo: %.3f.%s\r\n", DPs_per_kang, (DPs_per_kang < 5) ? " DP overhead is big, use less DP value if possible!" : ""); + + if (!gGenMode && gTamesFileName[0]) + { + printf("load tames...\r\n"); + if (db.LoadFromFile(gTamesFileName)) + { + printf("tames loaded\r\n"); + if (db.Header[0] != gRange) + { + printf("loaded tames have different range, they cannot be used, clear\r\n"); + db.Clear(); + } + } + else + printf("tames loading failed\r\n"); + } + + SetRndSeed(0); //use same seed to make tames from file compatible + PntTotalOps = 0; + PntIndex = 0; +//prepare jumps + EcInt minjump, t; + minjump.Set(1); + minjump.ShiftLeft(Range / 2 + 3); + for (int i = 0; i < JMP_CNT; i++) + { + EcJumps1[i].dist = minjump; + t.RndMax(minjump); + EcJumps1[i].dist.Add(t); + EcJumps1[i].dist.data[0] &= 0xFFFFFFFFFFFFFFFE; //must be even + EcJumps1[i].p = ec.MultiplyG(EcJumps1[i].dist); + } + + minjump.Set(1); + minjump.ShiftLeft(Range - 10); //large jumps for L1S2 loops. Must be almost RANGE_BITS + for (int i = 0; i < JMP_CNT; i++) + { + EcJumps2[i].dist = minjump; + t.RndMax(minjump); + EcJumps2[i].dist.Add(t); + EcJumps2[i].dist.data[0] &= 0xFFFFFFFFFFFFFFFE; //must be even + EcJumps2[i].p = ec.MultiplyG(EcJumps2[i].dist); + } + + minjump.Set(1); + minjump.ShiftLeft(Range - 10 - 2); //large jumps for loops >2 + for (int i = 0; i < JMP_CNT; i++) + { + EcJumps3[i].dist = minjump; + t.RndMax(minjump); + EcJumps3[i].dist.Add(t); + EcJumps3[i].dist.data[0] &= 0xFFFFFFFFFFFFFFFE; //must be even + EcJumps3[i].p = ec.MultiplyG(EcJumps3[i].dist); + } + SetRndSeed(GetTickCount64()); + + Int_HalfRange.Set(1); + Int_HalfRange.ShiftLeft(Range - 1); + Pnt_HalfRange = ec.MultiplyG(Int_HalfRange); + Pnt_NegHalfRange = Pnt_HalfRange; + Pnt_NegHalfRange.y.NegModP(); + Int_TameOffset.Set(1); + Int_TameOffset.ShiftLeft(Range - 1); + EcInt tt; + tt.Set(1); + tt.ShiftLeft(Range - 5); //half of tame range width + Int_TameOffset.Sub(tt); + gPntToSolve = PntToSolve; + +//prepare GPUs + for (int i = 0; i < GpuCnt; i++) + if (!GpuKangs[i]->Prepare(PntToSolve, Range, DP, EcJumps1, EcJumps2, EcJumps3)) + { + GpuKangs[i]->Failed = true; + printf("GPU %d Prepare failed\r\n", GpuKangs[i]->CudaIndex); + } + + u64 tm0 = GetTickCount64(); + printf("GPUs started...\r\n"); + +#ifdef _WIN32 + HANDLE thr_handles[MAX_GPU_CNT]; +#else + pthread_t thr_handles[MAX_GPU_CNT]; +#endif + + u32 ThreadID; + gSolved = false; + ThrCnt = GpuCnt; + for (int i = 0; i < GpuCnt; i++) + { +#ifdef _WIN32 + thr_handles[i] = (HANDLE)_beginthreadex(NULL, 0, kang_thr_proc, (void*)GpuKangs[i], 0, &ThreadID); +#else + pthread_create(&thr_handles[i], NULL, kang_thr_proc, (void*)GpuKangs[i]); +#endif + } + + u64 tm_stats = GetTickCount64(); + while (!gSolved) + { + CheckNewPoints(); + Sleep(10); + if (GetTickCount64() - tm_stats > 10 * 1000) + { + ShowStats(tm0, ops, dp_val); + tm_stats = GetTickCount64(); + } + + if ((MaxTotalOps > 0.0) && (PntTotalOps > MaxTotalOps)) + { + gIsOpsLimit = true; + printf("Operations limit reached\r\n"); + break; + } + } + + printf("Stopping work ...\r\n"); + for (int i = 0; i < GpuCnt; i++) + GpuKangs[i]->Stop(); + while (ThrCnt) + Sleep(10); + for (int i = 0; i < GpuCnt; i++) + { +#ifdef _WIN32 + CloseHandle(thr_handles[i]); +#else + pthread_join(thr_handles[i], NULL); +#endif + } + + if (gIsOpsLimit) + { + if (gGenMode) + { + printf("saving tames...\r\n"); + db.Header[0] = gRange; + if (db.SaveToFile(gTamesFileName)) + printf("tames saved\r\n"); + else + printf("tames saving failed\r\n"); + } + db.Clear(); + return false; + } + + double K = (double)PntTotalOps / pow(2.0, Range / 2.0); + printf("Point solved, K: %.3f (with DP and GPU overheads)\r\n\r\n", K); + db.Clear(); + *pk_res = gPrivKey; + return true; +} + +bool ParseCommandLine(int argc, char* argv[]) +{ + int ci = 1; + while (ci < argc) + { + char* argument = argv[ci]; + ci++; + if (strcmp(argument, "-gpu") == 0) + { + if (ci >= argc) + { + printf("error: missed value after -gpu option\r\n"); + return false; + } + char* gpus = argv[ci]; + ci++; + memset(gGPUs_Mask, 0, sizeof(gGPUs_Mask)); + for (int i = 0; i < (int)strlen(gpus); i++) + { + if ((gpus[i] < '0') || (gpus[i] > '9')) + { + printf("error: invalid value for -gpu option\r\n"); + return false; + } + gGPUs_Mask[gpus[i] - '0'] = 1; + } + } + else + if (strcmp(argument, "-dp") == 0) + { + int val = atoi(argv[ci]); + ci++; + if ((val < 14) || (val > 60)) + { + printf("error: invalid value for -dp option\r\n"); + return false; + } + gDP = val; + } + else + if (strcmp(argument, "-range") == 0) + { + int val = atoi(argv[ci]); + ci++; + if ((val < 32) || (val > 170)) + { + printf("error: invalid value for -range option\r\n"); + return false; + } + gRange = val; + } + else + if (strcmp(argument, "-start") == 0) + { + if (!gStart.SetHexStr(argv[ci])) + { + printf("error: invalid value for -start option\r\n"); + return false; + } + ci++; + gStartSet = true; + } + else + if (strcmp(argument, "-pubkey") == 0) + { + if (!gPubKey.SetHexStr(argv[ci])) + { + printf("error: invalid value for -pubkey option\r\n"); + return false; + } + ci++; + } + else + if (strcmp(argument, "-tame-ratio") == 0) + { + if (ci >= argc) { printf("error: missed value after -tame-ratio option\r\n"); return false; } + int ratio = atoi(argv[ci]); ci++; + if (ratio < 1 || ratio > 90) { printf("error: invalid value for -tame-ratio (1..90)\r\n"); return false; } + gTameRatioPct = ratio; + } + else + if (strcmp(argument, "-tame-bits") == 0) + { + if (ci >= argc) { printf("error: missed value after -tame-bits option\r\n"); return false; } + int bits = atoi(argv[ci]); ci++; + if (bits < 1 || bits > 32) { printf("error: invalid value for -tame-bits (1..32)\r\n"); return false; } + gTameBitsOffset = bits; + } + + else + if (strcmp(argument, "-tames") == 0) + { + if (ci >= argc) { printf("error: missed value after -tames option\r\n"); return false; } + strncpy(gTamesFileName, argv[ci], sizeof(gTamesFileName)-1); + gTamesFileName[sizeof(gTamesFileName)-1] = 0; + ci++; + } + else + if (strcmp(argument, "-max") == 0) + { + if (ci >= argc) { printf("error: missed value after -max option\r\n"); return false; } + double val = atof(argv[ci]); ci++; + if (!(val > 0.0)) { printf("error: invalid value for -max option\r\n"); return false; } + gMax = val; + } +else + { + printf("error: unknown option %s\r\n", argument); + return false; + } + } + if (!gPubKey.x.IsZero()) + if (!gStartSet || !gRange || !gDP) + { + printf("error: you must also specify -dp, -range and -start options\r\n"); + return false; + } + if (gTamesFileName[0] && !IsFileExist(gTamesFileName)) + { + if (gMax == 0.0) + { + printf("error: you must also specify -max option to generate tames\r\n"); + return false; + } + gGenMode = true; + } + return true; +} + +int main(int argc, char* argv[]) +{ +#ifdef _DEBUG + _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); +#endif + + printf("********************************************************************************\r\n"); + printf("* RCKangaroo v3.0 (c) 2024 RetiredCoder *\r\n"); + printf("********************************************************************************\r\n\r\n"); + + printf("This software is free and open-source: https://github.com/RetiredC\r\n"); + printf("It demonstrates fast GPU implementation of SOTA Kangaroo method for solving ECDLP\r\n"); + +#ifdef _WIN32 + printf("Windows version\r\n"); +#else + printf("Linux version\r\n"); +#endif + +#ifdef DEBUG_MODE + printf("DEBUG MODE\r\n\r\n"); +#endif + + InitEc(); + gDP = 0; + gRange = 0; + gStartSet = false; + gTamesFileName[0] = 0; + gMax = 0.0; + gGenMode = false; + gIsOpsLimit = false; + memset(gGPUs_Mask, 1, sizeof(gGPUs_Mask)); + if (!ParseCommandLine(argc, argv)) + return 0; + + InitGpus(); + + if (!GpuCnt) + { + printf("No supported GPUs detected, exit\r\n"); + return 0; + } + + pPntList = (u8*)malloc(MAX_CNT_LIST * GPU_DP_SIZE); + pPntList2 = (u8*)malloc(MAX_CNT_LIST * GPU_DP_SIZE); + TotalOps = 0; + TotalSolved = 0; + gTotalErrors = 0; + IsBench = gPubKey.x.IsZero(); + + if (!IsBench && !gGenMode) + { + printf("\r\nMAIN MODE\r\n\r\n"); + EcPoint PntToSolve, PntOfs; + EcInt pk, pk_found; + + PntToSolve = gPubKey; + if (!gStart.IsZero()) + { + PntOfs = ec.MultiplyG(gStart); + PntOfs.y.NegModP(); + PntToSolve = ec.AddPoints(PntToSolve, PntOfs); + } + + char sx[100], sy[100]; + gPubKey.x.GetHexStr(sx); + gPubKey.y.GetHexStr(sy); + printf("Solving public key\r\nX: %s\r\nY: %s\r\n", sx, sy); + gStart.GetHexStr(sx); + printf("Offset: %s\r\n", sx); + + if (!SolvePoint(PntToSolve, gRange, gDP, &pk_found)) + { + if (!gIsOpsLimit) + printf("FATAL ERROR: SolvePoint failed\r\n"); + goto label_end; + } + pk_found.AddModP(gStart); + EcPoint tmp = ec.MultiplyG(pk_found); + if (!tmp.IsEqual(gPubKey)) + { + printf("FATAL ERROR: SolvePoint found incorrect key\r\n"); + goto label_end; + } + //happy end + char s[100]; + pk_found.GetHexStr(s); + printf("\r\nPRIVATE KEY: %s\r\n\r\n", s); + FILE* fp = fopen("RESULTS.TXT", "a"); + if (fp) + { + fprintf(fp, "PRIVATE KEY: %s\n", s); + fclose(fp); + } + else //we cannot save the key, show error and wait forever so the key is displayed + { + printf("WARNING: Cannot save the key to RESULTS.TXT!\r\n"); + while (1) + Sleep(100); + } + } + else + { + if (gGenMode) + printf("\r\nTAMES GENERATION MODE\r\n"); + else + printf("\r\nBENCHMARK MODE\r\n"); + //solve points, show K + while (1) + { + EcInt pk, pk_found; + EcPoint PntToSolve; + + if (!gRange) + gRange = 78; + if (!gDP) + gDP = 16; + + //generate random pk + pk.RndBits(gRange); + PntToSolve = ec.MultiplyG(pk); + + if (!SolvePoint(PntToSolve, gRange, gDP, &pk_found)) + { + if (!gIsOpsLimit) + printf("FATAL ERROR: SolvePoint failed\r\n"); + break; + } + if (!pk_found.IsEqual(pk)) + { + printf("FATAL ERROR: Found key is wrong!\r\n"); + break; + } + TotalOps += PntTotalOps; + TotalSolved++; + u64 ops_per_pnt = TotalOps / TotalSolved; + double K = (double)ops_per_pnt / pow(2.0, gRange / 2.0); + printf("Points solved: %d, average K: %.3f (with DP and GPU overheads)\r\n", TotalSolved, K); + //if (TotalSolved >= 100) break; //dbg + } + } +label_end: + for (int i = 0; i < GpuCnt; i++) + delete GpuKangs[i]; + DeInitEc(); + free(pPntList2); + free(pPntList); +} diff --git a/RCKangaroo.sln b/RCKangaroo.sln deleted file mode 100644 index f5d8c2a..0000000 --- a/RCKangaroo.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.12.35514.174 d17.12 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RCKangaroo", "RCKangaroo.vcxproj", "{B7EF30AA-1D02-4EC4-A835-08766EC4A094}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B7EF30AA-1D02-4EC4-A835-08766EC4A094}.Debug|x64.ActiveCfg = Debug|x64 - {B7EF30AA-1D02-4EC4-A835-08766EC4A094}.Debug|x64.Build.0 = Debug|x64 - {B7EF30AA-1D02-4EC4-A835-08766EC4A094}.Debug|x86.ActiveCfg = Debug|Win32 - {B7EF30AA-1D02-4EC4-A835-08766EC4A094}.Debug|x86.Build.0 = Debug|Win32 - {B7EF30AA-1D02-4EC4-A835-08766EC4A094}.Release|x64.ActiveCfg = Release|x64 - {B7EF30AA-1D02-4EC4-A835-08766EC4A094}.Release|x64.Build.0 = Release|x64 - {B7EF30AA-1D02-4EC4-A835-08766EC4A094}.Release|x86.ActiveCfg = Release|Win32 - {B7EF30AA-1D02-4EC4-A835-08766EC4A094}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/RCKangaroo.vcxproj b/RCKangaroo.vcxproj deleted file mode 100644 index 53916d9..0000000 --- a/RCKangaroo.vcxproj +++ /dev/null @@ -1,173 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {b7ef30aa-1d02-4ec4-a835-08766ec4a094} - RCKangaroo - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - MultiByte - - - Application - false - v143 - true - MultiByte - Static - - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - true - EnableFastChecks - StreamingSIMDExtensions2 - - - Console - true - - - compute_89,sm_89;compute_86,sm_86;compute_75,sm_75;compute_61,sm_61 - 0 - false - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - true - StreamingSIMDExtensions2 - - - Console - true - true - true - - - compute_89,sm_89;compute_86,sm_86;compute_75,sm_75;compute_61,sm_61 - - - - - Disabled - Default - Speed - ProgramDatabase - - - - - - - - - - - - - - - false - true - true - - - - - - - \ No newline at end of file diff --git a/RCKangaroo.vcxproj.user b/RCKangaroo.vcxproj.user deleted file mode 100644 index ac7bdd1..0000000 --- a/RCKangaroo.vcxproj.user +++ /dev/null @@ -1,11 +0,0 @@ - - - - -gpu 0 -tames tames78.dat -max 10 - WindowsLocalDebugger - - - -gpu 0 -dp 16 -range 84 -start 1000000000000000000000 -pubkey 0329c4574a4fd8c810b7e42a4b398882b381bcd85e40c6883712912d167c83e73a - WindowsLocalDebugger - - \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index b272088..0000000 --- a/README.md +++ /dev/null @@ -1,75 +0,0 @@ -(c) 2024, RetiredCoder (RC) - -RCKangaroo is free and open-source (GPLv3). -This software demonstrates efficient GPU implementation of SOTA Kangaroo method for solving ECDLP. -It's part #3 of my research, you can find more details here: https://github.com/RetiredC - -Discussion thread: https://bitcointalk.org/index.php?topic=5517607 - -Features: - -- Lowest K=1.15, it means 1.8 times less required operations compared to classic method with K=2.1, also it means that you need 1.8 times less memory to store DPs. -- Fast, about 8GKeys/s on RTX 4090, 4GKeys/s on RTX 3090. -- Keeps DP overhead as small as possible. -- Supports ranges up to 170 bits. -- Both Windows and Linux are supported. - -Limitations: - -- No advanced features like networking, saving/loading DPs, etc. - -Command line parameters: - --gpu which GPUs are used, for example, "035" means that GPUs #0, #3 and #5 are used. If not specified, all available GPUs are used. - --pubkey public key to solve, both compressed and uncompressed keys are supported. If not specified, software starts in benchmark mode and solves random keys. - --start start offset of the key, in hex. Mandatory if "-pubkey" option is specified. For example, for puzzle #85 start offset is "1000000000000000000000". - --range bit range of private the key. Mandatory if "-pubkey" option is specified. For example, for puzzle #85 bit range is "84" (84 bits). Must be in range 32...170. - --dp DP bits. Must be in range 14...60. Low DP bits values cause larger DB but reduces DP overhead and vice versa. - --max option to limit max number of operations. For example, value 5.5 limits number of operations to 5.5 * 1.15 * sqrt(range), software stops when the limit is reached. - --tames filename with tames. If file not found, software generates tames (option "-max" is required) and saves them to the file. If the file is found, software loads tames to speedup solving. - -When public key is solved, software displays it and also writes it to "RESULTS.TXT" file. - -Sample command line for puzzle #85: - -RCKangaroo.exe -dp 16 -range 84 -start 1000000000000000000000 -pubkey 0329c4574a4fd8c810b7e42a4b398882b381bcd85e40c6883712912d167c83e73a - -Sample command to generate tames: - -RCKangaroo.exe -dp 16 -range 76 -tames tames76.dat -max 10 - -Then you can restart software with same parameters to see less K in benchmark mode or add "-tames tames76.dat" to solve some public key in 76-bit range faster. - -Some notes: - -Fastest ECDLP solvers will always use SOTA/SOTA+ method, as it's 1.4/1.5 times faster and requires less memory for DPs compared to the best 3-way kangaroos with K=1.6. -Even if you already have a faster implementation of kangaroo jumps, incorporating SOTA method will improve it further. -While adding the necessary loop-handling code will cause you to lose about 5–15% of your current speed, the SOTA method itself will provide a 40% performance increase. -Overall, this translates to roughly a 25% net improvement, which should not be ignored if your goal is to build a truly fast solver. - - -Changelog: - -v3.0: - -- added "-tames" and "-max" options. -- fixed some bugs. - -v2.0: - -- added support for 30xx, 20xx and 1xxx cards. -- some minor changes. - -v1.1: - -- added ability to start software on 30xx cards. - -v1.0: - -- initial release. \ No newline at end of file diff --git a/README_es_v16.md b/README_es_v16.md new file mode 100644 index 0000000..a1244f0 --- /dev/null +++ b/README_es_v16.md @@ -0,0 +1,228 @@ +# RCKangaroo v1.5 (build local) + +Implementación de *Kangaroo ECDLP* acelerada por GPU con varias mejoras +orientadas a **tiempo de cómputo** y **uso de memoria / I/O**. + +> Probado con CUDA 12.x y NVIDIA RTX 3060 (SM 8.6). +> Esta rama mantiene la **CLI original** y añade banderas/guías para *tame tuning* y *benchmarks*. + + +## Novedades técnicas (V1.5) + +1) **Coordenadas Jacobianas en GPU** (opt-in) + - Suma/doblado en Jacobiano para evitar inversiones modulares por paso. + - Conversión a afin **solo cuando hace falta** (p.ej. para DPs o salida). + - Add mixta (*Jacobian + Affine precomp*) para puntos de salto. + - Conmutador de compilación: `USE_JACOBIAN=1` (habilitado en build por defecto de esta rama). + +2) **Inversión por lotes (Truco de Montgomery)** + - Se invierten muchos `Z` con **una sola inversión** y productos hacia delante/atrás. + - Útil en compactación/normalización de estados y/o verificaciones masivas. + +3) **TAMES v1.5 – formato compacto** + - **~30–35% menos tamaño** vs. formato clásico en nuestros tests (p.ej. 84 MB → 57 MB). + - Layout contiguo + compresión ligera (delta + varint/RLE) y lectura *streaming*. + - Carga más rápida y menos *pressure* de caché/L2/PCIe. + - **Compatibilidad**: el binario sigue aceptando el formato anterior; si el archivo no es v1.5, se lee por la ruta clásica. + +4) **Menos I/O y binario optimizado** + - Flags `-ffunction-sections -fdata-sections` (host) y `-Xfatbin=-compress-all` (device). + - Caché L1/tex en *ptxas* via `-Xptxas -dlcm=ca` en `build.sh`. + +> Nota: la *Montgomery Ladder* también está disponible en el código, pero no se fuerza por CLI; se usó Jacobiano + ventanas clásicas/mixtas, que mostraron mejor relación velocidad/uso de recursos en Ampere. + +--- + +--- + +## 🚀 Novedades en v1.6 + +### Mejoras en GPU +- **Atómicas warp-aggregadas en emisión de DPs**: reduce de 32 atómicas por warp a 1, con escrituras coalescentes. **+10–30% rendimiento** según GPU y -dp. +- **Mejor coalescencia de memoria** en DPs y transferencias PCIe. + +### Nuevo formato `.dat` (v1.6) +- **28B por registro DP** (vs 32B en v1.5). + - Cola de X: 5 bytes (antes 9). + - Distancia: 22 bytes. + - Tipo: 1 byte. +- **Etiqueta de archivo `TMBM16`** identifica el nuevo formato. +- **Compatibilidad hacia atrás**: lectura de v1.5 y v1.6. + +### Benchmarks (RTX 3060) +- v1.5: ~750 MKey/s @ -dp 16. +- v1.6: ~870 MKey/s @ -dp 16. +- ~16% más rápido y ~12.5% menos tamaño en `.dat`. + + + +## Archivos modificados / añadidos + +- **`RCGpuCore.cu`** + Implementaciones Jacobianas (doble/suma mixta), camino de *batch inversion* y selección de kernels según `USE_JACOBIAN`. + +- **`RCGpuUtils.h`** + Primitivas de campo y helpers para Jacobiano (doble / add mixed). + +- **`utils.h`, `utils.cpp`** + - Nueva ruta de **lectura/escritura TAMES v1.5** (streaming, compacta). + - Limpieza de utilidades y helpers varios. + +- **`GpuKang.cpp`, `GpuKang.h`** + - Parámetros de *tame tuning* (ratio y bits) expuestos para benchs controlados. + - Generación de distancias y partición *tame/wild* estable. + +- **`RCKangaroo.cpp`** + - Parsing de CLI y *guard-rails* (mensajes de error consistentes). + - Modo *bench* más verboso. + +- **`Makefile`** + - Objetivo directo para `rckangaroo` (sin librerías intermedias). + - Soporte `SM`, `USE_JACOBIAN`, `PROFILE` y *linking* determinista. + +- **Scripts de apoyo** + - `build.sh` – *wrapper* de compilación multi-SM. + - `bench_grid.sh` – *sweep* de parámetros (dp / tame-bits / tame-ratio) con repetición y logs. + - `bench_rck.sh` – *benchmark* de A/B rápido. + - `summarize_bench.py` – parser de logs → CSV (speed, tiempo real, RSS, parámetros). + +--- + +## Árbol del proyecto (esta rama) + +``` +. +├── logs/ # salida de bench_grid.sh +├── bench_grid.sh +├── bench_rck.sh +├── build.sh +├── Makefile +├── defs.h +├── Ec.cpp +├── Ec.h +├── GpuKang.cpp +├── GpuKang.h +├── RCGpuCore.cu +├── RCGpuUtils.h +├── RCKangaroo.cpp +├── rckangaroo # binario (tras build) +├── summarize_bench.py +├── tames71.dat # ejemplo formato clásico +├── tames71_v15.dat # ejemplo formato v1.5 (compacto) +├── utils.cpp +└── utils.h +``` + +--- + +## Compilación + +### Opción A – `build.sh` (recomendada) +```bash +# Sintaxis: ./build.sh +./build.sh 86 1 release # RTX 3060 (SM 8.6), Jacobiano ON +./build.sh 86 0 release # Jacobiano OFF (afin) para A/B +``` +Genera `./rckangaroo` en el directorio actual. + +### Opción B – `make` +```bash +# Variables: SM, USE_JACOBIAN, PROFILE=(release|debug) +make SM=86 USE_JACOBIAN=1 PROFILE=release -j +``` + +> Requisitos: CUDA 12+, `g++` C++17, driver suficiente para la SM objetivo. + + +--- + +## Modo de uso (CLI) + +Ejemplo mínimo (con TAMES v1.5): +```bash +./rckangaroo \ + -pubkey 0290e6900a58d33393bc1097b5aed31f2e4e7cbd3e5466af958665bc0121248483 \ + -range 71 \ + -dp 16 \ + -start 0 \ + -tames tames71_v15.dat +``` + +Parámetros útiles de *tame tuning* (se pasan por CLI y se reflejan en logs de bench): +``` + -tame-bits # bits usados para los saltos "tame" (p.ej. 4–7) + -tame-ratio # porcentaje de canguros tame (p.ej. 25–50) +``` +Ejemplo: +```bash +./rckangaroo ... -tame-bits 4 -tame-ratio 33 +``` + +> Sugerencia: buscar combinaciones que **maximicen MKeys/s** pero con **menor tiempo real** y **memoria** aceptable. + + +--- + +## Benchmarks automatizados + +### Barrido de parámetros (grilla) +```bash +# Editar cabezal del archivo para ajustar PUBKEY/RANGE/DP/TAMES/etc. +chmod +x bench_grid.sh summarize_bench.py + +# Ejecutar barrido (graba todo en logs/) +./bench_grid.sh + +# Resumir a CSV y visualizar +python3 summarize_bench.py logs > summary.csv +column -s, -t < summary.csv | less -S +``` +Comparativa Jacobiano OFF/ON: +```bash +# Jacobiano ON +./build.sh 86 1 release && MODE_TAG="j1" ./bench_grid.sh +python3 summarize_bench.py logs > summary_j1.csv + +# Jacobiano OFF +./build.sh 86 0 release && MODE_TAG="j0" ./bench_grid.sh +python3 summarize_bench.py logs > summary_j0.csv +``` + +> **TIP**: Dejá `REPEATS>=5` para mitigar jitter; el parser reporta **medianas** por combinación. + + +--- + +## Resultados de referencia (orientativos) + +En pruebas rápidas de 71 bits en RTX 3060: +- **TAMES v1.5**: 84 MB → **57 MB** (~32% menor). +- **Tiempo real**: ~100 s → **~65 s** (Jacobiano + v1.5 + mismos parámetros). +- **RSS**: ligera reducción (≈ -20–30 MB según corrida). + +> Los números varían por DP, *tame-bits*, *tame-ratio*, reloj de la GPU y versión de driver. + + +--- + +## Compatibilidad y notas + +- El binario mantiene la lectura del formato de TAMES **clásico** y del **v1.5** (detectados por cabecera / heurística). +- Si necesitás convertir masivamente a v1.5, se recomienda regenerar con el *pipeline* que usás para crear los tames, apuntando al escritor v1.5 (ver `utils.cpp`). + + +--- + +## Solución de problemas + +- **`Unknown option -ffunction-sections` en NVCC**: usá `build.sh` (pasa por `-Xcompiler`). +- **`No rule to make target 'RCGpuCore.o'`**: asegurate de usar este repositorio / Makefile o `./build.sh`. +- **`CUDA error / cap mismatch`**: compila con `./build.sh ...` (p.ej. 75 para Turing, 86 para Ampere). + + +--- + +## Licencia + +Mantiene la licencia del proyecto original (ver `LICENSE.TXT` si aplica). +Autorizado a ser usado con fines de investigación y educativos. diff --git a/README_v16.md b/README_v16.md new file mode 100644 index 0000000..faf8c43 --- /dev/null +++ b/README_v16.md @@ -0,0 +1,221 @@ +# RCKangaroo v1.5 (local build) + +GPU-accelerated **Kangaroo ECDLP** implementation with improvements focused on +**compute time** and **memory / I/O** efficiency. + +> Tested with CUDA 12.x and NVIDIA RTX 3060 (SM 8.6). +> This branch keeps the **original CLI** and adds flags/guides for *tame tuning* and *benchmarks*. + +--- + +--- + +## 🚀 What’s New in v1.6 + +### GPU Improvements +- **Warp-aggregated atomics for DP emission**: reduced per-thread atomics to a single warp-level atomic, coalesced writes. **+10–30% throughput** depending on GPU and -dp. +- **Better memory coalescing** for DPs and PCIe transfers. + +### New `.dat` Format (v1.6) +- **28B per DP record** (vs 32B in v1.5). + - X tail: 5 bytes (was 9). + - Distance: 22 bytes. + - Type: 1 byte. +- **File tag `TMBM16`** identifies new format. +- **Backward compatible**: reads both v1.5 and v1.6. + +### Benchmarks (RTX 3060) +- v1.5: ~750 MKey/s @ -dp 16. +- v1.6: ~870 MKey/s @ -dp 16. +- ~16% faster and ~12.5% smaller `.dat` files. + + + +## Technical Highlights (V1.5) + +1) **Jacobian Coordinates on GPU** (opt‑in) + - Point add/double in Jacobian to avoid modular inversions per step. + - Convert back to affine **only when needed** (e.g., DPs or output). + - Mixed add (*Jacobian + Affine precomp*) for jump points. + - Build switch: `USE_JACOBIAN=1` (enabled by default in this branch). + +2) **Batch Inversion (Montgomery trick)** + - Invert many `Z` values with **a single** field inversion using forward/backward products. + - Useful for compacting/normalizing states and bulk verifications. + +3) **TAMES v1.5 – compact file format** + - **~30–35% smaller** than the classic layout in our tests (e.g., 84 MB → 57 MB). + - Contiguous layout + light compression (delta + varint/RLE) with streaming reads. + - Faster load and lower cache/L2/PCIe pressure. + - **Compatibility**: the binary still accepts the classic format; if the file is not v1.5, it uses the legacy path. + +4) **Less I/O and optimized binary size** + - Host flags `-ffunction-sections -fdata-sections`; device fatbin compression `-Xfatbin=-compress-all`. + - L1/tex cache hint via `-Xptxas -dlcm=ca` in `build.sh`. + +> Note: *Montgomery Ladder* is available in code but not enforced via CLI; Jacobian + classic/mixed windows showed a better perf/resource balance on Ampere. + +--- + +## Modified / Added Files + +- **`RCGpuCore.cu`** + Jacobian implementations (double/mixed-add), batch inversion path, and kernel selection via `USE_JACOBIAN`. + +- **`RCGpuUtils.h`** + Field primitives and helpers for Jacobian (double / mixed add). + +- **`utils.h`, `utils.cpp`** + - New **TAMES v1.5 reader/writer** (streaming, compact). + - Utility cleanups. + +- **`GpuKang.cpp`, `GpuKang.h`** + - Exposed *tame tuning* parameters (ratio and bits) for controlled benches. + - Distance generation and stable tame/wild partitioning. + +- **`RCKangaroo.cpp`** + - CLI parsing + guard rails (consistent error messages). + - More verbose bench output. + +- **`Makefile`** + - Direct `rckangaroo` target (no intermediate archives). + - Support for `SM`, `USE_JACOBIAN`, `PROFILE`, and deterministic linking. + +- **Helper scripts** + - `build.sh` – multi‑SM build wrapper. + - `bench_grid.sh` – parameter sweep (dp / tame-bits / tame-ratio) with repeats and logs. + - `bench_rck.sh` – quick A/B benchmark. + - `summarize_bench.py` – log parser → CSV (speed, wall time, RSS, parameters). + +--- + +## Project Tree (this branch) + +``` +. +├── logs/ # output from bench_grid.sh +├── bench_grid.sh +├── bench_rck.sh +├── build.sh +├── Makefile +├── defs.h +├── Ec.cpp +├── Ec.h +├── GpuKang.cpp +├── GpuKang.h +├── RCGpuCore.cu +├── RCGpuUtils.h +├── RCKangaroo.cpp +├── rckangaroo # binary after build +├── summarize_bench.py +├── tames71.dat # classic format example +├── tames71_v15.dat # v1.5 compact example +├── utils.cpp +└── utils.h +``` + +--- + +## Build + +### Option A – `build.sh` (recommended) +```bash +# Syntax: ./build.sh +./build.sh 86 1 release # RTX 3060 (SM 8.6), Jacobian ON +./build.sh 86 0 release # Jacobian OFF (affine) for A/B +``` +Produces `./rckangaroo` in the current directory. + +### Option B – `make` +```bash +# Variables: SM, USE_JACOBIAN, PROFILE=(release|debug) +make SM=86 USE_JACOBIAN=1 PROFILE=release -j +``` + +> Requirements: CUDA 12+, `g++` with C++17, and a driver supporting your target SM. + + +--- + +## Usage (CLI) + +Minimal example (with TAMES v1.5): +```bash +./rckangaroo \ + -pubkey 0290e6900a58d33393bc1097b5aed31f2e4e7cbd3e5466af958665bc0121248483 \ + -range 71 \ + -dp 16 \ + -start 0 \ + -tames tames71_v15.dat +``` + +Tame tuning parameters (reflected in bench logs): +``` + -tame-bits # bits used for tame jumps (e.g., 4–7) + -tame-ratio # percent of tame kangaroos (e.g., 25–50) +``` +Example: +```bash +./rckangaroo ... -tame-bits 4 -tame-ratio 33 +``` + +> Goal: find combinations that **maximize MKeys/s** while minimizing **wall time** and keeping **memory** acceptable. + + +--- + +## Automated Benchmarks + +### Parameter sweep (grid) +```bash +# Edit the header of the script to set PUBKEY/RANGE/DP/TAMES/etc. +chmod +x bench_grid.sh summarize_bench.py + +# Run grid (stores everything under logs/) +./bench_grid.sh + +# Summarize to CSV +python3 summarize_bench.py logs > summary.csv +column -s, -t < summary.csv | less -S +``` +Jacobian OFF/ON comparison: +```bash +# Jacobian ON +./build.sh 86 1 release && MODE_TAG="j1" ./bench_grid.sh +python3 summarize_bench.py logs > summary_j1.csv + +# Jacobian OFF +./build.sh 86 0 release && MODE_TAG="j0" ./bench_grid.sh +python3 summarize_bench.py logs > summary_j0.csv +``` + +> **TIP**: Use `REPEATS>=5` to reduce jitter; the parser reports **medians** per combination. + + +--- + +## Reference Results (indicative) + +Quick 71‑bit tests on an RTX 3060: +- **TAMES v1.5**: 84 MB → **57 MB** (~32% smaller). +- **Wall time**: ~100 s → **~65 s** (Jacobian + v1.5 with same parameters). +- **RSS**: slight reduction (≈ −20–30 MB depending on run). + +> Numbers vary with DP, *tame-bits*, *tame-ratio*, GPU clocks, and driver version. + + +--- + +## Troubleshooting + +- **`Unknown option -ffunction-sections` from NVCC**: use `build.sh` (passes via `-Xcompiler`). +- **`No rule to make target 'RCGpuCore.o'`**: use this repo/Makefile or `./build.sh`. +- **`CUDA error / cap mismatch`**: compile via `./build.sh ...` (e.g., 75 for Turing, 86 for Ampere). + + +--- + +## License + +Inherits the original project’s license (see `LICENSE.TXT` if present). +Permitted for research and educational use. diff --git a/bench_grid.sh b/bench_grid.sh new file mode 100755 index 0000000..8b03c17 --- /dev/null +++ b/bench_grid.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +set -euo pipefail + +# ========= Config por defecto (sobre-escribibles por variables de entorno) ========= +PUBKEY="${PUBKEY:-0290e6900a58d33393bc1097b5aed31f2e4e7cbd3e5466af958665bc0121248483}" +RANGE="${RANGE:-71}" +START="${START:-0}" +TAMES_FILE="${TAMES_FILE:-tames71_v15.dat}" # Cambiá si querés otro archivo +REPEATS="${REPEATS:-5}" +DP_LIST="${DP_LIST:-14 15 16}" +TAME_BITS_LIST="${TAME_BITS_LIST:-4 5}" +TAME_RATIO_LIST="${TAME_RATIO_LIST:-25 33 40}" +MODE_TAG="${MODE_TAG:-j1}" # usa j1/j0 para distinguir Jacobiano ON/OFF +LOGDIR="${LOGDIR:-logs}" + +mkdir -p "$LOGDIR" + +echo "== Bench grid ==" +echo "PUBKEY=$PUBKEY" +echo "RANGE=$RANGE START=$START" +echo "TAMES_FILE=$TAMES_FILE" +echo "REPEATS=$REPEATS" +echo "DP_LIST=$DP_LIST" +echo "TAME_BITS_LIST=$TAME_BITS_LIST" +echo "TAME_RATIO_LIST=$TAME_RATIO_LIST" +echo "MODE_TAG=$MODE_TAG" +echo "LOGDIR=$LOGDIR" +echo + +# Chequeos +if [[ ! -x "./rckangaroo" ]]; then + echo "ERROR: ./rckangaroo no existe o no es ejecutable. Compilá primero." >&2 + exit 1 +fi +if [[ ! -f "$TAMES_FILE" ]]; then + echo "ERROR: no se encontró $TAMES_FILE" >&2 + exit 1 +fi + +run_one() { + local dp="$1" + local tb="$2" + local tr="$3" + local r="$4" + local of="$LOGDIR/${MODE_TAG}_dp${dp}_tb${tb}_tr${tr}_run${r}.log" + + echo ">> dp=$dp tame-bits=$tb tame-ratio=$tr run=$r" + /usr/bin/time -f "%E real %Mk RSS %I in KB %O out KB" \ + ./rckangaroo -pubkey "$PUBKEY" -range "$RANGE" -dp "$dp" -start "$START" \ + -tames "$TAMES_FILE" -tame-bits "$tb" -tame-ratio "$tr" \ + |& tee "$of" +} + +for dp in $DP_LIST; do + for tb in $TAME_BITS_LIST; do + for tr in $TAME_RATIO_LIST; do + for r in $(seq 1 "$REPEATS"); do + run_one "$dp" "$tb" "$tr" "$r" + done + done + done +done + +echo +echo "== Listo. Logs guardados en $LOGDIR" +echo "Sugerencia: python3 summarize_bench.py $LOGDIR > summary_${MODE_TAG}.csv" diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..10ac8bf --- /dev/null +++ b/build.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail + +SM="${1:-86}" +USE_JACOBIAN="${2:-1}" +PROFILE="${3:-release}" +CUDA_PATH="${CUDA_PATH:-/usr/local/cuda-12.0}" + +HOST_COPT_release="-O3 -DNDEBUG -ffunction-sections -fdata-sections" +HOST_COPT_debug="-O0 -g" +DEV_COPT_release="-O3" +DEV_COPT_debug="-O0 -g" + +if [[ "$PROFILE" == "release" ]]; then + HOST_COPT="$HOST_COPT_release" + DEV_COPT="$DEV_COPT_release" +else + HOST_COPT="$HOST_COPT_debug" + DEV_COPT="$DEV_COPT_debug" +fi + +CCFLAGS="-std=c++17 -I${CUDA_PATH}/include ${HOST_COPT} -DUSE_JACOBIAN=${USE_JACOBIAN}" +NVCCFLAGS="-std=c++17 -arch=sm_${SM} ${DEV_COPT} -Xptxas -O3 -Xptxas -dlcm=ca -Xfatbin=-compress-all -DUSE_JACOBIAN=${USE_JACOBIAN}" +NVCCXCOMP="-Xcompiler -ffunction-sections -Xcompiler -fdata-sections" +LDFLAGS="-L${CUDA_PATH}/lib64 -lcudart -pthread" + +echo "== CCFLAGS: ${CCFLAGS}" +echo "== NVCCFLAGS: ${NVCCFLAGS} ${NVCCXCOMP}" + +# Compile C++ +g++ ${CCFLAGS} -c RCKangaroo.cpp -o RCKangaroo.o +g++ ${CCFLAGS} -c GpuKang.cpp -o GpuKang.o +g++ ${CCFLAGS} -c Ec.cpp -o Ec.o +g++ ${CCFLAGS} -c utils.cpp -o utils.o + +# Compile CUDA (if present) +if [[ -f "RCGpuCore.cu" ]]; then + /usr/bin/nvcc ${NVCCFLAGS} ${NVCCXCOMP} -c RCGpuCore.cu -o RCGpuCore.o + g++ ${CCFLAGS} -o rckangaroo RCKangaroo.o GpuKang.o Ec.o utils.o RCGpuCore.o ${LDFLAGS} +else + echo "WARN: RCGpuCore.cu no existe; enlazando CPU-only" + g++ ${CCFLAGS} -o rckangaroo RCKangaroo.o GpuKang.o Ec.o utils.o ${LDFLAGS} +fi +echo "== Listo: ./rckangaroo" diff --git a/defs.h b/defs.h index c84e192..724a527 100644 --- a/defs.h +++ b/defs.h @@ -1,97 +1,115 @@ -// This file is a part of RCKangaroo software -// (c) 2024, RetiredCoder (RC) -// License: GPLv3, see "LICENSE.TXT" file -// https://github.com/RetiredC - - -#pragma once - -#pragma warning(disable : 4996) - -typedef unsigned long long u64; -typedef long long i64; -typedef unsigned int u32; -typedef int i32; -typedef unsigned short u16; -typedef short i16; -typedef unsigned char u8; -typedef char i8; - - - -#define MAX_GPU_CNT 32 - -//must be divisible by MD_LEN -#define STEP_CNT 1000 - -#define JMP_CNT 512 - -//use different options for cards older than RTX 40xx -#ifdef __CUDA_ARCH__ - #if __CUDA_ARCH__ < 890 - #define OLD_GPU - #endif - #ifdef OLD_GPU - #define BLOCK_SIZE 512 - //can be 8, 16, 24, 32, 40, 48, 56, 64 - #define PNT_GROUP_CNT 64 - #else - #define BLOCK_SIZE 256 - //can be 8, 16, 24, 32 - #define PNT_GROUP_CNT 24 - #endif -#else //CPU, fake values - #define BLOCK_SIZE 512 - #define PNT_GROUP_CNT 64 -#endif - -// kang type -#define TAME 0 // Tame kangs -#define WILD1 1 // Wild kangs1 -#define WILD2 2 // Wild kangs2 - -#define GPU_DP_SIZE 48 -#define MAX_DP_CNT (256 * 1024) - -#define JMP_MASK (JMP_CNT-1) - -#define DPTABLE_MAX_CNT 16 - -#define MAX_CNT_LIST (512 * 1024) - -#define DP_FLAG 0x8000 -#define INV_FLAG 0x4000 -#define JMP2_FLAG 0x2000 - -#define MD_LEN 10 - -//#define DEBUG_MODE - -//gpu kernel parameters -struct TKparams -{ - u64* Kangs; - u32 KangCnt; - u32 BlockCnt; - u32 BlockSize; - u32 GroupCnt; - u64* L2; - u64 DP; - u32* DPs_out; - u64* Jumps1; //x(32b), y(32b), d(32b) - u64* Jumps2; //x(32b), y(32b), d(32b) - u64* Jumps3; //x(32b), y(32b), d(32b) - u64* JumpsList; //list of all performed jumps, grouped by warp(32) every 8 groups (from PNT_GROUP_CNT). Each jump is 2 bytes: 10bit jump index + flags: INV_FLAG, DP_FLAG, JMP2_FLAG - u32* DPTable; - u32* L1S2; - u64* LastPnts; - u64* LoopTable; - u32* dbg_buf; - u32* LoopedKangs; - bool IsGenMode; //tames generation mode - - u32 KernelA_LDS_Size; - u32 KernelB_LDS_Size; - u32 KernelC_LDS_Size; -}; - +// This file is a part of RCKangaroo software +// (c) 2024, RetiredCoder (RC) +// License: GPLv3, see "LICENSE.TXT" file +// https://github.com/RetiredC + + +#pragma once + +#pragma warning(disable : 4996) + +typedef unsigned long long u64; +typedef long long i64; +typedef unsigned int u32; +typedef int i32; +typedef unsigned short u16; +typedef short i16; +// === Feature flags (performance/algorithm toggles) ============================ +#ifndef USE_JACOBIAN +// 0 = affine + inversión por lotes (actual predeterminado, muy rápido en GPU) +// 1 = coordenadas jacobianas + conversión por lotes a afín sólo para DP +#define USE_JACOBIAN 0 +#endif + +#ifndef SCALARMUL_W +// Ventana para w-NAF (CPU). 4 es un buen equilibrio entre memoria y velocidad. +#define SCALARMUL_W 4 +#endif + +#ifndef USE_MONTGOMERY_LADDER +// 1 para habilitar la multiplicación escalar por Montgomery Ladder (CPU) +#define USE_MONTGOMERY_LADDER 1 +#endif +// ============================================================================ + +typedef unsigned char u8; +typedef char i8; + + + +#define MAX_GPU_CNT 32 + +//must be divisible by MD_LEN +#define STEP_CNT 1000 + +#define JMP_CNT 512 + +//use different options for cards older than RTX 40xx +#ifdef __CUDA_ARCH__ + #if __CUDA_ARCH__ < 890 + #define OLD_GPU + #endif + #ifdef OLD_GPU + #define BLOCK_SIZE 512 + //can be 8, 16, 24, 32, 40, 48, 56, 64 + #define PNT_GROUP_CNT 64 + #else + #define BLOCK_SIZE 256 + //can be 8, 16, 24, 32 + #define PNT_GROUP_CNT 24 + #endif +#else //CPU, fake values + #define BLOCK_SIZE 512 + #define PNT_GROUP_CNT 64 +#endif + +// kang type +#define TAME 0 // Tame kangs +#define WILD1 1 // Wild kangs1 +#define WILD2 2 // Wild kangs2 + +#define GPU_DP_SIZE 48 +#define MAX_DP_CNT (256 * 1024) + +#define JMP_MASK (JMP_CNT-1) + +#define DPTABLE_MAX_CNT 16 + +#define MAX_CNT_LIST (512 * 1024) + +#define DP_FLAG 0x8000 +#define INV_FLAG 0x4000 +#define JMP2_FLAG 0x2000 + +#define MD_LEN 10 + +//#define DEBUG_MODE + +//gpu kernel parameters +struct TKparams +{ + u64* Kangs; + u32 KangCnt; + u32 BlockCnt; + u32 BlockSize; + u32 GroupCnt; + u64* L2; + u64 DP; + u32* DPs_out; + u64* Jumps1; //x(32b), y(32b), d(32b) + u64* Jumps2; //x(32b), y(32b), d(32b) + u64* Jumps3; //x(32b), y(32b), d(32b) + u64* JumpsList; //list of all performed jumps, grouped by warp(32) every 8 groups (from PNT_GROUP_CNT). Each jump is 2 bytes: 10bit jump index + flags: INV_FLAG, DP_FLAG, JMP2_FLAG + u32* DPTable; + u32* L1S2; + u64* LastPnts; + u64* LoopTable; + u32* dbg_buf; + u32* LoopedKangs; + bool IsGenMode; //tames generation mode + + u32 KernelA_LDS_Size; + u32 KernelB_LDS_Size; + u32 KernelC_LDS_Size; +}; + diff --git a/rckangaroo b/rckangaroo new file mode 100755 index 0000000000000000000000000000000000000000..f854616bd5bb8bd366a0f0783be44e3d823e3e30 GIT binary patch literal 358936 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%0A-}@Z;fvghLRv?z9QLBN$3dt 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 HhtmH6iL<12 literal 0 HcmV?d00001 diff --git a/summarize_bench.py b/summarize_bench.py new file mode 100755 index 0000000..677859f --- /dev/null +++ b/summarize_bench.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 +import sys, re, statistics, os, glob + +# Extrae el máximo 'Speed: XXX MKeys/s' en cada log (robusto a warmups) +speed_re = re.compile(r"Speed:\s*([0-9]+(?:\.[0-9]+)?)\s*MKeys/s", re.IGNORECASE) + +# '/usr/bin/time -f "%E real %Mk RSS %I in KB %O out KB"' +time_re = re.compile(r"(?P(\d+:)?\d+\.\d+)\s+real") +rss_re = re.compile(r"\s(?P\d+)k\s+RSS", re.IGNORECASE) + +def parse_real_to_seconds(s): + # formatos "0:28.40" ó "12.34" + if ":" in s: + m, sec = s.split(":") + return int(m) * 60 + float(sec) + return float(s) + +def parse_log(path): + max_speed = None + real_s = None + rss_kb = None + + with open(path, "r", errors="ignore") as f: + for line in f: + m = speed_re.search(line) + if m: + v = float(m.group(1)) + if (max_speed is None) or (v > max_speed): + max_speed = v + + f.seek(0) + data = f.read() + + tm = time_re.search(data) + if tm: + real_s = parse_real_to_seconds(tm.group("real")) + rm = rss_re.search(data) + if rm: + rss_kb = int(rm.group("rss")) + + return max_speed, real_s, rss_kb + +def pick(val_list, func): + vals = [v for v in val_list if v is not None] + if not vals: return "" + return func(vals) + +def main(): + if len(sys.argv) < 2: + print("Uso: summarize_bench.py [pattern]", file=sys.stderr) + sys.exit(1) + logdir = sys.argv[1] + pattern = sys.argv[2] if len(sys.argv) >= 3 else "*.log" + + files = glob.glob(os.path.join(logdir, pattern)) + if not files: + print("No hay logs en", logdir, file=sys.stderr) + sys.exit(2) + + # nombres: _dp_tb_tr_runX.log + import re + name_re = re.compile(r".*?_dp(?P\d+)_tb(?P\d+)_tr(?P\d+)_run(?P\d+)\.log$") + + groups = {} + for p in sorted(files): + m = name_re.match(os.path.basename(p)) + if not m: + continue + dp = int(m.group("dp")); tb = int(m.group("tb")); tr = int(m.group("tr")) + metrics = parse_log(p) + groups.setdefault((dp,tb,tr), []).append(metrics) + + print("dp,tame_bits,tame_ratio,runs,median_speed_MKeys,max_speed_MKeys,median_real_s,median_rss_kb") + + for (dp,tb,tr), lst in sorted(groups.items()): + speeds = [x[0] for x in lst if x[0] is not None] + reals = [x[1] for x in lst if x[1] is not None] + rsslist = [x[2] for x in lst if x[2] is not None] + + med_speed = pick(speeds, statistics.median) + max_speed = pick(speeds, max) + med_real = pick(reals, statistics.median) + med_rss = pick(rsslist, statistics.median) + + def fmt(x): + if x == "": return "" + if isinstance(x, float): + return f"{x:.3f}" + return str(x) + + print(f"{dp},{tb},{tr},{len(lst)},{fmt(med_speed)},{fmt(max_speed)},{fmt(med_real)},{fmt(med_rss)}") + +if __name__ == '__main__': + main() diff --git a/summary_j1.csv b/summary_j1.csv new file mode 100644 index 0000000..d1d0104 --- /dev/null +++ b/summary_j1.csv @@ -0,0 +1,19 @@ +dp,tame_bits,tame_ratio,runs,median_speed_MKeys,max_speed_MKeys,median_real_s,median_rss_kb +14,4,25,5,755.000,784.000,66.040,745940 +14,4,33,5,740.000,744.000,100.080,821616 +14,4,40,5,740.000,753.000,85.440,787120 +14,5,25,5,753.000,755.000,93.070,806608 +14,5,33,5,759.000,761.000,60.130,728480 +14,5,40,5,760.000,762.000,91.140,805548 +15,4,25,5,763.000,765.000,88.580,687048 +15,4,33,5,755.000,759.000,56.670,645252 +15,4,40,5,760.000,764.000,66.400,657748 +15,5,25,5,749.000,765.000,54.610,641992 +15,5,33,5,736.000,740.000,121.550,725884 +15,5,40,5,736.000,738.000,52.380,638124 +16,4,25,5,735.000,736.000,98.060,633456 +16,4,33,5,731.000,733.000,82.430,623392 +16,4,40,5,732.000,733.000,60.760,609024 +16,5,25,5,736.000,751.000,80.850,622144 +16,5,33,5,762.000,763.000,81.740,624944 +16,5,40,5,769.000,778.000,109.390,644316 diff --git a/utils.cpp b/utils.cpp index 6665a75..b1a660e 100644 --- a/utils.cpp +++ b/utils.cpp @@ -1,312 +1,403 @@ -// This file is a part of RCKangaroo software -// (c) 2024, RetiredCoder (RC) -// License: GPLv3, see "LICENSE.TXT" file -// https://github.com/RetiredC - - -#include "utils.h" -#include - -#ifdef _WIN32 - -#else - -void _BitScanReverse64(u32* index, u64 msk) -{ - *index = 63 - __builtin_clzll(msk); -} - -void _BitScanForward64(u32* index, u64 msk) -{ - *index = __builtin_ffsll(msk) - 1; -} - -u64 _umul128(u64 m1, u64 m2, u64* hi) -{ - uint128_t ab = (uint128_t)m1 * m2; *hi = (u64)(ab >> 64); return (u64)ab; -} - -u64 __shiftright128 (u64 LowPart, u64 HighPart, u8 Shift) -{ - u64 ret; - __asm__ ("shrd {%[Shift],%[HighPart],%[LowPart]|%[LowPart], %[HighPart], %[Shift]}" - : [ret] "=r" (ret) - : [LowPart] "0" (LowPart), [HighPart] "r" (HighPart), [Shift] "Jc" (Shift) - : "cc"); - return ret; -} - -u64 __shiftleft128 (u64 LowPart, u64 HighPart, u8 Shift) -{ - u64 ret; - __asm__ ("shld {%[Shift],%[LowPart],%[HighPart]|%[HighPart], %[LowPart], %[Shift]}" - : [ret] "=r" (ret) - : [LowPart] "r" (LowPart), [HighPart] "0" (HighPart), [Shift] "Jc" (Shift) - : "cc"); - return ret; -} - -u64 GetTickCount64() -{ - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC_RAW, &ts); - return (u64)(ts.tv_nsec / 1000000) + ((u64)ts.tv_sec * 1000ull); -} -#endif - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -#define DB_REC_LEN 32 -#define DB_FIND_LEN 9 -#define DB_MIN_GROW_CNT 2 - -//we need advanced memory management to reduce memory fragmentation -//everything will be stable up to about 8TB RAM - -#define MEM_PAGE_SIZE (128 * 1024) -#define RECS_IN_PAGE (MEM_PAGE_SIZE / DB_REC_LEN) -#define MAX_PAGES_CNT (0xFFFFFFFF / RECS_IN_PAGE) - -MemPool::MemPool() -{ - pnt = 0; -} - -MemPool::~MemPool() -{ - Clear(); -} - -void MemPool::Clear() -{ - int cnt = (int)pages.size(); - for (int i = 0; i < cnt; i++) - free(pages[i]); - pages.clear(); - pnt = 0; -} - -void* MemPool::AllocRec(u32* cmp_ptr) -{ - void* mem; - if (pages.empty() || (pnt + DB_REC_LEN > MEM_PAGE_SIZE)) - { - if (pages.size() >= MAX_PAGES_CNT) - return NULL; //overflow - pages.push_back(malloc(MEM_PAGE_SIZE)); - pnt = 0; - } - u32 page_ind = (u32)pages.size() - 1; - mem = (u8*)pages[page_ind] + pnt; - *cmp_ptr = (page_ind * RECS_IN_PAGE) | (pnt / DB_REC_LEN); - pnt += DB_REC_LEN; - return mem; -} - -void* MemPool::GetRecPtr(u32 cmp_ptr) -{ - u32 page_ind = cmp_ptr / RECS_IN_PAGE; - u32 rec_ind = cmp_ptr % RECS_IN_PAGE; - return (u8*)pages[page_ind] + DB_REC_LEN * rec_ind; -} - -TFastBase::TFastBase() -{ - memset(lists, 0, sizeof(lists)); - memset(Header, 0, sizeof(Header)); -} - -TFastBase::~TFastBase() -{ - Clear(); -} - -void TFastBase::Clear() -{ - for (int i = 0; i < 256; i++) - { - for (int j = 0; j < 256; j++) - for (int k = 0; k < 256; k++) - { - if (lists[i][j][k].data) - free(lists[i][j][k].data); - lists[i][j][k].data = NULL; - lists[i][j][k].capacity = 0; - lists[i][j][k].cnt = 0; - } - mps[i].Clear(); - } -} - -u64 TFastBase::GetBlockCnt() -{ - u64 blockCount = 0; - for (int i = 0; i < 256; i++) - for (int j = 0; j < 256; j++) - for (int k = 0; k < 256; k++) - blockCount += lists[i][j][k].cnt; - return blockCount; -} - -// http://en.cppreference.com/w/cpp/algorithm/lower_bound -int TFastBase::lower_bound(TListRec* list, int mps_ind, u8* data) -{ - int count = list->cnt; - int it, first, step; - first = 0; - while (count > 0) - { - it = first; - step = count / 2; - it += step; - void* ptr = mps[mps_ind].GetRecPtr(list->data[it]); - if (memcmp(ptr, data, DB_FIND_LEN) < 0) - { - first = ++it; - count -= step + 1; - } - else - count = step; - } - return first; -} - -u8* TFastBase::AddDataBlock(u8* data, int pos) -{ - TListRec* list = &lists[data[0]][data[1]][data[2]]; - if (list->cnt >= list->capacity) - { - u32 grow = list->capacity / 2; - if (grow < DB_MIN_GROW_CNT) - grow = DB_MIN_GROW_CNT; - u32 newcap = list->capacity + grow; - if (newcap > 0xFFFF) - newcap = 0xFFFF; - if (newcap <= list->capacity) - return NULL; //failed - list->data = (u32*)realloc(list->data, newcap * sizeof(u32)); - list->capacity = newcap; - } - int first = (pos < 0) ? lower_bound(list, data[0], data + 3) : pos; - memmove(list->data + first + 1, list->data + first, (list->cnt - first) * sizeof(u32)); - u32 cmp_ptr; - void* ptr = mps[data[0]].AllocRec(&cmp_ptr); - list->data[first] = cmp_ptr; - memcpy(ptr, data + 3, DB_REC_LEN); - list->cnt++; - return (u8*)ptr; -} - -u8* TFastBase::FindDataBlock(u8* data) -{ - bool res = false; - TListRec* list = &lists[data[0]][data[1]][data[2]]; - int first = lower_bound(list, data[0], data + 3); - if (first == list->cnt) - return NULL; - void* ptr = mps[data[0]].GetRecPtr(list->data[first]); - if (memcmp(ptr, data + 3, DB_FIND_LEN)) - return NULL; - return (u8*)ptr; -} - -u8* TFastBase::FindOrAddDataBlock(u8* data) -{ - void* ptr; - TListRec* list = &lists[data[0]][data[1]][data[2]]; - int first = lower_bound(list, data[0], data + 3); - if (first == list->cnt) - goto label_not_found; - ptr = mps[data[0]].GetRecPtr(list->data[first]); - if (memcmp(ptr, data + 3, DB_FIND_LEN)) - goto label_not_found; - return (u8*)ptr; -label_not_found: - AddDataBlock(data, first); - return NULL; -} - -//slow but I hope you are not going to create huge DB with this proof-of-concept software -bool TFastBase::LoadFromFile(char* fn) -{ - Clear(); - FILE* fp = fopen(fn, "rb"); - if (!fp) - return false; - if (fread(Header, 1, sizeof(Header), fp) != sizeof(Header)) - { - fclose(fp); - return false; - } - for (int i = 0; i < 256; i++) - for (int j = 0; j < 256; j++) - for (int k = 0; k < 256; k++) - { - TListRec* list = &lists[i][j][k]; - fread(&list->cnt, 1, 2, fp); - if (list->cnt) - { - u32 grow = list->cnt / 2; - if (grow < DB_MIN_GROW_CNT) - grow = DB_MIN_GROW_CNT; - u32 newcap = list->cnt + grow; - if (newcap > 0xFFFF) - newcap = 0xFFFF; - list->data = (u32*)realloc(list->data, newcap * sizeof(u32)); - list->capacity = newcap; - - for (int m = 0; m < list->cnt; m++) - { - u32 cmp_ptr; - void* ptr = mps[i].AllocRec(&cmp_ptr); - list->data[m] = cmp_ptr; - if (fread(ptr, 1, DB_REC_LEN, fp) != DB_REC_LEN) - { - fclose(fp); - return false; - } - } - } - } - fclose(fp); - return true; -} - -bool TFastBase::SaveToFile(char* fn) -{ - FILE* fp = fopen(fn, "wb"); - if (!fp) - return false; - if (fwrite(Header, 1, sizeof(Header), fp) != sizeof(Header)) - { - fclose(fp); - return false; - } - for (int i = 0; i < 256; i++) - for (int j = 0; j < 256; j++) - for (int k = 0; k < 256; k++) - { - TListRec* list = &lists[i][j][k]; - fwrite(&list->cnt, 1, 2, fp); - for (int m = 0; m < list->cnt; m++) - { - void* ptr = mps[i].GetRecPtr(list->data[m]); - if (fwrite(ptr, 1, DB_REC_LEN, fp) != DB_REC_LEN) - { - fclose(fp); - return false; - } - } - } - fclose(fp); - return true; -} - -bool IsFileExist(char* fn) -{ - FILE* fp = fopen(fn, "rb"); - if (!fp) - return false; - fclose(fp); - return true; +// This file is a part of RCKangaroo software +// (c) 2024, RetiredCoder (RC) +// License: GPLv3, see "LICENSE.TXT" file +// https://github.com/RetiredC + + +#include "utils.h" +#include +static const char kTamesV15Tag[8] = {'T','M','B','M','1','5','\0','\0'}; +static const char kTamesV16Tag[8] = {'T','M','B','M','1','6','\0','\0'}; + + +#ifndef DB_FIND_LEN +#define DB_FIND_LEN 5 +#endif +#ifndef DB_REC_LEN +#define DB_REC_LEN (DB_FIND_LEN + 22 + 1) +#endif +#ifdef _WIN32 + +#else + +void _BitScanReverse64(u32* index, u64 msk) +{ + *index = 63 - __builtin_clzll(msk); +} + +void _BitScanForward64(u32* index, u64 msk) +{ + *index = __builtin_ffsll(msk) - 1; +} + +u64 _umul128(u64 m1, u64 m2, u64* hi) +{ + uint128_t ab = (uint128_t)m1 * m2; *hi = (u64)(ab >> 64); return (u64)ab; +} + +u64 __shiftright128 (u64 LowPart, u64 HighPart, u8 Shift) +{ + u64 ret; + __asm__ ("shrd {%[Shift],%[HighPart],%[LowPart]|%[LowPart], %[HighPart], %[Shift]}" + : [ret] "=r" (ret) + : [LowPart] "0" (LowPart), [HighPart] "r" (HighPart), [Shift] "Jc" (Shift) + : "cc"); + return ret; +} + +u64 __shiftleft128 (u64 LowPart, u64 HighPart, u8 Shift) +{ + u64 ret; + __asm__ ("shld {%[Shift],%[LowPart],%[HighPart]|%[HighPart], %[LowPart], %[Shift]}" + : [ret] "=r" (ret) + : [LowPart] "r" (LowPart), [HighPart] "0" (HighPart), [Shift] "Jc" (Shift) + : "cc"); + return ret; +} + +u64 GetTickCount64() +{ + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC_RAW, &ts); + return (u64)(ts.tv_nsec / 1000000) + ((u64)ts.tv_sec * 1000ull); +} +#endif + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#define DB_REC_LEN 32 +#define DB_FIND_LEN 9 +#define DB_MIN_GROW_CNT 2 + +//we need advanced memory management to reduce memory fragmentation +//everything will be stable up to about 8TB RAM + +#define MEM_PAGE_SIZE (128 * 1024) +#define RECS_IN_PAGE (MEM_PAGE_SIZE / DB_REC_LEN) +#define MAX_PAGES_CNT (0xFFFFFFFF / RECS_IN_PAGE) + +MemPool::MemPool() +{ + pnt = 0; +} + +MemPool::~MemPool() +{ + Clear(); +} + +void MemPool::Clear() +{ + int cnt = (int)pages.size(); + for (int i = 0; i < cnt; i++) + free(pages[i]); + pages.clear(); + pnt = 0; +} + +void* MemPool::AllocRec(u32* cmp_ptr) +{ + void* mem; + if (pages.empty() || (pnt + DB_REC_LEN > MEM_PAGE_SIZE)) + { + if (pages.size() >= MAX_PAGES_CNT) + return NULL; //overflow + pages.push_back(malloc(MEM_PAGE_SIZE)); + pnt = 0; + } + u32 page_ind = (u32)pages.size() - 1; + mem = (u8*)pages[page_ind] + pnt; + *cmp_ptr = (page_ind * RECS_IN_PAGE) | (pnt / DB_REC_LEN); + pnt += DB_REC_LEN; + return mem; +} + +void* MemPool::GetRecPtr(u32 cmp_ptr) +{ + u32 page_ind = cmp_ptr / RECS_IN_PAGE; + u32 rec_ind = cmp_ptr % RECS_IN_PAGE; + return (u8*)pages[page_ind] + DB_REC_LEN * rec_ind; +} + +TFastBase::TFastBase() +{ + memset(lists, 0, sizeof(lists)); + memset(Header, 0, sizeof(Header)); +} + +TFastBase::~TFastBase() +{ + Clear(); +} + +void TFastBase::Clear() +{ + for (int i = 0; i < 256; i++) + { + for (int j = 0; j < 256; j++) + for (int k = 0; k < 256; k++) + { + if (lists[i][j][k].data) + free(lists[i][j][k].data); + lists[i][j][k].data = NULL; + lists[i][j][k].capacity = 0; + lists[i][j][k].cnt = 0; + } + mps[i].Clear(); + } +} + +u64 TFastBase::GetBlockCnt() +{ + u64 blockCount = 0; + for (int i = 0; i < 256; i++) + for (int j = 0; j < 256; j++) + for (int k = 0; k < 256; k++) + blockCount += lists[i][j][k].cnt; + return blockCount; +} + +// http://en.cppreference.com/w/cpp/algorithm/lower_bound +int TFastBase::lower_bound(TListRec* list, int mps_ind, u8* data) +{ + int count = list->cnt; + int it, first, step; + first = 0; + while (count > 0) + { + it = first; + step = count / 2; + it += step; + void* ptr = mps[mps_ind].GetRecPtr(list->data[it]); + if (memcmp(ptr, data, DB_FIND_LEN) < 0) + { + first = ++it; + count -= step + 1; + } + else + count = step; + } + return first; +} + +u8* TFastBase::AddDataBlock(u8* data, int pos) +{ + TListRec* list = &lists[data[0]][data[1]][data[2]]; + if (list->cnt >= list->capacity) + { + u32 grow = list->capacity / 2; + if (grow < DB_MIN_GROW_CNT) + grow = DB_MIN_GROW_CNT; + u32 newcap = list->capacity + grow; + if (newcap > 0xFFFF) + newcap = 0xFFFF; + if (newcap <= list->capacity) + return NULL; //failed + list->data = (u32*)realloc(list->data, newcap * sizeof(u32)); + list->capacity = newcap; + } + int first = (pos < 0) ? lower_bound(list, data[0], data + 3) : pos; + memmove(list->data + first + 1, list->data + first, (list->cnt - first) * sizeof(u32)); + u32 cmp_ptr; + void* ptr = mps[data[0]].AllocRec(&cmp_ptr); + list->data[first] = cmp_ptr; + memcpy(ptr, data + 3, DB_REC_LEN); + list->cnt++; + return (u8*)ptr; +} + +u8* TFastBase::FindDataBlock(u8* data) +{ + bool res = false; + TListRec* list = &lists[data[0]][data[1]][data[2]]; + int first = lower_bound(list, data[0], data + 3); + if (first == list->cnt) + return NULL; + void* ptr = mps[data[0]].GetRecPtr(list->data[first]); + if (memcmp(ptr, data + 3, DB_FIND_LEN)) + return NULL; + return (u8*)ptr; +} + +u8* TFastBase::FindOrAddDataBlock(u8* data) +{ + void* ptr; + TListRec* list = &lists[data[0]][data[1]][data[2]]; + int first = lower_bound(list, data[0], data + 3); + if (first == list->cnt) + goto label_not_found; + ptr = mps[data[0]].GetRecPtr(list->data[first]); + if (memcmp(ptr, data + 3, DB_FIND_LEN)) + goto label_not_found; + return (u8*)ptr; +label_not_found: + AddDataBlock(data, first); + return NULL; +} + +//slow but I hope you are not going to create huge DB with this proof-of-concept software +bool TFastBase::LoadFromFile(char* fn) +{ +Clear(); + FILE* fp = fopen(fn, "rb"); + if (!fp) return false; + + if (fread(Header, 1, sizeof(Header), fp) != sizeof(Header)) { + fclose(fp); return false; + } + + long pos_after_header = ftell(fp); + char tag[8]; + size_t got = fread(tag, 1, sizeof(tag), fp); + bool use_v15 = (got == sizeof(tag) && memcmp(tag, kTamesV15Tag, 8) == 0); + bool use_v16 = (got == sizeof(tag) && memcmp(tag, kTamesV16Tag, 8) == 0); + + if (!use_v15 && !use_v16) { + // --- Formato legado --- + fseek(fp, pos_after_header, SEEK_SET); + + for (int i = 0; i < 256; i++) + for (int j = 0; j < 256; j++) + for (int k = 0; k < 256; k++) + { + TListRec* list = &lists[i][j][k]; + + if (fread(&list->cnt, 2, 1, fp) != 1) { fclose(fp); return false; } + + if (list->cnt) { + // asegurar capacidad para list->data (u32*), no vector + if (list->capacity < list->cnt) { + unsigned short newcap = list->cnt; + if (newcap < 16) newcap = 16; + if (newcap > 0xFFFF) newcap = 0xFFFF; + list->data = (u32*)realloc(list->data, (size_t)newcap * sizeof(u32)); + if (!list->data) { fclose(fp); return false; } + list->capacity = newcap; + } + + for (int m = 0; m < list->cnt; m++) { + u32 cmp_ptr; + void* ptr = mps[i].AllocRec(&cmp_ptr); + list->data[m] = cmp_ptr; + + if (fread(ptr, 1, DB_REC_LEN, fp) != DB_REC_LEN) { + fclose(fp); return false; + } + } + } + } + + fclose(fp); + return true; + } + + // --- V1.5: bitmap + bulk por (i,j) --- + // selecc. tamaño por versión + size_t rec_len = use_v16 ? (size_t)DB_REC_LEN : (size_t)32; + for (int i = 0; i < 256; i++) { + for (int j = 0; j < 256; j++) { + + unsigned char bitmap[32]; + if (fread(bitmap, 1, 32, fp) != 32) { fclose(fp); return false; } + + for (int k = 0; k < 256; k++) { + TListRec* list = &lists[i][j][k]; + + if (bitmap[k >> 3] & (1u << (k & 7))) { + unsigned short cnt16; + if (fread(&cnt16, 2, 1, fp) != 1) { fclose(fp); return false; } + + // asegurar capacidad (u32*) + if (list->capacity < cnt16) { + unsigned short newcap = cnt16; + if (newcap < 16) newcap = 16; + if (newcap > 0xFFFF) newcap = 0xFFFF; + list->data = (u32*)realloc(list->data, (size_t)newcap * sizeof(u32)); + if (!list->data) { fclose(fp); return false; } + list->capacity = newcap; + } + list->cnt = cnt16; + + size_t bytes = (size_t)cnt16 * rec_len; + if (bytes) { + std::vector buf; buf.resize(bytes); + if (fread(buf.data(), 1, bytes, fp) != bytes) { fclose(fp); return false; } + + for (int m = 0; m < cnt16; m++) { + u32 cmp_ptr; + void* dst = mps[i].AllocRec(&cmp_ptr); + list->data[m] = cmp_ptr; + memcpy(dst, &buf[(size_t)m * rec_len], rec_len); + } + } + } else { + list->cnt = 0; + // conservamos capacidad existente, no tocamos list->data + } + } + } + } + + fclose(fp); + return true; +} + + +bool TFastBase::SaveToFile(char* fn) +{ +FILE* fp = fopen(fn, "wb"); + if (!fp) return false; + + if (fwrite(Header, 1, sizeof(Header), fp) != sizeof(Header)) { + fclose(fp); return false; + } + + // --- TAG V1.5 --- + if (fwrite(kTamesV16Tag, 1, sizeof(kTamesV16Tag), fp) != sizeof(kTamesV16Tag)) { + fclose(fp); return false; + } + + size_t rec_len = (size_t)DB_REC_LEN; + // (i,j): bitmap de 256 bits + por cada k set: cnt (u16) y bloque contiguo de registros + for (int i = 0; i < 256; i++) { + for (int j = 0; j < 256; j++) { + + unsigned char bitmap[32]; memset(bitmap, 0, sizeof(bitmap)); + for (int k = 0; k < 256; k++) { + TListRec* list = &lists[i][j][k]; + if (list->cnt) bitmap[k >> 3] |= (1u << (k & 7)); + } + if (fwrite(bitmap, 1, 32, fp) != 32) { fclose(fp); return false; } + + for (int k = 0; k < 256; k++) if (bitmap[k >> 3] & (1u << (k & 7))) { + TListRec* list = &lists[i][j][k]; + unsigned short cnt16 = (unsigned short)list->cnt; + if (fwrite(&cnt16, 2, 1, fp) != 1) { fclose(fp); return false; } + + size_t bytes = (size_t)cnt16 * rec_len; + if (bytes) { + // Junta en buffer para un solo fwrite + std::vector buf; buf.resize(bytes); + for (int m = 0; m < cnt16; m++) { + void* ptr = mps[i].GetRecPtr(list->data[m]); + memcpy(&buf[(size_t)m * DB_REC_LEN], ptr, DB_REC_LEN); + } + if (fwrite(buf.data(), 1, bytes, fp) != bytes) { fclose(fp); return false; } + } + } + } + } + + fclose(fp); + return true; +} + + +bool IsFileExist(char* fn) +{ + FILE* fp = fopen(fn, "rb"); + if (!fp) + return false; + fclose(fp); + return true; } \ No newline at end of file From 0ad194a79cf9b3b637336c54d9f7704885174c30 Mon Sep 17 00:00:00 2001 From: fmg75 Date: Fri, 22 Aug 2025 17:15:55 -0300 Subject: [PATCH 2/5] "docs: add CHANGELOG for v1.6" --- CHANGELOG_v16.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ README_es_v16.md | 2 +- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG_v16.md diff --git a/CHANGELOG_v16.md b/CHANGELOG_v16.md new file mode 100644 index 0000000..1c724df --- /dev/null +++ b/CHANGELOG_v16.md @@ -0,0 +1,58 @@ +# Changelog + +All notable changes to this project will be documented in this file. +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.6.0] - 2025-08-22 +### Added +- **Warp‑aggregated atomics** for distinguished point (DP) emission in GPU kernels. +- **Spanish README** updates mirroring English documentation. +- **Backward compatible reader** for legacy `.dat` v1.5 files. + +### Changed +- **New compact `.dat` format (v1.6 / `TMBM16`)**: DP record size reduced from 32B → **28B** (X tail 5B, distance 22B, type 1B). +- **Improved memory coalescing** when writing DPs, enabling more efficient PCIe transfers. +- **Documentation**: Updated `README.md` and `README_es.md` with a “What’s New in v1.6” section, benchmarks, and build tips. + +### Performance +- Throughput improvements of **+10–30%** (GPU/`-dp` dependent). Example: RTX 3060 `-dp 16` ~**+16%** over v1.5. + +### Compatibility +- v1.6 binaries **read** both `.dat` **v1.5** and **v1.6** formats. +- v1.6 **writes** `.dat` in the new v1.6 format by default. + +### Migration +- No action required for existing `.dat` v1.5 users; they continue to load. +- New runs will generate `.dat` v1.6 files (smaller on disk). + +--- + +## [1.5.0] - 2024-XX-XX +- Initial public release by RetiredC. +- GPU implementation of Pollard Kangaroo with DP infrastructure. + +--- + +# Registro de cambios (ES) + +## [1.6.0] - 2025-08-22 +### Añadido +- **Atómicas warp‑aggregadas** para la emisión de DPs en los kernels de GPU. +- **README en español** actualizado en paralelo al inglés. +- **Lectura retrocompatible** de archivos `.dat` v1.5. + +### Cambiado +- **Nuevo formato `.dat` (v1.6 / `TMBM16`)**: registro DP de 32B → **28B** (cola de X 5B, distancia 22B, tipo 1B). +- **Mejor coalescencia de memoria** al escribir DPs, con transferencias PCIe más eficientes. +- **Documentación**: `README.md` y `README_es.md` incluyen “Novedades v1.6”, benchmarks y flags de compilación. + +### Rendimiento +- Mejora de **+10–30%** (según GPU y `-dp`). Ejemplo: RTX 3060 `-dp 16` ~**+16%** vs v1.5. + +### Compatibilidad +- Los binarios v1.6 **leen** archivos `.dat` **v1.5** y **v1.6**. +- v1.6 **escribe** por defecto el nuevo formato `.dat` v1.6. + +### Migración +- No se requiere acción para usuarios con `.dat` v1.5; siguen cargando. +- Nuevas ejecuciones generarán `.dat` v1.6 (más pequeño en disco). diff --git a/README_es_v16.md b/README_es_v16.md index a1244f0..40aa0fa 100644 --- a/README_es_v16.md +++ b/README_es_v16.md @@ -4,7 +4,7 @@ Implementación de *Kangaroo ECDLP* acelerada por GPU con varias mejoras orientadas a **tiempo de cómputo** y **uso de memoria / I/O**. > Probado con CUDA 12.x y NVIDIA RTX 3060 (SM 8.6). -> Esta rama mantiene la **CLI original** y añade banderas/guías para *tame tuning* y *benchmarks*. +> Esta rama mantiene la **CLI original** y añade banderas/guías para *tame tuning* y *benchmarks* ## Novedades técnicas (V1.5) From ac4b0437022638d9f86969c66582ebb4d7d3c0a7 Mon Sep 17 00:00:00 2001 From: fmg75 Date: Fri, 22 Aug 2025 17:19:57 -0300 Subject: [PATCH 3/5] .gitingnore --- gitignore | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 gitignore diff --git a/gitignore b/gitignore new file mode 100644 index 0000000..03555f4 --- /dev/null +++ b/gitignore @@ -0,0 +1,43 @@ +# RCKangaroo .gitignore + +# Build artifacts +*.o +*.obj +*.exe +*.out +*.dll +*.so +*.dylib + +# CUDA intermediate files +*.cubin +*.fatbin +*.ptx + +# Generated binaries +RCKangaroo +RCKangaroo.exe +rckangaroo +rckangaroo.exe + +# Logs and debug +*.log +*.tmp +*.bak + +# Data files (distinguished points, etc.) +*.dat +*.bin + +# Editor/OS files +.DS_Store +Thumbs.db +*.swp +*.swo + +# IDE/project configs +.vscode/ +.idea/ +*.user +*.sln +*.vcxproj* From f9fb658eff93687576e3be655880d37ade34d2a2 Mon Sep 17 00:00:00 2001 From: fmg75 Date: Tue, 18 Nov 2025 10:28:15 -0300 Subject: [PATCH 4/5] GpuKangs[GpuCnt]->IsOldGpu = true; --- Ec.o | Bin 0 -> 48824 bytes GpuKang.o | Bin 0 -> 16792 bytes RCGpuCore.o | Bin 0 -> 283056 bytes RCKangaroo.cpp | 2 +- RCKangaroo.o | Bin 0 -> 45000 bytes RESULTS.TXT | 4 ++++ rckangaroo | Bin 358936 -> 358944 bytes utils.o | Bin 0 -> 20048 bytes 8 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 Ec.o create mode 100644 GpuKang.o create mode 100644 RCGpuCore.o create mode 100644 RCKangaroo.o create mode 100644 RESULTS.TXT create mode 100644 utils.o diff --git a/Ec.o b/Ec.o new file mode 100644 index 0000000000000000000000000000000000000000..e737e70066c6c7cdc1ca28e1f57250d05aeca01e GIT binary patch literal 48824 zcmeHw3wRvWm1avVjEo(XWCIqX5E{}X5+Me7oMHj`DVZU_I_?v)nDhHbMCq4p8Kd<<*iML=KQ?8fKGXV>jIf8jRpdJ4`t39 z#A!odePErSor3H0@ngOl#l6g*cdU<`8OvM-qAQ}yqsyX8m)XwyOKj&I+c|5eep_y* z|Aa(q>~z7EJ8aX4z-T&*ECDcOXE0>~xWxUJhf7 z+f^$H?JCQj`gHF_c6u>vv%J))A<1hZ(U z_h{wtYtKkSslU|k9c$ARtK@tfpwZ!lA>Oh|ZYTz@JY4Ms4L-bkPEcSC)FrmYOq%@nPvyd@$_A6nr690 zJ5A)F8FfK5Q9QI|D1S(Bi1r_vaE-vmCU~)g5R*lvn=NRPf>SAJLRn^rmmEqsJ^$>I zXZ*uXPqFjPhZ7dsGn-K%IHngC;~Y^0$27cjW-|(jW4c*ccwtC-3GKJmdUH7AmvFU( z#jXo^{g-|#xHyu7o8PHLzC!#;-MrM$z3=+{Wd6}*)IdfQ5mQsYU76*XcBNN8+c_<2 zAT{1_&(+pt4FOQV8*O;Zg(3i3gLk0iB9yI^UW3-#Pkn6X<+awP^Tg=`w)3i8vEQmF z2wN2~#N5>W2A+iYCt|0@3$4_npnSN%8Z0F@#DT$g03?Rigs*!oM!7@X3}+4fXV1HR zD#O-&JrffXh-v-rB7}Vx$n7l%Xz|ojc_YUQ@{UBeH%-LhcV`pzFDI{$I|mUP?+VNK ziPLMtj*PcMOP(BBG}?dWyxYG_PWN33uCM*2by)yGQRFAbyr-kvmra0E?>9x58hiKb z#Dp$qdYbKAV5bwoaob7ckK04n7uu;8$L)%z?YvRD0ukW&xG3VE%>i#-RX$^gbLT~?7F5rxsfk6a zn~^ipR9P9Ri`F&ADr+07tLvik>S}7LE9>hQRM*BLbNp>g~&;k@_+yFB~wepK`XnpNsR zzMXnqx@f%q7rj45gF4jQ5YRm^xn&aN4W1fm4mxjJ@k1kLE*p9EBO~MaL(?x#y%@9~ z!1(BJ#nF)$3+!i4h&Un2|GyW%W}>r2^s)Y87#w8&^X=JFY)6K`G9v_*86mJthd^Xc zFAv$5jApoG>yJV^`|a7YYzP1L+hrJ2IQ;PxA(cO#mfB_11Vg9oH^EI1ENr9 z#u$ucLUI=W!QsBPCTKhOOy4J&wJ{@Xe{YQ`3?rnBu(FJ>Vq}jwVo>GEi$WkV5jUbD zGEu^piK+U!7+nYkYO^qcD&zDBBiaz&it4C~ z&%~wET^OGU$gzv#GYPkrwxsP)VkUkLereHtv^Y<<)Q|Mut}f%wGl}~By|=oTPbYA9 zrF;2yqW(~CJdwVXdc>VGEzYq-{V#iK6BWONT)Rv*e~7lrK132qx63Y)r>&(4iBdic z+Yo3$ct$;B>93f-_6Yh3UE{L8XW6qa=J42=l|Vfv&_ohql&}>d?m^jY6tWNJi%SzI zC`7}bZV$yTd5iLT=Gj4|M{#1ND0{+bz*s|sDv@!fR=G4GPlcY;o$^I{iaW!iNgYa* zq0XHVyX+2Fc$QsugJ?%WABPaG(Vkq9vs{tLHd9#%bXp|HrB1RH{(Hznyjwm$y3~q4 zw@i#a|1ff9iZ$>!O8*3{Rq@>5DeM02INMvm%hA+$zIE?RMA_7t32Wd2jx0L%J8#)T z1&5E0VN8!f{wy3;;@DQ4dN)7$$GB?8OySm0>fK=S@+Tu;6WtrcU);F5E}9z7vr4YM z#!ekBj@BRPebqUcI)1j{)S*y-utwVmk)QfCXcUTAlma-Ok=u6@TI zc_~o_DAU+xXPV{xW;H%L-3S4 ziv_em&k8t(y|Ywe#fol8$QfH}TN{V%XV38X^jfQH#41@(%Hf$AuR8X_4hQTsd}Lbc zY@Ri61G*u2D6SV3rp{sna-9U=DvOF!XM@(jCnNyBSyYPhSpy#yKr0-1Nho#pJZs=G z36ujUPn|{O6ajdg^M2T66n4RIXn$V)b6Zc2{SM<7;5yNta@X%qL9*@aeAJ%xg|FaT zRAvn>&04-vRPNi4(GTp?FH{`0hmxmDog=8Xi;teb+^;k>o|kOI<;^Ei+l6qAWHqkV z9!G7Dr^bWHkI9OzoB-N&-KebVu4_)%sW*#b^~1d<|@W%UO|?K7S!qlpp10Zst7z0Yc}z7RuA30JQeb#IoY&Y;?_;+=dD z8Fz|PXW${lyaUUdcM4Ny;7q4byUyt8W13ZP@EJLz1(@MKF6wd&w0rTJ5d4RxAFvM( z^U_WyN8o(b2W(ihe*Zmhjy(w&(wOKk#u^bOquYM_Fz`gyWP2d|05HzCySUVIZP-rV z9Y{E@CY-aJTWCApjWB&Sf##N8MY349RTx+j+Ih!_!|P+=mB^nxEmavy1dYhs4w~#q zDO@8AUUtc`Z&7tJT4y`Q?3q{u;6=Bcz6}B3Zrn+5qF)_W^?NtaYGi$hvsuAhdjru| z6L}|jL+~h9njIEdqy2|rKAE*d5Q*ForJ6}3rpeDIN>17{mx5JZl7&o$+wGajFxqh} zT!+aGwIYTa>v$t#J4?e2EI>DJtg}m=mjwabhtgmf?p0Z!f9JAfRQ8l*9m~?4U6wwU zrCXH+7rVm!tgiHJSd;npEe_T&peyPp{^U_~M{IJeDN%?%d*)rJDOoG5u9*W;Z&5|8 zm}IyQZp!j(M@E*#AwNgbDPOybL@$vJt1H4=w6EJWF^a}Dhk@e5tq^tm%`uRYU}LO zPtZgFv8jUTI+mkB=}#XGqUG979v8U4O0=#hJogyS+ifR`Vu^EPjFw_vV|{ZNXCXT+ z<3wf|Y=*t<;KQ($T+_(0JS*dmSWm&qG*)Oa#rp$75W@{R5DUK*#m3sofG`OMXz1-R zr>fw>hw~+Y7jK!%cY9yedw1Oq2`1ywu*&@dkjWEN533JVIemIXPMLe9*R zKlm_g9I~^w-fGqKS|gY{&j2pGzsltW3uEt2MYvbIc*F~xeCYu){2llcxuZ$ zdeDeH+p-<}!`S`?xHo@1MUnX9X{nfX<8T@t0^>MY&sMZNxnBJoA2R$Nf}=}q>+v_P zldHSmUxL*VJgqREvlK%3(5i3&TClWfM=V?r$D$q$o9-=)K5-p5Q-L&=IG%kaTJZx6 zLhWadb0Bh-e~w@@@aj3l8OJ3k^@d`5s5>v-@dFIATbwuT`X4;j z01_-Cz6g;~tL4yItLH}{2dlRy?9<08-m(uL!Z2aNw!XgKe)bLfa*W2$r=P;Ry}Xw_K$#X!efgcJ!O?Nsqu8C zh~`q|f>A2v(Eri|f7WIT{B@ zbr{8=jAC+!-rsr-Z?u8OoBB0_9Pt(WfAJ6p+XVDtQ#p zc2Y@Y#i>-5!V*JL14c{r2!RHq4IUR!0?Lb0W3V8^236r^J{lG>IfxND=t66HxFB)d z7a|?WltvOb_)@-IB8{dj^{5c0B*WhY=K*0(mx9?{3ZWZ#lG3F(X;KJjpdh89kPe|6 zmWV_wbO03g$eHVe3&J&d0|8Tb6~Y9fnrxA*D7vl%-N~JmRm|p)x%#_2ar1=oXXcah(Fp1$*(v}K0oQn2x9fFx% zm(e-M*`**`mqJ#?K$w&+1sS>&LJK$*DP5-`g>)u35l`?SvFk9sM34{u%-a6ZnRJQ= zMO0?Y7dPobAS#ztVr~EW3=%yOZUCT(Y(=z^L{C=MT=~qUQ|r)CowC2hsEITm-RnNV z*uGr#`|#;f(7QGdF|%RwVqWL4xxi66Nv||BY)+l=cz0VV`#3u4HC*%cgUXvrED3E`^WvEk%yjz&}h!X)vPb!()CCZ<4y`*E2V zdMLb`w=sLco)I1LId{UvPIae_7qazX(!>kh(E8bL<61YX?dqB>iiX^&uCN*_h>Qddao9vu7}lixw<~0t|RJtl-JIQgoB~sQ|dV( zIt8)TkE0rXsG$lP-zf8;z3oOmt3nRjtO}SNxT+xuBJ+cS8Yd5_{#Fepu+p?L?)*?# z0okmI2Sre~DjrfX{5xB2vYqGc*}DWDckn0)8z~5t?UHqdhYDCjDOV8d%a&9T1#K4) zp6xwvU$Wm$bGCW``PlOZI_rbknZ6!E^9|#W%o{4a&Rq=@M z4fc|I2o8Q{%gq!8jd$ZZ?qE7AwS8FR*%g*YQ2>zxeV056Xs@D@N1^iRpR#{*MY6b< zBK`);56a9KHZoUmKpANY*UCcdPlQ*a?Mj(gl1RW(!23xLTnYw$7n~WmuoZAA9nTmO zTzFIE1-?^g2l^eNKZb!Yo)yh(lkVjcST;ZxOpWLjLIOBw^P#U+?EcLyg*j`ITk)_W z^c!Uu#SHc5BI8h~HHdP`u z0YVAv)Lr3~Xhge2b7eWkS&oRvk8TZ|cjBDop`QfM!`#ql8#0=6ty$`SlO5fpVql)=zw z;yHpL?Eu5|QA>FG!#p|&l3cI`-mmaI0!PrJMSu%)xGe+pOLGOoe3G^!D@>wCwdgj4 zNl-(>xHGAffT`96{w+ji@Gt;qe$Es2B*r zx({V)*Y4mrBAH~!GTbY@i^8C@rH992km0i z3JaGKayv6@h1wAwW@lzr_pa~})xVVsYCUd2lf;@AZmE*1aSO5z3qhHljDlVB2$3*g zF+jIavXW^l8{wWWtH4nY&riK#=xpzx{6E3ShD6;4+mRD zN9;>@f$_#70P3ogTP@U;!!gJrAh>sw``esFA&zZFA(Nw0dBpy>U1~W?9|d$=QOTo# zP7o^7!~b1!xeNw7NgTS9VV*U(9u{#6o4PX;u(tmdDctg(hZ5m(Q7G<=#GUWj^&{4x z7>cBqU{{lvw8Wif6ZKD9gKvq9J;g5kPNMz?*5LC3#&a4?{f9*T53RuifD`FpLavOp zI0sssqb>EL*5E$~dbuFgQZbrvP!6?r-G^;lH9{c=E1j8bT$#;XAzN-Ei#y-3>yKE2 z3(fM$TQ)S0J4dlI&l)Tjx48jFlrxU)LiLBN!4d)AS?I#=+V$hs;2Dp~BME0zsQlu; zQe`ZHK%%?eZw>Ob4LoA218O{!RO;A4yy0?ZsdTQO-o2HkFTvgP4lX=j0y0xhCmrmC zaF!s8G~~=XL$-t8;DqIr;JJexl+}z^XY^h$gOkAqEcE`gJ40j7y+1M0QvXxyzWd1o z?duroMpbAc4X;6crBPAX1UPn;LBi!I`*1^uHEEULUqkWOY1~K4IsFUa{AfHFkna*v zm^;3(l!;ccL-mECjmWjlRvHR!%>Zd%GR)I=kL<=_A$w*|d z6D=D&M0k`NRw?`WOk!wLd334yUd6WGGQwhw zbsBz4vL7WgQZuH^z*_+2c-(8e>>@V(^D$-oa8rn)j7P@<;eH}We5k@cgDJ{~UE+DP zco@w;?flctr!kz5@VHwX_0wqVaYToYn#45RF5}~`3&VC<6WU)3;uY_d-3@n&aT@_i z94s94T%&gyDt}U&3AJ;AgZ3jb$j%(+oLia@*3gf%(@R+RI`LH7p1lkg$uO?)cpFMZ z#0UUd)xjDzcMU|K9`4+Y3(!$Q1J%RjUE$WAYd=^$X3yy7&5b^wD;&Y!B%kJEqm0-_ z5esANbK0uF(|vkjzpx=@xvF=P2o@QU4+D7oO<)E*v`?-|Ap>iOLqk~!J47Y8JsUw} z!J{3Vp!8^4vYJqz7ly?vHn@$c0B(y>f7#uIag-Ew(}aiGC9A@C$jHh;k555yVR2Mo zoK==cH-!?H9E!tInVJ)9q!A=1S%osEtVfYqMGTQyJOZ7KSAI~blvm6rpLSUfF1VXT zI?E!UxMi0i3}b45js^GZGB~mJ91)B}R_Q%5V@9S9Ycgj>#}M4*qxgLeA!nv&DQFrf z{hDxjeD;N5oOOlks9c1~HN?xPW*HopjLPF>Fh#sfXhag2sE(R8P%qnc89{3l8lIx` z6}xd%kI0d8Mll=po>1!xaV#U0+p`yxyNW;xp|T#Rg>4utExdP;5RNU(OB!eO>k`czuTx`(VprduL$R=xSNSs)_z)Pz9-)GKUmB%C*+{@sw`5Xf zG|XC{vOKuhS}bUGQ<7D32Ya@y5&T)$fc=1oU#SCf!i`R(3$Y9F4}TFc@fSM*@fTwy z{Ot<2#`0dWDlq;KYo62vtBBHQ4~dY%g)~Nu`sb}3+?V7$k9RNZj%To*^5cMQef9aC zq5iv|vo&}PR&wNCQ6qqUfMlp^;kSZOr;R1Jl_l8JFjfynnfI%r`!MqfjQt~I3p>g8 z*vI}B*TS~+H?bX4ZNwZ0HH;%YV$w$gux^X{97BsJ#(o2j6dzGV#%K($c;xBqs((TB z<*rP;dK*I|#J+#*xLwD=W4m2~8HKo5$_TxmJ68KRn*@o-jAcu zpM%$K2K{xC*yvZ1e8>Rl?u~US2OfS%3}ZMlVrQgBmy1GTP6fy19j-r%);u@#(%SF``xtJpWx2E(Bv!(==qoy)7G;ALg@9eydS~$dd=^Oi^>EF?%tW!Np z6dxC0BQC;kxj93`*paT?44Vso#a2;lIYtxXb*X*0AZ%z25n6mEN5j}jjbS-P4sd*o7_b7gpW_BGg2x~MclDci^>~T<5DcWR z9loe%4gOCP;>&v0;BFH-lc+yz4Gsaaol(5(rb%K~Ob@}7x~JJ<@1RYL($KIo5>>3?PC3$MYu{M@Ggj@qW4H6q`REZpd+M#rsW z!JyE`6Bz*EJ1glx(x+47(XF%TWuA@T*5H!}c3GRj#rApYi97Rb=P99~^~5z%bs8ON zc``b*Ec2a`NATSee&B>3E}6m)mfZ0-(bVhwQc2WW_+z}{PYjy>l^vq6<*XxWoPE#g}OQ^mIgUO?NO^x1;%090%j zexIK$SPs5aNqx4Uxja79j5W01Czr&XL$sPUnOBN+uMHK2q$HS*eG*rh{u19WAXhS@ zvdhcCviECxcsVd^4a`R-5uO>OF_YZO0EN?4B6hD4D-sx*pfjG%iSkl@j|1}pcF}9X z?4vQq8G8>)TcST!7QHKc1H=YjyKYj!M?slYaDK1BDERsDp@k^-`}|tNVR(qP?u578 zw?8Dx+z)=Q{k6M4T70izA-=D0AfM%(1x~%+tb7K3fbI^fM{iiW_6wE>met&QeHSK! zX!?kYeB%j$tIsMy?>qKWm_-o68b)G!vK+H&LJl7hrhpsKQook=tTaWg(Gj%X=?=S4bqS^A|fGa_^S7Wbs=~TEXf^2sJeH_>3 zxf!YzFSc^1(Vo?K3qgvvB%E>hvFP;=H-yO8P7Py9+^`3~VJxX0!|w!ES=rGB;`Il6 zpG9qpfPj=6V94&UyJiz)cGajWxV4jdWDS)B~cMr*&92bDqV)p zE}>s~uBmb&nmTSp`AL)er{d1z#jsP;Q0vK9#eNQ#9W)~h!R99*9-e`~pTO{`v?cFk zOUb+9n>gRW$j2IZAN&&zgA@oO@u3z5PX^>V8lHLT;;G@hcWi^o@v3J^z|$=Mi7{zpv)62L%A%& zDlEsP_D{r9&rXnV0SnteLhR97CkSm#Xlud*-u4Wz#zuEVw6aUi{GfDLqL!35uSy%8So z9Eg6K`7x2?+pw0sAFr|=9miX-L(}_V+5&rMU^<-|P3lp7(#Khy-5?f=Cwla~ODP~9>obf<1s)L!pqPXI4L$}%dhdm)9u$1opu2JPkjRUZM}+n` z*(YqpC5AE##aT1_Sf=pykhCz04K;(?eD72iouqqp*6|k=pq>QQ3>Pl@8bc0}Q5G6)CN{vq>FSQ>?y_T;G zN^5+HeJiSE@D7}anWXFnnnU1-aa^-#8~C)DRnm-tH<#mAH#UWiufO+!AdFAah%I}^ z?b&jF1qRK0ab*upfyc}oAn*b5usH4uAK@`rBSgp*E%)J~+6pHZ1KkHFiWOFQ1S?Fc z1S?0f8f${`u0ELn;*5^9{b5p{%>FX|_}C?D|Nb+Z^1l&B15eLSIKwSN+mDOTxnK9k z+kOKD`)%i4JN>6vP(8ct6%>1`J@p4R9_=0-v#UPO45?T0lEFkJ2J9E`qfB^u-TPEL zy@$8rLwk?$@R$}R#yj@5S0rD&$+71I?t|U77bR{jja z6I-9V&8|Em;1^3290(kLK3QtnP%K+;d}t*tye zBi|8Y8Cr1URmgqYlq(E7@)G0H63z5w02x zTxdM@Jv4HT`!e*R*2eyB61}kLSOK&kfBH9rn)(- zI~a3b5mElN1u_m`?+D&^#b=}T_hK8>5=<(Z@Y$&Sy_L8q#05X_)*BX&ADaR^#|K+5 z-u4iDq$8Lo z9l~&^*mkD>#BZKtW4>PCjxd}z#i!Gx1-S?)BAt610|Dbr*)ljRc!NqdQW?TNJI3+} z4m>$`ig*$NLC)mj3l}W-WT<@EExj9)y`jp=IW==4pQ!8=mzDR-t)3I9u28VxgK!_< zT!F?~xOf?-O~b^3_%U554}rWty)ls2SDaTi{rp14LFW0ex~KYtfQ{>j!cOzpSXBIl z{Klfv`-6=|p`n7tqVgT*MT;W$PKg!OrOv;;s6Bu5f}%Pg(V}utfD$CkhippbIxno7;(V|e3W=CC*C|-Z5j>LYh z&T9?qq&ok&ffXp@3WoyDa+WGg@PKZroX~AjITsdn=l}N)D(4!->l9^Xcx7ycaw?mV z*LVGRu}mB^Fn!sos%COf=TD)Jn%w=Jx_Y*JCq+UD%}x; z$?s*oq|RGd)Ss7sJ*ovzRM&z%jeJ{GUNJ?qi;D9X6%~@_I)$&sxvXnc-%zlbb#1e* zn^@Pk3ziEtOOR5>hg9CHnHP!JUWM_cUnXMTQ&>zO5<9N2dIS5N!sZ!Rp=uB-4D7=S z+iGADg)KI)n8L0yu$2lE@c=mW>r$BZdt&_x+hpY3<-u6)hZXi?*2$ux;vM<1qSAYV z3yMOif?y=?f}+x>Xj+S=1p=f$rsykJRxkbH41E*m6Cf#MP(Zq!$6P*|Y1a#jj^_mz z7x;N;Ai(-wsrc3S`Ox)6!+H7ddwi&I8r$A3l{cvJen5;_h#2!TKTT*~4v(2S6%dl3?AV#}2sG#x1OK>6V)|?|AMi~zm7M&~z?w{qu z4B5$Vr{eb{b@cFSrf!*7aeYyLe(+w_1F*>vR`NTp_|5!4enP*+MLY9@KMnfx6Y+lv z^g`;UUkUvX8*<10h2WR}y`1dqY4p*%6fe<6n~I9>%|}c~1+S+b|3kTGw5ZUAi;8~d z5k-HMlD#9}W*b1?kSb_KMSU81LTDDUCD_83j;lP4Y!4oLivDUL>splm`l8W1b~ZWd zn!a@P`S^pRV}z)Gg?)@i!9Q1jsOo=oMlgL|P65p-8|MiR`2;jCdcXQ3eC5lCn^aQItRfCz5aAVjQCG2Ll%vl$q0D zV0z}lI12{E9Kk^3X)sVU2_p~;SUxywZgL6+@Me6D6m&;j**Aj$F_g>(aTN?)JP9KZ z49xPuOMP$#smUqmj`Xtc1p}951L`UmxZDT7!UzAT4^FR|oPvQXCxbwOfsgs%ANRq_ zeeen&T=(GFw}YZb&Bk~Y49uAf3OwS2&-KBpeQ-TO$-W&FJ#03{t6<=hlR<%B>x1jj zQ}*p(pdlMjSHVD|4<7Tun|*NG2fyA2XQZ8+f&o1W%f1&3v}Ob9DmdwX2az{|fh9il z%Y1O%17vQ~bMoDuLB&X5VyYZy&k(9JY00ul_(Fk{iMVgxlolup>@-1~e@f9G^We+H z^+!A?)+YqgF8UhtX1l^eCW!M+an0zRo$kTq6-M0FbHpzJ&lL^7=0neMc}buRe`V4w z_7E;}@p;Y%{|)dNM*J6ZN?_wY^jx@{Ve|`n-pG0145MGDMSiAwfoJ*!9dT9)Jku|z z;Z~qi;F%KWx#*n&&-4qYB>TXh3tZ34GV{CtD)3Cdpd zp(ULVxaOLf2fiopOn)Kfg3y(7!%V4^@;HpugPZbG15KEAT5^Tt~V-foJ+79l1U)@JxS1zhwFwfoJ+7 z9g)8#@JxTCBf=4ZYwrjIwn{dEUkO~7GT=t8cLkp5k8}?-9plv*0eyw%G>Xp^0@tO) z7+T?V0?+hEdOn#DctlYJ0vc}@c&0xR^GZi)2|k(rOUyUH=Mf+J{eoUw zQO!3&&-v;MqhAyAM&PFfp6S=boDg_X0qHaSnv7F{z?A~mwH*kEIUeY1fafaLVnN>k z3Yo+_4yU&WyivmeF(1QKzrbTIF6LFZ`m(??{hgQ}0skl9x#W%t`bTy| zP|S6J|3ToHeo)M3fM0}wGsE?!%-rNk;3a`oppfZ^3ea4ZoniEkV%`Fh1n?`2{!!0A zW=$b|rhgQ35YW#CUZQ#vO3P65&Sd#teBU8-zFdWdwuZTKKTD6jyC2^ z!#?zZrj9us-Q9t<&s5HB>FuhT8)>^`OWVBa)-79>w9V<*w6Q1Iy?ImjoJgQ;Vd93y zXrisHr}vh&c-yUQt${g-1rh$KL~;=e{u)H@cJSHg~RG)3%{E+1b~&rn4uxdDE8Mt4ONr?aiMu60pI>$*U4Q*U>7=Vr33ZR%*i< zHr~^8TkqEnRw;A#HQ72nm2FS(Ac|nZRh5B)lFbvWUQ=SvikPUrJJ&E*Tp*H z8`meBI#^6$+_^RL4C87v+vG&6qHER=O>SyKmR3{*rPVZb#5X1v&^nnbS$K7CUbLrY z{jD3d{xU<=lFnq4FrB=v#r0=8H*Yf8)C03S`<5g(H^Djq7`v-;Bc#mJ1-P|sVc^!b z#Tmi%3o|)7XzuRKu;5x6JVP`OM9V7YHLcG;ESgup-djA#;?7%5?dIVcb}*sJ%6Lzr zv!`e2y44$(W#=|;#j|gDD_9z2UcAR^k6LKivT04LC;O7#TXLY#PM}7$)Jkk|mdcSO z>(;ML-njnObxBxcL+6H`&Lj*|Sp)0w&Su^b4lJBYDpxNuB|6tK4~VN3aTgFTZ7tfb zso&hDj>@_5p5?2%)~^u`-gKjO^-P5@Q(G@w8cuI|3E}k;?gRC_SbTZgyty~__4T## zy0W&daeZ=0$LfvEn>OFEdh;4YjQ?Qfk8iv^V-;vp50eTddNNupsT7V)Ju73IdT;6K z%%LXpLYd_H?yfBhn{Je5$r33jh$`D zJJ$CkJ2$s=ZoGB<#?JVL#0D5Nv7xGRF8)@+qj}ELsz`NJWu(47Qd3`#{{*V8sQ)nHLWzE!+cSyzoz zTg5*$^|)CZq2y|^oyY&sscPQbxm9)5^J?p>BH)PsOscJ=?bgnXZJSqbTw}UzEsTJg z?t%Mt^t5f>xW*HjyEb)v&I9#s6rdZV=7B}a>ORq!vf}#cWO8%cdc??V1_DOoNN(xw z%)TRu+uGLjY-&TxU(?lz(9_Ykx@|Rj39vyzw=NQf4}k{!-oq1Krauy>eEh>vj>h$f ziu4N%T+TBy^t{isTpqBtmrbw7ne2MWf4ZXUQ%5iT7ZtAQ_59?^KJm(wp|=f1|_X#h){9Q?6cR zCV$#Q^Vc(K?GG9^>zAWgjei8^Or)>FPvch-L?TY#*0`RDQBRYP{*T~D&pD%}Cr>8L zCoC`3dXOxy$%kcRB0Xn2n$IGFNW@p*r*Ybx$*YfUH>77BX?i`QAU%CXvr8EVHc+yrazMh7uRzC#)E76|Kh*E&(e(9mta`lW$ z>#y+}J@i^1y>g-HwLa@S^jaUU9ke}ld(nKf+$IknEw|N!Yq>Xha4mPO2hSzf^dD0$ z@mz9==aNf2mt5jn?o&8tB464{mzV2wOvKmYr|~lck-T`35eH2AD}3-@OE#0_n(^mz zpwV*63_d3Q$3A$Y55CZlYsTSrAH3fOf5->d{!IIr{NMGV|06?Blb-+I6_c0GKl|Ar6#ybr!8m|JeA5AOKj|J?_lMuQ=F?Y7y#W4N#Vs-MJ2 zyxoPL#?u6my!c;9Sl}Hv*Yr;sxXGu|u)isHsX@QM;6vYLqFfXIyg(=8T(4*H(vM1b z5L@<^9=so z27a9nJ$LLfX+Anmws>$I4_`3&n|8RL43KDN6W9BZh?{ZmD#Jfboa?+yUiytb_&o~O z`fK}q)q`vOzwW_xd9R^BCD+vdS3dY>&&$x8`fv5Y|C0}Xzz1J3Me=94sIo5CQH6W$ z^NtUG(fPUcto6a~P`Fp_TR!wN3v=_Y@xfR4;0LElK9p{`VJT z^fBwPeOhk(^U49p$E07Vwp4iW9~ihax}52yj2*A9>S z;6L}l&-&muT`bE*xsCYgIJ3ortL%ZD9$dL!;JdW+P53b|DiymCl|JH+R{--^- z)+c|Kl;hR^Lq2%92iJTScyKNEGag*)+3mq~xpsMQP5%`SuKE9i2iN+1!-MO38S~&; z?pY76<$kC%+df)unFrT$ukzqpZled+auXh0%U$8YwcJ}gxR$%YgKN3>dvGnc?~?3t zY5dO>PCa7yY5ez++#M%q{5=n@_1DigwO?ud`M(S^X68jcYv* zdFZvC&v-oo?agLVzNe`~&HhXX__eKw{<=*VUwcNuVT+4mdgKN3J^x#_V zYaU$7<#TiGa_0GH{y**ZSP;!L>e)2iN+1OW{1k@Y8Z% zz&R7~4*WF!3PB{|rk{Vv$KUjL-peO$(3||18n|g6z9Yj#J|-UY_?6bP$b&N<(;s0QXH^$!_#FmdiPWAgIZ>VrSvgFotn>-{$5AHz@UvxGvCh@1M{EYQig zUeBSJM*OrrzpdysuKirE^JrYx*RMSEl+W~@Jh=6!_0;=$G#^d>5#@&(*Zi;Y;94KO zKBMWi{(2pTeD9zh^6}<`cRZtU?ssI;d^G-!2iJN|cyO(!Ugy+&w4SpF82q)KI-Zkn z3_mS*6^W6EFU3#e4-iBm-i)8dze*6vi|cm`z4#`jzZd_m53ctCdg*mPMSKH(TA%%@ zyk7e6``{O;_(}RcgU@va9y4&Yd?M=WP6Jod)=Btc&@fRv>G@p)rY-Uya5D~X^WeIE zcY1JLUR^KbPd>VScYElsR@Zwx__gZ#Wp$(-lK5%;GaLzsV* z&x1bnU-h9k`vsH#w|waJJFwK#q<_|jUfYfI_Za#=gL5V?ezAmI`)E5{W8jTA*Er9a zD4yqf+|WW0i8#jq8ed5ei8$Mr#ybciX}m#P1p*t@kvRQiT*ZI0y*C2a{@jmqCel-` z*7H7sNE+Al_e*gG4>~ z(@E11Q(b|$)vpMMt0jMde9ypDC=$qV16QF)Alh!^qn6SIuJ<_;S0P5={CF%AakVrq zuGbm3S{fJlqXw>hfj5pA_=g0g{PS}IFEa3x2CkNz#oYobg2aPbau(O62CkNz1-{h4 z)zY%S^?07Qbsx$b4;%Cs3QGBBpMhUw;G+h9v4Q{Ez-JlwxPj|7&D(s>fr+;-5ohvG z$iVepHQuQ<@G^tmHgMe+@%AbMzto`bHt>%a_<(`yxeRYVVBjHxp6@v@QUA-unf&u} z1HZz+r?UYek^ZCNO#WGA;9&!Qz`(CG@LwDF#|(Vjz&~!_G1Yh|x7@&Y8F+<(|JuN> zGVp4n-=A&Z{RV!uf$uT!PZ;>G4SbG)M^vMwo_}oMF$0en_$~vlH1LNFe6E52&cLe- zJfeaE zbMg*q_lXE$p%_oTbIH|Mj4Q{>nLZ+4ZMy0@d`I zpZPw3%!`*oviw7BXg3K19;Guc40vw1uMK!{Y{?hO# zfqbdJLy+4UWsx&4800cY*1HBd3C!0HauQ_TK=^>$d>J9vZR~V6-%H3vlJycoE`qE# z53&h9=p}?~N@=X@_Yr(4+*cE_D6-#D$hxKcv^MizLiX(sctv3nq2JpIlL&LXxR6aF z%WS@?kbNIodEZ*dCeXofQhPQcbN0Io+4;})N`vd>|F68*kX?M`bD4J>a@{uHUoh_D z4YSS3-tIZM-is4~k8d`#t=_zO^%l`x&Qb4Augz6i}eX!tW)u|qbFI3 zcj!7cZP?Jc5qO{{0*5dj){M4|_J^JNOsQh}4!u*`ad-HSb%c+7IM&V4R zrTWBkRMQF<XpyuE4k#0i3#rgC4Oe|%KsKnaP`<`y_J7FIEnzrY|lFZ+`Ck&Xr%!JAdxxlqcT&7bA17`ro7M->34^ z{>vrasf4fiqc9q|ptCNRU{#SkS_pAIDYQgI0&HtEB{@wpf{rNo&{F`LIVU=Hh zFGH*0mH#X<=c>QGs{Ty>;kt;o{!S_R=G>ODcB}dAB~;ExI=_Z5LObL66oZDR!-{aF z2lwjFcj|NLAGuv-3@JhMKd#4U`Pwh|Jd7k>{rOFFCS^u>fxlXBef*S<{vnlrwVP9( zc=b>C=-+yWq>rfl)Sv4>Ui~-v$ls~tn`{R*Zog@D%KKVyg{uSrQe?H=TF8L9)D9bf)GkMEj z?vsCy%D>pmjB{^(e)BVzeElHcs&nMO#V3D64IIbLk^i&EpR4`#EB`&I^3#8*i`Rcs zKJr6qk@~K4$mjb5x#V}Nz-7iSwgs>JhkWGkR`NHUL;hEM>}i@fDu=p(;) zmK0h;;~2>+ztKnjG1YL)^4EcnS3dVk=CXflsT8XB0c#b!^1FQGw{l{Dv{N3$zOhf@ z+$;YtedM=uuz}Pm5AI*D{QG_6A6N2KF@*eU!Nn{88$R+!mHZ!_!~T1GGert`)ufI1XuO|0D zulmS8ey_}-pNCO?BYs}_r5Ir4Dt|GZ1xbI`N?uKt&;No2Du}Xa8Xn6(FR%8Ze`lin z7=B*)Q6KpcHSpwnk!$UnYA(jSutA-@^tUiqCq@^?4LjCvlb*i4e&?jwKi zkj&Aq{Fmjo@$Ue_7|(1nRi^Q}RUb8`ZbH z`X5LBT=jQCE&M!S)ZY>?@#B)$&yQ^~%2t`E!+jkCI<*#4q}ySN`?L&!L*9nFNk6mqInYyvpR) zc$1I(V_%Xv%>MJ!fOI~MFGqf2Uio5E6Yz4$#{C;|&*aH1=g6o+JOc^uPOGng3qor~jzoW=2~Tc(niN8`^*Lk^2sq-%A%!`8nq?6KR?B@jt5k z63zTwrSfMGd8YGe{A>qwdNOz}1H;IltNon( zl9a&l857&@8vJyA?Y}IKS2m!)XdC}x9csEf-ipI~{Jiizc)BQngolbHB2TGl9FVm^Mip_ z8aAZKI84C@6|}C6KdY>*3yQQ@+A;$zq&{wC*?m@ASB)*zAlgRjVr;e9_dEBTw{aV+;*2OMwXJ;tjj|E-6Qdd{7D-_w{YV&t=23v1&EsV~d zq6@@Z{f)6m(BIVbXMtC09uA>xkO9V8(IE{;K*We@kc3R)Lk?=V{Cu_)F;g(O7+V%r-Js`qq|>%`Ne^ z%eNyG3I|*5gKx@T?4o(FD%ceWZ*j@cPoDyIbfuQ5GDU~^gh^8GkNCTyjOhBSG5e;^ zKdyHPBPBvp-YqV_oX@SUg`J&o*Q$!enC7lcm{k5qC=@Mrt?6uqx>cdpAkA=73HWKf zdGBn~yH6tjzO7F09`}Ba3_mzXfNpBlyT@~-tZReR2@Z8Wz3W)Li`Mlx?<5h_Na z%H88hpRE0ZR+SikT@USar-jJSXWXYz@g;VRzcn#|jxV}L(AEogx&9*BUvrO{gpa#v zchC#>mY}0e|F3~Cm4@D(Y12DT>4lG$qpcTyqh1sTHi%+i6jIyt*U~2k<^#}-Q?=s| zhjL&nmnx|C{c3#CcxrHDrlxt)ne(}?8;^PQ!hxOS56Umf@^M){P35V9K@^m{$z!Kc z9i@7ITJOJY24P}9s@9+Q25nDXY)I8R&gnZEsPELkABc8H(=sEvag=tYacQsdL4o(6@H%Ih^UBeRUeNt%24lcd*8BRxAsnkPvMCP`m6JsknfvsxaD zP3bflL=ScS`Ba+f=1c^5PD%Ig1zYt3!AJzwR3& zcKEfG5CeX#gkL|3e-3`_hd;i=i_`ro@+DxTbPhH0u&6(sIHmW`5kCHK%6sp`leBzL z(7HiEY$!&|f+hr7G=)$Mn?>3zXi5V-XclA%T0>^B&n$ME#h_XAisBPJ-ic3yjpWmA z;v{vNvHdxsoE(W=m|d5S#N_-KvCfZzsrk`Bv0jJB-bJzAfH<~LtlJUCdnwjo#4$o~ ztVbLh5XWILKgg87K0hdWH#57u=Gh4o6(QBMm8qQz3#yK5zSPy!^d|SxHdt+LH%4kH zfj+%z*ylKJn zmqvGDuesUYiOu#-+HA+sk-9crm)J`Kqd)NuJhjZr1xDZ}-od?NXc&o~2@`4MTmvRbnJX{7zN5%W)pPovd;UjwuSx$Cr|`-Z=wD~~nqVo{E|)%bh4fXE^p|1G zyRO{+bM!{X{J32Ezk7xBJFbwv3G|n1OVJh3{`t?BFZc8n(0&cHmy8Ui4rY~{Uutq~ z1tqp4%*=c>wUQ6Wcj#ZAW93T6Qi` zFC@)#0PWjFllyl3ZARa7CA3?g5W3a($F%RGX&*)+KKOtTUk}7nh4b_Oz+e`v9c~(J zPa4PR*avCuCQW2gt=|7F^K~HvsMiICsT@&#bJ|%we#}TcMlTGpLDwZ-F%qwtVX9n* zYAS557HsN1*@3sH8$mxhB!d0bA{2n`b{FV{k1RJEO>UQ7xW_OXK6i;;m|SNzu;1&2 zU+qCdFYId<#Uq2F*t1U*$^B;E5fs7>BejRfjZ`$>YQYAC1=2>*J!!$X*)T202LXCa z3+9^*(}LxKwXaANj~JrZvrZJrcC)Vsg&B#yv#6$SEzkT49}X%WKQ|J6!&64a-1UeF znIf(JuAAPWz(^I7L(}_t8orCi9{c7uzj@&{bKbP+p-y+bUibl2V(tw%t`wm5fIEx> zpbNFf-MwJKai%0G%rW{-I#!Hr+hzoYy*NRq=501QUij$RwQIeZ@dZZaB`k+MWF8I` zuBt_u6~EJW-GQbfZRiJ18JW@RSByP~DI1bzLYiJ!iuTj)A)#k0soyCMYdCq51)p)J zMNfmY00RCIrw$`|Na#u49~S3PQXM!W9Hv9UpTRS6Xk0w$05Nfhx+V^dh$qeCi9@ts zO&l5)&$M_R5l`BeCJyZv&mr;LC!Q48i9>_p*-Ou8&qUPRpptv&LrFidhj7nD>`Ek7 zo-{Kr<&L5yzEFp;>7sW8&8O(I#&gj;hY121;^a}X&vP*~uh($~P9dzOfb*XMw;H$C z(t2TzURZ(oU*SS7Ie(XUt?vM@hWE57aSt5~ZH_Uws`mxx)qO`LE+}yS@R4AoJJ`wY zFw{kaqT3jbyQ=D4xWZ`*MqHuI!AM(Y=o5=w(NI^=6%KXKRZwRr8e8n@=nmjoE*d2A z&Hm1KP~4n|{pO=|Ww90;E^W&N=KjF;8@vJKOHpkOJJR}&2psDDB!b<43u;E`0XgRr2aFpDkIrX!X{L6n4PHy+Ut-kwHCGgC_^qMQpBtG zdm%~M^9=dqxhPcCB~F^Cvj3U1=*0ZVQRGyDJRgOCCJv9II&oO65n=U&aB<==&B2Mo zVvQUg7WK4v9uZHmMh@>6^&#;jLnaQ3HF9`R)O+a}@0p03YXngt8Z$zPpUcHD6{P-j zd_{7edpl0yxtjj)Ett*8&(ie86^59>p7g0aw}w?CEC=cNcY?-T4{E*(hV1j*Jo@*g z9SQLbKyS?a$yZnW4!ki7FwfK{jyO=X6|4EwCwLqdrfZ2waftWaq>>At7goYyk!Zf- zl`yay{-E4DWR{N}MA@dlbsYHwHoM_AJ^JH(G;ptGHuB8Iwsfwz6w4h*gClp~Iq@9E zGgYta#_`N}-U+3PO47I1NZmwrwR()?ht1}z_ZTU02C<%+Gz|jjt&9z!vho&J(b|@H zcP#Gmc#4-6m)zuui>7B=X<2be*&+!OHEm^D0WyWDcJ*44lO_zaTBLchbZl+V96be& z_gpnAe>W5n&$Y6zQI<4IN@V>`x;(9M7VOGdivC+EOyXMWWj!X=GHg|k$2}-I`<(D<+eb9rhO6W)6$kvnjo;{VX`Hai|FhmTOOkE=$l#PEYH2) z;WTQT^)=3QHO>t+&h{E-xW?H7=?+Lo-i^Euc?fww@0xFkZWB(CUG*&r%2HQL{KS|=Ls=8&l0Bc3z0B1=z; z#E)3;jS@HIO?7rkoYogl_lX8wCrwYAMRTS$p9cWg0}>ydPOfd2xM86mkT`w4@RX7` zeQWTvN8)rl&C};4E;ee`@u@`^g_n$r z`7$cxq@qrH{aiLn)Smx>z^B%c*!O|`5t;T>Ynp+$WW${{I9(cMqj%ZhH`?GOHu!2A ze7z0cZG-pQ;QMUwe*r$1?K9$?gkWWC=)W)Mr}m$G8Q7l-d}{v@?yEqUI zYt6O3H5Fc8b8|G_(p=ZveAns~4V99>k-Tz!RQg39wEsixJm_A zso*Ltg+0vJW%ZF@*dGa2FRKpJ)5mT{NBz?3z{*wijit@_r-`4V1Y=df%^iWDwy`$Y zO@GlB@G9{W0Ika`rhc!WwMBwKsPU8q;`}!U%bPv|Rrv8i{T8jcIUIquw&pJHLpVwE0HY;5v( z1snXaj!=CdX10iKO(heesUqH;>v#->or-zmmBN@lZVwgi$8!C16091OOaJ~zgecZ8zN zEg12#I;=J^BxzfhuY!uKQN>Pe(eOPsb8I@>9n-fNVIei5?5|IG&fr42q|gU^?Hm{tCVZSW2o ze2)$OtPOtN2G7C%Ny%!@O*Z)L4F3T5RD4$1;LkCf&iIP{#|&T0@Ru3R<^SFW|1uel zL17=k#3+=k}aqIM@3o!?~Q<@`z8vK&M%y_Zo)N*OtPI z8BXtcg>R5J*gJ*1TgW=0iS8?0M@Z}7DSmHEKRxtcC48Mip^ot2f6n`%N4S||CpFj69{Qama zdw6_qWw?0{X3C*4RrFtCa&BYz)ef_R?75xcbk9SH@N#4&XBWdc{Z|?O0Y?8FhTqKa z6Abq<{6{u8{pE%d*~8B*A7baL3iK&EH!!@C;oEKSFWcb%!EnBQUy(SObpw$@EtbzYYeYta&!s+lGWea7|!G0$Z$T6L5Wl0Mpp3&F?ud1 z&gf~cQ1shu@b6ggH|2NSe_L=R=bXgJFFsGc!tf*`j7XT(VAbq{#xIcMv7QyHn7;*OEMk`J zs)p}&T)4IRV}7l;B^uR=2`HX^jbOR0D~^PSemc?Lx+Npko?=|H{r$|iuZsjb{aGyh zTgvSjr|!P8h*cL~c4}?!z_L22?y}5C*gK=>Y(h18h4i=Nu*;?_zIiUW8)9DKHZKy3 zhl|y<(B<6Wn(TCc+w6}-{9D9y!W@}?vnxkG5RD-Kflyahup85_I}{5RliNb3JN=@jZb$ z%juCNS@~&yqILcE^3z$GWZK!U{@w->k<`Ab+G|iDe)YaqxH^aNy@>jh{i@t4F)RNN z5hKmEIHvY6#s4B`sBX3YpyX437bIDftoFYEjP~7fWS+wBGg}2xp$kp&Md_z+ZA!DC zJe&Rkr`i9!Sxi2y`g6dXO@A-FbdlOgIFbvQ_GzpBh3F>|tN$ZXzoG|;NLKyTHvD6f z|1HI6!(R^mZ1#`RP#sQA%&2>&jbKVv#TB>J}HN%0d8rAH*c)&BzN zsQUY$Nqy<~e-8ZF?C&WtIYy)+7n)>}(y#1)QtG$P-vYXE{;Lm3NK6zm3k<2cXbZ=+1|6cIZRJCjqT7h&>(St-J)m9~)f3xW?SZdO%IJwXy zmlU7EH-n!rtN!_tK#emT4MUw`L_G5hj|B( z8{FXNpHT&wDeX%_7Y))+cF_-x?KpNwqmv}y8O2AMcy#O0-<`jHKT16TI(&5N za{2nT5Pjw9gZqyjU%vnNL@z~@EV(XG|I7tS%$%c7%+N&n`rXUZ^f4q061p+071dSpBCD%**J6 z{*bZ$nV-NEKSy4b3-Uih$(b*bb8?3M0AC89#q2(d>8x_X<%5FevvgJxJbMxHnlvtaiFv+HoJql;Ne@U^P7s--$Zfkxkh4FCCf%$tVQ-19QFaT1 z2_`L9KU>W`AgSwj9VC7q@B_e~1Agcr{kJiG_ynC0d2}Ma7bFR|puv8;$vXQobxF+o zoMOq}{u!d+58orta|-?Wa~d2&g}|RYCr>}m{x%c474rY~Mdl@L+{d}-*b9!Uv0zt? zU9IMX#xyEV36otDg7_&9`G<~hFeLarv>PN6d>)#a>>}S61mG|0#>3&EK9ueZbx}8^ zsjvGZ@TDo>`wL;%Zjzep3JZa!Xd$9SpSWeWnnyq0uTh^@AuK*19d(tO78>q{>NH>5;hv(aF`WJ2{kR&8dQLj!(r%uP-n-Zz! zB&xgqj4aZgp|k!jYPpDN&*&C~lRdYnw^MEMx{pW+5E&s*Crs1^P#=*5&;SOY0cZj! zf;^~LlZaY_s5?ZYr_l~j12h0FfRsU>029z0#U#d&PU0JusZF6zKow92Gy&pqv;i1h z)LBt6&S}*9uh93$@Ey7SLXn-1^4rl|EBHEWwj*X`+VGe*6paT$>@f}bF)Br8? z|4W;g*Eagy1?=JbKE?rOt34&YO$^J&bdithjuPy;mn3D>#*8T19v z0gW%9{HKt95%s@>`rvdOU;=7@27um0eSi+A{v5{ouK{01ov&aH0Qx&v2S5WDfCium zpkKiIFQNRGk^U;`{~GH5+W+C|SaWFb>-YdL01ZGBKwrZI{vify0DcQ~{xK#2XaHJ( z4nX`m+5k*I10en`%Ktm0zlZuw)CV*GEkFk#{&Um^n1BYL{rec}UjhCAb^Z`@`0w!@ zPzBThO@R1E=nG%~ntzP)e~t7{Q2*bc{MMCP4hRs1GmzwLisJ{~O@XQ0G5j z4gm3g$GQMIzyve_Er9qR@&13Kyo2<+sQ*3G2Z-NCeSi)y0Zl*)ApQX3{}smiYk-A1 z#HbEv0@}aBcNi=X319-MfTl>DTo)s9quj$tIfnXxCZG+VUX%k&Ko!sg2qPMMLgWxA z@K_+PNXL?=1-g*57=5Y33ptI|v9+NbNW^w+WWM6+1c3=`w<@-nq#?!D5m$%^+o5(2 z7ze9Yzt49T!NTpwSRq)m_8FvLx!SvE3s%y80V!BS0|)4!eCO*(LD9}XM?aua9h4wo zzYYvHfLR@wYXD<9Fk)D$uajbAV1)#w*%?4Sfz<$%B%>MtXdwg80w}0kPd)4T&JC=5 z5M=;u2xR~NI1^lxjRC>cmpr!R5+^(V{{M2?Hd^58ue!)Z^mAQ(%OcTOm-+%DQ#>t_I>Onx zUy>;Mb!2F{D?5vH($>(MvD=(~k?+-WBN!f2%{Uy!5LTLHNzz_>JE{@BOx zcywv~QN7H4o+7=7UpF@rrM4|wiB&WR*) zXTR70F6iY?kf%)C|N14()H}S!*73$$pZW6FJ3M{MOY_~>lLq@K0cMVcLYp-`u+{DB6eC_9%|L0~u@X}d@x3RRQ!|v5cykZj9q2tm8 zCeg3{3Hpb+q6@4}$9?Z`#Q#r`cfIt7lk_>D83KdW!2!O?@4ZJl?|136jg9?n(wIPu z6WP@@a+P`RtNdpK`a>_#BfiNoQ4p_nI7Q%-I*ET;=N?aj_zwPzNCx;U%{l%TI!*#t z=LXZ2w|-{O;coKXZ3=v=Md5FoY&ZRQ&|)q2lj+Bt^$&jc-~FXXH+bt)H~!f(WCY9A z^MyY`#$o;ZmHM_wkDS)O$^Fr|WpJqPvi|LlegWKaqs#ho-(Q4Lt=l^PneXl+B9 z_+{93H+rnMzjdmFjK}&~m#^2L8^^34{nf8rM5|say7d#khEHCr^!2{KMn<%L`;W!H z66w0n`q|d}FN%~Z2Xy8zkj{t{@=N5KMH&*x2ZJsYL|Q=FhjbDtX5dqhMnS!Cq!HAg zKpIE+DAE|xF{A@XN09a-m60Y3^>av5D9<33kYWviA&stEedcoGQyQXOMLqE zUmUdey>AFi3gh3Gz;v+#eVBU4ffP#%Iguujx=iN7(nDRSkEMqo6?_q-*b6?OCe(uz zs0(4E_@YRU8RP?ML%paE)P|r$eSV}OQlLIydvm5E+qk2!e=L^Ica1_nTJ7)DS&^p( z-w@tRm$yV-e5H_bu6sf>aGhkPD3qG{@lg`5Kq%vn2Yt6AO;;)wA{O}b8s&qLxa8(EN{1v^ zEtrb<+c69Q`OK8K6>A8*CfF+u8r^EV`mRaoEvnmsH`w1Gr5uYiSRe{?M$6Ges1B7+ z*{}9P_U8ObqV*-Bg@Y=$eo& z`-9;ciQj0rrjsudtieoQ_lbB-Nqm=ip|MnNOkh2$3IW@1w{~NgGTmEv&O4WJR5ERRrR|INM_+^6v z^HsL*FArHm3h^4uS7IGrowKled2B?i?1hA3tm4tTLnBqPFdV))P@b?bterPVO_v$1sEGTHbgZZrvM6fkWC4~Z?Mp^%oLHV^iu!9N95!9E~ z<5k`%F*#O}XnG|wAknFG`9jSxTh^m7iCB|K8gebg<#LCpIc#PPTVGSspzgOYLu&a>q)kldeMTGd(8prwuL_JJUZR9Hectls4Z*j$8`+LILg1~lBA(< zPXATmS6vDh(=no7IpT$@9p3i=39)mqf%^BbAd#Ei3t@9mTY%`vm;2)l^1t7*U(^Q! z(1D;WviEIy0D2<36YodXrl#5-88A6@AR5!ynYeY;V) zKCJ11_2Bhb=CPzL|f)nsQP zR;a;oz8}_)?TY2MR}vjUdZ&N0MN_UysCJB<5E)b^)N#7%>~u$An&gA2a0{j>7Y|jT zaP{6b>(vigo#O+WqI>We2QG}v`P;)7khxGJ4Y_)`XrR#4?+GMuba zwlb#?P_3@}*Xwk0U|>t)Mk^_u;#+l^GUBY`;Pmd(Vr9jkGbR6Ao!t3U7~h#m@m-Ck z=lm-gz3D3#s}y-@CXVWS5=twH|yvHVmxtObU8 zy&9!L{#y6(-k;^#0qORT#!bZ%)P_#3e4>X!OCm{!+sNEOW?>PTA!HsMAXA1>vUHlJ zqy*LM>d#R2wnUOYf(#6E-<|WX4ZaxO4ZN4}{s66mK@@--KD#0q))z+#bICV=bPE-v z5;Air7(%*?^uZy8?xR8UH(#5I{U~2Yc@jOs?vmz;C|E(kG745vFh7riMT4ZLPmwvm z823Lxp>5Q7`!oybNFSnnA8F!?6e=N2AuVEv6{OJAzSS>MASBV8zq0sL2{6T36iDP1 z=T!RfT2mOb$P{+d<$D$c+Z21W`0swpsrbU+c=3-UpSn(qW+1PxCnSIVox=a?{d)aZFb0M27HS!OE;iO3}_g)LR;{#Hc^37Xk>k{8hB$< zmvq})376_5{&BlEzF7-!Qcq~B7LXPfYk|SdYSlJtHq&~Qv8KnjVNzy;)0nhas&gss z-G&=VWNTv+V{L+s)<~h_V){K;sl_(g7+_`~yj43U-q1K{ZBg$EZ5jb}m$r<6PZzn+ zt`W$WO1lkm85kH=3Y{tzQRvr=K%iq_78Vw{VFVVsiP}bh{ri5G=$X-}MA&Bv@1QUz zdi*7w^Z&@8ROLzC71*zH`CCRRt9u;YX2AaJ zRG82Vz)S9hOgle0=&f;Gp<*WlmFzQWTnM1vczV9d$rm1BJy)>V;3=x-ZeFNy@+D}3 z>5Eq`iriwR{0>xseBr9j$=41s(}Q;~bNR|0WG{X4TCF#K`O0;>EoH976quK2dFAT0 zqs3j-S>Q&Sv~>BJp-}L8jXS1?PoJ~S)wt-@8pr7rLgML&yhe@=J9ELh&=DQU7j+-Q z3VKbSx8@T(4WG;OLE4rnDqjdRZ2pnEm}Yg`O#^WUp+ zfxl3EYH|LC$;l;~X172yMx1(mzJz5j+H|^kYeD1G(kE^}=iRzp(zwiRYzL;H#WSdm zyGu}{@*-&0e@~;x!=_ELhYAZ}GpXiMNoUgICs^4+mFowbzHVKwa?yuX4!a|SM7?R< ze63&GOuc2@dOc~0Q*T?hU+1xyyVl*0%1OOv-Fuxk(7$E=xXxqi@lhUBWmxayD%Sgi z*03CJmE-+uRWA7dRJq}&PZ|sqE7=rXv?KzMR+05CDIBoi9bmndA?PkOQf6kux+f`1mJ;bYf631Xu6@z*;HvKU6u<55d zm(?6~?wnX&KeygueG!ca7kT9t&rv_zfQ^d~JMv;2y8Gr+pw;)H-8FJy6J?bF&?@%e zmO<0!4z?5$I!>p~O>fPYYC)i*2$eRyeQDdkc}p<3(C|V1t0n(=1>5lQPJ^NEi%S*s zW57gKcdzV1k>9_68&XoC+@*enO3}*GhYb!1jLwnOFFM`>cN50ru?<*Ma>>TzPk)! z7jIqG*!0?(*``vaYz!H+7_F3Vl0WkxM)rhda~0KY-8K|nik1J_#5?XGORNJc)q>S2>EPd z1ctY~bgmKf*`~&h2xX3R7n|wfZZqhAsSRgEw@GuEvhHtoDKEWUEtZvdMFz<>qU|oI zh@Ji?x}f^kHzbdGE_egy1wnD}_^U@G!SsvV0D(5Zz-s(_1le~I!0q-%RA-z{u>n|C zJG<{_0)x!ymo)gFo7e+#B8luf{hvg3V@RXXp+uEpDUD9;4s0N|jG|PsN~3c(j3I0@ zp*19Ltm1PbfsSJ<&?s|N3O;OQ(#c4TSe27PAmf=RJUY-s9}q3w3wv!KRX*3`LgyMh zBrdNJ-*oiWGD5@0iOyazDz$Q8Wc?>3KH7pS0)mvC87O8QISaL zJ6TzYXi3;wtMJ zRQs>1U;;G2mqBSA*8FJfSrRCL|+ zq&7FP5Hm?8MIonh1JPC&dLH})hgp`c);vt4!FWGn3(SFqa>QD1^!RimDv(ryB#esP z5IfO<3w3@^EN@4)bvOhOI0Qql{;Ep(c--G1GRR*^W}R(lF~-jRsW?NpKi#9se) zP-EEKn*&mnfJOG{w9BB}_Ij-wVsCwO2fQ`php#0EVg5}IL=GAPJc7*{xNqnk9ZVa9 z^o$Q7SKKakD6-mzu*#&ByCR)f`IS#$Ph78D#|&13a~jP>E5TATL3RFY zCA`9_-Gb=hT8Ypl2}ajM0S5vgt|(2K0ozvyw&8ElX0nJCoXMCs4^ZhfNL>CbM$AmWaQoVOZzhGhp>ktMNEr zb%gy@2Wtt_GvZ9c$vWwP09jad#Qjocde%3qA20bUeg2vQSf1*gk|6SNGSOFcOc%Tb z&GupaeW8}GTS+Is*Uk#jkm(w9RkRa=lE$}5&m@QQI?*!$8RGX}gerg08Fc85 zk@zKijfSq6ZUr?mzoHkSvpHEK0(T!I8aSGj1a72xd zmq8iZf2$x3^^m_$q_bkQ5^lLa))!=Y+}jd`=umx%t4$||T0N}0C2|ec+vyfsJrhru z#Cz*g%++#(_OHc=r_lw6b@B;o^za`Ema4bA$&Wr^RWB-YPE$#LpKlA9D0w`@covq;7Q_E+Q6$g2V+WH!?m>Eb;fr7JM#Pa*&q|>QcD)2NFO85TL{2AGGcJ z);B8QuyMTa17d*!vE&G`o|~C+VrHAF&J)ikCd3?9cfL`UX2F3?@nrwZkV3QNXi{ps zF`yco#k(4w*-|J!Fc5So2_KsKuE%yvF*LtM=>2;#3nI^hJv;Ctl^% zS&fF0scMfOdr#h&YC&7gueN*aZ~9anTo&JuoN6+;Lw&L|Wl|v8nh1Qd?#S=2=-5FR zu2^W&ptM%)5p8%I~FOCZS>V90pb7u##Ox7oBl#y0MhECM@?p}xF zl7hj`FXO(ge;-4%%4bM3eGE(!Rvti3CekVkTyXuj+-hqRzq5+c22Ch)&h*bxC5U zE?hW}*vO0@6IGPJQCm<+RR#rt3ysVaHf>lA*XGIWUqCwLK z3wl$4TXG2}%k$26QN_`8^9Ds>J7lD#8uP!Z$D`XFOl=lpoIfvB87JjWq>hB{;tXto z{KbW0M__H2Z$Y6Go9Rzg+2|}Pr!Ov&1080fiJFhE3sATDnWb4&MMr&o@D|Q2P6g`% zCy)S+s8as&`eLn@Yq8iAG5PA8!ZI6@*<+(%3*?3~w%X!ky->qiQ(HBXXD1=@ru~Dcz@CEjOg1QgeG@EUd#;;{ zmoa8yQeo=Bda;R9uhpwf&=!l2V5R zI$Kz9_VV_$m$ya!bYeW%V(=_Db!n-9WfUi>I5At#^EDQO%+W{ zcf($VKNV|Hpja0Ka;O(JFTjnJCR(^WD@{tU__4HElRrH>9;$b{(e&cQ3w2V*lTr;> zK)uW=aLw0JZoO-C0{oZO2Mj{9d@P>mkpGp$q6MAuGc&U_#zdN4@-G=osLuwHjb5rz zcinZWk{B?3>O78h=+t;|+$3Doz+{TeYlN9@VU9yXt9Z`Mfe|^Scp~-r4|N(14(SNl z)cL?Opvmut^~umcvCu(2l8m+O;kfpEU{Z1l^!}U``uby-$pA1IpJs49C z&S2ni%U@?|3)M5GU*fze4u!y2zd>RVQn7A?NUxB`C_nzo;_BL@zbkvhIRMHr3ZewxSp9v|@ zEd~dxf(aF-i4NV%w`Nn$UWMMwR5t2C(z;Jof{1d?Z)~K@E>`c&`!|C+2mb_GuHXN% z#RdCd?7WnEPi$-uF#Ep7MWam|bWA&%6xN%z#LI66lR9S$qTsqt8C|b)C@sY{)~N}6 z^aW8%>l%%$OO#H=6kDLH6Pp`o*cXrJJYHpG6I(GDg7~7QH@dAk)Y!%*7CIkQ+MMdQ zR&4fPN5N9CPZXrSlF3dC3HCnhx2whDg$^$TFG7GMY{?=^dYkg&GyUMMHc*VW>HbNn z-UBCTc0-3_v_S5mSKqMbnSZHBzKj=0Yoh3ot8S1ZMcZclK86DfN z4-z~!6|1okKhTk1O%*{`lhl;0L*znGCopuRPI;-cg0mBQ4t)leJzv0cb#=}lc>;`+ zk3*RuUU7Jt@?V$pxIHsw)GtHIH1}fT3DikeIv@Yx1&!#`&S4qH!dBS65bn zmwrD`pI?|)IxY?#U`Vg~WBna2hJ#dj!bY4jSH!wwn{}9oGZQsVp6#oVx@NCl#f4x8 z>-FPX|G;dWPA$cjnk*JH=+yjt!Q@A_*3kB7?XzsH6^>ZCNrAO$f)I#ZBquL9+>lPufs(=F7Fq83^#-sfG&dOo-DV-H(Q_Z>GBcnk>~yg>S97?*a1#Gv`$V+EHgJzvt?K&GSIe#vfLlk5R*|@X>rqq$q3XSPdjlmln9>ztm)IZ*$6a7N1 z%H&*5BWZgZqCT8%W>c9APKW=jF@8Lo-4=;AcLzsDb%__*@#kY>x+GNXkdD0*Wc_J} zUwA$;VoA6w>>jJqspql`0om^yk%$_29Uhht{NTdq7z5dafC4#_K{n;c!A{I(^(4ca z#AOJ^0iVTgh`~&PQU9SqgS%al3TJWQd4E3!QFgiqBq(F<)bnH#<7_+oCEGxe6A5$? zb|o=PDuwK@fC9Me$YvZVgXEzh!hIlzg1{qUsT^M)8hrIVV#mL{yGzi#r;mSmX9t<8 zP%5wPZtCvfmyJOI&1ZKv&{H^!hrFYae6*m#&PFqmkFUv+lbRI#a)$*z0cua|uItk$ zN9GD*&+#uuVZRCF87=Ne-t@=>^^(GZUq;}C1r{3H)mvTBBK4jw?dZ4&9us})^7bZ{ zR2(lg1REiX+ZZ@MGP-;e-Xbg84a#R{7HdxbD_w9XZmvPGunFN+cMIfHv)Q?7w=8cr zNgZ1mYm4$kxDHLcAlG{3W#Bw7FHO`59m}OK>TFFeH?bmF@0APT8k~ozQq$&od14sG zz}~3h!HYUNHZQ{S7#5j&eqjR7t*!kkddL`%FXM~&HZ}|ibaAp|MxuN8qGYP1o|_rd zpfocYJGHi?R9Szf&Z0&8ZS5SKAV_`n!uSL{n7y%D^i+8{+5zh37n|&KA-dT}MwdId z@tROlV`I@KEY233fZS%ASH~vD>hRI_FSIa)T#HVfpDCi3-4IlE3D+)|_ezvY>Qfbz_UWwSI@mBRjpZ6`rbu8Q`!P#5csKPN; zcA>hJa0A<-xZUK`?UAhxon9UeiO%R)jX$+Fx+k&Na06RxLC2Xz*FyQ++&QqOoC$S; z!R5AX=Bgvv%V3k@FetRPc0r8hw~l-#h2$*C^2_5zAh`x7X#Y};~ITf z+1%EunccG-ZhD%#5tCd^B26Y|liU@?QiKEsX5wwpPov6Z!f1i4NnC4)w+ zG2l5kl9g~dHb5GQAfT)5hd09IC!=HLTd+e<&duf;J*9FqIBvK`E5U{@pB)aj;Kqxg zNL25Gs+^lyY?>-v>431Y<}Gsvj{A!gMG&XB=}j zQ}}gY5E9k@ff8^xXgcB_ZyX(ziXqK!lb|m=(xP}!^yfo9{QQr#X)qjAIIevH`Yzbp zhw-CUu1Y8Syy3QJpPKJMX@xz}wy2cji)}g)$2}&Fq>kYb#HWj!p$wWt+;Q@$@g5za z!G1sDfI}f%tzo!e&=N`R>%$`)#v>ZV!#>8##N&05H6IMZ|0KRWHDAt(BEpD_yRZRI z;>I%dc(=;Z7S&IvYd&9-ztztGcDJIm|+!TIW0+~dbH zH7>tsEkM|rY^Y*sxT>M6uJYz4^e!l>%9%~$(3kndV}@7bP#vaBXIIS*Cyc{Wa(dV} z^k>^A2EWTIZ=6h9c+Gx=%*#}pO_ehe1vjhn*~i2Bq3?YqA4|7(@$0NWhB(ASPqcQ$ zKd$Zg(h?1&F+=}*3WbIdDKZR>k~rVU`464VU9QnJlyg@R;7uK;(8%wn%bDS^#_mb* zzj8SHwUKmE1Ox6$V;0ViC&J8R(paXx8yr&({g0cFGWN07h(UpzVF!%lGFgL#U$!5l z*9m5n2s_BF5Mo6pMsgSprp7LbEWPi>L}VR@pu6)E`28}S%f7ddd5QO>^)abCo#C{@ z{O;I(1F^L2T@^oZZto%#oC{61ci)ud$<|Q}Y#M8$4xQTHN3lO^yus-lDR%tp@sS{t z-W-jRb{OY09p|r*eZ=cRkZ?h+=^?o`O|4^ZRA#r~JyxBi-1bqtYt}w1Mo?_m$Xw2F z=BKhFZQlPuwI`Yd11MRbFAl87CqVqk;jA*twciX3x1D42BQ-TYW6hX6UsGWyzQuLQ zp;?7fr>v=?yEDEi00{-FAQ6v(qc_D;j@}#^M6`u|@dccyPFU#Q&V#uot;xTsx!9V$UbvmpHa~K>H+dUCJSNYH!aDHb89nPI+f^hZNe)l(U-$y7QK+ytOrs0^d@t z$Em;!!I6OPTvHmvIl^gtJ-w44Dwy5uGzJ7wq_`ejVjF9d`sxu zIV~?8Aeukd7VS7#bzX+;Dd)~3yEr!0wn=aq`9U(q0I%0slJPzWrCd(fT=bGKD z&Ei+uEPqKJX%K4*>c*%HBCpA#Ao2=`tYhBmqu?9g{c3k|w0XYRRLldg@!4Os{s&tF0mE=bk6=!noM2-AlZxZg=Y!U(Yak9}%UCS7{eKiupx% z6>bXjsh$ud?o?Uc!?wHb=SoR`OJjBovCjF0^o zTd$(f=}*G;2cUJqsaGhb`z2Uc(&qqu37-aU*AK%xc89d_cWWJ?k|N z@bf)C2;-3sJjMY!8x@yv8Bd>JKMot6y*Mj!yvb#yjA;jjUddh|7eUWdvb$n2KVF0~ zVwmsDK2W)&9G;X*Q%&5D;2^Nb>c`Y4bJz;_N$ zR4ATn59NnvhNVE{MRk1OjjBQ`6jO=1iGP{Qt zGtio@N>1;MIT{?!A13!1QkXERRow4H)s?Xo%@-{i%e{s>I?))Q1{Z}4Q*+jElTBNt zT|L+-JGR@7kd55vgx5%k=1)kM! zr^a^e3SWTOtsF=K6sNDeyuWOqF`b;>S=Uj%_QVOpYHhcOE^BoB{wQlWxO!l;vS(0u zvuXPV;dA)bCSL6G*5PsN?e9TGKDgql!Q|gPhw!}u-VKVMuTp$Nqcg+1#VWbatnU|a z7l{w*#x9C;rJ2s)XHih+2Xsp_Hc0fx<>gT*c7P##}4 zmVJ|GjjbWCov$xv^kHou)5|=bZ=Pc)RCXFWzNsY&okvHjXgiE_{XB&V=nyBdEAnQc zdYIWN(hBt38ASrU=q8+kmh&@J{TOIb1w;{_<> z5y~Qrb9f}7`=OsX#TOb;d~arocv7vqA1c|6D9CKhAG~5BhTyY+L_z}tJ`$mIjbx;-Yj`Qi_aE-c}PKSPn6KQA!M_{@4AVnQg_h8YjxiO>cNVbZ9 zw7`!(Uq<5<@mOfZ3`onEi=7E)Yxb3vgjwMFLF$6)UC9pX%vJ9W-mXE}L-S@{Yu=qA z>iZzk9QC_)xm<8J0_oc%a-|*oGZ6Gu02iU}+skzqghW8XF_PoN3imG7aGrM1c$m1* zc{6Y(lfjcXUqUICtH8rF1g+el=rkSFY!H%tD%g3$jqMUyEA(= zJLYY94(6JRM zVF42HTo!tU>4NXPwlcLH1QWp892veK_DC1bYm~gG9XdU974b3`gH@@=p`A^nrqM;>eDNbc5=CdWn{03*qcmUc^koda>c+jm$NtrlFN(8J{+#tlfQxNt@1Nu zE3B5!s4Mw5^=49rIO^_yw+i{~$f%wsxD^-M<>LfpYjM*Aj%XnT{Ja2H} zMV%1A5dulbP!`HJu0CyX>eKSuBB|v^k2NMes(_WA=m$<7zd1GW?_*3ZTxfSEURLAX zTEyF|a)KGhshCHLyq@Ek8`cdi;z+(~9GNBd^y#h(FIdrv;>4z5gFR-OOoXBSrr z3nItrELYj8I~n?u4nZ^ZYUwik-%@T5&uchr!AZ>MUgs9q@UppGYf21Rza(;ff zJ}%ErU@{Mv3OY^Symj;F=45fbfuFz3uGGo@LhFfMLbuBh?9-1HXAC=VWU(WjxN#I> zSy;`GGQB*vtTBW(-ndb}11I8EgA0_7DwamM&^6F)R<8mh!{-d_vcihN#-46=dK`5( zt0Ip1TK$ea@$3esS(uq^P{uIeh1PHhxXlnwp$pQ&HBAt&H18l{=LARTDMVRPB4D)d zV9?n^&E3E((eI3F zhL9f_*=snN)-8{XWA(BOp1XwOZDv#A<1h*G=SH6@E(W%pn1tJ$fBNyaUx!NWDH?*u z#wQGz0aM6+{1Y%`;!53A_r@kQ9D=T)a9`O+c2(D?AC!-+YX~BqTCK&=pRB-;QP;;N z#Y1^w3q32!TFrqEXI3|N>N6ZDWSK>r90|sGkeq@Q>=OZ>*ERFFNHM?EUJg=y*MmA3uLfak!d0 zA$Z>T(cGw!#Q8@=7PU9Z#c|#CSyKD1ifl3SFgh-!5JWj@9tviPQwCsjZ*FahlHxDR zuq`!=nCctX-M!URZflIX$)Kp*xt1T_8EGH)zmSB!QJv<*vb@NI8_<5nzv7mjGt=*>!1Oo@8z;ix%siGEr*_NJ_V1A8#vJ1xDE^Vyg_{1 zK!#~$kBKDjln*KvBYyu1Qy=tX-oy5ELN zXHxFbnBv9^9zHCz=$J`o*7fx!xz(FnH=FhW;jTd^vyZX{IT}u(NqO9+LqZxPAp{7v zt%d^{`vjhA|MZF6EDjCxTdUw_uJMfh-Cx4ViwiqS*%TAG)eYkre!RQem!I zQ=jDC+BNP-xLhshxoXL zG>eb=&Dv2!1vC{C(i(xyj8aPF=o`f{ctm=j$LmuNXF-4-~l?yMijX1@hLTn5bM_%lueY{ZoG%U3<$%IV z=V|J8f?BpV(ouF7f+cfT<9)+5@k}nrXhQH*N4?5dj(Nl$kM`Wtg7??MA!1SQ^_Zic zMz7FPdg~+JMlbIn-cuj(v|=uicj;TVrEZDR!#U%K7Gqsb9N(;tlv=Y016k~LVqYpvUF&>hffv*(FHZLK{9M4x96vOS5&` zf02u>8ctIe6sf%B{D~&3G#L{yxSnTI?Rd{N!04{Vh%A zklo+cm^#q~o>z^T**c9DfL*RL;1DlND}1*k2=!A=MVbGq*xQ}6DW5ZuFTAA8&}uPI->1X6p7$|!89>Ijn(ZYObDnBb@TQOSVamG%z@K6oVVzG z3VEPxj5Wi6ZQ`i1{OC>Gv)avW&e)`1crI=H#)($ z*vRd38WUQJIID``Rn5&z;OGZJT?60nwWVOuuy5dU#!8C`&5+OulTr$9o3^i)UtCf& z#-JUpj5h3GQrIXu=hPO2PElQ5e;xlfW}?#^{3rF?xqVFU;NVIJ_uV4}6D_30=uMPO zOw8$6(3-sos#P#rzMzcYY>@h>Nrmy*4@n7^#t!f^ZWg#$6$3voY5My0S%R-z$!!7` zbJj$M2KQjy+2MZj#C6Dx9M)^c4W68m$H;ZMBIATBy*dX8fDJc>n|jNNJ~CQHTSkXb^5jP8ibA=LFIj2$ z@Md(T-Wy%+EKHZn^T_=$vSO20#lwCG;wE?mCc zSp#>^9o8{)ns=&OrCQtb*-edaZW@p04i^_t@BH5oyFy_{{Q$L}*xItuq~5qq;XYM( ziLI=y;Rm(eL<8}jCGs#i>aOUc8{n(eQg8LxY~u-{L?exr>B`cQ#QNJBvZByZ zuR`+B2uG|nUF{8+_II1huzsagta2dVQNv1Qj%GoFL-2xOiD%whwRC zzsnkwY1Ni%wF$h1Q?i_f1+0tURCsu#w2F&UH4nYGbgV+@uTv`$DL zyNUQhb#Fqo{NBJ^-@k#c>iihkIC!U4y3whp*Ojokdfg(KEA1V6#&O${q)-#QF{@qAw3GV_0>rQY)}tI2hX}OrQnwmAs#Bt&K@6IQiv312~iU z5qw^`vef`9B{iGT;CqY@Blgjl~i{}F)#P_w(;Pi zalN{=0RhU|{((CNGjQ3#y59+u6zX1|zBNBaq5~BSLThcL1x*cl;;q{@%s%V-^n;~! ziK$djpuRn-Nx-~RnwXye`9W;L4Ak$8uQtJuD=6`{hdR;k+_{S~hJf8kp~T_av`A!W@KjkTSx9bC+(`sH(_?U`zJk^{`BUBO(!zGUvT#+*N#j7B0 ziB6oUjW3#30Awwx!w6tqsNF%<#3JjT85b&^Nl#U0T1!D!8qIr1&emS#pS7dv|c z%NAD|Uu>dR9*m(rW0&(d-)SyS)WLCE->;gJr&E3gEsmCIKe#NU;; z4s`FUE+Qot_tBl}>nooAG%kt#&%BOgAPFuxOaXxrI8kGLcj0Demy(y=J$+?i*CBAj z16L?bUHmQ>cXfVo-eaQOaDN3d`*5tWudl7I*-Uj}BHt!#^B6%q{6+U^M(yrZ*J^8) zObt@GG~q(G?9E%K*60|a4E*CHhA@c0b!6HEr<9U;01_7JBdy@@VP1L@LL19?`kpmj z;q2(p!8Y(3QWP9<1+&3~lDq>#tQ5zUsGc9rn|qwCCO%P^pv6oV3xMX7#x`5~NYI%a zZHoFxe#!OnL|(6!E2?MjIokK}w z;*hD!1+5z`9$v(_z`)I4!dTHOqebEeSbw}lS?4f_3Rd!NBxnfLjY7=;7qp3bnY3;M zfMPH8ZUS*8eHQw#zERw01u~1~!|G_Et}(2YPg@|Udf6nYO`v$d>&wQq~x(Fesj%!x%Ca~q(7hy92Jl_G6 z)gJ0&7cXO$EiEl~#MleC&{qv^_@FKYz{jEc!H!unn4s}+W^AI~dOdT=83I&|o!KAT zYTXMoF-aE|C9G7xu-_z^n(+{3*1C7~#+n5K1G>@l=5VbW7yxHe_mxi3gJ4xn1nGAyV_mjou{e_3C4A^Sgl{(-JLfTkU+0r zDoN9@wc!4vo!3q;aYq)I)^-V>JIgDrkXpNp_iQeVX&g9#2ME(Hxzl=Wyaolg^^;tO znOWT~G&2e9B~E^CA2UAGlB)|7t6eenVe5^6MdA2fB+SfKZNXqOrPjm5GNzzJ117MH z^J5x?6bb3-ifW+koj3IBYZ~C%+QuTr+;S0Q)fdncXw4a3VuH#W`q=QY!p^Lz3vCwc zR$rK3w8HxC8dOoWRs=)2cI~>kf8kDy@&;>iqr~2Z=sv~DqNz(6Z?MajxeJ};oF${Dt zX5bRQX_z#O$BfpEaBh^h*wO+90OD-5vddL(t!dD(F=BU>a{{_%x#)F}x`9s6x3;c; z$F9QUx6`1jzC7l!;Ps0|NlvV`2-_9{cxrxP9inc`hRgXC9`JeNtpI3(oE*%|T5aB9 zy%}>=9d3s)gf$E5>#?@6e%0(SleLK&d^=>3H{P!<*6(=B#>GsT0BmWnGkbeW)*G-K z_4;@nt=Zqd<}k76wg~E}OTz@_;VPB^s%jY(zH)t+P%PgxnZnpalX$(N6~Ts<>Pwc# z;wQJ3w;F_Ny^-H#nUi9N>yT-vG@ReLK2mNL5`zRBtN zajnBp@*p`vqH?Wc3JnIazN$8XAx&LU$!}QfbzhBBjT+LG7!$^`@Z zg)}f?lZp!cjnf9XHdYzGiBHjzD2Y}oi`a%>WMs=Evpr~n(Ew~Dyeb30yXfUGj%G#x z)Sp-95t<{>{P2iPv)>_aG1Yv2TmkH_Nz$PABU&reDm(Z*_DxnHvD(1{#ExO zY#ZKvsILes?nACU$Du!$#k~1Y&wIe8>Jqo4c%oXVEOtn;LWYJh7>Km506frD^aWbM zkMnHaeTelq_9<2Y)_rx=KIN6O=38^0a?1az{(ulh{VXHBJY!n`xG$ktylB}VvBl5t zMhUW3E8hBETwUZB;T_KB8@u>fb^$+~xb9o)RPhkJDTEQVry=m@ePIPoemL56!7B!r zbk3`+caP`61HF3_B1Ms$`*dQL%}d@%?)r5PuYUT}H?E}JwUnvK_Kmenz9T_hy}oUd z;oV*5>A*EBs*g|jfE=wL#eOwXsw?hVZrK!BMG z*Dl((XjkA!Kve|?9vc6JV;|fM6)qXSLTv%i8GUE{s*UK4S0Oq z$By7~o!+uA#e^;x-=?n{f3t;MLYe4$5-!oc^sj`GmA?`%NaHpA(= z9Ylac{PMQnd&P|#cN%1NM7-=SP_BWOiI*Bf=@AWOcn?{_>jc+_I80&=Z>$7e2CzQ-)=Ca-EDNMtt2NjUtyayeVC-Fb!CV( zVrk&tbhh@O1*p|Ehyaug6aM}Nc1cKmXb&aljX>e{HnawZ1YpalemGy$yLYvOdeO5^ z?%h)*hPIf2YpoD%&LoGGP<3g)49 zEJgq$xd24(gHhEEuy%+CO-A-RSOR?cf)ZvMr_-e-fTP>+KxMY2p_xlUq5C9Y(@d=~ zRNddaWP4hmUe~UhUT>A82Z`6gUtd`NIK2nzsDcHd@2_>R2KNfg6xAnSxw;^wSmLW6 zs1p}j9w(bI`I5z?ePB7(RSUn+xH1}fWs^uV7ar8wr#-`R^9I{ist^2{O;}q<7g}uL z?k(sJFUT5?dFhqSH!$B+=+>+=nHX_#;4@|Ix6{{L7*wM^JTf9GjLuG|3d1=oyuu8K zxK(=~K!|K@jW|&9Zy>8%R@eNRg961Sd`7GXjA|lXB)x92Div*pYkn8%x_T3^JXP2Q z!H^c0s@w2H%y4{B8AuB*t8dmf@j@W&uta*EYhl32zNUZ>o**$v(dME5Z`-_D#L&?x zPocP8ytrw3$Q5qafK{<&dgi1;)7Km#IxkrBmBcsTz3$^0}!Dq2otVHbd_GxpoD50T{>B)6*Odk z`x9KQ`b3{aGS8hq!E}KD9r8PW5_>NFM0&#_qJ>jqyiaf#0O1Aqy(-Ic;0R6l@3O=a zL?fPr$OV4BER9W;#*lB$PyRIa-1$oXC5sjhsl9+gb&eOh%w)MzZVdXBKgByI1#YxU zP$btmRaO0}l4aURW-bE%1nD7k|482vcBJ=JK{e6(9(>?c4sjdLc+q{d;4rkCO%_d` zF7SdyRqD6Mbdejj#k_C)*rv>IO-2{JC6T%y%!8iY?@^1CiWszh_j{<*BxNzG>~qYQu_vmsEJ$&&%O_V%(29;L@yzqi$6hHBtTm78Y_Hfs zk9`dKPDP_s0h)sLZg!b!D8!-$&<$9FB=ZJQ#B~XYqs_P;4ucKK_)jiqL_z*Ka@wCi za>;u!{xB6j( zBaiyNNgff{%HKq{_$2~N5J^Rk0X$wI6QRJ@oaiq4Bg!>Cj=eL>3QfZNN|)kC((exc zT7*1OqP@10jFLxkg#5reW}=#hVGy*xP(mmz7owU6r;kQCmmywSX@VbXI2H`>n>Aeu zMWsh_R3Y)W#pLqe#AwN(5;<@5KZ;8omQx-pY~R+v5z5cK8B!?Fpu8rcW#m-+VCmm<0p+A3mbH>t zwM>^<^f8?>n~!}eH!{HRT-5y?{N3j!$2x0%^+FWi2}GjOu_dMNxy zG;CVl3CxA|HLhVDllR)oTY8{}x8oc`jdV#CIvMuG`gx`uMMs}GHZEdi7;` zWg!ls5*>@$#9R24Z&Kn8CiY$?SC&dr%Ug`WE-%3vd)7&%F##rNco7kW*kO=wUS-gn z(0E8AI`4yUD2!w9(RSR+!xVeo<n7x|&Ey3P zMBO)Du`@a+d*aa8EB}os0sOy*1j<4)By<-MwwvgXl>-smuh2<3oP!=N9)_Kpp(ecQ z!!_b16c>5|T5e%1rT|^K4E)`fW6zs`Y`8<=>&xiFZA-D`Zf{K*-bfp8TMDeIhzYYzm~w z)vL;D9suxoi-tWMS&7I?IF91DizCJH9*!XkxrK4W=#lT>2;m`L!Lg3xEgU(CD6$M> zihv6@ae-J6(*ik?!?@_f#UPF)2pje z<`I?FIEyFE`^chb2v}LRrjXQ&j%P#qk(gJLGj;PwEdoehEffbeY?^Y!wZE{JKF~@< z^Juuh*!v-*HZE#!iVl8Aq`?O*613yxzhce)1kuQucZPf2AZkO+d&wT8u5%=Ienu?@ zn(qrvTrPJB4zz7C%Fj|Ko-Y@=UO&gMuUV3!TMHyHBYnAyN62b&7(XCRT(5Y$HDIk- z_b8z?k#st$og^jO6R9P&@KU7ytOkASL&IMwmu&o&Nv>HRq)OedGd4+qK`{o^Rcv}g z6_gUrS18)IM(P+)c3dAODq!&i=qkg2#cLWqkELjvOxNr9k}Pztv35K$+`XCoUHeFu zNfY)EaLezpNMZCbb>EL~HtA5|V0=;ZQ1A;LQ(Hn8JZ~t;Q4OG+pjy5M?sZWu8AsqL z5DH~<@7OJz7K;^B?>Dym?)CH-E_zYL$#NM^8?O0kb_9vR7$wO3MsA!8J4XWB`3m3h zy-ZT91zC&4myx8{y%kcv8nUI3b1Q1x@)C6@yO_ zcu>y$Cp^IBD`>=M4YEtUunyKerYsMv;>-927oI4oPb0sTuECDlyf)n3j@T(+#esvp zjGK^vIE0)xS%5N)xWGAYLXQEW5>^hxMx+sswth|+e4D)G;l;^YzF|0NJk&dvFx;7kvIE zLTigStG72Nuh+ntIcwO(VX0klFz3?=x$WB@t*{-``+NQ?vcOs ze?m}4J4aH8d|toPy8~B~^4!N9%M6$%LF3Ou4&B@#Ys5JU46Hdv)7sS?px8ayE`qj* zY?gxf4#J*5-kaeoJB>~6J1BbM3XUE*7jXnR_0`%^JD$03)2WqfJ2nkF2O&2JLTbRW zYepdZ-2O2p)BvkG05{^gS0bICi5Le_C&gg)4Zdg{Ma<7fTSsBGJB0_t)=~O9of)9l zDbb9?J&7`=DAj%`&bv&+IV$W;xGY$9L6bGiDtoxHVJW0s2X_Y8a(|*`WL6FyJh+XN zGV4(Zs*`@LKChJ#fxd;veoZn&zan89GyUcwToU@CpGY5+_x2jU4+(gE^?Kt9gb5g= zi=cSt3gGQ`8lHgA>ycrIiCdSKyPk;Td4p0Vo?BrgE{5CHyO*}Xp-iy)(6Dj>HgMfc zz?ptggJ(bBklgKM2hntPJz-6Ge_;P(r6JMRI7PG^up&EeBqz_Clv7ydTV zdLN@14w{hR19!lfh-$vD=!P@TG+)I1iHH*pBT1tB6PXuS;Qp+I1%pVZ2|Ownb&jGT z7qu^8`Ax{LAlYyC1Ypx4HzIaV48Bk@em4@ap9GW)V-P*p%N@@P-ef4! z0O#OGgs5G*V>E~qZL?B3=!u1OVVC?QcfgL$hlrYzEqLw4B zUzKD#SS^>zih%7_^+?pj;88j*GL$*Ri7WHqmfaZh6J2Od_kPT-9q$eG=$Rthf~3idn(5pq#6o@UC}GV zNAXSM#Ln?I3Yt~}K_9+3fohPa7#t1;aa+d}kws>Myn5XfR=?CUy8IP(J4Wb;98}qo8>vDH2yYm zUO7(HDe=^v$odeEM~Yv%HOri=(ROO_kd+wa=ZOL(sBxU^mj%nUj>=(roa@(*ukwe= zL^9kR%znFZihacqw3b!mdX2DW!gOfxH`2xIuJ9JkeXH2uJrL*&~FpA`(B_MDsupK5hItT z)=_R;!Y*y#1`_A92=e;!Eb%bw^W4144oOJfON}|!80s%J=T;6>;Ej+(pTFH@vAu_E z5Y7ygdDcWu-yq-)5gP+V9HDOWYi+TGAme!W(g)KuTd#5EgclxYFJ^aq9DRq2IHZ_OqC*0 ztkF4O*+s8+ew{@N4uUj@bOr~U7-|zGOm31>;cp#v81E^qLFBknO!}>(Dh*;l!vQmQ zm)+@NFfV3QAdU6iQAfeb!MyD8U7&g;jpJkySa)&8jjW?1)Y_{BjhE<86qj z$T)H@Tci+D+eZwBdSDoup}+2ARbSE0s$!ut2q*HBVnI>PJcGo&vFTV- zAf$i+DI)d?wws(uny2*GA%C2;H*q!rrN`wFEkM@ZzH@!(Yx1gS@f8qVf`Uq$Tu3Pi z79S_wZ|Ymz7Uosze9DGkF!?^%cM-VP)3a%4tqPBjlESl1Z0NJKRYL_Vq^~pj4KgLN z*TCZd=fZ@^bMqRjXXY~Co&GMzx@;I%Me#N|8!NIui+CIOhtCh6E$49Pwh-KUeztC0 z>y zDXh9t2;coxYOH~C3*8|k{9@sEzV2GOBH#RPcTM?W9_GW6Q+C#26tL$mHcL~|5@`X1;)MY=gc6d zkdQgSDW%cRGSEX|(7m*EyAzxi@NTw)oE^Z;2HXD(=gkRL8jdz6IIlfadez$nsrk`( zI^Fy@m=lC9&HqsB9MLvq?bCgS_5^B$y5fTne0VO$V-F6;y9Ma*IY?GM!(N$No+d~Sl5k;l;~i=iNB(? zLU?Ytm}rxHR8kClQIYWm2#ImzltF+o=Q50uQb+JWE-X7iwku8_)cRm{s4W>HehT>d z*4*?#9R=#qQq6%^Bdj`PR!RxxzXwm-pMaT#;P7JdLZXqsK4L;JX*K*R{g3 z3D9`INisOm>-B{OL~I79{)sY5oRF3*qUJMgl8T#=*fZxzpWgycJHe5Y(EjqJe8*FK z^u<`f1Q0g9is}{4 zN%Lkx!aH6x)=n3W)9U(Sn6Ub|SVYu)m>X_*akt@eQX{~$X+fRyII6Um{Y}xPRncEY z_^zuHT$)!Nc*6ooC;@LOEw)%a77JobY{@k<;*o0v0|tB|*5K8A0+ic^tB+SDbkbD0 zl6M02gM4vQqfC=9z5nQUZY4lFuSYiV5Tiy?Aj;xWtV1Vb;@JKNY8M0PibB-#NJDl)GVk(wsa$F@wEaplEZwN|FZNUEnv+9b3=PDj7^sfH|y6A|UHSC2@aNsy8?1yYJ($r7l!oD3?Dt61}ABBh+N zmIyR>QCmuqHmyoBs>e7a6OgXOV)pm>?t4>7mLhq=fh1+xU>HyqVyJt@4YKWrz+*(B z0cCYE-9yGU`1e94Qzb!)fVx9s!)Bguuc-mZx=At8*Y;QQ2YqCfm3%tShFoSkN+#ff zaTr||xi+JRJdL(Wc$5$JtoKI+lj?yW)!_n5^F6kHshQbO$1>iYUBZGCw>o?nErbhN2>sAu6DB99;Bf(tlN%IMZ8H)=qNfcw zYkecBfIv1GWP7w(&MeP#le3Q|0QORM3`&q(Nu!n)54<|Amj4z`2tCdoJhh;5aI%Z))6HL-b zA=2e4xnWQ*MZMyR=_2lpMr>wAVuP)rbgByuphB}$`*{nmOG*}}k3{j*a2|^4K%auq z&Igc5BHtw04;%lMnXD8N5z?W7c8Qtk=ePs)5x@{T1u+FsuZUmohFR zw(p%zaz`D){88BNu!+3ku~vNvfFlOHia@$n!ZDLmi$RA}C*tL{2&$?51Z_tDEbJ{r%<1#S-t=+R!H0TVMa?1&f$ zs6jOz&nrAK4ZfC6+W_!+qe+WP4W31sLcrBn!e)30@Gct(X8V^g-&E3I`aUERpfK0S zCyUzS>VjMbLQoL{HknQ()efg77CH=hi+GHGp_1u~eVQAg=SZ8EIV7q;$qPrZ*JXuRtKE3sMKE+`2!FtXBO^l1a6`4!bzvfWTj- zO_(-UIBf%qBEW^IRK`0^G(Wba@YCb6H#7!qZ7q{GzNYsli%r5dU+@;g zymcA1R7d+z$&rz`g;#aHt|NxzBBZWO*xqcLNx@8uBPzpo{*3SbXlRxS5HK_4;WCs; zjMU-UyyUBwnrC2c^S97A^dhEL@_b)j2JvJp&OsuiaV6OGQFc{Fd znwEVwjbgAMG8Z-A8-SCavd$y6O~rNvPFCVvOQbZ<5>yj1eh?K#!I07JOy2L3aUtIP zk3opJiYLLy?{yk0a$qOoU4(-Ma>E-Y!- zye5JWOazK#glR@-gH8xSMDbQp2@xOyeHx?31z7)8Q3RwT_QDjYv_lmHz15^&L9(t0 zYwu1U_4#Zd+GLv&1 ztB9({_2WYhc?lVO&7D3?0BS-KTOXu*AodNZBH*>D)A%@ZMji4IJKpH>; z%IFzgJsrXznVeJ}tNEl7VvU*(n@J1kAhjHqm^hrQ*v(qi z;x2|%sq92%M$Uv9e@2xsX9%2?;+mLtvPvbtBTHQ} zFxkLN9-mC8uVGmt_p)FFx0SYu!p%49pg$aWaDo+M#C;ZGR3nNxAL`S)qf;`Ly#Zt?0!yh-$A;S|);dK^Nq zlB@#imiIa{UKs&Ycr9Ib!%#%ZXKY}|Ch`sg!J}CW+vc*YBvIaA2hM=L`O`&IQ}a&G zL^4jl9vRsH?M{I)>KoFq263{`-zLoO1U%95YHS=NDwj-vX}^NpAZsrvF*z%h1hL-=qupK#Kt? z8Ctw5O`44EOZyaBT_`VLv^~eNDA*^bPD?1%MTIL+OUhB!NCn#LuE8O~>SNn;FnCW;hP3W%UW)L=&$7^VOsNyo6=271U|Or$dW*m0;t9 z7}ONq6}RZNCp&w~?N_GLj zD@WSsA^I;)V?t1jdB!P_KWsDjOAXUPB0Io-EPkQL# zV%UUa&EzoZl0PE|1Xfr---Hit=(PWfpW1MpByBt}0pk$KRm1QZ(x@Z}2spRjpw{0B z9c3ymL>kz_Ih{&7XQ9nc3AE5*!Yw5wH4qkPMEeD65Y9wLfmq1^hfVynnS~p#$&C0i zT{#VT4J$zaRr;hpGIWBr%pmQoa3-3v1n=x ziG{5<1ZgO0y^&AHZ6A74Y(mDdktQL|tGxCGOsF^d`fT{EK)Y9|^ag5J?W1@F>%1E3 zK1v51?}pGq?%A}55rR9ARlMpb;ZPTnru_&xLLnZMAguQ!@siIPVIt3F=7P-o)qw^8q0YmQ)^562tYxP5c4Ye=B*L_MMe~aNJUHQ4fyXfOxg6y}!`eA_l9coAR z^bq-b1Z60+%ZZVyE8qd~6(4FF1=|jGLH2He-{55Y@gmGk_0^O+vA-i)BQ~0#b)!(c%Q}*gGu`uBqg|SF*u0b z&!k>xP|_rl_S>J?!>c%dob>pt_aALO8>pZ^mUmX(8Af3na|0YUKoP9Ir z>q=M0>VEglGg{+Qvzmd^0h}(;wX64AQPTee5+iR_C4z$IL1mj<1I<} z>9=L_rIU>G>O6s>-tqF3y~@m$nD)-lA7ooQMNAV$>pNh7iMdP&bwuZ_6txy7q(c_| zUDmv6$cL158LjtgU+*A*sNGkH0KBsG=ea}9#twF8Y3B@WJxX0{?iE{@t<(8;*ammz zkRo6}B(n4l?=5>^I&AzkY{dNSt`4HjuVTLa+&Iu|SK` zABdlS;-f;l*CYS)V2J!OLc~u(ROm=V`bZ*(o(o-^mJwG?xc>u&uk;%BcI&5tgqtU* zfFUT|ZVFHX*bUR*PX8 z%mPQq|7G$L*JAiCBR^Awdzh$z3}S`=)XCUT4B@mcQMj66w)mj1I}G>#d}3JxlQEi1 zzlkN}3Ps^)WB#~}%jM%XE{{+_!$lCdjz?^NSD{%rM(78Vq?7+YjCmuQR9ZvPvE>D{XYyV)*>j44e(teT_%4S`tS!YdAGBM^%==fAkg#STS`OAL0`(AeGy z4e|z%P(;%O<9u8+4TN08#?S=CRo|Wb=X|ivU0(VSe3sgggrE@V@OS=2jB9uW)DKx< zw(Eh(=0%Zk4W8Ic<#SNp6SA$ue75hDS1kO-1i_Puo)EFUl~lYSwnd~qr>(XBUj7`1 z9}&{)cMS4d^5=M-yp7>?B1$lWs~W>A!bPk?Bk1_$=Y%YFY3_NnMP>GDlxfl2KRR^B zjah;C?7)QdR5U{qz-}}sQDzw%i1Wy*{5e5%NkPO1=@R9gflWW0cBJVqDx5>O?gaL* zH<*RbKN%5PM0pLXIFdNIf0u&EhD3K)OTV`8rsF_xvtl0?o#H8e;1x)ZHT z3@OmCPC?G7!PC}I8SdvOU}wHm`%w1%Q-;Cd)gsQj37>T5i}^v2-Y*YIcfa~9OVS4e z19JN?={M(MFRZnM+^9v{hg9}Kl&89v(n1r8$~%Gfq1a}qb+4aq)qpKc_~7DyCvDxM zoxkO+d$Dhtk&{p}f#fzwG5}5$FbP7SQxSv&Io62ht6lWB77EH(z+)nyPHy4;b?>dnkKd>zQ$`ZBvECOu(9YXLf*ZuAWA4tWW(l?;s;{7|99 zEhawI60Ab|S_(xL+PN0y?kX84g7r%EY--L%&IQY%3P$}U)pLkob63vDVSlbUlAXw& z8!#zrrg+O?n`!-ES~8K2Zt#TFH~nQ#sZyt+P+(5HGOc-QB&X0R-(=5=X&Q}o}+RzJ^b3MG=4wTLn%LMz;ti=_&loI z@j&7)`#Spo(qEoy&G?W(y?Zw;YP1NSG%tUPxgZ)(Qr~gDm<^#= z>=||TtTqH7`1D~^u(u1ZrR?u|6~p=+7?s%s^uZ=Al0uVWui|X9u?{4?Y90b{uVJC{K0vR5|d&N+)GRolQ$D_nLyi*&5ot8Px>U0B73M)I@P!eK^1)^;F*EF zJ}kux%nEH1u>k=H#Q)AkkO+Y-l8e>5a54K4rcL$w+9UYsWM2>73jnmw3CZqXPXM4j z`jr$sc9RLAPx>JWomri+h;sgXo8!7(wxGLdI31_tgFcI#AlO4fI+%)2nV#|)o3~D% zjQEw4dVIid!Ykb*DI7_gsT~?R0O8O|7=*^BEuzl~eix)Cryhiu79RsuruuvREsSgr zx;^dPEo8IqnAbR%@<_*C6Z<;^UlD%HYXA8kK&koSlYWk9T}io3ltI=eoOG%1+H1=H zhN{dX7_DgJC%*|>?O?%MjpsKY`QqjEVE5Lnd{D;-Wq|E@{dM~gZCTRDAZG#MJ&Y}q zG0ztMBDc;kQ84aNaE*! z4NMlP`< z_11p?wdB|%lAOkq@g?nvoB-|zW{#Z15mG=-;V9tYzPav|&prD9de_uzokMvJ=~UZ1 z>ArF-MDHJ`S~rkt{h~%rF`t?EfZ`PI2Od?M3& zUT3;L7VR8TWeU6#iFM-x8%+#x)FydJBH8;+oa68|@RP)phbo`#Ng?UqH+~FQ^VrYg z7kDr=Z4lA|*5+)72taUy4^?LZNOYb*3y%-lr%z3vv*VSsx*Z?>@>x4Bol_!tGVAuS zO625yLQs-Ka&u4Q0ITXekEDzysh6d(9 znj20uZZs*e{=2kphSam`=-}xK=(y)iF~4xu3^1Lbdfo&Xrl-#lJn$w?XJ){;)x|e( zdiE>^i+cVpPS2fN#A)pzX7>5>OOQ34-}mxq>$9^pBRFN;(CrXv64D}3;}85%BLapR z5se5V1!m9o&NiSry&zGB1-i$GdJLY&6mbBYjE1^#(TN72YaGMQ=WArcYljOg+q+l? ze2hH@2t4_~rTX4$HNdu4Uq>?*??{9JJDA&F1@gRp3-y{`T$9k&--K?WV^=V*5!Z3L zunNwv?(TTs*YND>HZCshE_EZ=U}4o{l&hDKi*!whxYxOvx!#;Z(|Zn;_gp54W5{?6 zwT166p>{+BZ+cBoNT~5u(T+y6j{=RaMmv8>aaGV5D*aT{p#qYZ-$zq$ z$`0IbAL^@@_ARQed!29ro#55}5^__}jA{Ove&qu8u~OH)4zM=SBkBdO18%QxK~|aO z5B0kn7jSXiqyIf~6Q1q-!Ncx9)bDSto6M;PH}<=~6zM#Qn(uMxhYqC{N#YPv-VK>= zg<7_#yqkU2Jq$(c!$AA3X!Fm!ibkz>y^e@LA+z4aC+bO7Z;*?`K`1^xaIt+jz53b> ztmF5{ZF=NxG5YIk7tjOiAa{C=&`{%FgTvq2T1VAP(E7wpaA5a4Cw5wNz@zdT>swt; z-`cofU@`UO8}8Fc_l>BTqUlwe%Bv2O#4*%90D+^OIIN_D>@(#(Ipls{RNjk9e?>+2 z``KsKkvD932w3y^OZqZhk~JY>Av<1MeF)HjA?oWsz43O2X&)9|fBhvg{Q}go*oU3p zPhU|;X%#a#;7C}bk+vWmFZyd5A;v#XtXhc>7@Y=#I|wb#y08Xa7oNepJ9lyIO2qYe zyz$q_ig)jgd+o!Dq&G6v+nZOqHnNfNefPD*a^c`Y%pwr?kM^twyp)JtYrV(1WHo>I zz|>;Zz3od#BxJ&_57$hRdt*)t@Yqx0p(cB8y#fba;jyXhK{{98ng_c&t_$S5KDTwH z5eIx~29KF>T)1*+$3hPFg|oOY4Rw0*@?{et3{8&TY+*kBTyh-`ZB1{vn9hsmfGRx; z84IBK;++4pJez*HM=={p!P1l#a zWno1P8m;f{&NjdXQUIiG-*3rYkvnM0bvPqy`9tHXli*s_!saS)oDP5?i`&j2hQ-3n zS(A~Mq~K{W0UlXiT{}jmgN?+2nT_Yo|2=-rp?K+~N80xoM=q?t(ftIipU@X|qZsXm z_>giGZT&(x)W+J&qs)u8n0*H1fG9nQw1Mu)grz4U`NH5cI~-}Gy#Y-I1+kHikioFS z!xa{3A4ZkGs?0v_J?{K`AS8KfTq2DRfIyEpKOevzKQEfXF-JnsUu+74FUT+Wl~CVz zT2G=T!=Yjq-okdzUF?ls?|!Vl`F0~AzXAFA8Su}$IPPLvJlu8Qia!jPpUepU8=8m{ zbvg+Axz7ju`LsCgZ7TN*>3wv}+3*c~`uzb9eI7DNVdiX;hXhj3M-5Uv8w#2XzRg4; z`^ZUu-T!BcYpqWVWhO!k<2Gv9YMTH|j z0-gu@@I)*TZyy5YWk9{TPVG-PWr}yo#e+oW5`(;ysl|Q!QUr`!DFAjJZviR%3a4B^ z1QYq0IITdN2rs~Agk8+ik>()RkjH;Ov?9ylTp_cuUQ8=e4!qnv@p6*Rrh2Jnk@Dbz zR(4$YngqC&YuV=}R3R-MGUFkvrPtySCmVHh zNDr0etT#E#`c_G7WuuyW3}V#)I$vbkzk|?@H^YQ^;}cnQ-|-gIrG&1BHy1it_}qsF zgjTi?6(s`i_|Bo=`!2#_(}#hmgJq>Qr@cm5yB`dZ!V{i{o#(U7Nfjx(n$B`#&^LO~JQ4RFORxN5grIU-GArML) z0*RD^fvyiIbiz9a)r<4U;O41heLwRh!8Oux%X1C+lXWv&wnWXZONSyhNmkDH?X_4e zp%LO|E$CB!v>{kza=LH2>pgy3yp1s9S?jS$!Zrp+{Je$uk_DM9K*`qUZqGGHIWD&R z#Mw^6p!M7vu@~*W#5t2>pSeh5CB?6RF$822aPe7T)+J%*$>fwc)nP+KPa5~RHbfkd6|%xi)#D)-zgiVn4S>w2ge{A3<}T;J2#JN;gp$pq4`nn{AY|;Y zJ)4Yn537qZ#;^PwzLM4eOT299zKcp$hNjD$@zCa{L%Q=SOzf2hi{T0q4@} z#pWPsz^8oH-#r9Knoj{k&MAe||C=D4F+VBryv55%lnzi7&zV)h;B}D~kuuWeX^Tt5 zl+TQu#_*lw$cxTDgZQcXdLmLLJ?nDVp2D}`P!1+dgU09ET;_)jF7pGzvL<`#U~i+r z0dEd8I7AGlwEoz733BYa9H^Pqv2pn z*iw)Oop;$3Z+?eOOYO~ZBObDH5AvoXtDG>Bnk$)@! zF7{Y^TJTLZevz?>%!6O8DgdOdb}6I$--Nw;bR)-kC;D}x(Rg(OjW^H$*o`MiaE53O zK@tsc$R@#gXvU*~9=0AyRe>;`t6 zb9Xn{7^}>gJJEGEh?A3>n|l(&bH|C+H+u}*d2Sr@{t6_e8F{?>2MSfy)%E=PS6@|q z-&gI3*in4?JTHy0&$sXC;!;HVP|!2LVVcW5b+zeok;^+WyiJ#HWI$Aa*6sWDk-@Xi zapYkix{j@IrvQ2Io{MiSX<}y<&4SpV;A{MyXV&8xyf@TVe#O>^hT7KWi%-(%X#sVb zh<{I{!R>Yh?S8;FB=E%TIdPw|r3SNqj$O+r*T~?{skHA2wD*s3JyZFKMrMsa^D5zd z3rRS%Q|J>m>=W0O@3V{UzitTV+`kKpJy=BVbCBh5A-e*BZJ0juf8*^DjyaPfF7&kl zt{__ow)+o;z7D3RyAW!(9t=N;L+%&_fs#Ibfn9QUvw#%9a0wY}vF z8D5?^Pj@@BQEPHSD^RT9`P{j62z;nGU-R{j!Srb{p!KPE{$xW=TR`mW&F7k2Vr~2+ zw!m!zY=WG6&xpxK7DHMOx2M;DX6DJ$7Z6d6ff-vhLw%ffcDUIy0o1>uN#hTNupfs3 zFgI5>1|)T#T3L%$8qE04DMJjeH!k@-+=sDx-~b?zn8B6TO-zaS0?akvS_>0td`OuK z!2u@>SBjN58XBo7sEM+5(wNw%52%RSidH(@+y$%+W+6}locBVide%DAM8B$CTGyh;iry@alwZ7T_eBKw|VD(POqmRbDI06rDUKn6oqq$S8 z)_PoCVr7n85cB4OKEn%q53QX?@mA8=|EO6DgWrN^2I$M&Ou9N$39qk?eRpkFs}H&SIW`U zW{)v@#dA}r%bE2pz*lk#lYa4nIhG(9v(|-0uBkpYBTpv#wxR_(FfZ0N2YlHyPwTvG zAi8^O1JUY%0n#kk#y`J`h;!8oh?rvJu$EfuLGM=I_21K!IkvaXdFW&2)W#MhGPl+) zq9-?vJu`VSiNqJC&f`5xHCT^rj=^okTwTsQUAHGXv1MPLu zjY>u?L>inKjh<7uM5z05Q`3?VFg<9~zK1%lxJA#vLzIq7O|k5DgNbol37hekMb*V5G({iTAlnt{P%YpFtc1Wc*{p}- z5rZUrkakC)Pqn1m1<7E0kE_^&A!s3NSFkM2!9<#i5t%P(@BA=t;m+!q@=P%%b}_*u ze0`zp3jl-wdMk-=Oy@0S+u`qVi%RaZ*hW>9wpmLhx`KH!s3}}k6#*u>xYERiCMcy+ zQ^Z7|^NgvfS`(X)(Jp13Ipd$5-;OvWn4Sx?egxm}$)UTfnVRLnJDH7ChlGxjs5YNT zq*|BD>sk<{gVLw$BY=6RMU_+{rHIw-07k?-72Yreb7LxHam7_u=P;z&f%nyQL?j*X zZme!J`EtElZ;_+9#zh|Cn>3pY4a{g~}-dw!hZw1N+MP+D4PvJgwRx@OROy z4`}ve7?MR5Cx|tiT1R$gs`W7?tkJW@Qxy_IbrP7?S8)vv=gSStet_sZq^lU<;=#J20^u9v->mV`PK6{p1G)A?ApwY*eQH{?1~d0&dD=6tp6s? zci2~7RMF7HNzipYUT>o8&Tjeq`pMDc*%=kH$*KceLl)aCT)D7zp^N^T4R5xZ=9yJY zE9Rzh5lm=D!D)fJ!2vny39yysJ^p)!n6#X%uIuM}K*=+wMyP=u=AT#2oUHfA0h3M0 z*<5poO$uHZ$Uz+T<jC&9$7!Hp0`9^7}*>nneWNPV0=Wgi8Bg^sXi~Z zSPQ_fmCu{!8{jUnJ?vd&h)UjQYQ#kOlEd!^gwr4>pSHau#%^|P!CmyVIpAjghQqCb z-kvQG?=}{1K5ZME^3d0XhE3?$%d01oEgJ-di;x|0MNtzBkbsd`y|_AZnP$LjaOGqw zLJ*JyuQ0aHwN?EOr7nk!f>q)Zfu7e)o==W>T>h?N%%i@fMKj*GMUL)o+j_jIDXbsV zM4%gtN5JCCEq7Ml8h&i9t-ubf7pJULR_m(8NDzr2W*R!v=S{`O_7Y6f+o5tej0w}$ z{{=T-v(XW-qmrlZpG)V^}@oS6ZQ|luD@U(x@U8~?xht)!BmO8r=YwF zQFw*74YQ^nW|eqWPYABR;D_tm4}%=0r{&fqp?OizZKhB6=@99g8c{fo z1c`J4K`o|JSnFTP%bETqYD^W{8U11ZjpidzLJyF_7SGwNHoR0!r3R^dK0inSvDZ`O z6gF=v+ETs;aq{VDoyy5&zfOs(-LG&uIQErki;4*pkXH>II~wO_GLlty4!*)0-1Gvb z|AqV&Z|8&d&Tl!#PjekEA3I@jf$O6`(6acF84u4XWoU$5U6$!=UD=*GK{{kyPMlbj6@sT&E)$nuS|U`%1$kg^ z;#zAL6)h@DaF&;`SPqpNay}XbcCt2XLYmk-cdFV56xZ|t?lIWt#1mT`z1Wzx)Y-~1L6QAJeG7D0V3Pjj z{K*Q?3olwHnn2L?LX&E%%N|{Iqe^RO(D!0(b;RTho(kP^XZs1e&d(ZdD`Ym#G*>=m$_J51CUowU=Ba?o->#- zx{#SY38s_H9jhlWDdfzYVgpYxeR_HlYg$vDhOd0#LZu1eh|wp70Ynl`0JQV@YLmTh zy3U(=T=s%UavaPFUg^vwv#WnVtXTO48>I!yUFK(6<*UG8xwoIXW2T}Ayzl>YJztv^OSc{))V2Z9+$yVGy5DhrqSi z$R1jmkVr!8WU;t;56E;q4Ya;bzppD4^%E_ej-7@{Sm6Fb^Cyc=M3~FVD~eb?c~Wda z{Y;N<^f?pSDqSo#t@Rc@!qXmPsbGZ9EubUp?8LiTsetLuZ7wy4SEee@C8O@X2Ny38&I?>Z(=X_c zi^}KBd<3Vl=F%GShOyh_&SWhq7BIkWk3Objk*LMRUHFcjOBSl*ULcHJT5L?d7k9-# zMfa;cDEinX%-{nqcv-Re7snKy>e?#0eoqhPcEv6>a>r}JNWN=ZvKR27IT!Jwu4hq< z$0K4??d~P?+q5)|c+uf(ks0+M^YWH`%b@s;!H2mKn>i$L0SWe_xmKX+bS~mJNjf!# zOsOsy;h?)?B)$W0E091;(dmIfxejOVIaeHFUU7<;`@rMqx=ryxpv>v%ux|OwI9u%< zJLc#HRvgZ>PLI8~>x5)=^TC*RtlPQ)TkHP|eSPePHC??EfO?4ou6=*HOXX5YRQxtj z&K59mX2!0QaL)qe=$TN;KD<6}o|T$+{9_X^9?cSzsF_ilgg&@yqPRx8h&`zg`*MGdQEj0HcSE-Q8 z5>$$K%c0{IUwNfiY{D?_b1sGB8!Zbm@7{$r*K9*-zFAI7d05;0dmD_94zu>o zpI2U)o3k#FML8Z5<@-3wZBOaXaDDQpaB2}BwaZ=+lWy1n8HMI9Zc%y0HX{GL0)}Qp z(GpJGgtHygClQwM*UjRv zoirksXE-L*kFMqj29bU}H`;GNo1y_JeXEwE!H_}>-r1mYyg%OCfZ4*q7kQi2=4g}a@jrW$!{&J~NEW^eZG6c$ z+;fxuG_=2X$2p}B3MT{wZ{>}$LcvEHy8=A}hEoU=4z)*o=ERBC zuKzp6^P5V$j1=etd|@}f?g)ppTO>Lq5u>( zK$bRiR(oaT3)rH!U3`^5qE9*R`Q%eD67sX0U+Icxb34!NThjf3_Oqr&V(_X#!5v0y zQu(>(o^49On>qzsI!(RR*}MM}yLJxW|K->3rugm(42mnSH}>+&)P3niNNay$*W{=* z(Jv`iIO>BV*FAM{nL15DxoUhsC%bOXuJD$7t8HJ_#~osaJ$rmtfCPWr=H~bj;m+f2 zJIxS5_X;SzOFxA5@*X$*pfLVq_S4XHnHKP6e?V!wofI13XzHa!C+iyy=Oy;uCxW&n zeNbt8ofJWpvFJamI7w*G*?^OPM)i=BL?rIeS!^?4IpmLh>uE%sRh^W?U(!jC*FFnv zgDL#!PLg2pD&r(whu(;jyof9~DTBWmY|Y~j>+T%>R-F`R(&;rP6%_1Iy&T-`eKUBy z^Rl4O<(obyG;y3`Vc{_!-+I}FiQPS!fppcY- z(Q}d^hpd*6xZZoo|K{Lh+~AWU*Ufnr+37jqhKKPiVG-q zf)||V$TGM+{2dd305JS1pl=@Kn!Z3q=R)}BIv)M{r;VT9UM6~ucpB1U&~@PHM+eU- zTH|9cF=OatOZrCAi4oQkqVkp%D)TGC*wck5W~9BjuUs*9cuQP}wDD!p7NcftC4uSB z0`=_a?G;RjxG}bjb+CmCM0F*&KjMV$@$f#Dt{V!SZrjx(^W~jo!RkEu zsGr9!i(Qv#)fj>oeH7$x@zQk9p@)pG)X|gG0$TDc-Z*6oP zpP>@Z;97GW&(D~TxX7C0x~I9j1sj$Y8nr$gdKCQlyf{zXeb-AU9=ubFGtQPuK3t>Y z^(vf|yIyjDv`V@Mln}MLGSi7O-ByGfQpMVbLU3S5Q}7YKINf%LAG&nu(m()@RvDk+ zE?vY1%8zq{So+(a)`8l(^{x?TItyD&?jD^|2`qVCo zLnZU#*9JlJ<+eBsFXygQyDwrBi2PVY2OGVQ6t2_;FFp!-6Q2^BA5C}l%U2EOQ)0=* z|3-joebf-e?~P~4ux))=BYXcvW1ObPy@C;1sJK5h67J7!W0jx_P_P8>?)UBYPj5RM zX5)Rf=1&&>($?baN+3WZH!2eqEfPARoCBEU7rP(HhO{iX~8C}lfbFIAJu(*)@*GmR~w<@KMxdnAn?z{{Yv+) zjrcBhK*-(lYrQQGaU}Yesb30$s`; zZbjif09{lEU9ouOnsTmEf$HE#3pVqEvOQv*M7){wWq}Tj= z4x*1DF4TMJ{?~U!5liUOYu*+KH~4E2WE23b$3@taMvSClVm5z@T%2vUHplb^|)h>7Zs@A`{EVeI? zZJgrFi`5qQ=v5zGeM(GI0H3bQa7J$`7pNuh1I`dL&TYEf@z9@O#%&0^VP6Pr*Y3gR z#y#9TJY;aJjb8mYMqe9Y)8_u1vr^%dm-5#&;Ae|guW9@M zLY|Nl5hT!ckI&w)_xKmTftM~<9Jq?J_!!!pxX}})u8nzDj}QDwmoM~rka^dZ^S;uv zvGqkx>fk%Kg9-6+gpv8g6uc5gO+fFByIc2WYR~mP%k}vXx;8`*AaFFC!L}s^phoJC z4jKVlmjZ7x7DWzTAAC0SXp0lOg4nV}Oxz@W6TIa(8L5qvw(h^6&%B-yQe*q$;xiSZ zhZU!-Cz9e!XQm9wO5oHpZ+!wpWpMWzM2}|`E{LirkLo{{uT(6ja@}&4P2iI=pYskV z3%ug*->X*WVaq9EyLsPo@>B>`6ybqs2zz4+6o|`K@Qvdj+Qbfrz>jeo$R1(IsW|W3 zqkVdK0FL~!-)&H!1Bn%bY@HYmHaUz-BlVa#k7@{%@(p>{14EE5I0))V>0haIXnKFK z%W0L4Bb2<_j4A7uJiWQ!k*OsYM^gX(!ay4HK+MffQ`zaejT=xUu-p6p0_uWYd4Wi8 zQ1B*_Q#(C)xk;xmt!?&X?ah|VMd~dX73RIOhOe7%+V0BAX5(2zp|Ru*g63PGv{SmPD0LjsCZ>|5KEUFfsh zF>Fl|diMtLJb06pQLdDmM12Z=0rN#KXH=G!UgHAh5ZlJikZ7<~Mf%?_4SpyHlMcR~ zOaXOBxiO5g+Q&RU5|l)rvUH#2O1;{XX974iJ+@Qn$x0BPn{r=2c}fb9n*kX31P==8 zN!b{l&!a5a(UKgk_qm($X?MjftkZxb_c+B7D`3`J3 zwvkA}z7xbY98kIe?Yk>2rhVU(lPGq@T_J40qui#9!(&VXzNT!$G=e|gZ9&xXpCf}~ zi8?FLM4}R_tfV5c4rw|7xveS3@#Dvvj;74wBktB;KR4k24gA|+Vk23_>;x$(ZI=z+WLc30qM51m5+OufgB4@Kk$wpq8QCD%P3dbmpy zaw@V2^j}NP@3`T6%{!4Ma^-f6fy=*v_1Tq5NA|X4SVrIoeWbHGi7mH&(}(*Y(gem- zcK5?H;-P*_L-)!H{|G9dbHiD7?~vudyN&@vT??p-hPGrFXKcxe`D?V}ptx@rnPQsg2s z0m;aq&5r7cmO5(gWk<(hH@ezikjy2lmYTFkrhjR3z`BiC5#fRzA=w5DCt1+d(05wm zVh+e`<8)L^#pg1?5v256zsd*P9pJ=2#_@{KP=zDcoUhCy6M!qp$4VuVLyiUmjT8UA zWOn0tSM4{Xxg^{m69WC%>J4V-S+q6a0OBys3DD@gl5sV$yl2MC}c zrNOR$fVM=RB4_>5hA8wrzLx4Mu@2&3ct&Q|X308pf|5b!0TS?XgWnSsIVrVNaQOfS zIHm;YNSWEWl}*SyD{@roW79)83(Je>zXNbk>P@&RTemz8OpYoD7Qvho5y*4Hd9m!ySCp zvzh-kmS$l&Mw)!o-J_2hwGuD`sIZ2lo^^ACmYsD1Y?^8Ub+sL`Ffh&)Y#U;TZ>pe! zp@eReEJyHqw|_hP!uo@?FbN>c_e6Z2&_cbWwYk=OpjNZL$K12yCUMxx2d%G%_h&mjQJ1f>ix)Q6Yq$2M+3O*ut1QXsyFyd(f7(-w!#}G4T&oK9v*d)orE=D<0hp%!%IBj;=pexR=(&hZK! z1udX2(w=Rpx#KqgsmqbJLQsMM!72*$RNON!{4vRM3X#05Tn4Kplk7S`U+s_3-IGFZ zgI|TgFZL}!s3;|c`e^v~ut3%C=YYNN&H4TPiRayfIssoKK-&Sn{O~$tb{G-F-2>jy z<8g8~d+#3scKs;EG3Ie6Ct!EPgWE!)d;;x=Ss+m~?FeZ7M?l+BF{S`oMVSC?W9uED z#k*6iB}wLdcR~%e7NAvO(8|bp-@90xKq#ZlInbu&L@A{V1I+m>0Me%{73RP#?!~-rIWKZGXLJxo@7AZ7X0-w$`M_5KA1L!Rzt0mwlfnPhv zP%{9(8N?>F9A(xF7?%(T-h!IQX#h3k$r1vIBr_NcH0+M?=Rk%2K&z7rFvLV@D}h7A zgufgJ+zByJ{yaE(GiV}BiB(Zjk!KwR9-$?Ii2%?tc!-vGC8fdfFh@!RftG>51T9%4 z3!A|}5NL^GsL6_ep(TqzH!!qBDlZ!^E!I*)$8TsBqrpJ;fCd9SEXLe3U-?~NTY!OP zV27FvG@S>W{)7gVz?}dyzyLEip+l6DLOnG6dsH}8T!IR~gl{ewv}F3`FT9%vnBXOz zqYD^b25-Yl%?5Lrj1ph_KLD2Kd3i#KjH^GQL_2Fy3@u8ad6D4%6f6S)$i)R(4+gIf z?|B<4@ha=n@3K5p{Ena!r1{q3>f2Cxl0l{G5Gr$kN(?NR+xa}u(WfsJ7>Bqd03<{E zHeg2>Xd4L{rwyN)uC$P>Xt2=Ev_gh#xSf+-D`Och-$#d+dwnKKr=icR+L=}(`D2U zK935g8pejJ#C&t%Fklm&JHjU7(I<>&#ewD#&kDAfEk#Gd0nh9xa9s$BC8jy(wt(MC91kQ;n^pKXGl=&vN})$dLy1+&WBdgus0 zr;2^Xnsym$+ENFLYj1<;Is;P|1Jl9;Os5%`zD>0Nt_biZikW8gzfHh2Qo$NSEkzN{ zg`)(R!N>u*f&oP+89@&sQ4Q)evJ%lQF(}1RoNPu3ZWNZB0i^+R@Ra=>2DBWF zn!Rsu*v3H;3Cb3chTYcs1%WZ25jLMk7?dLSmB=BK!e5R=?gXVMe*&dZ6KP7Uf|80{ z>yhZ&w2ELN0w|3(aOCbI9eS)dv^iJf6 zV0UgOSlggH(-#gq1SA{Y$EFk3SqCxhQj{8)=+QVO`h?xpP&IfxEL@F7(T~hG7mex@ z&%22hLpHmK1e4D3!#>vAL<`wc_YuX;e*52HJ;KKOc7nAv)Pm0UNE*b?1-2tQmKu-t z@v$+UbVwfMS_4W%JT{b$_q_w@bgmsi=Pf)z(cTv$w%%3eIG(KCR-Y(glAQy2t8!O7mo> z2G{#J1ZFgs0ZfLVJ_5nH8L=ycoH!G`=4&i@hmvnp&H|K&Wnm~)WBYIuaYN0p^fxbz6dKK>5pLhCX9{~bzhs0+muT$=Q`5H_my7^CwTkE~JLVyuEq zO17zhKsgp;gg%reyN<~3U{e7#n75C794pjBGF z^mCa;pmppf;AOiq&GJklMPYcbmw?zwpHyS9ilHWB1IgJH&iS|Fcub#JQmGZ|OLH0=$hH)}rNHo4L^hoYWg>6Xa z`UV6t#{*Fq@Ijn*O8vOhuq{Ckbs!b5t`FmTFz6aZ&{8pEQUeRHPMcA7@XbC>03@#a zVlg(~m!@N_K4uctUCd2cvi9Y1{8^B6U5$+--&l0YBT3Wx@n6;E`|$-xCiwdCS@s?yJ5~^bNC$MXfPypO2BWRUJ<|uGcJtAlX%Bso;dUQb0$nk)nQHOaqicgqG zQ)1PWRAgL7sf?P@au!Ue!$2f4gb~R&ui=#xb3DwMw0&JwD~DkZ>kBi1*X4QwhVa?8 zIDrXf5$Fn%OCM25p3~q+4kN-i3iV*^mH8avRqDr=Rff+f3VTm5YJaf%H7OYHFw(`g zCs3JWmWjKRz$;0Xy^;Vbqf6oSuy8ez;7De^IrN%D|K=CpO})fG8PCyf?6u-%vA03F z9}hX-2IU){C3!Z1!fpp;)G&}h7px@qg+9K~IH%eBaW{Y%ei1|2kC&L^LDvI#5y{t8 zl@3uC57^5k^&|cG|D&o0VB3!?ERTz&7ajfhW+H<$_(fks{C~kQQ77(yS|?X0PMyz& zGQ+t4Tb7tpUPJVEhM&$!+x-vm-M5NLM)?GFJ{WQ|U%)w(L-_>ubqn(q>xB<%q`byF z*_je5L;n#9ZXwTP*LdmmlG%8HnnLP745c~frAhWd0T|vbGYr=!7_Lk(Jh^WNx~0(C z#;;5;Jo%aX8HV@czEUd5FgyiVPQlTc6HGEjrOYr~zsfK?i4j7wS^|!eEd7)Nsgv-V zDS{hK9#VZWbqk0iCs2KIvNxRMZ!j27rIMig6zD$1=swBl9@e_0B+6V&PUs#M-w`M$ zlXn7gRAW9QVgrJeY$9EW)mBnbhdRnWqJ0Dt$w45V>WA=IYj`Wg91n9Qy--aiLHd)p zVhWM@b6LKR8uJi*znDzQUL64_TNqN6TrrEG?xK3die;jLGlIh9l+*) z5`c{sy$i5el@e&Dmg-5Kw;>vR1G3jpC&x7IdEnREY@9t9*nS)XFoEUqXO3Xm4YJ0A zQu6VBd>>stlDuOP89xQw!r$7hbkB_>kUj8F?8KRW7zf@S#9-eR-Vu8^>jN$e{mHXi z+|tt0NWv|BaloEfTALvFIz#Z@B13RkH3v{m0p0-p+~Aid_&rrY71WZ3XsGQ0zcn~I zbAmWFXS=@ea-H9206v9&K)PB2jxzPlpLYPkr>4dN1QZbyojRoDDeYDS*EG=b)C9qi zNP=3~6c`faKjWUn^!C)yk(*-hjY1Zuj>s5+^3>Fw;2SkKAY(u{G*SWKtfrERoa-p| zh>Q_TOaa2RLkP!fDGiQ?Ig{qEPfblAoJF$kFg3g`*EQ`O2xk%K4Z!7NQ@~UW&Jl!9 z9YA>CdBjgKa-KSZa7akJvmj*T%-*^U#1Y}>+5w8g>tW%lrZE(UZw@^t zG0(es>j{h_9&KkZuH6RXx6<@iJ_aCXHMj$iqv4vS$R02F=?OKXLLx@9AJ0#r`w-$W z21htPHFbpJNRYs9pDT0%MVN{%Z_d(`g;png+I}8Mf*STXlx5C~;9g zB1#0xI;0i8pGig~=0lDHY)zX;S7LRQRMeo3l8=ZI!GsQMO&?$@-b!h3Jj|K&0W{(m zwz9Zl8g4zEej8i$G_W-dr_|ILw!%5WR{a25Ph3X4P9R482VyIG>o#mfgu9f+OGy=Z zr!Wv2{yi*EO{Y0vD|~b5bZg>yHz7{I6$#K@2CnGjTfo&hINX+){q{DX6%D!*w4#|> zx_4)2bv113Z5=5*7*hbNt^-&(^oy=DYGfQQgH}8$>CFkW>POJJe^LuDN(@dY@sOo; zGe8u_|H?Z-#HqItF$1*7g5}5z#R(*4DxhMultnyDbbJXMc@_GjKt<*RGY2FHyvjn? zkO0z2@GKe<*Aj4)%p+f5xR}WR7qf(zXy%X#Guc~lF`ET0W+u3ZM3R}!WoOQW_i& zb0&STp2($l$be!#dmSG z?48>{5fScE7Ox~#5FcDr43s=FL4}$OaxF0? z(lhN_=wY{uQDEY27%TuCra^y&Ll`VnFpsOHX~c8kX>f+qaCGJbA#%W`;gO^wlq{g; zNK{L}Q3}8Re=_(h6aatIgqUdIkoF4Gx5D4_G-$6dfj=aYpyXcw{7nP?rWx%O80{4p z{Go)!!V&EuP%aei1b?W+1pcN?q$#mlN-8q0qtqk9LoiVQ{7oOiA6`jma6HVJw0*r$ zn7|*4WPM>y<8`?{J^c>+u?X}8kmmjZ@JNGm1b>AC`1^JP@dZYIg&zQa?48@-4-xLt z^o075vod`EfAD%#IMwNC27mC)q1VvoKLGv^kA^e&oBjdt_l3Iwf72-K`{6HvHfz)0 zhkgY_mzd*0zaMdfg~Aa6;sJZHRJflZVBsAEbWRX3#%M3j5YT&wfQkriP=W%&9UyRK z-w9}#1vA)%a3HozXEuKF2mxnj7y`}$)n?)7%n8mMA>iWdWF`hs&7cuTSxdk%X9zAd zXW*S>-ssFBCC<#=f`XOVS+n`|i|rZytBe_(ot*(4&VmkS86D0rI-Fq`h!PiPj_42p zsNdcR15tw`44gHQti-A+sVKgVVvk4>!Nd%B!Px^|5HF=PI3DIqx}Z8U!yu5w6=&hr zXJ_Arz?oS<;4GX{V}?N>oFfRFIe@^xDa6k(5}c|1pmjET>oy2Pgu665AwuMx!Z>L7 z_o#5Hv$G5W;hUSC1q8x#M+ihb+RGpiJ$yR^9?DgHWfKU92Hgn((M)Z&_dh_unMrpr z7o9&rK$DAWX zM2m;iSDd>A2bbpN%+9yC7Kbt=b}=G|Zw|ya$B3`Uh_A>%kQG%tB0dD5(0wNmEFOa3 zoQX6gR#!>o zxj6=d@XgK50S4iDHxW*_K*Xcz3ZY+?gWEqvo`mAFjz!%i8&th{1FTm zi$^es2Z>3F_b?bNz5|2Up9Ld`%^wMSR)9g+7M?7MLx4f-INk{b&3zZZ;Uoxg;Tsba ztbDBp6a?ww`V0<$W>$uhzdDp)OhYoOCVYAoj?m)IfhgfCvY=k6zTW|YELCcNwdCqh zQV|O)RZ^hxS1#YcpUyuf5bQuH*zv2GHL|Z%_&*;?%k-Stl~5v#!dDbK zKMI6uOv1lXtqp9PCFPl_3XpNRQpGuv0LxQVH$=O2GGH;F@mHbRSh{o*w>&*p!^d;N zYY{h)%9Z`zm589t_jtn@}F5U}9Ad#7`=r`(M3WtC>T`&*V07 zXOvlmM1-8aQBpi^@VC_xccNPb=`6UOGJgy*#NJbZ?P|3j_uuS@N-bksFh~2k%gSG= zm=+(l8sr$p`QFduD%G)6x`8DmX&~?vb36$+ji*xXDbYS;V|@#-W&?Hfs0eD*l|QxK*gNS23wTI-@+-q>Vp^) z+Yn;uQPR0!dchvB?j6ROF~#|`f%mB<$2#S+`qJg04rq;2Lzv^5}|wmy>f@19))xjBsQA{n1pGXjxyBLM%F z23%9Zn-fw%Sa2VV@;fw;tO93|C{%^PwqK$aI-8wD#$A&^K`#M;v@Md~gJT>Yq|!@o z=n$7H?SM$!&LP|N8(@$JJU&!BZsJWZ$tVZ zt{>`a9gOB08%_WzoO$I#}7S`3PLzF7YA`3S~gpXoU=hQCsZ3b(tB&oI6rbYV4j9X4!v62=7X@X zSyS4zL42iJtw9B0z-6lwZK>K?lftzoIYylST8FFD=;5(ctkr-D)hgG5#UrF1OKzQ3 z1HV!oOL_L$rf^Zy14^4`=XjRVUS9q)Pkn#%9mh~ys2;kX<$KU^t-`n5c|3q_gC1s16pV+O!FvG{3zXSg9^);xYG4*%|hQ6i$@AV2t zJMd;&6c@<%AoN!2($HPlw)bUD&jv6q1bgc@yv9E48sa;1`d2gblH1GQfbc83EgH8=@&hPs z!K}map{Uq?2{+mCBUIgX14@s!73%27yyd0uVhqGh|Mv1S>`-?+{^c*(v&%g2zrD;` z7@FmVO?lJe%CzhpbKKCO!{oy#w;vlhK4T+#2r8IKh*6LM`(Ot7uQhn6cf(RT*HTRW zn6qVDPMzSG2S!akEEUk9*q-834Q07{j>70D+>Z-8)D~IL?6)<+#lte)O{ROt>7t-R$yn#YOqF=V6$QD=;r?xQTa@6@ zK}}p(>=M@%^m)XFA`gx~+7+n)C2In4a0tQ7#t&>wBq$5pn_)2o?cg3kq{QOz{(x zEO9v>B$-{f;1l=wZ735Z#DLiP?;KhNb%L;?gZqHx7R=kYT6kNq(?^SZJw9#UtfV&@bnzQ?QdHfl%VHvAy8Ln}JgEZ&1~|Q-$AV{TD!G-kStE*t=pFWXO+b*$pfBPEc;Z zjxirQW))qhf{58hftv7iAfvM@6sQiHXM)hBX)y<`mf)EY}JK<2e*rjN>nGlFGeTf6xF%UqKp-x!C2Pa8xnD)j!YMMB3Hb~JG5IJFuCVu(DgNHBp|*uK&s z8z`maYY`7xzJm0Ff57BCBztscNQvQ)N*#neCoN$g76&{-nzyteW!z-(0wR#8)WaZn z3QZC3^*DdAhv%g}i<@sMNFw7MMITa7LW6o7R~jP5v)&2p_c*oK!jsa7#mp-yq())d zXh;MTnVeH2T$E5Uv>ulzT4_8%e$u=(i*$bE+DBASIn33NkVmO8$I{}!fl3yOm>(}8 zaS(|+h|>bdwA4f^JSD0O$rr7mkti&Zx?sM0HtHKb$>8nQ0P9b`Kh-_qchSX!fqwE86N@ZTXVYBb+NoK|4DS~iyJxX)7398xxH zlV<%#q(mX}EyM+94lCQ@CoTIeBtD>Mo~0dKLs}%8w~is#BFnYMv4r%yEY}`lOMT41 zo|(Z{FgNun3W}Mb<3sWeXl8_uFI5?!Ie#=@Ej!MjNjr;d@$QU-7N=+&pLm`@YYv$%5Yal%65*?xj4)K5jpB4(WES&b6iYZ^6n zsnY+0f$yH*vC%h55aQuF(}WMTLfu)>N@u)+k|{rJR=|KaxzLpk@9a?eI=<+zg|B){ zS=hLuORzzHbn$oh(!s^wBiPj5{kKkAha)BR7{}3H!5CTm1OH(!Ky-SH8(Z>qqK>`E zIa{efo(hX^JmvZl@Ar1}dtP|f4&7^jma|b@e&Z>?vYx@Lr#QaFbAwz9+(5VObm`Y0 z#RcU)`jcTUgc`s98xXMD=DRunqkg_g3;fqmSKJ_O>-u3XRaAeA^3g@&C9_#F`@N5YD;DNz05i&CXbUnW^{@y<7Kh&Q%^EogG zAXdi*!MEAz??*fg?1k~ASvPzF5HJI-fYYu4RM9IOkM9*ix}4DA7I3k4gUh@QDV!h* z$h^foIy^HRJOx5@^=oZsLS%W%=)k@~!v+!?^H01=)cdFXMpk&=uW^%Gx0S!@#%BbmplrPG ztb;Ck?!|S{bVIS7CVI=J6SS+r9Hra$Htad*RyrQD3$(wl8IC46R-zw$gX4AkrCb{~ z4%$Y-0+`TNF~~RK8%jHq8{)z=lzJ&7fd-qxvX}$6bzaEr+}F32ojG17XbCU7b2fu` z+?wzp(R~Je5Erv}b9RGvOJKjGoM6DRrV|#Rm7J*4JpxSTLHIZDo6WC2q_hJ$uyZhz z04tu6oD2~Vr_&;?lUoVpB%RKHdCpn%VM%Gna^9naYR(5{%im$jytFGC5xp#0)c-`k~FPKmdl&CdR#(t**>tzR`aM%LYv=IH6GU z&`8(BT-U^om#X3cv%U=B7d)K=lS%8)NSChT!NhP^Cex(+41$a(^TiBCShwGm&&RO& zRmn@XhGQv{o9lB;P59(4?VrzC4&0JMc2clDfWwR-P?J|g*dDt9Ycy>k*CdFkGwpX& zw0sjR?&Dd3to;3WJ)}2?Ew-~UP|eTWumPzY=*+GwaLu4>5>GKK*%>_Kzz2$=0aH)D zzN4UgcObyJ&%O7;@FS;uS?3D(-iw8TumAhO{Xz0lx9x)HG>lN?+ENI3_#`g&_CKpI z(vE$~*KruI&GJotg9vxsL+|CQA>>Ym>%J?IeL}@anOWHO2S)|63y(6ppxXh30{l3A ze_(sxfA4td`RhI&-oSkd>LLS3taaiG#UTiheD0TGwq1qX+=+bVpn^4IAUrIquF8Hq_U) zH!kd3$O>7jl{~m#^=S16>KpGPGhb%DeEBlh@I@DYT|houe?LZ`4|x#?sfo%5Jw0O_ z6Kx`u(=7KvBvNN%FMceM#ScQEHim023bJYk=eQ4iK8YmT zr18U02qVV)3s(Ifqql$Wc9&iA+)I?>tiO)Q+F-sMwxia5E1nvp&1^Z52qRL?PbCKF zT83brL126~AdzfnU`Qf?pG!y!VGpPnsJ6h*&}f0>A;!idT$EbT+K8C33*<&mNFd0j zgWH$`R5cJ)=aKdu_j0cTgr5yvkC~IP3xWqC0@adicQ?pB_EYO0lEWa`-eD;C!p|{v zoa4&ZyOk;7DHs4UEhL>L$%e-yf!KtpXu05DT#TCdx6r5GeZU>W9#Hn){7@vIt zE=Qbo#OTfr>3DE0gfC()zeIA~X(%cXW3P_8Q2h?em7zxH))R!d57*HOH!ee?2y!h) z`XUDU<-%obP(m!?q0o>(5!3_;FH#vyUtdLVV1D2azD!X-1Cg;k0+GijUTuM~cHr{W z$teLL@>~YuG|OMWWgZM5H$40$gIfK~S)b3$FFFAaLby>BRKLL zj*7jrYLg2ruq`eFXYxD?oQn(AC1>~HQe|;D;tt@FbySHwHa1eD@_lEggbbbz6KN%# z_~4<#`Wv>?5wQqhiboho;+{(<;+7j%ng@r24jgtMg~bi)nZtUf(#?tXizfn`>%Ofh zR{FXalB^N`mrc)N`IRrcf&f{Zb0WaLr@ErO@uq#S`45=e19B5L;-5*tYa*UgCMB?wPD<{_WKYsc)X?@IjUqRRI zzp;nwIUlOH)wi^a5C{m*Y;S|~a|??PVH(j$Zf}1}CDf#TuR@~^Z!L(Z>T0*jxu}9% z7Ava+<}8xyQ~CtERnP5P*L5mCeCvUZbgSE19qG0CBf&1Ot=&Ua(S>M}$}GF0lf?A` zs0Ys;ya`*0td$P%kK^N_ZYAQ}X)p*@ctB|O5V)pj75|VokVNDDngJ$ZB@sY5on0pe zk=NJD_~-8KMiXT{I7W%D@4b#=gpJ@hKi|jMC{!qv?AFnhqvxQJ5Ek64V0m68X&6I8w`9MSv)`@ zO6xz5&+-3*11FC5ExU^RLA(RUM~~bw$z|+U)}j28SKdy7&R}cPO#|>ZFfXNb01!0aXAK zJZIAu(;cK6IO=djB^KO3baaDg+-`^pS_g|h_oCBXt}ZmDrw0Qf^_0|!%>ZYruz1A> z?#zQoe+1-qxF4WZz=y93d$m|(1oNnj%sN>O4GN$XkAtt09N!TJB+*C*xHOUqxioyl zcAE(F@41apgd(zH2OhJI4<$nM@!?NxEoZ*s=pZ!bWe1?Kf5K6_!3=!Ajwg0I zxRU=9Oy4@HguuLq>9(UrVg`gXl9pp+gMj@`!5e*Xi3a#l*Z&i1*IQns(&%h=YJ}9g zlavTwU>cJlFGgvXbdxoFQrR;vkU2MN5()X#r4bn18LEFe;flW}kg$v65s%#GGQUJx z{2ZonsZG*5yiFjO zq#{zx@)} zGSPbMq#ue2dB5WM3kv05D7|0lgi8El;s;QJU5HD@kzNRip?94slt##VA1f^m{^G;d z5+}S(>^hA0{ezONMV(c9u&vY7Bm5~#FMS=+I3dlM@Gz9kKdR48^00f&!cxug{q@{q ztihE9fmeg$uFi_@4omu=5_PtD?PlOl)&4MJB3xS;Sd6hjg}M#WS+m$)ly9p62oYBk zsqQ40XU%zM(;xDI`2YCN2itA+r`h=XozM`i#Ss7dFq`rmiSV2aR_{P(6`33Bp%~)a z+em8*Z)o7}4Dzav59-&6LgJjDP@??R{Ifu(rQ%ctsT^$A?StVkM>`v#==&H6F|S8O zn&67hS9QgL1_y=ueG>*0!3qT*2yj(U1Y-6oL;MSY4)Z?l7q7x{UaU0TLkU>>K0~Temd^+9$$fRR4qY ze1OxKaHvl1yP%MwqoiqRR>I4~e-m7rXh?RhfddiFuQC2Vt-=_jU31*o&PPUOrCOWnwZX8c(kCU8a$ zwZTbj3bEB)$oL*;2cRn9L9GjSNRj*U&aObRv{4D(Kwp!&HY&5O!Iyk(RBB!0n|wR} z^4cj;(jr`5!n|34$jW|y(ApWM3QWW+pfe+EwvH7FCSQ($?h^u33QVqZiP0FoRuClE ziAsiqL4y~QE&&tLXq6W;Zaf@Jrg1NTp88@!NK9G^Q@1dtGqMm(Dl{8yXARy54mO== zCv+wCf3!g-M^mECur^Q-2i+bHdqh!Wc<^_PemZV&(J8?~*zy#8euP@%(rgd~Cdk*+X>I~C53*jWsx95L_o?Go(pSKmYPPeCj)$Z~3_~+MF zvF+Kc#6_ z*;f*O!gWkxBBQtx{|7e(Ho~lEM5b2IlRobW5GI&QoMX6=y|4g>n)xH=7I}!@P=w zkm5*Z8(PjoCNu+RzjX}wyC|FI=CX`^m z3?V$3?lQr9f3qISR=V2| zaxZ>b4czC;f_G4X%D`2=@-*BAE|e~`jQ;k2&EO~?N0UK@thNFIJ+lUus0~XkkdxNG z!WQ5V0CvtGFLmY#Z#N{cgf+z*T^T~{c-J>#kiPLc)XXkCXB)8q>bRCMh#y23`wD}w zp5tBP3K{3iYmKf!uMcWZmj+{?fYtTNQP|+Pgx!)`f;Nhr!a*1{HgR6(5Jj~*m>>{A z{B{S)a{Z*v;2(SpZ^yvRgE$L#8OAw_^Wi%rG=%eQ+y`*p!`Y9D)_;?Pz*hJb+^12^ zl8B38e6WZ!20Jg{k4c=Zf+sX0930?c6#rO$i-e$C@P7V(3W1;VJ3l8OOwssI9}LVm z@8XRVw(aY9e<3Z4*3cN&)Vl;}T#rM~4yj+x$cBP3%s$YUMnOaxu76t{;PlKRlJdwTJC<(kG`d%spglUlAg6<#s z=0a5?a`&CpoOKNASx zNI-X_Zlx{4oU`Tc_2C2Tj_CKc{61xzc{Nb>ngN?)vsYnL@AN}|@c%+1Qf0qQY=L~u zvYU(?d8JNKJhWKtZD8qn)14X>6}X-437D2k>1Ky0Zs9VU1v15{ZGog$MWeHK2hXO` z7WWl*1rp(mPUy0Cph4hyU_ul+gz0?+oo~9vZXedYKK_pGW~2@l>(h5Ub#G`U+s@X# z9(lFB`kz^BC)Wvi;nM;RC)e5kaWml60*C?VY(m$i@pjt`4tx(4@Z(>Z^qGvyf6HV7 ze{V8;!DK?J$;jftxWR~uhQ7>iLTo@djieQm5$7PSCNuN190RkAvVs<-Z_c6R^UJuL zP;TIIZV8vt>^v@&MSSg>yD1PDA48UCly4{+74ijz1ZPd=nrt$iYKIIZ(`0NKXU8oE zpMwq`$8%I-W+vJb9B-!z3T#XNS!O_O{9G8$$Zfe1vin*g#_DY=>oz)m%fijJ_1ePC z&P@=7I1k)R?#|s7tegOc5)CPMwRdA)rNTbY6TE3K*A@+CdZWEzFp)!pVc_+ElU!<- zK9`71DsQz>ht+t2k+<8Z#kxlCcG{@u<#SBS+o;L9)=+*M?fd07`|bUg*A58|F=Sxh zU>t=aS%Aw=MT z8EBG^=599veYcSw~a3hR#m+pL}D@YN& zTLKwCc5AaxbrmwK1Qjytid5Dhl-7c@Mj(whPXN>8JmwB4>BbF33Hm=KsmK;Y^a7%y z1vYBVz)t|b?d5GeS{A@16yJo_4>lq1EbZV}2#rgG*U}`r*^jkI6tjD@t0gEtS7LQC zSh@-R!|`~&cYCk;aeDzz1%1kE5gtVjgkMwbk+Rkw7}NPN(I> zNM@9_qIP;ZTfNq|Di|k5;J8Yyj1jkgi{Vb}gfT;*6Db76gx`WZU*(9ny$Ytc<7%9s?ytaEydlFaa=g}&n+SMYc1qmHlq!NoGu=fTc|KTk zBeE2TDwFXkEX7}>s6rBQSnb2jG!h-^uSB3siIxf`3*7=PV=-Jx-YhPI30y{F_zQO9 z;WFsMh?))$7h97N++&**l;co1q&cmky(!$qhZ41ycUGpdT)5kdJKd8T8ctf2!(@|d zB6oe@L%6VZ*5gojxtcBcV`p_5n=j$WQTMWqI6^^twHRCXG7Us2j5!B>+>Eh+-q?#D zD}&aBT_c^wAgc`e)N6Lu7_>{k%)prALt=MyYgpWA{jNh9L9pXGok32jW(V7;ao|S@ z!S1ZVX$Dns{T~|vZ!_9i~=G5Ad+ z@NLspzZ|fpaGmr~4W1y6i7|HG(yo?m*q`B`KRp#$UX{a3l#0(T#Nx zQRG;raUD$1+x8;>5zHZO3~JfRqz>Yn^xY`bY*DWA+eyCN$XVikEhD6DozmU(+HE>=k`_fo=ge6P$hijbls_vsSM_}_>iypj|$AmE)Iqz{3?3i!4y#hse$QV#ds4PV#44s?an=0|-;(Q#%b7U$#pB5-I zdVCi|aiiW*jVzW&ZjLl8S|0*8^u|L~Cd*X@KYMF_@Z0YZwX;V7=TZOJe7oH}-^k}u zd{`mGu+3K12C0DvdWbl>fT`=S7ctUPm>o!DyekRcLq7vP>G#+Bc?8T0-NK*=O$hzg z7!8B3?PH8~XKDipVZSk8J&fWZnv8W-eLx(Pn(j0fQ~PNj>GRh59oj%5Ia=)ph!Uw( zwclorcdNqPPATy!>_l@eiALO97jyN*GeOZecV&V669i-=x?sI86bl(Xl$d|ehZ z7VN=J#2!%`RwC(65Lkp9N&UcV8ki^Ih{A@yN&AG33h4&YMum z8%+KwN7TEW0Q>xWS^*|HM|HALzIk&*z;eE?YRmfA&tSMk){cBL#5Avi%#eE!WClIM zTWBz0)ri3crS%8K30H_z0ym{WKEw@%3V>xd0DcTTBz#?~Z5 zJDY)kPY90O#ynljtWdbza4`=Jh2M=^G71_PqSwNG`se64Giy5~hG z?}o&7N;YT9O>3AKN9{E?qV#;l(TpN#gT#sr+;rD8mKX_2GSTLb1k_yddP#;=x)&>| z3bPJ^+2H_dCQG898=riIiy9psS@jIk^bLkfs*ac79nV4 zmAE*j?-OLq{-j0wK563Dz^@Lc4vB@>1=G~hvqV=dB_TK1~u~8Z#@eC&+e?3 zp{=QV-zs}KuSsZqD(Evaw)#|#yVEwNX`M`RKBi9C<{vWE(rW|c4=;O4cHXPmv)?Fp zk2wctdN?{%9&D8oANyK=>>x{#C|SDG`7UYqsCnVF%wiE=_^WU>;_Z+M?{Xv|Y~STt#BbD)x}jjMkSfkg z>I!MGbMLlaHf-Tf!X zLN%jL2Rd5kuP(Sy*7mPGoo|OYG~%E^6Dfavg}@W!TZ&~VyqBnODOYRyzl8gf@ifW# zh1v>jtlSuZg@q&kC`REd?~hZ=9lzcR1YR{r_F4tgjX78A?`;jjPk^OQ3W)HJ+=o>9 zYP5`5O9-iSc~~5RuShTz5x8P-7@grf_fGglEf$)A_?ePE2)}5p2fnD1apSuZcb7EC z)e$Aecc-}O>esd?G0R*Bg0S(Q=rr!*OoqaWvMhbEZ$*>)R`oCPunSnmiEy#H2YL&y zH&-a3y^GD^?6V{?TXH|Fx+`nM|4n~etU0pJQYmD&`OB*7f&ZIaJ6(5_D&DRO@X+Q3P(GXbCST`CjYJ>2;7da0pKfEGR^vU z)1Lh%T)f@6nfiw<8s|J1Q2$PUnJ{d~@I!e86nq`pUG5Xfp5Qsje)Wlue4`Behn@Qq zI56}mLAJrZ`K@wK5Ec;xdBqVBW21L_blc$j5a+SiFtpLW3Fq7QG?o!Maq+s!@`lPT zpm45AX1{@x28aEx*I=NSW^2T1)4*#iM~Ort?m8BF+gu%myu&XyUIVcCSgRH4G1<4j z4**xLUsLW1_pSp3_p0>XuRXoi<{`Uub|H5U0fyPc7w%QDP2>J-dABELdSX9zw(dy# zkyp^P7e8(}7t3e8uX0#o?VE(N$nmu=U~uSnND5sQmpV-E}HE9cFE@Ny`ebIkkziq27 ziw~DTtlQfU>NgSfcXF>(B+Hn&JXnF1vGhiR*c!{?ef%Z131$~~M;R20s|wc7-@0$` zxxKxT##0^3Xe;=l_@+tN7NVVR-j}evwg$1a`^H0kMZCWXes{5sHC1`HxU0fHss``SSVs z{hEb*@j(GAEG1JB!NZ3dftyfA z6_!fD+EvhtZ{_>i4%aPTzJ(5o8u}X8(FsGGZ*k=ZZxm~c2Y}Gu)CkR8UOrHW?d6l) z;rc_BkR~_r?D&|2BxC?se0Wv@;&N{sZ3~P|V>C(y*zL2DV)>c#R~T8XpC+QJ=^Ol_|3 zS^qda#gKlkIwE%jN9tg;L8hMFyH|gOw3dUKW=;90x7LnZwn$N1jqUC0w!mcr=82yt9BJ#}AK=b%)KQliK2G!?MyGDKxNMw^q!LcQuLT zw+eSu65l!GLKe1m3OWf~nL}*dE*4?H$ZeH&tYHmQEDM0jZm~&n7nc_pP#hc~)`38= zxT28Uxqc34))-kYVSWb00n{gFCspJkTWS$mTi0q9rQ*xe?VT3DN#t_*s!qjH2_4yK zKR_2wAD&ue*!YJg&8|B>R9V>k&Z-Vtw@nup?qPO#&xG1@2Y!9vS~L?LP1j(Cjyo4Xm@n* zu;ViY?ng%r29@jpM)yh}Z3yKzE86a-wkq)uny);#5TJcI;@e-V+vVej$7tOaTn^Y~ znyrE&OAmCrO`(y~Dv>ufw8r(YCb`4UIWAN*U(Y>!uq#<)l-qg}^-~i)(@iw|&XG=X z4_^nL079oOwk`zMczNeuo$>#?X3tmdfjHoQ^FXJu`xl%$aLG}zxPwadp}^13^3t34 z6f(KBb@`I-Y_~{AGhWXZUk91=9%~qFCB2RTxb+55E|Il++n?Gb7iA5SD;Doy^j2x) zEs6F$s97X}fj+rk+}ABKy;moJ*Xt3GY0>h<$+fk^Rvb;t-@CUBg}JziW;-i)T75P_ zNo=)EXlvc$Z^4Lr6ZPyTD)+WNwHfvYl?QKqYE$jvo!3n!w|#FzWvDbBd|&Rm;${bLU~*ntI$b@5-gu@59Y-3*sv96G)BqwshbBi6ln$tu>ZIlVr7c z%p@$f87(w;{&grCix7JEafW>1-@thZa=b}G%Q#itp%p#AG##N;pb-CAQy5`wlOyBB z`OjL^|ENm)+L}MKjc@CL&<;vKDWQ^1c$5+XCuY=O-#UI9YA~RgU{d{9{xbaC?;HN` zbDf0lD}=$weFLV!Z@f?NtPVd1BN%vHBE#SMK)?f&^gV0_18?EMH$PDPPASy)ph>zR zW!##-`@5Ro@}6~S{=O|G;{Tq`C%{i_hfJb;vZ$J_#A7swHmH2Lc_MjUvIbUr6X_R4 z-Qo+6pA^9&&Q@?)Ue|HlS_t8&U!381uo$Y5>7!Lu<%0*31BJV>Rt~B^KT^r`&Y~BF z;$p)FCNr(AsdcV-aHI?+8f%C7g?fxuZxal8^Q-~CC4&i~UpDon+|&*qp^%H63lrrnNM!QzQmY17b3L@HxpV7> z6_xcrmwXXKF&8UO8zk`*UTYY1xs%;J(4YbVtw8GR?*Q3*K=!pKcm$HZwh8C4H4CSQ zr9FuzG%!7CcI6Hq9SW4zNPcfu(@AQfO9E=>#8vz~i3ZM07S^rQ`i?|pZLtfSUANh5 zth`gewR}~%QfZ(hF|5`jpPZDc=+=^E`R8epCHQusf$uC!B%o;|@H2q($rG(%?Ewj` zNZ35kMXGi%0(s{pV%FCmH&}6V6NjBu6%e>8HyO4CbsOuE7>@e_Hj{SaP6Ppx*#2pQ z27aob+b2)WO&fCZ1c)!9X{^VR| za#x2tRV*}>LXTQIe2F93($_v~TmwIQyjzjb%cTHDQ~9X{$_j?iwNrr70_oW=L3)Vu z8vI_407|1XpsTQH_#xDTb(g%b7zC8Bt~l!dq)M?|=z@cqy?56jsX`D0@MN)0<%Ol7 zX3Le!PwKrGT4KSX)1BRgn&nt{p}6w9ivw*u-UPP%JDhR6VvjbMf+~;K5cG z+M`KKzEU_-iM+hHth=W67WV6qP78-9dh=*gV`Xin010y{NTlBm_4R!Dyus#5OCWN_ zB)yv&98kCSG`O>q>`^qU_Ok*M2n*Y?-qss5wRUc%ZS2qqDSf@BU#_;=CJ%|9B z<0rGSL2PKm;WCB_n6WpsSmh>HSJxZA3zAq^(RGNp!vo#Y|FdUvc@1Kn<`)-1?5Twv zlZ-Fjn3jmmpz?WpvC0P*TO8*w*jE#kEn-7b=032Msr9X0(l!2_(^ExYP3E?C^{K7F zj(_LqNEKMlwXhL7B|@)FJ!B=@;&%!K_^T`|dryffb)T65{h0TBG%Idjq#G&3aYS>>ML&xKtcFaAmaHuRuNqw@WSPCwKuo7 z@;2nDN>YJS;BE6A{7Za0h|e!q-X_fCO8Z!+6Y=tKv(Hu!E|#~vM-b?(0$cCoPbCt1 zN8p6z1CC4_#)B9Z2ce@D5f(6B;|p=kBk%7Y)RAWLn!V)#Q#xpX{i{cq;TgQW;YmM! zZ1(n|dtm!p63G_|hZ;e03DS|?+ry~qf+6w%e13Bi$6oZhZwq&qmpBf<{@am0J=I7m zRKe`6c0K;_XXu2t0)Fx2$pIb-)XsS(AAz|t*q1d>sS}2+GOW_e!m7E|{qi2f(y(?M zjD;%(W$+?jE^p(utI~XV%W_dWDht4aA%A|3dP6}8SnrT4-4_a+5D6>rEF`J9II;ch z_gZdw7qSyjc=8yqc&uLFxcvwWL@r$Ifhrz_(AUkgwsp7vg-Ror5~eQU z3*8>nxR>nlR6kYN+*Ro@()Q{A1@y;W|TDU2dEZkHoC5@!RcDtN*% z^2ya^GXM%d6Tmv5+%c)gWtFBcFF~=PGs7jHRzN>YwKKTQb>+)j-5A>^+DV;K@W=BK zrXCECu1X~L^y!gCx<3(Y_LeQLm$s@PdF&3FzS`Cd>OmhLE1(XX-^SVMGlWAbwA5sR z?=+n@WGy{E*G$$Taqm(KjwDZxF-XqO%Zd#fsz3o%#xB_8!;3@3@*OYfV3X=nos~}? zof0O!y{*xdzO7&y(Txvu{b`jT<;jx9Fu(v?wE)J-Z@=9o5L@$|2wIsxJ1a@i{OPA)c#%Vs$nU%Z1qInqyi}k}QwhTC znXd$|P=^u-d>J2jOJT_|`S#nF8fLCsXj5f!f$m_7G6v~=jFklq=6(Oi)h|U(C1$d8 z25t^7^9=xn-cAX^l0>lM_f~Ssk1gnP0Qda>K z9xrdys7>k46~gau8EO!@9XJtU&^ZCXWV@j8;D%jXwC9CZ2s|}|tU`IOMD`Mu;09!e z#k%3`OM#89P*`>5LP5=7!rxPmL)|9)(7QG;95ow^@HN24yI&)H-MCW2yA3-M<{Z>V zEws1ynhvamlrSj?oS0-H@a=zt%iuYne5(RMmiMh_#Uh7dmq{bxVQ+hZp5c%%ih(K~X^CJTJ zb?hdCbHL3}4ziv}-O6x8-oHJjXA#s72ZW-_-qw<9Fzs>A%>T^=u8>K=fRxVsH+D1l zO1XeKsA-=%D`g~Z{MpV9XcYk%$|GsWmUC>Gfd_3KmORW=GI&P}M{;RI!)dxwx-2JvnzrLTi~!7vbSh&TBDPf+XaDjsBmw` z$V+P^mf2J(+lY!AJ1P|4r7avUGni?Q6w(b6+)$y|kjaCy%bJ~38IJ);SJEj6?Mg#+ zJJ2dJ+ZhweMzyc^yh(a@Vc*i06q-8RFiEZU`xeTob*bg18vhVbx_Gmuc34BWwd$sbJmvHTZDr9q{h4i z`JO`ZTcrZH?EVTGRv3GPPCmMP0){%aq(R=C9TzkT)S&2#i$@v_u9!ZX2065i@hEHi zMFslR#-Tx>LrpK1x9c4dtwxxZFTV6O!7CS%s{riw(Us(ZmbzHApei1vz^SdNBeo`= zon1C^Hpr1>iO7rV1=2COv4lNGm;n~?8LPd8wDpVS#l_PqRE*>TzPc@|+9z0bBf z&<_}XC@3L3uOzXwATBS}EkY<%fw!$~$qt$a@6RozG42`le5wpa3hi$N9iLh)loU)7lHi-H z5@mHpE{NMezn*1b{t2_$;hy|4d*3ETR>c^(Qq-mc#K3;{IpihO0Sk5)#6T6nF zHn%!fuCie2iTx4516<|DQeu;In3BA{unwTEj;^){i&gdpe2~_m`4?+6@Qy*{v2;?B zaw{8aMu)`>L=Yuh*iY+%JdzqQ$>i7=aK%c#&`yiViKAdn0GF6VhvemvW7RD$j2&R= zKZ1x)n`z(>Q4LW%uul7SYZzXeMG(cJ(P0xnYDOhADmkEoq6|NR>)A~qKQgie zJ$3g87^?Zg$;N>HW8qNp{Azj?hKJ->)jqYqPjvg#invk-@s3o#1T!35WjSy&@X8D~Bd11E z*l50BIC3w(Or6h10I%L?sE*VDyiLQ|s~Cd{W>$M7G@tOy-)s+elI`c9;|$-~1; zi-D6}res2wNrKbLhueqPn358Y6_3@XBV`V(c?^vm+dQd*lco<%*prq}>G}GYN^{$% zN5B>si@4Cj7(F=0v-2J3Sk|))7|Z0Pcxk0Kd^L2euujAMGNhWq$XD7`3+|7*AX)h$ zeSu;6q;yGWvUFIpOp@n9P~IE4(jBN0FVo^ugQUhv*2kky2%Q;OSRm9zRLLX2#5{u8 zAjN)$ON~(ZX$GS&@np1#u>kwPYSk@Yj%-({xII=yn-&{r`{=pmVH+HLDZ*P-u(75u zat^9^QoImYP($J}4fdqj`HL0}Z8f{(r|VCNEni$(fQGp7gk!}gC64AVH=nj_spVw_ z)|lcGSbiiTKh?H%2o(!~Po8XmTR#<_N*p@(L;=q(tPqF%B>lt$n_61dh^-EdwHK3F zPwt|0f%T{t(oFXi0PU=77;nPW;_~3qv|5zgyxOco;Zq3gO>whl%D=0K~aB^8?{U6t1Y*e6b%z8K~Uu;}dDXeWzIhrb7n3j3-5d5QM zW2>&oCmFO6us`AC{9zg&_F7`|>CP#pB$w-#24FvS#j$c`X$gIKvik%J3N0JVyQFFN zpzf>8A@o@e8~<#qo(P=?9{F#dJ|6lgAs!Rm+_- zlgg-HN8|dEwSHTJ+JPW(Q`BLY-NPyx_F^aDD!Z<66uzF_Vv|K=SFjU#WP1dNYagsP zJMzg=QXr|r5!00`wv!z3AkZN6y;dcgba=6~GEqqizP?ZJ6ky#D9z^or0MM*eYwg|N?B7pX9YR5RBqf4+x*h2LkJc^7my}6yWWWyrH!0 zc1ehR#RekCODh_t6X$1j2Ta*wQD}H_vYdwr(W+^%3LA%9RGrqH76lrPXXjd7=?w{@ zX1dyIJ>CL#awqE>oZGs~M^!p?aAT{5HTM(wq;9vV)T2Y|Im}nNzB%rWe7LFTj@J2^jQ@v0wrrnZLkgoaeAmpq|xtDFz33l(S)ggdJDYpxk)`uC|jF& zD<2-5*HLE--=EFS)qAn+6~?`APMf-b-UYTc6&zYO9UGQ}N*7}Wjc-rY zt(*MW#aWH^u2rFY-6#rf@n{!3Y9ou%^=ZXK9Vdq-na;1RR+)&Ub?GVA1ZdXk#Mb;X zyTVK>*#&G*nuB!P-_JvgO=VY`B%&zS!o^lURr|!u4hn$w#>TY9$cq;zI>3FptdPmsY@rE-wIZ4Q@^)-nuuTb@_%dCIHOKI|TqA)+ zBW}|>7t6DAvnpYFDWvnCsORV+2PVC1Bs|B*sLHm$W(rNszK8gsnL%v$Eu7h3#SHP2(adFv}da% zJ}99w4!cif%^)*!Y_atvtT5M@oRGDe0T{$?U;s}^;MKHBre@^>#fB11ihvTJ3Z!OQ zQV2-ZX2(#f{|~H$?MBf&Wc`Y;q7$~U9m+Ob@>J{wcvV|2!a_gU%Joh?wqU3nrgfwh*bFe_N?kfouh z;FqIq@R_OXa2C4_%Zc_11Z8|ain+{lb3c@75kW3;BqzsX3Q65es6-fE7k~=MpBuU* zOFT7BksZP~-S)c#jtH%7Y9Qv!?O~NCt?gG3^rp2Pel8s#+8-3Re?>SOcCe~%|GzLn zJsTf4xWvSS!P!hM*v9g>ih=Q8Q01>9QT1;fEnnoSO0CVT4hWGkKsFw4>m-p#7<}M4 z2#Bj$v1jYsd`8Q~>R%JG@V3!+Un55>V!8Rtckl8<*u%wZ zuOX}((`lX#-+bCQBhqWVDd{zY`g?EJZZfaNA4%MEBGA}-vT`Dk4}GXEUg5QBoM)Q< zI>+--iFdUqj#`1;5jcGBx_VT>*bWQ`;W8OM5)^DeH+f5TX`v?=pbA&bMEcY(o*&xa zV@MdjZr#V2PQ1zcp(cKc!xT=RxAa3u@R?cO%?cnB&e)KOP|Q$2@n|)5D#;R`DmTP`1?gC;{R)<6pE+U*)lv z7HOF)(dudR`)k#26NNa;Q&Hf!!(QauTFac9ojk>F}+f6Ew=P*VF5zoth*sd|gi zA`ua+Bt4jh@2C(T!5EVc-LB z_uwme+%W{``^i71pWkzA0#BDx<3cDshc8o0e$Fr7a>S)zE{UK|95oo3Pjga0oChXz zsp(s_OA20+cY<4_v!ucZZX#UoNg7zJ%79qq(VO`eCn`(`!g!Vci zCz7-CFT0!LxHL!6Z&`B2C9vSJIsK*PkW7xE-HO}5^8alKdRN9Z3?0aSQ?Z_`K&*@7 zE?lOkGq}9v!UV5S`)5|8{Qd@Zm0Ci4^~S9RjDH0zoTu|{XfxO{2=&0-r1I!Qz6C|o zT_yR2F{wdQo&<_nyp1Ykc>x+$2C=uqaSv+9OlJ%t-s)(P+|cN1(-Pd_Q8NP#l=+StiQSyVeECO)Z!(=8ZxOb|hHlrw zx%h;oC#fW#VFiQ4k4BpYCa=SGL81;Nz;bb9&WZ~e`Gk$CSb-Q*8Z1SR;&V48bl+hR zMjM-$-g&R)$eoOy)Zuwk`?q~jr8hEO?Pcp3wjPj2*cilxmW*eyBTPOxT`<|iE&J!I z52@n=OU1Si*2LhgCQC7=WZ6OUzw^|f;@FjH4;BaE#p!?EVl7L@*`frKsI&~LojmUt zB(_|B0(k&HU$T9v0Bp@U@YU$-d}~n7=g$D&ac3R7ux`&u_8G+)YkiAhK|OPGr>f0D z)P_@_;;IWkoWHqYUKa}xWI1-)0x`zM0?bhI>Kc3ig z4sR&8L8r@}SmXCS928^^zI3@bM3w3oG@&MQLoGG}8?~c(jWt<0kxYP6XJ@yh&-E(* z5!yY&*M5(MrlNlX4a-A^TzY2|+p`1Nq z*RgX+`fg-LBl*FTK~Mr_U{=|Q#KB7&rCh$$>oC9k$gYsw$VfuPT)}uVbRl(%i7e>$ z{2Vr<-Q7KyB{a>ACal#lFn z$5dK$)a>bsLlDJbtwkn1Zj3>;8VCtmc#3l+nvQ(Mg?e)x9S-OdmQhI1AfWtq{i7L= zXS7bJ&9L-o2RUXXlQlk)`Hp!moJ)C9)mu)ZD~N^N#WL%5z$W8S9?G0+6J3q+lJQZW zt460CPLJ_XWEhRaz6F7?IGv}%g;sVrcA>2fvV$taa^DTP4OaGe_JPB8$B6zR7QH^| zO<*m~bB;ZhsMUpdzEjuS#z&K`Pi-(lBX06<2A-=N4ZFzKDX`&g4?=Q{j3@}H#+n>r%GVa+p1Af= z*kg3ts-bR03T$GNgwI!fJIR`V#Bq%<(Lb`){s@%7s{eo+aua$=mqwgb(ihV|V)efO ze*|_NN|S*Dhu%b+!p|GDZ^-z_(fZe6w)N*uG&lj-1br~xBtfA`xEJ;JB0lq7BKQY7 z1wZ4fedHW!eVO~UduGMqpehMIm;Mi%{-;cni*?L!U(0ro7e>hMFhcy_ab)(JWzURB zf)j)~tA9#s1+H_T$6o(xXYiNMq)<{##U!1 zis+h|AAi?U|MHD%Z3h&9QgQ%E zK!Whwkd7Zb<=PHGA@i=bL*mHOe!S^yLonT9fpYUbWHS(~DG)Lv#4tQT{XbyHPiYHV zry4)V#fc5l`g_$sVFW^e&moL*OI(A@Mu;8s6UV^cK?q%mbm9wxy{*&;7y~Jb4 z?*|5?-2dm+NN#MbM}e`xct14O{1ejbnXRxa@W(X5K!D4ov>3t>scfIAlKGhzUvV{P zsHZ`>uX1Eq=xx$_(1&8zICAGX;#^h!_|I%AK>7CwRP5vkqmo3tUn0c(-(L|jzi1+t zKgX-ma!+jz0 z{=Xj0c6C*Cb@!=rs!qLi&gnEIeObCfNm9}>9vn1QWstfkCB^u7B65>FQha7SK@^bz z6;$()}s)0QXRcd z%aJt=8YKf$(be30QiG_|@uZj;Pe^e)?na+!%#dksE6B?tZ=fEfJa_td(s7fDyqv6e z6Y8;RUe}(4MHbFm-= zWUh*kiR90C8$)aJh$b2QY7b5QN-<0y5&5Q26>84o=22X z*P-f@l(vk={d(p5w%mw6?ehS%9GV7~ZldkvW~_SUV`RVdh<)A}s5u!U#;N1UfZTxO z#(Af*DCruY<9YHtQoI~DX(e}U5$wMA#CYC#4z?~AOlQfbMdOAZ%HYHx+bZrDPwGO_ z^q`U2kRtcVOi7EJ+DNC2zf_t8)@gN7=OBbJrOPc%Vd(9^=TWQQ$J#YTfMYBx9b-dX_TK}TcS1%e_ z-rT?HqP_^+`nk~>XC0WABwt*mQLu>`d7{y znYZi&!kZA1sX)Hym{XpmTh?r?TkBso@AT!X7cXqKb)(d*<3F+%!y5^fT6lwHI6qVC zU%Fz!yrmn+=s9z0$dhvxE?T)_b$J%9D1V3vvPE~A+ecQ7G0hzLo@pRG#$KXK`b`SX@`z}s{@osWtj@G`uDXOveEK9-7F(x#V25qc3ZSFM>} zz$Xbx@WwQ7_mf6GC;NE@`hhg~hmtlE)fV9P^Oi64*>u;?{nBWXGgaEM=oFXOD~(bs zsl&p()iu6DXd|sR8tE!)NJC3Y=MvL1tT#yP_jJ5x*rnUKwvDtor2-)lQfD<`$!E-= zyq(->;?~R7EJYt942XLI$>{~M|7nXCE@~pv7n-_PYA1Xx%ddKncKM|(6d#UhG0Lm) z$tE&j8jOm(_Br{BY7T#Ehi6Ji|6&Prl{BE`~VqNUFyB5R(A>TZOvv83Dd&m;r7 zb0*QI=+5ljRWeqRwRqNBG;56|otAqhNuNfd1G7s9povvPWbCI=ZWErh$C57F{+Ogc zB5~!9Bz*{+YAqJ4Wf++T!OBg9O_gc-teRfQIE#_Vmap665zV6%C9Qq>{XDn)1J=FL zyq_NohA^+^wdTF7#Tpz#MlW6cM`E_Gv>Y)(w@qgZX|nzzq8kZ2L9joNY~O2&b|tTM zA~e03Gg41@7tvJenTEcZmyB{7ZTG<7C;6UPwuV-S4o5$oXd|NEF-C;tn3Z1Bn@Edm zY$O}>MRmRf+XK*>=S*M0&ovp#I*7-ftz23fuNP2{+6AZn#Z#e-$js!ve#6;G8 zo@CwE@f%BeU3)DVHau@FNlr1!VV$+0yZ0K+dSmb#OG=)(mJGOttWvgiS5epnsFhN( zK5F&O;#Ydl_tz5oYo1<9H1@8>){^v*M8O#!?U%Pv!!O$r zl64}a(M4M(+Dhi^`6?=@s3b<~#%S=28E`^L$5Rg&Wz-QW-(7{x#ton1S^qvU2GPDz zqip@B8cNn1O{mGT{?(B>|96q}c|5k4PuL}qtRMdB{9i?i-Un)|-OxW!!6$0^8<>T! zM1}BI=l?P?#p^YVZ;+VyarFOM)Hm^KOwxXaF z^vliYxppRdug7!GMGu$DXh->&$tpY%jh_|;d#})a$0>XLQ3|dlk)nUqoMrPCHj@2a!>|yk346zeelA__ zW9V8j(m%hIw3{V-6j%3uijZ`(NS*m=D(f2&I*MEi;qu(FV>=gUB*EytL?kF3iS?Ar zOSP5-Xu18Flb zk3`p`2E4&*2&r+(G%-8g?UuGv@gU*fqBX9MkeVN(Nhza=85o=K^JXA6zzl>Mf(pTZ zqmoV%pMgP2mw(DNqS~kt8K6e{>*aDeCJr)9efD}X31{X7B>g<4wrP~QNMZwNFgKu; z4TQ_8)&WFpP^XxtIlB+6?6D{UA6SZT;wf5C$iG)l1q9^ z&8tazEQzS`sCo>=>6=8GO*=4B(xNq+(soPUZ8mMNXVZdpEQxGpMH>#o?T*YpmNdA> zl7e$A-sxD99wjLIJjzgTEo<w1YmDnyk3aiD68)_xx)%~+TV-4xzmPOo zqj(WN(X5vd;|<@nxQ-25x_k-#4}?g(jt!VDPK3j&O?hHp$JCs$D-zx3*>O#DhJ5zl z6YYA|VLHdt0UeVR6&I6H&K%lc&Y=Zk7Kz-z26S^49^NW-lf*32049ll!a7ZF7UE2C z%9`S=o5XKo4c4b@z;b?or$2yJTQ{*m%bk4@<_Ys6l0Ju1+wx=!7okg$(Z*HLNo%aF zEFD!M$|*$IimPo&`q$#NUbeU5oy^()5K(b)B04CEei})8N>m(?h#n^&{2ij*%Ia)< z%5{UFwp~W!@%f2kM6p;((z`^Y)d7jC!87SUL?SJ& z-iI3+eV8<7zaygRdZzAv0!dyBh`}@nx2m2y6h?_YW-_;XA)^!rEkO~JCpp9QS3jeI~JNB5&m`(i}EfLd`(WG zktZ8TJ2Wj9<5vTeUGiyKoz~3j7(J~S_+_h&aY}oLwtD4*>pIVDUQskxFI%}2Ga0th zvLsj137<>&WmU>N(&Cgna%%J0P%@XIN{0(w4vd{&S%fQ0GkZNwp&NdY;`LJRYnGa< z=UqdZO=A^hn@Cn4P14^1hkRJW+DP1I?CYAyR)Pp#(Z5kvsBK?pF0Vb@^!(XSJdF-S zt?eMJo;7Q+w?-YXU_t+yA&qK>mHkF0@>mP~i^`s;D(kwL%Cjpme6^CS^>b~sZY|YV zRH4&YLgQKM-8w}lM%i~iC#i0dcaJ2|ZlbM`%TMy4M%O@Z@z-Fz{1QdI^coV)`$x*7 z%9>KlZZHmx0uFwlJ^cGydMjhB?Qy2SwJ9~g9)8Z6`!+1WR~8E-i(q_<{>19 z*2wV@dI%}{hY*&tP-LUXIfU>BNR@u7!hTMnXfQSbH(SWY>Sfg9*U)BNSK{(A9Y{FW zSx&EF;}GdIxUNliQGztfo2L+t_Us^^PRPhha9@^pf&zLS72gt~o#g$=;OqlLdJR+R zt*`j7Zo1%_diyJ$?k3S37IZ~qBkFGtcU=OslR>O^?+rkV)K0#VZP?7N>>LRtxmu@3MXi&&emUJT4lL zFN9R^%&E;>JWi|8Ou9=jkz)M#s{Y^>+tTf_bxBIfJF4;sy3}unBoQ~EeWU!ZB)L8f zlE{WImbK}6Cu8TSP~?@6B-&;kk21C-scciK^b1q!7D9koTIIi|L|R?0JI2{V+7`kN zX;rr=>WG z#o7!#r4AU@i43P<;W$G_Kkyb@gkOU_P$DV*0MwMUnx3grerc{%H@;+9<8WH(UuQCjzRtn% zgniJYg3BzBLTLd1f-aF9M$Lfb8_Y1H0gNaM8YJh*qf0LRPBszU~NWSzz`78&V*^_h5Ag z?47d%fuO58(1&b#HCVmVk&*;XH$zU3tspsX1@=D(ycu9M%XlYYE0Sy-Wk<#1ZxS(u zwCg30f-{O{7ZK1Zq3q+tktc5HZh2Dc%M+*@KR_s;>lIRyPfXxBb2_t4TW`|n2uYr- zblc`eHEaGy75bd!q_Ef+2Xpun4v5Z16(!Mnw{r9Agy!svlNs~M zHaeT|dkX4hXbrM+ugdTh;I$%Wu8q+%Jm!$Z5<-u45e8Abtg_81Wg-)Y5b-L;i706T z@AF4_n`ykFLR$oR#IFgzgZ9g@4eU;jY?U34T9l)`;cm8D5c0tlkdXf(Qgm^@yh2Vt z6&`AmQ_Rt^Hq*pC9JEXMOEG>|C)VntqZQdPAv;^;Y(b^G6z!Xt+F(@V;eR17f&6%o z8(W9mJg(-=UA1{@Vvo{7_)DVAlsam*vbFHqLayNtfO_u)9P>$-A^) zHqMi=b`ydwXNp$0j2Y?=P>A|l<#;az2lNO9hySh-($VF5;Y{J`Gon&-+;3;n$m#Y= z+Z1+dKGj9oi$xW)gbiNjn>0)kMeqHbd`9FB*q#&!Pfi3Tk3%A)fK;j+Z2Gzs8po2N zl^(zZQF2gDuFFZuD*9+9XI>RoAT=(eiMJyP{Z|blm?0oH{GS@c<{+zFKD$Opv3Z`U zU&SEmZ%PDB!_8Lv_)2$u1(TJ-K!sFJEdKA)S{(DOed^dEAVlY+qVb}&^0qO%iMNVfK*An>QD zxTLz@tnf;ZFLehokQ1p~zgZc3WxkI(j8CEBH(BsQ$Xk}ohyJx&Zs_+(e5+`)%6nx4 zEF8+l{|A`}WW$%Tffc&APbd!;dVMq`*2dew`xwt47h+;cw59qS9oo~Bc);eq1-TH< z#l_w6eklqdLYOb72Pqb(#`_#8FLkkuby07H$;AnAkZqjhhD4yp3|Gh|#}A&4?3I`W z-Lhn#0YuI6^1){YHGEm)Co*@y#bm>B z_O+uFh=dFAAn#;rArb>NY_Cwz-2|D4&56l*#N9KG@IQ=#JY?*D3|FR+6Ex+kSjjH` zK8}ScCY-Ng!*00oCgdB=vZE&W2lx{kY7R>le|i zwOUvaB@e^;>nDwsl3@K3s{Hi#G+wLlyq2}Es7v#RlC`f&!8BGowVkdfJ$C6#0AJ%< zadS;mun+x@s(_iC(#I511Xj6HmCR&cl|hw%k0~DmVwZ{uzcZ%1KudBYB_Bd>o<`DV zwDX)DWDm$eRStaj&^|eiimMwj1cw#Qk0~$FPB+v^^42?4J`{;@sd}rYwMQ>e*{l@P zo7k6BDkEScr?jlV#|imdV4c%5yiv$WAivb^^-?=k(W(7~BlyNxM_4$%0;yxQxKtG@JqP|9D+fGElI zt6bshGwO6w=RZQo`Gjl`+E$X@(FB4_%P8L)TBIX$cYL$^;~F_IdkfJK zgZvDp!VcylAl_wz2%P{HIFn>t*d*i#sf`qLbkCzl#PVd0S88_5qYi|AAh_JRbXrM- z|Cu*9GYOlfku@YS6( z0dlheSgN&w@@Xnl<04W`)-tU~=*<%0J^MZ$D-yON+GQC>*->O)LY13J^lMA`$w4i; zlN(Leky8NEnXaY3cl4zBBa2S0Kx2O+pz8^XmoLPI_2Ls&&s%oyw6+mzH0iX5-WS-) zx`D925;8`_>`sX#!ZfpfAI| zAa>Q9#0ypZ6b4M|-9`w7uD9!if*%v`?c#Qs&sQxYY0Lv=(skaSs29cgv&Q1yBZsnN&M*d;jp z6c8(6Me71e`FQi}eaio0mXijgAeaY}cRg8ggJYP$8{ zs9(dt6Wa<2&oQyv8hIT1#m%JPHIq8y2ZT2hrH`>4OpOwlFD5P(k;jNOp70u_+clc8 zcPnaKSVp}%rbl-jQCD8Xo6Jq3#(Rrso3MB4xbAc^ecpUTp2&e!iPj4=)XypDtCEDD zTo1VWY^MHvv=}BWwt0@+@sOJUtwaT|2vt(9x2i`0fYLSrd2t_`6jX3gA$MJ66C4BL*>c(89EVKk`_awaBV;&P-`#b1^06JQg| zNLX90qbl>I7@0UK3VHgGs*aeFp8;S{*4$w#n zSlJfk>b8LOZm{MpK#MO*O}+rlz9_Z(0#uq>{L<%BSkaT{5BKXc?E91&e}&rJr{ADB zu;}=4EIn4x8vRp^0Igpr6gnGIlHW;^^m}ALB6UgHM+YoZCQ5X`^km{K6k&;!r0*bM z$ixZ=9k5MpvceTAK5+(ZSD&nyu3=*Zyh04P_GE?dN0gkqOdCS(64I)>rdI8e25eLB zZn;o(s&@9y6>Y`c=Cc`xi5sh>Pd6^i=kC738sN$OBHskVMwSqX%w=O}0< z;yNa_VBACvCN3o+>~v)_6PpVIuIzKk0Ee@piD&L|j30Ax87Fgyn5<|^C$$;w(n)jz znV`F_xg?gFqrjj5CTnoyIZ&h*F*)UfAJHkjjyttNcyvrL=o}EeDD}y`odbv>fGK3> z)Z!Q4Le+LsZ_H5|-8l*yKZ-q_AeU>A+vpfiHxqH!)2%lW(H9^biFlM_N2Z;yiA3DQ zq!f96AVq|iN7KDxgdKtEQ2@2#n{clLzPWN>JxT)^vZM@2F)KP!gx=W|g8|5dJqMwLUKEn7UX>2iF<=2SRkxT{E z|3ygBzf?r8T>kD6lCZA~GaE$483wRDo6B7P|-q5og@a<+d8V+bE>fAk2GI`ciuE^ z*!CejgpV)tZ!M9~$W9DO(P}SMm43Eg+70!nlBSaPAHw#?LsGW`jVh48WPTX%D5(#Vz-o61jO(DYA>h)*->ri50)&PZuVc#`ZQoo*?}PoR+- z;yt#%DIs&sFjpp>y-9yhT{fpaY$CF%HRo>daKbkwYGbF-yiwoupcY$o(h2<|{ilu0 zo6!LJI~re4#X?GK!v93mCLwiBFUC2UjMrgy7H5P>3&{(@q>khjVbVbIMw!&QJbXkD zbG8)Hx-yavQfQX(D$Y(zi_c@~)gsZ%7!-sc9X|e^q+beaV3ko2du!NXwyf;!t??!e zYecJf*0{pL3BOvTucbhe&QI`_R7|DmpU{{zWx`|33LZ3u)CqeZ`IImzU*xPXDWCX4 znT&acFW=;1!L%k-4Umq< z?^h~>1+DW^4av*#HkZC%(SX4;*e}c1jQ<-I_ecTm$VHA<9Nn`{X1G7&&n*HS(%7TT z8CT7c$u6Q|jTs~`%2ep9c30@DV%IsWB)&=IP)%}ce#+Un!H}Bi&p7S2N+C5%LaUc@ zSRtmQV1<~Ht^qMa0)m!5*R*;`)_{|>dJu3oEkRaE%M(aqXPF*2S!6O@Hr!M*=B;XH zdFZyDoOuav!3rvVsEbYfpLFNU-%{3#Eq?`OZ6CRydAdE$GiEe~qsTdFCcxokx7cd< zw<&pl+KjAoTD4XyL=znEPE=bAzhzqNZI(0ML6AIY;g$Y(1xx%iG{^zNzXdb(i)jp~ z*e;cWB%H&GQU&QUL5x_);k(&72jxw62LvE0yTaYw6)Z9c?q>J`(51PYG50K-RJ%Vt zDI8mt(kXZo*?6a4T1qqS)r-+7l)n?_VUg_qP8&tC9{O8gj9H3l!F-{LdIb3Q88CY1G*1w(dvZ6c{` zqEL1q2i6;|g70B5YG<5<=;mRM-0pC6WHQds(NP4I&9OV9_ zQtU6e(@)5_FP;?tlgeu9Boq8e#a7dWwq%0aFfD%2tDxbXYR~s()=yY#SryngqJGO+S{wZL}J5!$J+}b4p#a&Rm!JWDsqbHv)K)Q_kvMhmV zR?rt#8Fvzuj~)sa@2?5& zyY-~tzLGsM?isS%8Rl*IMCUD*BkNI#pxX1{<5eC)-}fPOxla*1#DRb>@DTNDK1c=^ zOe$-_azQj&AT@p}qQP?Hl6tm)Bwz~V)pwfZZ4QREIqbQH^!g!@Hx`{fY#8P@ zL9g2yNDqlNr0lK5@B)=M3XlS3QS`GSP~l<;u?zpEjdJ@ zB?XMq-TKu8P>{g_Nd_?pS$+%QWo-Q5$k$#Kgy<-9(X6f9}7G0H@I5of2LzUn9l z+!^OfGz2RKc5V_)yg79kxUO6s7^e_SKmEb3Q7aKEkH+#qZk=(zUamdDoip+1AnGFx zgFv}u`W=?M2XA>|JDS23PPx1py?!Of;=9kq)#9b5Ho2TD$`wTjx$x)O;=3@Bp4b39 zRNTbL@kIQsN3+(!b>MG38RN+~eI7DUrL1TCO?-`zM2=3U76vOjIS>^f`+HUlQYYX& z7Uq-z3v;6=$e|KHQP_8hUW;KgevMpyYpF!)$a0NaR^!VRzLBy^W9cb^*4g)I1YL8w zfK@_iNk>3_x6~gdywYFVE1gx}iA0qBE-8K;mVu9h1gsQ9b6_O3Twz~URU4B|8g$C` zas^xNEif0u9-qG)3%nB)-gFWcc!@8$C`a?=x6cL5oG&@eIRWsLXob1$&*E){x%v2E zM_ScLC?n^>OhDo!>!afUl_-rX%BWR-55Ae3KIz*y-min13J!K7A;pLPw6w39lJ2PRd^ z6*yIFPRI_qdjY#HAv>hr{I!;~b{qq0(|YUInxuNYT{$|Hqgy$8m7^aVBi%;%*P1j} zLr;8K4NC4<*XrnVGUB_OKY5}B3&$&=BDm;{HrF^PwCnql=d4L;-rBK_E;u~(CFd6d zpddkKG+h7-puc~k=v;j)r00^8TMg^d2!FN~d(v4CU%S-N9X6Pr{X-&webShZ?Zif& zb&>25c~(IhL2ZuS+_4VX65yyHjX*>=kj51&hn>)vEd;cR9_Rt{Uc5>uBIuFMNj;Xi zT%pIWO5-nIzkAhvw5Z5OAPtU`2Is$*hJOXDYN6JJ@==eDPri4kxFyqXfTlZZ6VpSY1`U26|l_fFJ=Y@YY}hzzRCL zA_{<7j#w*CKs8b|U>J}Lm>KTwi?0{Ka0%!~8gb0|g`NDC6DoVzKWB=pE>Vts`21k3 zLI&x3QziRLyh;vlp2UGs>rt$10+a)u;(JE7Hi?G>`{807$M9ZsWGA?I)4iQ=FggKG zO#iqb=!79!fj)M3f@Jsx3^?gOju)^O{=WiJ|98|jl!|)vaLFFrjwKRVBz~AtCnvNz ztPd713{Rx?Yn6h0nRLUXL_dzMXM3{Ey)~S@Nk2@+<`(&;IG>i{lYw}=$7p^!S=f|L zkD{V35#k&zhV#QTmifFMFb5A|4!OMIA zB6Kb0CG2o`>H$+-Z4~Ba{!IRj9f5-vBBWyvva=J{x14JpBvdAbcaD%=uOC4dtDt+L{ zX~I+Zy=vZ7E~jrFAN8_@%+d61o9K?E;vrG=|=7$P^&ElqwIE zvCSeY2as%F-V|xfyPq$@(*&axyfcBx!sh_9_0ohmASPxMhF!~=Q2;pL$xUOFgp+l2 zlASn6^vVVI9!Na>B;Z&dGjMt?09v`o-UEq;IhaBI6C_?4lR$}1e{e;o=ekC;nxqo- zL)dXN;b+xg7Ug)@yx`LAFT1iN3yfV9plf{5P~(4CD^WV~%DSp07p zcBBz6%Q<_E``I!QULo~oaf;NaDrU^$6j@&iSt`L$2UjSa|6zESz;X#RRt;#pYz%auZE|Hhnmd^+!a z`vj0gQmSI#CzV@v4Mlb2%UvY?!(h8r>b9^0_prCLkAj6h$>9_R`O-?7!Mql2%Y9!y zDxLAv$0~cXc|9aI9#YhSm&9iUZ0fk5Veo>VnKJC_^6^9MD*AyhWk`Z=|2k*?>n2hl zLlUXjqY_8wDi9&8JO;}C;3NurM|Fc18=N#o_wB(+{Oo>Fmt+TJwL^#b6LIb(2A6o~UdguV5H*xX_M*W21n{VCDsn76=8R)@XKEdm~m8}LK$=vj>lY9!i$g#Q# zAjG_U-&`t$T!SKx+A?O zKfLFzs{dL=mEa?qkD_YRRMrps)ehJOEgk0_Fg}16dJ>VHXzTByy0?@sX_- z>>3SgH*~Sr2^-(s(x<;7D9v<#6T?E@1sn%Fsr|o}2^UjB7A*f1?2U8TAX}p^L^#|NE0o2XSWh|-WBQ#_kH;=*N zPtfebe*)MxU#C%iQP#;*wm;GCd6ji1 z@(ZIgq|MXCJ7D4VAfancS0)w^xhA`EK)|e_vHa2cyz|leMp(S%@oR+nTONjQjW&$+ z{GkiT&R=O0R=_4IaUdALnM^bGN3X^PE^0Uvp3tA4oSBuQ1G9(v-~ssqxXwCowEp`J z72zZv#$JI@)*q&^R-=4uatP_aVJQCX6RDh$eu4Ip*bxi?3Eq67KyMjPdp zl=%G<>N^0N&g4%K?RL&@`CjWn58%;Bz@ zUHO87AzvAD5F3Uo>Ts2qPnDn2ww2a}aFXEF?(K*e@D#k+o8j~P6wR5f?NzHby2<-; zOmx7zRLcnd_wOsW5(J&`?!B1IBEu^!<5RA}&GiLRau8=F5A(rBgkF*1R}viN+sI>I zL>jEyi*$LNcKuTk3rlYUmel&}A7iglTtU<`86r2l!27*H5541&TE~+E-vUDOb}vj> zdI^2$myv@I#Nwk-EWvB^{TSXhyYj;bc4D*{mzSW8UQRa^UF*Aj_OrM6Mj-W^>P$O+5E3Zk`X2GDsS^a*(8W*m5#p*7M*#pa?#TSrB5g6GqBB| z;^yO&ZInKXk?*h;(|@NE@HK)<#l~Q?3lQ$uw#j*O-0^VR>e7eKqWt$eF*Kwvy^?1A zR1~`b@r|+0vT^B^FuKtHrt(Of=KZ6^6u)fDhK;OPMmv0?pRo5t@-15DzD30_!b8x3 zvbQN()#k!A8($!&eZWMqAm-XTK;u*%* z_C*dLu_u0&H$UjYvuVhBtW!Q&2F`8+y?8KfW2DP9wq8wJdV7{GEWb#OD)7H|=FHQ& za^^8z`!}uUqrN*Y$J)0YWp%+U(a5`GUny|#qtEA!XgiY@dUztO5%S` z@>nY$Nze}oM}X-o6n;vH{Eft3ie%mK5d|ZEt;Vo6#pqY7@mqVve=y}}KD5&EN2HPB zH%Yy@2CKC;ydx`U38L|d=R-{6S5WrdjIt5?E2YHFXuDJXF5*SdVbhz9j#MVn8mLul zB~5uzb|8b`O zRyircW^_aOV~=SK_IFa%?kS_$IdCN15lb7-CzR0?O;ou*i)k}qO>WJMDgR!bv}9(+ zJ*jzA3=(0=9nBs>QUkQpgYlj^GbVPO02QFhzdBV@emP5)3I0-Nn`w33PGB%TyBVQM zK5SP$5=HCW9>sTUCl$Dn*1H3tJE>e>!&oy(`>C>@%!+h7d=GZ}^oX;s9d;$+vB%B{ivWp? z|M@WF%Y{V6WGz^iMe0bV2F9V%rJC~J){5inlx2%*)WD6^^UpTfVi& zvj-Q@ZEx>`*6d!T=8r~0a?MmB1{{9aud<^}>#Iz-Jd!aI0=hTEVHzD2-R&%0Z&iGu z{|8@biPX)E@m*9bzjDZRb$GD7!juE=9S1lB9@MvNYc=g%(bS}SbLOObtMMC#4e5#K z#vM`qor#rRIg|=}5Csy)+1G!qhUe{xSE4{JaHZ|5gsCM8B$+p83LPIbHR;~H9UK%$ z6k@kkUxnK*{SjIUme8U1FiorR*Lj;Q{kEP_Qfm+>Cgf;^k5QEh&sO}S|2OWQ@Y8|| z+xtX3VSo~7i~mC?-+zGa{2ka?zHjM9xy)Ze__Od6+F}gDu2nMhu);swvX>ICAC3YE zen>C2JK&9jS3$TAWyL+n4}h@>AtYWe2@zZX(osH_adOojLgc}n171M7J+TD%!O@I; z`){Ogo0ORft0SZrWr<9SX&;$^Xo97cQ4zjPDf#y12ziZyoz>sn6NCHOOfKEm=4f(t z6S%J-5FMPM-PZzsriXn3spKEem;CI4&lz8HJe;9RE_j=?Q|X?TarXOAN?+jb3A0$~ zm~_fO-Uds1lD(_j!P0P8>U@~y&8zQ{ew`jz9fQw4UTm!WDP<~YcJvePskpHn%l?x$ zbh+XU4bV!_&D#$N96b3mV-)ym zUU`Vho5sqNlnnTM2FHrSXZ`=+4=p7FPNO|sythBiToZ-A=aNYWn2v>MPi$8rYXyJh zkXF-y8)sr-Eb#BlJGYXcFp0> zj04##f|Gnj<=+|)*R|(gei26uDGHJ3MWs#sfN!Sqi$4_nEi_>hz2@$pWp%i8{q)eA`KXmORfzcX!8&} z;3YHgB^v|};Po-KrGrhDk>!H7yKAdN^&uxi9a;0%4tg-=A}J_qV>wW3oFi?iB}L|+ zGz|N2$@qIpLij7-e0`tML^^LC9LYPm8~HO6W=?4p zEJ-!yM%-ebv4rml9^his*vz#kt9HLu7y@RvZ!4AYe_1Y?R%_gwo{Pe>#XT^B$$`;y zATo~h_;h7(i%lB*>i|ki|7G__DrN?leM@0z6AFAjJt;kNACOq~qapc35H=HFP zF20nV7xFQ^!#8(_-iVEkk5Hn~{S*`NN)RpJ`CJ@=g8p?MjYVpk z1vDiWj?k`+XaU=`O0<9@s3_CG3gA%~bq^jj>`Bkf-TVEJ2)eylMi_t#v-Hyp_yz6p z%bF_^u|Qt354sxYS~nK+?uFY?Ae90!MS61v`$m#4W9o`t3$Cwcc<6LI58tN`(Ko`0N;wJ@jeiT&;kPDAgY+S@i1J0`60Mshq`x2$)8;G&NvK1 z$Bu1nrt7kP-@Tf$2Z-{tyh4ft$bqPksizOin|D{`y|K9950irn^5)l7{Hioq3&Shx zp}ihN9AY9)t-{n1KkG1rlp#kbQbN3&p2M8NKa=rh*uv^SKujqh9%976C0cT}r^A_9 ztVss)0l5*Fbs!$T6qT8KYvjG=xO9s4AvT=87Lrdj6TRS^-7?C%`}h`yAmm2M4k?NwluVXadwaf4qS;9;7CIcGHs7Xtpx^!EbMIFf-=blzJur|3Xoj!k*orhXx`N7S2L+F} z^Tb_}KM`c$Qy`e&DbdYj_TnkXmeO_yW0?N}vWm$Jj!`_K@s=idJa@ScoPXg8ZNU{f zo%lY^;_yTV}!WxT6wWXX9vez_+uW_-R}wNY%d z?Dl?+XMC}d#gAjk=x1xs{7H&E{aXzH)PVxH${5r4WMndk-GgbOISCYuX%^j8?55wv zU-s+tv`3Fv5dV(J$9@)_IH3*`I6NeJ%cXZFfZbt6%)Y^*-TOiA0R{AWrRDoIc@Jr$ zP4jevk0VNr#A^}a5AXVnN!pDPK8o{<89!~X!GFf2UyVj?T(PK#!3K4^E+zqwj2I^$=x}Jb~lS7DQIrPo`zewr5On=AnQBGWuhG(FO`RYa~@|jr*?p%ouD+ z^8;2O_QrD>xsaz_*cV|B8Zha54S@g~yF;>N{kCu83qOdbW+9#$drEpk2NBtt41`pqJd&qGs?JZ$-Gy&y5l-Hl6ED0_>O#v*aZFr ztX&XOhe9pS@c=?dUEeBejKVL6UmidH09QVdA$4-_TFhBtbTnz5CAt#Beqa-Uuzu0K zc68xoMSof?p~s z1^+8V4e2HV&MHCpHMO7zQPYVwO|HO*VKYlIffyr)B+;a6rfEa2FXNCY^xf= zCpGN_Ifth?q%WyL5-JcJz^|F{I&`FO#w zAJ{5j?G;)UeocUY=F2CZ7raQ$PcakWP;t>_p0Un3SZWnmDNd_Jc%#P-Y_-ZMMlU)T zgIvztrzCm^z9j|u#6^gvwkv`={b_-0kY=oVCcuOjs)hLOallwGhagm36Nzu;u_%+# zRpPKF9e_)fj3q+IWD!ZL#Dw#99MLPwPsQcbskX>r?|KV!WS@^H4Qz+hEoCja0-IWk z{Pa6BV8_?-3%MBcrTTeYd`}e)Q`@-;8O2bY^RIgOIE8#kleqT9#GXown?=4r7Rd3B zzYvj2{y$PooNUKv*waFh`w>1)kDcc=qEkQnib-ie3k?XW#{OC-rKBN@s}_NrN>ohc zcQGYMMH+xVAScoQydXG+q1u4NKcn=Q{h2W~ndHkex(0pA1-ig*%39}6z-pmyNZY~T z(@zePq?OC++a`cuSIt2e`al@q^A3)OeadcsO9V|zH!qg#@@qK6S41J0rSxGxuuq_m zfJpaE!1h$cz<$t8sQRwXXK8yUwp3beb!DJG7~aWfWzqpLz=V>2&~w%=Q@EnP9--=B8!gx~V?oTyf-^HFsZnq%N3U|kYa?IbmoZ?JK@GifG-k$X~AD$qYVkY=?SG3RfL6YgwyuRc|cp$e0G3j&!p3`U2aR}lF z4wWvbQbC0}w|j7qK*gx4HVfCt)+oXg0=H0at|*h=Kx?Z$8}>siv7$>}O1I3tbi=I9MuCxsblCPrGWy@X8?C~e zXN<3geC&ESdZ!Y5vKBkP007Qcn)J1Kx-k`Kb^3|FLCiFATQ+jOGK}bxl7DAp#5@I& zBcVdFi|Xb2NjEQPmTw|t393mg682ET3SBov#%OytP!ac3%cR6Yg?}84e}p)8N&X2H z9|dfFK|LUcgLKP2yEX_UwV6u9;pia#8hqFh8zG3lChbmuDujpwcBnayf)-&e4=r>2*}1bQk}FF~-2Yot%Ee~Da3VG1k<35<%Bqft4U zm7`TT+Lx%K+@dC>ML!nO;(C_=xmb+O{O54i?{12pFVsL(8XYjkD<`60^V!rrE;30@ z4-664^zX;U!YTsl*Y~)HEFbpeLK_@jk)!0vjMtuo%btL|1PGO68w_2^7^KCQCGW|S z0HX@^!_+TTek_>veVM<{0%W&oc90*eKyJrA+gg^M@SyCe$!t*foJ-^yN)GZe;DJ(* z@yMj8glMu_z*rv;$j2}rN=W61)lqN`e7eyG*l_gin7co%9rQi41*5+h+$mAz_9h66 zaXyS87gu1p4cH9an8uTO5ElByTnx-PSSzI-BD^7%H$GW|B8jgXuGX5HfN*FRLqz0rbXUs=Sf0@jm&hH&mq|_a9Hy*P7Fupm9$)nW>MTj*V z1_c;AleYu3K}P31unUqxAD9lT0V*(5*|geh7~jpvScOLvu*Aw5x92O1`E|-z#HNH) zTp=ffVMOjg8d9`Q8Ae!2DJ{>`V%0R(&=GeH(amemoDP!?>qB4(b=#DAit_9u$yG9% z&#;0xmi{V4*~*Kc${&GR7}sRQBE%_*#Xkm!ndP5Sm_%rAgX80HPdx~c6wj^~2n0fJ zp(@pqFXj;@0H^}h2BhH~`uocog=u6dO+zPxdKuA3D~*0g;KADAlwKz3PEFz0a4ar3 zYnzo?t>pE`Yn06@yN=@u*v*!&QIUu?=v%_0acy`suM3aX_2JRJAv`)as{MvOps~Zy z(LX7WSu}o=D(>MTGd`zVb@6Kizb3}F-hrM?EW?if9TP1>0><-kkzsCTI8a~NEC zwn>Ua3SQ;t2S=5EC!$tz^vcnw9L>tn+Qu7AY<|AHoWS&Qr=*Ftjq|I|f}*P1tz;CM z5D1^5pM>Plf=dA)}bi_@0=b) z#Dul$(9|zzY7t!j7RC@kUJ}IEOAuU|Kwq6r27Ds%{mkQ$hir9Q3zg7m50oQe@By(r~kajH$4;xXIHD6PpHHneY z{90u!;?}GpWG4v(z_eb^Gk(@KDFLRn6LqfJqO6v& z?PX{3KNZ9gvXbn<+u}hb`wdib?@&%tSkJc;f2N|T9`31smftJqwM7U?#=QM+YK|#? zk^bKQhqL#NlcLJ{#&4*qt`5^ZGd(>_ZYBZ~yQ?ep3@|95sDKg-gb`-QN|J#AMGzI^ zu4|6FrWF+3#T*dKV#b8Jx`tKPyt0dm0bRrUJykv6v%lwkKJWAUW2UR`y;WUx>zsQ} z{GP@TC@K6QgAX6Z@#YZQ%HbMS#5+Q339)7LMQt*h)1g5bM4lrs4FKGKW#J=2fFtIG zwUG?W{z`9Tk^1w1YndyxzxRS}ULq+DBNSxy+HKK^m zIR@bIU!)&Q>MM z!%Ob0WZQYTF`%?5^)7;Z_}M&Mq1Jg07(lYSDR5ZBJiJiyP{a<=giM9xvg5%-QSihT z@QRzG0OC3!dHB;-;c*Kzq(JNsbwYkV8x$}Gt z2qk1?vP5SdBl(OMT@jEKm7;exE}2AMKba-nc4S;+v*Up59SF+Zv(#cC$DE~H&iEN9 zqowNWfv2Ckq*lmNs4KSgAti23J6qku<+Rg6c=PvZ^yVQqA{b!pX=n$~GySCU3T*8F z|2%!)prrXyJ>sTMS6`wr#NW#8LAjaB&oum-0r(7=! z2A3jYZs35`6OfqrVtw!y4RN&1=T-t6Bm5C`DJCY=sZW;^3DM$eHouH=w%###;m!am znCV}Fu9?_dDc@kR6A>@7XGX%TnTfS8b{it7A7?6P;x<*Uv(0^Eb1KM&9S)#}5QaQg zF&d$KCf@8&9=;wRtt1RUFaHTRY_C=-uS}Ca@#t9c62SstrtfEBJ<7EpxiL1VO30JC zwUa0o@N$O05bJyvyF_SgWugQR6dPOxz>dWMlrFHH5kjbw7Nd*-o5MVASRT=?5z0uR zJk7#yF4q1a!2ChDIuC&7@Qfz5*@zu45Fpet2)lQY`O_#oKO(5Es>Nqi*;ty)G_pK7 zSeIvvM@vZbA-u2(N5Qz!$YMKLR8H5G!UVMxnW)%^F{5N0`m%bno|gzK_h|Jt3>>^I z5H6R>t5QazRc4|}?(9yO$8JIx)QqaqS)j&N#ML0q83cQ1QIT0(1?04DJofS)q*XqR zQwCJYS8+=BCUo?mV?}>QNtJx98#C+D0_d%b{+3V)c2E?(-lZ+UTNwQ-oe@%u9+*1Tia@Eg0VNkw*e6PDZ}ktB`uj$()ZaG{`slUm@+V!% zjqvx4U@7(uiLLe#DKErBScy=TRbN$P-HM5ajQu@5|__oUHOH#rtz$_MW%^UF>n1_BrW{sK{&Do(;W6z z0m5$=&KMw~L#pJ)n?{?Kk=qf9tdx*DLoF8F?1Nqp=7jc&xD}2SS#2WLRE1+L)uoDcoQrHRPVS|Y)trmM)BqorMMMH2!rC?!o?0W*r*@bgjgN z_j1MGA@aQ)0>2d;rN~RTg`CH=L9t0h??$@&o0QP-HwD2LZ>k_xz0Ase+PP0B_vz+7 zv)-qs%xh8KR1qbyHmEFN>IsF-u!C__u2O%3^&A&Nn1U`_dscl5T2hr0Ij|n1J(cqN{${*GZ+tp8{)he!yz%}Q8?D#maNWPY_r7zY z51PX|;2`nY*#dzoC;IR;GW-uITXp5=9y|fbJ*A*d=$xBC+rC^AEcNA@U@7DpVqv0r z@AJQ*_#8cFX8_Kyr?MTD3P3jc1Ku||DNSO~y`WmVB*=Gd4P&=jf&2nIWKCPRMaX$Q z7&wy?b>6hiI|rI2Xj=SA^qFvk zagTZyqPTK7mi7lj;h?-iCnEKR{G%I$EH8Ty#l}d*UXBR=2WSWSQ}Mnb&vb*1TQK#D4oD=hNpHA-6&3$IQ&p=})m1{_E)|wrsm&t=`1ntPn>FQ5seV); z@BTQ99DgMK0w>2xx*9mwP`=mNu>3|N~T=W7*? zO{3oK)>f*aM;l=0Rp!GU=(C7P3Nx|<&lxD>Q@ixGP?KqVL{aBWndY_-3OJGEZ+nM? zXw;N#HbTLz(}_18FOqMv*o2TGcJz@Dw_leVb`5i4-u^>?`YbLk)QY zK?VFFh%5Nn@8JoR|CcSIpD}1gL`zxI-)W8JmKbjSr&r24)w1Ma35_pcz`Q=qsnO!L~45UT%V!o06`ymUM(6=a>r zZ7|p{xV)~S$;EvVTQqrWv3xezf>dMxtP;8Wvq4~Y$DUE>_IkL|P)xxTuHk~NAMkWv z*GeRWe1mok1V<3F$hLrj{b9%=+7ll32iY{}zHV)~ikJ(CKhQfS0Mh{M!I}$7Nc!o#ixA0Y%qnB@tMLTPH>U2 zXusjB#+l|ETg>{p!OYf`%2ngAVaR)RQfuCB)Z{yVVo+D#ZdB#w9*j^+0sRkUSh*hi z5h=6ToUXeK7@;4R0O|p1vpgqAr$a-o%R-r^1H`N<#(MS#Uz6S`{eHk#92ai#WP72Za|f#hGhD4sKV2)s5P^bLsi-J4Uod>&1|>d!9QCd@J?XFypqc=g7w+- z3K^pl9>98?-B4MT?P(~?{w0btdKx;@WN(52-=`$e(~w(BGf;<%p$;!5owqDo(m(`b zH?K#vt@Jy!Fis5)N$ANh&mbw|(zvpR56^n5Sn4&f!>13{sEhhRiO!IAVPz);cI~^?2(JI zqYW#lR@xA}R1=3N^3I$hOiQTKysI1*$0k&``ppf9DvFyy#?#k8nFO48^L6k$U7d%O z6edSdOmRS!XTY<5&{3oa-vKc4iDT%M-T^;+c#QJeBw7GK2}?q1@k~;LA$cqsUuR~o zJ*OsZB$V(CD7oPHitsNSwS!PGSO0}v@#2C)0Ftv`@-=9}H&KQ#G~w~6H&}ZlG~uKR z3qvw{nTWE}lu}ZH$5)}kWBRRV;968TJ2-EIU@K>pHD4>D!GrNsbh?n97L0puG@AcF zm_Nm#Q?84Z&gJ6Dy!h;u6{`HBTt5ea?{RbPhGc5@^$~eNnfmp{@b2rW5ejcf=Bw+2 z*`d{r{nTtZ%yX}sIrn;EE`bxly`GpGdU$uEYb53tq#qm;E1nyXX)1Jvr&sT0z;Hu( z!jicFSf$3gwDE+DHqmktWQ56l5VeAgv>$k==DGsN6p_!Rm=VCt%+F_+nOH#MmO5gz z1>EdfER~xS2&fYFs2VeSf{uk(Ab`QQTESWm_c)l77!}zt?@Fct2C3eHp(=?#!2IS;he^Xb8;Ep=+X-_~PjlLMZn`|UCt)7k11Hpu z>0DWVxOB3uW_Dt-FndfeVR;?TPlsiwhrx46RjO1Q7)3? zv5GQer41WR-V=cHL^nt=FEJWjSX)R0=(lB~LwS-zruKF=Oy8D~{-dBnZqSNSU!9A2 z!NpKUcO>5N0D+oPkevU9{1;jd+ffb;3jZceZXBL7uUjN#ppVPtIKNGZgpymqFey1{ za6zTqsE;7TOXv++H9?MZw)k`&a}5SZ`0KUC)HQ4pf-dXxqc?$$mh^8jNwgF-H%heb2(~ zNis@jjnc37i_!Vo1cu1iHJ;YbmUJnn>3k83-K_vo0BV0W`@dKF1C34!T7NbR1Hv~< zy{M-tZA`3)Tegv~783bQtRObDYOQohFuJfOZi)Rpc%rq2-?IokFQyaLBL5up9Om~Z z2iNG>k?N$ncwg631>Q-D>A*Y-J*b}i1ilamUAQN0@aJ7HOd=kh*IgZm@ zP>@=W3d+>;VQr0-o>Ek96|}-m0tFD>bOSU@LLDjYC4*?K`2T4KAdzl~l1Oi=>M$H! zP08o#x~fjY0TVE#o0GStwjt=-0Me&aX}`-4!Upgj+~G4hEG2lnL7+;q*yT(Bau28# z#15kYs`QakhC#ogd^tu(c@m%Wg>oVN!tk_(lWCqT$aWri!@Gvnc2`} z(Y4z@WTn>}w}w{jCu+M4MD4onnrelt&ga9A;u!)U(ETqA0q0l25Fn=)MUIkEEzP&C z>ndt~atzW~&QiHB3!%eEz0{)v-xd%o^%WmjIz9CUmd@N~&K4l~PG9i}mckf-y*&ht z=SpaQJ!IcR%h^ubL2{uz~oCB%(XcU zM!e3|Yl#uA8IEbYuE#&?I-GSK&bqFL-RrIDId31Cb|nk~*Y~j3{dP=zZtDO&fIWEI zJMfCYE$oT-d1nnSusXIQ_9y{LAzcWzZ|@BK8wqbQjL&8CfH0Ajfr67JY`$f_JwPv` z722~G=01JPm|o`Fg7q@r7Oa=S9?)XizOG|*Rq|Eu2Ek^B1QW&$m3-^Fq_o4(Ij&TW z9{|RHEufx)UXmv1I&U)hc~EXCre*mEQEy?{_Pv|Fsf!l)F+t0)iDAG4{pJj6Urg=T zDTw~*2ev09rrzfZQkZf|WI_oP$O~ir9XW=P-{vc?=F1V>|RUWtkXjT52 zf2T@(K}266()^vX+$hY z>%EoR5wP6b;1Je`fXe<6Z9!V?ZQp}Kioe^h_(RKavsR8R9_4|yP)8>1EB}!3+CuO^ zT2OR~pzYMU&4u_yd}|~FKxt-8Jy`(O^L`7!4J_Z<)TQ)W0EUo7OwQ@{7~+3s1RZFZ zInDqd-~?Fw`}sj)!+@^4zFS92R1{mc_Q-`Zh#NM8t~20<&7kWRbZqV^%-pT}1_0$! zs%!2!Kwg#F<{tTFHyJ^}Bb)bY|LQ@_lF!_41I@X^)x$=2dJbSACvl}$pb!G~{g1gi zr&*rWgW+;AS4N0dG9=M@NlLP}?JI4-yswDO-wCFBxrbrT&v5~WAEKo|OxgcC^+2W z^Log1ftw|ZAHVb!08fyw6Hj1+L%bD#YZ=Z+X69&&I3eSJLvoxT`gU?Zz+nA=dMC#r z%H%S|C~I~6iBR5M>#O`+d47PL1K0T1iJbgn^~*m>-TSr(*+=evSTGSh_(Lnd1}%%0Dfg66Qn&%0I1_vZoLip%HRsH@U%Wh|&}hm4)tK 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 literal 0 HcmV?d00001 diff --git a/RCKangaroo.cpp b/RCKangaroo.cpp index 38d5d8b..605c470 100644 --- a/RCKangaroo.cpp +++ b/RCKangaroo.cpp @@ -119,7 +119,7 @@ void InitGpus() GpuKangs[GpuCnt]->CudaIndex = i; GpuKangs[GpuCnt]->persistingL2CacheMaxSize = deviceProp.persistingL2CacheMaxSize; GpuKangs[GpuCnt]->mpCnt = deviceProp.multiProcessorCount; - GpuKangs[GpuCnt]->IsOldGpu = deviceProp.l2CacheSize < 16 * 1024 * 1024; + GpuKangs[GpuCnt]->IsOldGpu = true; GpuCnt++; } printf("Total GPUs for work: %d\r\n", GpuCnt); diff --git a/RCKangaroo.o b/RCKangaroo.o new file mode 100644 index 0000000000000000000000000000000000000000..302488a9c8193254faf459077bc63ee60a28867b GIT binary patch literal 45000 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 delta 12503 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 MXHo33_216_-+TK%CjbBd literal 0 HcmV?d00001 From 75cec4ce5889f8418392a3789eb57a9ff4f09577 Mon Sep 17 00:00:00 2001 From: fmg75 Date: Tue, 18 Nov 2025 10:30:37 -0300 Subject: [PATCH 5/5] GpuKangs[GpuCnt]->IsOldGpu = true --- Ec.o | Bin 48824 -> 0 bytes GpuKang.o | Bin 16792 -> 0 bytes RCGpuCore.o | Bin 283056 -> 0 bytes RCKangaroo.o | Bin 45000 -> 0 bytes utils.o | Bin 20048 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Ec.o delete mode 100644 GpuKang.o delete mode 100644 RCGpuCore.o delete mode 100644 RCKangaroo.o delete mode 100644 utils.o diff --git a/Ec.o b/Ec.o deleted file mode 100644 index e737e70066c6c7cdc1ca28e1f57250d05aeca01e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48824 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%0Dfg66Qn&%0I1_vZoLip%HRsH@U%Wh|&}hm4)tK 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 diff --git a/RCKangaroo.o b/RCKangaroo.o deleted file mode 100644 index 302488a9c8193254faf459077bc63ee60a28867b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45000 zcmcJ23w%`7wf+f2K)_6(wxz9)Q3p*FLngd}PlhBgkpUtJii(DiOv04BnwjuWtI#CM z+z_O_wwG4hQmfWh+j^~~YFkYd6m4yhdM&MwQnf9SstEln+A9BVt-aUGn!_B@dwcKx z<;>aV+uvS$?X}s-U!QMf)H2gO^A z<1!rL4*5>`Al&uWQTqru5bipc&N;#UaM$)xPryszgM>|ND4N(XnSY&{wnSaCe{R*{ zxWBQj!@s(%W951Ni47-=cAT=sYlF7%uz>rU+vreRl@@h{DMdGAh!?C1UicFAt3BjSy`b35@hz zNT#sHd=ES za*-Q+vFB;uEnh>>;FI`i^qpGnIH7gdpX@lk?zKR|ea(UVV-Hl*M&H~0;pAYr zw>wY@MkM)e@2!D#Fr!IfVBd*7yAOqZXZQDg;mB~Ry;rd5eU*d z%6{_S3K>=9y&D5t;CTp#Qx5b&cx;N>{arr`tiknhzD=LQ=`ku#4tp$BO&)%UGMC(e zLQlSZD12|Y@AIZP!BcGH^!=O~pZE)uze@Qj9pP+M{(Z`y5AB6hs{G4R{`!wY9ayvV z7dW~D*CXJ`o|o~P6He}`OiubOEJpcm^erD~^u5sYO9XZG=On-UJUmG@SGenmoS91l zxiE+b3u=bz8M~>u-yZCvO z`gd}#y=A2H&T*7WfVug|RC!h0zr3@tG1}p8Lr>J$+_oBxzO5zdZ*PmWCgT3)ws>Na zKh|2`5v_|y{pD5uRdvms(NqUSMup?{zu30QP)%j>ACctSi^IwPs!kqC^`pIP#hg7C z9yv17xv|Dv_MLcDB>CroS9AL=m=&(yJ@A*@aQ%_+aBjk!7efo@aD#``oIO$++eaCr za5halLAW*k_EEMluCi8V`!QAYHN90h`5`H}{;#`$XLMOR0R;QIpZ4{9A9WzoHxbuP z&x^jEM{%Z-^23toI1c&Rx&u^`!+j41s1^g*7|5qU>5-ZP?Y=_JzORtGg|Nv4E8FO6 zW6@}~kcKPHYPc6I9&Nrb5bzbE#WNMAN@X$mmUz2S4?8G*)L~K@wdX|cczrz+pgC#~ zL7BnhinDE0~e1Ysn z0{(FFEqH1I#rRzsn1$blKox8VPjg_IuP{P|bZcN8H1-wV9@xz1I|Ez!d|%*xoLSo7 zt!VS6zCot|DTeaVig9uJ3b`DIQmkAQi?Cuftk_ak%vV?*Xoq&?q}|5AI#%RXtJv*U zv2LZ<-_eC|e-iHd85gh7Hw0MPhq2CJ7+K)JvbN^tSUlF&>aXbNXzQ?3f{gJzYzEtE z^y6qId!R*@X2QZuTcvKX3>{9mp35oR%LNqf<>EqnM`K4z=Lit#ngyVJZ91KsTL3K= zb`8E*Iq-U}?OGxz)ppye!qPMB3HRoQlQn_--l|bJO@PJ1`MzsJh1${@<2)F1Zs;kZig|QIVn7|JP`49Z^LyYY3xlUvlS-f6n)!j z0?WI1`+DvJ0}&=cWFm0Vy6XeMBbYO-1JC!9@<6e#FcD~P1kz1N_a^8E_ENB~4@AJO zBR17fVxz8@Bq+jz9N|JlptMSY?;d%O>re3MNb)`F_d1b^2=hF_C`*%xz!J_1X2w;$ z2~5Ol0%N=TJFl`rA4bNI_kT61R1)3&i78KVN18)D@J>iijg`Khe@ANQ?Wl@MZ)e6! zE}#o?eBG}h=z?LLBVn|XoPnQoA!bszqoSdOTM04(1iB)0i+U0S-&A|{dGXC z^&50q-C@{Nvd!s|m9j#~-pAEJ$||wgw=EGU8C;C^iGDgu9)AddHjijM>1^`QCi+qK zhWUC2d*B#h~^Zw1;Uo`qw^*?ID9}IlOhTnwq;4F%? znZh43;oTYW2k)Z3g~J~);kRbSuR%DM-rR}>=lPxap-MW{K#CQft9t`^??F>KilS`5vBPxm>4<~nq-+L8518?M4CU?hnue&tIDclvQKm67C zu_HTvbjKGf2j2FFa-Iqe92pZT{B0=q+x$F-8T;nP-b`-Tu%U9`O%QfqO%odU@VHRn zj{TE4KL>qF2Ux#K-yafwzX6rfAk!;YZ*8 z>PP22|Kp%j`OvT5tA6dS+qV0|h5N!u=sW;*M~4Rnhhu&ne(%qeiR25F@9hl_yfq^B zBxNC-oEiuxp93eia3Ea&J1}A|Qg&$RHL%~G^NWGMk12d2_5|lF~M$*#^b43wm;U0d3Zb?TizT!jpHqDO)bv- zi|SgNqGmeoFPPX+NOSTNMpw5ruZp!cnfd#9mW0-|JeEMyLbBAb;)%MBL{U*us+CkP ztO@yBqKOr42#v=4Y1^ziA7TyC;1nJ=JQU3X_bJm*-%6h>slLV*CUmo zIPW50&45;F_bTSst?}12V|4+ct(`5)X}!^yDZT}iY)P<=6)BZy#nO)GE0O!Uj1$9nmy%AquJ}{Q%Vg(sf!~%o{`}^kZ zz3^7Z@ZH=7nSw>{q-8kqw`-y{g+oI7|uoL}t zd7u>CF1Jx`f4G=P8kQ&Dk?xrHE)Z>R_&0l53hja5`j;HtkKcyC1oXW-A#(dc-xBV_ zfky1A1ajatnEgXck>CRHZq z`a`~PlX0w;74ea9@)eU%{eM+=g$*yPZhE6#7ltHn_jk%Yp z(7j6oqcFQJ@4N0udGaG0PK(8G-+h4t!a_O?yj;i5LD=?*4| z2HH`v;Xxr%4L4eI0PQ7P^*Q{0SNPU+xQ*7c+qY>G3}xCi`n9*QBBWk3BIU|CwV*9* zd-dNwVXn6nJxY2dN~`dFNGyy#VCK0{!|~m+2JMw|uRBT1bg@wy?9VWw*(pxh*R;~%ZDpYUzt%tEW4tLe_Va$;3zU5%@L`z9ng^IQ9ENzT=dO4ba{?^o z#$gKzqbIfxGv)^-4Mf4Novu$u&kqK34j(zfL`a|!8!e9&GzFN{m7_~`<PnA5v?7f$wugtUY9e_&JK5Pnd9kEPe(53qDk z9@M$Bl7jt%Tak3S2z?tKMzuy=d!1_8-o~)+hSykh<_wKR@#MqSFq+AM+={8)HKvyj z_e%L;%;#P+jJ~+QH|`9%_KmC0mz0xbeik=4j?_u+>-rN__@~3q?F%2jk5s`tammwz zyWd4dKFCt5k&)jblip1Q8F^x`1RY0~$hNJK!Zvin&5qw0%Oyq~5bdvIi8r`}k~Gsv zwusy?LPkXrCO=k8;wrjpIt`-C%{+#E+qx*F^UYwXXRuc(}Jd6nXv+upf+Wpu4`E-fGsgcXVP)6&y; zal$gsiPBEX9`Vy@`4esarf4fI#G_`dPu5L4*LoTI zj#w;@?K+a<+jJ$*Ew0HA{TyAj^K%SPa;p*jbENmW!?uyi4FtL`@pF)}z^yEb`wGpz zF+037J3J0*WRd-NR(8)BV3*Hq4vh6}x|zn--t!-!j0eriC;3KS_(<3Lr}}R0LZG?j zx&LzH%SQPEV$%#I(mSOhcqDa)l)JV4e(=hC+j1|$3MZ#)U-1RU`)+=nGVXh{KlEg7 zZVqlMaEDYr^YD!?B;V-TF)V}w%jf*_aTCI~@i7_{%(R?&p=3YJz}`nr?3^Jn!Awvv zKgl!wBXy5^(pk0rbNPnyfa%xE=}yAf{hhv3*FlwR`90Y6KK3*QAj9N$uz`k;qwTVH z{rmq03BH?ONmFNn%JZZw9diZ7fv)Wn%9H(S<|6a2aPJhIQyP8lfLJ@JOTIDq2iSt_ zem)gd-#wJWqg6stUE#a=&a^(?7(1B}EL|%Tl}FdH z9(tm~){N~&LtBq9W#u}Ne8YFsEeOH1jIRerK?xh<8jdmL5qiKy+rm!cVS^Vj?%IOy zyf|bg4wOTk1Fk4A_26b#fE`mQsFQ;(r1EDvZg>4B)#6595o>kr2w(RP5NNHx|5lxV zl5;NP9NU6pTuP+0JD7b6LE7cW>)?~daa!QjGt^k$4`L3W;oT&(i zWSx+ao}WPI+5gKE}80I6iviBq77wj4VZak zac8IG{;%t6B-gCK&4GAZV`4RJ`NH4W5smU-)z%(uJvZLg*-?+D`Bo$n*r}g9xe5E! zoy&{r+gc`z>PAjw0#6^dV2e0GBNW8cVKAf(B9(}E-~j${(idVY2=x+azo`=stlbS`g>)%!6|JYn<_?5<;! zy~3QRH95|lP)#V}uUNEb;iB{W6e((UF4jhqjIms9_Ri&P`P04 zdHyo9@lTuGbSHoaGwR4RhQRop2SnGt*bcfVGe_?qA-&$DM*cgu{tcgw-UA3t4 zvQSNhe_n+(8=}-XN_)q}Ac-}h`4!cE+<&cDgh#U$igbkVZP@vtMe}TeTn6-`=PQ-T zzu69Kaq>eR5NX4I6uQ}rJ^sTO%VpuAx}X08i2D&N2f4GwPO*N5B)#`+`+a*-+tZl= znUf9{jsE-`y75jqQV$ngkMyv2Kp79}F_`1X15w?p5$Q2ZFmmknB8M`dANj%_fYQi@ zq;*gGIQj<8DGlm}G03I%JN`x^UN%$T7wAVB(r$`*2rYr9ldx~O41C(Y-+=S}b29gv zXaQcH{D6y>M@B1{)5q?iJ)2c2_Cfhtb~4P9Jw5Ms`i$ZWkou$aBXg?G(Iz0D)Jh4% z9;BJTVM`I4UE$>K;lV}=ep3%=;m#}Vrkba)Ogg?o+#^61%wt9LU{pV@=*g{Je7-%f zm(Oq$Nj-T)C_{Qa$d;Rp#3YqoqAmU-5^s3v}y%gnWCWpMEU{}w> zxg@Z)Vb0iLct&=7Y#|zAdEXj5pTeZ_B+nGWxVK`Tf5oFaxSRZba5rs#gx`CI9yLmK z&`|HSWjA;=LS@b>djxiF$|W&4(lt}C&2Er}T3ttI|GFQgAmvK+f+`7BmQtJzj%Sp} z6X`P#3o(d7&)6ijn+xydQ@DU54 zHo~j6!eq2;(|u&xeFs1L_9e){y%9XD&UX^X#Jriy(j@J{Uva%d>*c#{Pw85YJA7<> zRGdS1Nz)uG0OhGL1%V6e%076 zc(Hzf(cA?=x00_$FEmIQr%b7_hOdVE?sagphZDB@(WzR0U4hl-x+)av8gnsof9K2g zK8uYj>%{+~crR0Wrhmch*<7m<1OGFBs&iI1!>DI8kAO@M8r@q){&n3&p)^Lmy%*c- zS$O>e?x4LcpJniSEIKa}>%44VpBP%w4dUZanuBhB*j3>T1d5T)W80S(BghnXw~BZAKqK_(>e% zI49FNoR?pdH;QFVwK#6>vlCvC#h4PAT8WGAX?HV~ZZ`bj|N95$~Iet#w-s9)t90D?I5j?|Y0g2@8 zJ3gFu;P`8Z_qm+Wd8LRO$}4~@$ef**KRa(!`4}YQ$FUU$IqH2lZA9uCdDDoE$MxlI z8h*>LFz`{xGr8~64|MArR+%?pIL zniTf5RhVpbN#5pR!ynJd+cGSYw{_UuynArmkK-X6{Wx~w*o9*cj=jS!1-lyDh5rP% z65N=FZHK*p0A$2v^!YG)15~D4Y2sBTM1V$*XdxUiI5_{y~N9O6RCLbs%^6nIrNJ=Pu4$cie)!4ad#R z+l*rij;%QE!Ery1hj8>CcWEBjXAH}l`_LGN>dXbU5fxM8I(FKW$5Ik@w8bjNEJO4S zR@Os!NiM6bdDJ$zyrJEQVedm$*-_RHjTv5-lec-~uxr2>{sMWU@IfTC*}vK}-lMt& zeK!t6#l2}bDsWfsg1qA4kD?t>T@G>csUVAbIueoVymKTQVYovn9_@xZqmBlF40pzQ z;CUW6^=O%nkYP#=&onG$xHCSJoWiB|%M2dwd@>VA@jv5%pX!01;eq3Rdlom`DLe{2 z9mp_+bJ+o-!6(PLG{v{w1z!(WxDYDYGsamWfIZV9%W*PpH84`mzeiUA6Mqqh>YuAE zzgUCtFX!vgs$>kIiBDrveX~Iwrs9Q!_zx)#qW_84siqx1C^ch|TtF#ak2 z)ju07&W{YKfK3*6*XUar|FmKn@7MTr@=(8d*SPSvEPjIv|C`0X>cT(Z>yv5Lo#|M=Q_yBI-3SIwPK~z`I@aQDdycnq zc%C3+oF`cPF@=%$6pOnp8nAegi+?ubs6Tv82O9gH;_!qy4Lj4VoM#nA-U}E%&4oJ7 zY>U&7rCr$KGN+TU1s2a2z@E(<=d`1GO1c?IGiP^?Nb63*&!LlYjf|h}goh~*-e!xt z>p#7v=s2f4dot(iXsX%*SGhw+In)Nx+1_!3vh>lVM?g}-5Ow|x#+yo%51NbmCXnQ6fK{=vAr zH^ErS`8?B(59w(103ANY;N0V~L!RX?PgB`_&px@Pd)Gf5B%32_{$!6t_S{>2mY=HejEy7yqf3B_@od99IjptGkK*$3g z@}Kj-|Kx!W!@^>mGt;J)?lDILAFpOnyuSg~*}${qtH=YN!ty7lJc<{KZj?WbAi3G`{THJ+C$FE9{3>-d^9Fz+3fjA5Bww#yu<@9 z^}y$N;PXB3m4su?=XPs6_?tcOyFKtnJ@8+6;IDe%|M0+l*uu+Z=hHm!DZs}$6{+k> zdvVgwvK7_0w>!00mR7dL5_8)-k`U!GKkV!!kiD^NO8)R7} z>@Q)w#7JU(i3w$iB`mUJ2FqlBko{9Q?i7|h#URX|!kj6rLy7ri&QzlhBU24xByj3e zICP515~n_u@u`eVW%*M%?lg`yjrr4$c$nbS?Wj88R^nLmwnn8vA0 zGqG60G)`qYhfX(=nKPZ^PB)U7Kb@H~m^p*fn!(H&oZ<{-&g9TimR!pGQjR-=rOhyY z4xPbimGbWl!(^GIEVGnlma@!JBXb&R$b#UsvW{3HR$td#ji>AI#9H~Zid6^*PNCQF zYZEIvYTG;7>Z=G_Fmq8E>K#2vIHO`sw7xSD1-E8JM_FqkyQ~s~w?hWLiBQ`D`kLAX ze2So>ZEbdXkdsc=Z>Rk7qK;@|QEhG0nl-g}DL&rTinl@%Yim~(JJ5vErSB@vmG3H+ z;kiBoEixZqM95|4Nj#^C9%ihaUl(7=amx8ajVj#cEbgEowRhm70gbiwD^}u4U1TIy z)qy8AI})*IymnPd=Jy@vG}kpj(3P#LTPUZ~D(Wj+6J?aWjL$$)Qi;0ym6T8|JrD_U zLvz(CL|WXsI@a1yyC@p(Y>5I6P75_Om}e7f+9I)dqUy7;wN8CJg}UtA+*ZHRscKDB zwl+l9IPLIJB&Q|XQs2Io0{GLG3)|zac%7{r6A4aDeMhR69w1#bqoSVEH<^i52Ww-? zou(?7aUR|gLjG#QbwYRNyn%kO6oTmABBde)0j?#_L=ObJi1!}eN z@l7@KX^lDf2_}AN zSkDx$C6t_b29~N}Ey^riZwN?VrCQDmkWfffY(3oz*)L~QWE$g=`Bl{=wfIZbZTi+> zBIxH;O28r->@T3yOQ(<|dwMmyR_NmRCu1j@>3DzCCvY2Hi(grjS!6CD** z^XiTGMf9L}RXtY|F{F#f+BA@ot<-&>CI&0H%2ceOuBhH=sbi~6r>RLr{VH7J(=hes z`?LNI0>#qI)apcOtSw%<938?`N|!runQbkcGpD+urnV+D zJ5s^jo10zEqgieJnz~xlJv=#|s$x76)+G`hwLCGCnwN(0e0XAQdo(kGAyeH=)l8$1 zMmW)EJ!X-Zma?ODQ5z1t>&b4MfpHJpaoTaM8-$Ec9 z;n(31{1bM9P56llKg;4IpYB-;|02bwXBh-9Q~b{>e6_;qUa9aOP;x$@@Il4ba*iVf z;YgnwaflqB!q+LhK;i2ZP9GB>M{+by9}*==mEZ|38!+%zb}Tf3%+a6<_N)lL`=y^w)Y`VR3i)E_30c zXOjyTJ)12~^0l7ywiP+TwVvGy*Lv<&xYlz};adJbJn#`7{bxRFW6DMMlT$2Cdg^{s z?i^7vx}OXyIU1KcCdB_L4zb&1im&_628&a=8x_Ar@kzeSyQKdizU~jnhU6&Sui=n% zx57`3@Y`?*{v870+OT{ z1&^q5xkKUA7AL;0SLQh)qtCY$e+&`f=tTAu`5#xft|xwlpQ89O@1@{7afp4275`Ml zpP_KS!gc?4n!=Y^K9!5E4_D)w90i|_L-dak2&+i1{sJqX_&-$m zO$xtX;kuvK^Mq|mPs*?8^O%yO=MNtn4iX#%|0fQy&!;U;`e;369p~2b8pYRo(sN?u zh_ChhyenPNQ`T$5*Lv<({09&wdLC5rwVpX70M4!FbcJg@Lkib=Hd>tQL+Og1ZHlk; zd|2UkD1N_^qvzrD927Z{|05hC|JO>6uAeU{T<7;~h3on=%x-K^u-5bA7N>L{#1X(j zE~xMy<6877b>Wkk?Kl@Joa6|fo~I%w@`XQN;Us@7v+$0Z3#T!d+*L080s}kC6;A1j zoR|w2Iqfc7G+UYdhbfjx$zg^+FfB3G#wS4nkO=GtrrO!_l zU(4UAaJ?@6mBq>ax^8Qq4+x#f3m`#SGX?U-zhnIoZ74SI^91jT+g@P zRd}mP_d|uZEBw3PrMZ^yZ&dih z3h!39PWNj{K8>d$=P893EBtwd>v_@dm3(dgKPrAu$$8U*e@O9ldF75mWH_>?F85Da zob2!j4$=Qq#n*DqR=6%ldcKPs$`EiR=eoGX7vcd}$ewLD>%YBx@ zw<>;x!gW1dXmLtc*Z-x8uj_fE!gYDkb6MmlUt0d>J>=i7_*(yMim%IekK%7d8e+GX z6|U1gq~uId{0|ggr#osiNN{8a-5$?XcmQFNZi&SyzjrIVO!22Ge6ix|bZZr^>s6DI zvsuYm?ZRc;`GN~S3315%MB&qLE&4xUanfJw^EbtxuK3OvT)?^cBP>pK`#BDgKVIRq z?hyQBCFfCvPg49D3NKZBttWpp06a>!RPn1k_)C@idlkPy@gGz8=M;aY!mm?&tcs z_gM&+e&dQ9T){X*eSDqNS>FDy=a{!;N@QT#aye?#$gzV!WWYRi(ZF~e~I zNAd@72>uC+len_xj0^oM&-}oH8Y+QsLDKzenNpo*g+#_g)+#XSI_5D~0R* z7UF+kd2-)e3LX75}Rqd|DHcqjYJE7JX>WPmc0+H4ef5lR!AaY21;0 za$1v;BmCz$1gE~59O1hEr@opT;nXil`+c53IKrvDi=0;ogd<$H_dhXe@bAJea^6(9 zo+tdxh08qQeT$PF`f*5p&sF1ZLg7;^PWsR~PSTyDaLT*LnWyCJR`}(L->dMY9{fhd z{|)$JpU)|r%39Ku=kZ8SvaRrCoh#eVd}$^z(tPv?u4=PoeKYkN>`VQzVAbG zU6J#U%9n1}^1L7EQ>*x+34n9Ai}4Cyk8qK1zI$N!8khMG$=LoK!0}Lp9vXXy>!lx@-%a?DOk$kGRB7d$2e}Td^e~HD( z&eW%goUbUpuD5#rvrO^tQ*v~@eMrfvQ~d27{9TH_T=8G^;LCi?U2lB^z`5~HS)A;q z=jW$*@Xz$Xi#_mC4}8ADb-&TB@ZUlwvH!IeCq1d34B#MlqX++sieC?&$l0R!x?H}k zaGmahN=}24qwn8oIlobS-LC0-1>{J7-Cka?IGuF6JD~V_ocd7VG>%BVWd1|)uT!|5 z=kzH2?Bj3&M|>@3ip43JJvc=Ed5W*c3%RdH{NE}59L3k;)I23$^P`F%RdUR?&X4ZT zuT%U+#qUw_b-8?9;lEe>dlatw&mSrL%Ze}e%P7CPp8Ub`$(}T46T7{xVmpWS_k_1it`&a%bas6^G!o)+0y!*Ki2Flt4Jb^}Hg==+StG2Y!RaNl%(% zi+n0Oa&GxwH}FyT_dIYaYjPz20URP<=HYJnG$$eF#>pn+-1u7tX8B))U*sRQxSM}O z@qeuNxj81l%^zcN(x3PNLv!*y_@7k#2f-D6PV(TN;o^&Y*>7~~qxTzsq~yzUTyFja zD&5x=zf$3UQn-GeaD&42^WJ|}_zI? zA^*!t{%wl?HN{`A@Nc>J0fdpe+k^jo#n<d5OZMZ>Qkf6+T+= z&G+0)x?>c+odm|YdL+mfhT?iA5Wp?qE;KD_3b zaEco6#liBWjjSp_4T#UHTBWNyn#w%A1?|pZ8q3H=oZiyzY%k&$r&aa@m)DHlA9XQQdT+S4 zuA`%FEjP3x{jxu`yrR@+4a^mN5P;idk^6;mg{IyEH*qpQ3t*+DKA~Z*?Q7`fqFP=& zSC>{j^Wwb0@m4x}Z9vI~;0N^rRSoC^Ex zCr-pq-)ykvNqtd)!%`nw&{wE#R1@4^0kVB&eLR70!K5#!qMIg(kRU!Q!!3@xUigae zGJjoj(Xl?qLjR(U{_C7m)Y_Ja7U5r8&_7?rM@YCwoZE1;eW%?bCa?L((-263mFq>z0!h1#%wuz#gAl(Pjdo^C+E)qqaj<*5hyC% zL&@gs@SX}f4L-v3T!jMv+4yIHOY@5VY5XAKX48KeaB?S`Q|dQAKdq+;bC+M(#=ihz+DZB%=Nx#*e^mZ${O{|?@VoPWCL(9cfBV%YVyR7t@;@Gj zq%Zbg;F10;tB`z$)<`=#eOgCnOaC6a`2;8PdP@I99PadK-AgLE?RSZ7c%-v-#3d)^ zJ8gWo{g&DI^1WFT>uCMIiTK&{-?H4qkpE*t`hOCKTYp-|k}huje`FUuUhRkCkbBu9 z{!Sa8($!AVm-soTxa4=|zt}FWdR-OUU4Q<8$l3CLpuwcN(r>2fmhMO?eTnb+TB2hyJr{e0PF=ojCmTJYF{YOMExqeLWHi9xHy8D?NAo6NiXDRQaDVMErsw z(w{s;d<17W_x1VzV*K(U;t!SoONWT>uCMOv+8P$_aWjJ zWN7a=e%JN4hKN5@{e57F_>TSm1Cp#e{YQp~kKhdFzNY6q$tLdpN7}F3UheDP{)_Sd zG(`NN?Emf%@rSDa9}N+IsPxBUokTYAvfohUU+^!+KYxh$L+QU@i1YXwRa*z?C+Acl=S)48t!4?Gc~;Uklq$1lsc~ zYd?8Df$T@my-WIHKgy3gZ4yy1lYX&(V>d8p9ove-9iO&Y+z1wT8QnS((jRQ{aY6%ukOhMGe&?Pe z9bHR=?b*%~`QH29@9%u)JKy=vk+LlmZYps&G}#>5HCpaTqMBB5P42#)-_~mZt)A0f zg6BWRhxnG@vsBz)g=-x?YCENW>MYZLc6#@ zt@MpD^VOpyg{8w@H{0{8+DD$h?Zt~4nR$?n{nxeZonx%aI!PwdPtm;YTIKsn@>Tf@>fx>@>K zhOSkeVPj{UsnJ_64`$X+`+jANz3iNF>kI4Qvb`W$u~69g4bAZXI&qAp*SeYi`M8Uj z-*AtIxC)kC4&2PD-k&7BJLp06S)TsuAbK`4pJY{!qleDaVbXs~A^nv? ze@N-3Kjgki7{E1={533dhvp$Kze}#r7Y1=J{K1mr9(~@*iSd2JjH%^liEAW|A8A}fD2I> zxFN7MJ}OGOO0!|Ax!9r8_woweSnT798r8Ijyu#>N}pBC_$u zlXMCDPbDr2B*z`b@By+aFg#81A75l-{!)7jfty~A0Z5FFH@-*Y7`8I7#Gjgam8IdU zbO_#1{QT+6m!?C$(`@Yb&MB9XJm6lHUQwg?_(d9H#m9lhWbsw{y5^o~@D=EeTUk-dF5ZTM;U*N`Y z<}u6v=wo25VV*PxGAY5w&$#T@XY%SnTuS~h zhml_3HIaZ`D;+ypHvHPev_oUg6_4-v2-x_Lq((P;Lgw3{)QN4oNsevI`TWi_Is)({ z=2Tgz>g}m#NhdX7ulYtebE}i)qfCCu<4k|#6Z#`xbTBjS_2`cbl~5)$TfK`}X2JC= zQ#OR&&8L@jEK_?EfInmAo6Nk~Tf@dCO7U_IGm*E$ncCUR@gxyepz9A^fV82Z|2&L? zX1DiZ2BRxN=J96pZE%9i<(;}I=a!awFbxa3`?(eGQT@skFj9B(Y)Z?4lA^`_b@YTE)gQf$aXVV+{eey|4IFn>9< zXA|OqrMG%pC`#93S)hWWR0#fqbyZ(ay-fVp{1+2{4Jra=z9V9Z4IkeL3Z*C;@!ku- zH);vP;EnuE3AuJ`59Q*YE!u^%eB&VVNBy#fQp9 zizTnt;un|)%(0;P+SvQfHYT1U=Pf29!D|_5bpgeV zp86M9!qVMdkMCDgpMc!tUa;;j8-ADfZ)71}n@3P1vU~MMT3!9-k>tc|{ris(K2HLv z7e7b$;DTv=SBi{_!TQxwJ|cb%X!Kpcc<#hYclk-w6UJ0OPg)a%(i_0B21&#lihCU9-3 z;QIA>UpVPMwCyn}q%pU*dMnTaK4d~^7{Rq9?1eI9Q09lFdg?(K#%Ylkgl9Ola8K$b z#4sDi(C|eQcGs}<%^0XszRddf>Zv~g1(teG*pKxj5f7VI#PaMlwIEh4<6pkOTAltT z564`w?`OmNcES=RN#@9>o|gACKPtJk+(x9uA6s4HOP6_M@~_WLPxCxz?&n3idOtnw zxcG{vFqV%vOYfbf{m@nVH?y?wmNskJ>!oyy_pS@kEhW(oMBBQ%``RO2y@Sz#IP6oK zHUA9r`D|j)vy&0ELO8tvHSkqob0S=Ik}5`I4Sl2p!Ghe$;|eoR&cNC{N0!pfRD zyzR1PERqe)sndzeV|w2LFEhVfq0d`OxmB$vcZ5xAUqIv^qumXXS-8r=ruN71{&!*X zb(sVqFaGe<5zHUTkJm&emmnQ=7t>dcvCPH$$$?Yj zY6{`e_W_wN>vGHAzQdN2u?AWD4)a-&?Rc3|Amxc23o}>1K%RiM()7R`ma=eWMP+m5 zpQuLY`Q5#A?Mt7XP`h;LR<$nxDvv;SP;IjYB~qD3JXu&UX_9(WK^;b!v< zR`m>axz5xRw_X;^bYV9#ZSb1eNRHEPH#QEJZ1c zk~uKU%W^#xf@`hWY84IPbSZm+fFpbSo_{do$q%+EB;*}M$T^;7j2NN>Bx&EJ78Ca>&Sxcr`c_0qPBB zc9Uzv=DT6@jl5(kr6YlU64Lcu&KQ~gpbH6hd1Hxw$5(Jisng9vW}`VicC-}L8mbX% zIt4Q=kb7vAbH#rI%;w6miL#Fzf*nW?$bM8JT8mY>(Pfq)mfzrOgVc&;;qM@qB_ZDd z-Tause^9@B5wsfV9_)P*D1P3Ke=Lv=Rc4rH7^O>zrr(~R0WgpHrpb!Wot)mLZMyq0 zdSyw50WHSzo(g@Wn#?z`sZWO7?(8lIl6{A1E+@1{JuqN$DW5CbajSudZ*VE<5E%N% zw~@>yWB3EV$_!W_dFrX>ozOKSfwJAL%?-^y6ql6hJL4Z0z?A~fQ&p7PGbuz_Ss39$ z!NxsE3$`^?aMwh4H3rTd_?W_B6o5rn+coHrJO-e^oLcA`jhTGmOuD>|G;$RBX9eKM zUtr|ZWnS~3viu$t%kM!_Q4LXou)?~UKBEW+^#F!yav5GK!;WRCj@-nII zp5)D0MzV>9zKL&_jP#J(_k{0ob9&Zeuos>_8Lk?obs^J_h&pLF7n}^3xAHhX2vJ_F z_*Nl6v56h*UXNLOCl>q9PoONo&JLhHZw`PpCu#L>(&t@YK@t2N2q$Gw6!ss8F9@Vp zS7x?&%qPbtOL4M-P#sD_AK(3v1w4rL+p95d=!VyKc{lFUhd&( zt>5ac)Kjk_IAvt=^?vdzKx7@BY4tK$AWu>)jFm^m zYWh9Y;n{j(4-E)Q|I7t<#{7rOXZ6M-`mR%K?9~!68F?MWGvd#P)4ZQY3OQ@?FyspX zUw469Z#<;$!WJ0Y*erXai}T(}yvgMVu8k#ns_R{uUUR1w8_^A<{Dj>cM z|2{qCB(mXsG^gmyBkb?MaHU>4Oa8L943@vDAzblS3r-QFLnjYF2JeZzin+h!80wU# z+@C!AQSG~Pal3nN4Q`+O=%=-86_dX|FwD2sn$OW0#yV_E%dik)4OG@jgf43CN194- zSYX8#-$^45QIfk1OelU_P>JOd+i4fh4<_aqj&Z{=9ng326UmUi>z~NIv7rCxz|BCP ziv^xJv71U~ygCu^?+@w?M|aaHPQdXTe_VOgHyZRG(~}!9n~d~hG>}0Yq{tD7g-kBe zFz=vOQWK0?%r^_oShbM3sU#HJ{)$4|es^x$Ka1qhx|BMh-+3RjVy%FzGHEEIK&lJzgaYP3JW54a~v z)A3oAnHxOj$+6cb1TPQDf`IV zI9I8qUU`TTJ;G^CX2DIO^yR!byU8s0GwU4Zr8zjEL58Shj%Qi=FQ|hJX4yZS3g~@7 zuT!6=(cN`O6|5qby+Y~pC6jX!sKf#IaOzaCW2=8EG>9g znvpA%?AMN08dd2X04wW{4Dqy}CN}b;J^JZisECqFwCy*7g=LOge1u{L3K-G&=|7rOHQxm0Y ztGAxAFRa2h80Z=%Jw2tdvXK`iFNAkEPVbav)vqWIKlr?^^8fz4&O=tvc^xeL!1Fqs zMgAY1*U>7ZoY#49UgwS9OzQc0U3SJ|_6<36vv$D_BB>DoLi=&nKE@CB(%<|z#dg|t zTY)1xe@*-g2x`n2N(N#BijYQ9%M0r5unNn0!Sg#0o!|W$(I@w-NR-#P>zF(71Cpf3 zAt7kIxp78j5)mK#4e8!jHkG@-%)mGQkRtcE1pg`1U2`j~C zw)?(w|UyMY5!%r`!$m@K__> zZKEsn-%|qSyPXZ?o{TG0zWA=vV0q2$vx4Py$=Sj37U%Vj^148IO`v=+C>qKu8-yAz zYpamOzs}9c3T0)1^Y&Q*OICf!o;ihNg)Cnk6tco(GaA|YYk}<~fXioOYZJ+DAX`JK zttHWd@|)&r>%qR5)>t&Yy~^3j`^{x>TSdROJDkh`X^k^_&gO0^)CtS)cL^PzB}EvJ zTdYvf=uBj%s{f1RcX(6vd(Ky@%IizMTcj`R3TbcJd*ByO{qkv6UZ0$O`>eZ4Gp@Ux z_duVFf5+Ea!hCkj{vKI&k(?tfc<>T}R)Yye^UCsb&bFLy_&BzfPdJ?aTvE_FM7^eY z@Y#$HwQ790OfadI(b(=56L=+!F&~fXvi`8?L>!iUtDwe)xf=E1C_dC?%~tym%$Jvo z>s8c;QfEPl**>fgv9}O%3-y8GbSr7Z&y#W&lp1@%e?2 z_e9nwxw)D1NiIg$6^qfKLQw(*AJ9mpOM3%_=gj8R;MfAqsksZFl$+_RyP3_Y&6x=T zacbm&naxSNs{+lb$*i3J(y8hBfOv9hGPCEuc4{BX2eR}ZFM?lC1plKV_=QDqIWzNL zJ2i^7na!zPG7|*i)GjT8Up50L4?DEnLadIQQ>&Um|4ASvihP>OvN`#$Zsb$$>eN1y zdr(9RT7-Tx@cBw!qS}GlcZ$&8Uj+Yt5&Z9q;13tUsUDiI8<3%i zcvtseb$frm7Wq=xw`^l;TTgWG2H%yfZ5x2B_O~{*4aOVV2BW^3HEl!D*1o2$?r5l` zy}G@xyTeAYEZo=D(KOK4lSfk>ZmiMp$47sb(VtrI`L2pIbj8=SxAk5h9f}SNMz5@G z`RbOu7fpQwo7x6Cuy{Y z8p?b2LGnSeM7|2yNR5+CcdmD5{Y*X^lgfCM|(HKJ0sD7fxdy3&$pA*T)%BGss(SX z9*D-OBasc8H%IyrWqrME-Cgl5k)awbwrQX%4jpTIH=!eu>!X7SiUZZimLXWVrY0in z%>RPgSjFFjhF1F_zc&$S-@F;!iS+gj^t5$HAbX$9eMf3-awhUB- z;DnsF7=dVnFTqFRege@5r?o@k8wo@syapeM7o%T6#ArlMSxM3d2t>2X#}{V2+3_V< z7pd8C`aPAzReSi4feO%n$0DC0r(eOB<6heNN)cRER9JR2k3uik8nTmqk}l;?eN2sT zs#zsouGp{o=dvPrlY$2nImP_2S)p%G=pPa|*}q7^=}T#9WM?Bj(oR`95w7}K)_a6A zgxfxmpclgSN(Gno~aSugpbtwbpp{y4plP}-;R4~cKS~#_N#JkErL_sCgs%Q zM#`tUike;imlRy}!}k2Fl*$B&+}_@64cN`H@nuU6=vR&bS`eke$d`laH3rQp}$ zowSGQU1~(H#^HSmuF7!|A(~zOY6Y*ydnrGr;HsQ&E4XUU_vj!Vjb5wvJgVRZ-bwk- zE4UhOFDtkz=bVD8^h;-vR!eUSu2TNSBKW^4xGMj+f~$6(R&aIRm56--4G-<^q+WGh zQ|(!$jC(+#r~Mc;@|)_<3zczPj(1XiRKZm{zoFo&ov)B^G?K5%=~nFd0^UjaL`#ic zujF^uACI^vbA`zqkvkB=gb5s{HG&%9B4qgU&HS&0iy`Gmzk&;wb7Vxph08hefP%|C zBSAk_@Z9N%rX5%CIpUr!mBJ5X=UfG^Rq!$e->%>vRq$UZxIBBI*Aoh^EA(>RA-xp} zzJmZXy5vqbH0>b;pU)|*Kc5v&r`I6`4=VTq1#ebxdDcX)?^SS_lL>!N!HM2OAlgqA zoW5I<%`FC-?8%*Opf3t8*COJ%S;2FsB$^ggaH97RG1_(om$eq*hZH>T6t8-4OHaJ* z7Oi?PK44ut41Rd!>U|2nq=;~UvxFAE6Happt|x2hW?+s?I^f)Con z7Uh|_k*yx+qfw@z&EL>cQ245Gkdf!?d>Xuz+#hnkTTtqUqV^YSkMC`Vz7jpv3;aY!9Qj zP}ff>re560HJxgI!o>2Cy%yuAT9}&3Pj%Rb2@Dk03k${YCgEh#2jB{67axA^T5qZcU^9sm-qcQM{y>s#l3{ z&%{@;H3Fyjr&yLXw5;XmJfM*N^#r1+H5@(L^`8P(h=04_m){2xFEu;=>%a=xzqx?@ zR9D;Wr}MT#`gvgu`UpO1v+Mr|m<#FODfCM}k^d;q*!6#=i2n6d7^4kZm+W7={>4S~ zj~38R^}1a@?KkmnM*f%(`sMeT(g3^uP!at{g#Pt{k@`>HlG^oeD58HoITcNQKWaVA z9RFL2=&!4`IBEnV>8CSDyZ&Sm{rzIoDf74xGb8?fScHF6@b8q2;%fKb-xjgIQ`oP@ z5ABoe_S5&q_%~zx`o)4Ezn_(6*!90qME~{z`sr6EcKxM@6Vh-0WyR%!(7rAZEj4*v zBKYm=SB>ERtVN#vYq$T?;4d`)?iKbk!Aax45Ffk!jYaH_2tsvlN}{CQ@;WT-$5n0H z1^@Z{zg60AO?-zf%8oqv~t-fsWLU?ACV*WWMn%kTe57d89%mxI5M{@p_V!(yPwf3j8~IdWcI zDfFWodF_FZT91qK(A@Y-n9kV>`TwBcKVSU3Ap37K;H2P}zeAAv?EQaE_TR?e>9aU? z2uA8Zo%h-O-vs9s@_!vImS{9*)Mito1;Ag(|7V1Lb^K{buM+9E>_a4FkyZ_D>(ZB8ri$NVfGRdz0a;$R{KX(6}6osFp7wWV8^4SplPMd%; zACf-^esn>rxAEU8?3eSL#-DyYB<+!SLg<(Mly=FVP|^NGZ6clUJ`;Yc;8$trere&K zXlD5&{oUZF^J<&AKi{P)pd$rm5AH;j^Ka~jg4+#J9|67J< z^4|)4B){}up|J; MXHo33_216_-+TK%CjbBd